@fairgarden/design 0.1.0-alpha.1 → 0.1.0-alpha.2

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 (517) hide show
  1. package/LICENSE +21 -0
  2. package/Readme.md +51 -27
  3. package/actions/button/Button.d.ts.map +1 -1
  4. package/actions/button/Button.js +13 -1
  5. package/actions/button/Button.js.map +1 -1
  6. package/actions/button/button.module.css +85 -25
  7. package/actions/chip/Chip.d.ts +2 -2
  8. package/actions/chip/Chip.js +2 -2
  9. package/actions/chip/chip.module.css +12 -18
  10. package/actions/link/Link.d.ts +1 -1
  11. package/actions/link/link.module.css +22 -19
  12. package/actions/toggle/Toggle.js +1 -1
  13. package/actions/toggle/toggle.module.css +27 -23
  14. package/content/card/card.module.css +27 -27
  15. package/content/card-grid/CardGrid.js +1 -1
  16. package/content/card-grid/card-grid.module.css +3 -3
  17. package/content/carousel/Carousel.d.ts.map +1 -1
  18. package/content/carousel/Carousel.js +1 -4
  19. package/content/carousel/Carousel.js.map +1 -1
  20. package/content/carousel/carousel.module.css +19 -9
  21. package/content/code-block/CodeActionsMenu.d.ts +34 -0
  22. package/content/code-block/CodeActionsMenu.d.ts.map +1 -0
  23. package/content/code-block/CodeActionsMenu.js +102 -0
  24. package/content/code-block/CodeActionsMenu.js.map +1 -0
  25. package/content/code-block/CodeBlock.d.ts +37 -0
  26. package/content/code-block/CodeBlock.d.ts.map +1 -0
  27. package/content/code-block/CodeBlock.js +30 -0
  28. package/content/code-block/CodeBlock.js.map +1 -0
  29. package/content/code-block/CodeBlockFrame.d.ts +54 -0
  30. package/content/code-block/CodeBlockFrame.d.ts.map +1 -0
  31. package/content/code-block/CodeBlockFrame.js +80 -0
  32. package/content/code-block/CodeBlockFrame.js.map +1 -0
  33. package/content/code-block/CodeBlockHeader.d.ts +26 -0
  34. package/content/code-block/CodeBlockHeader.d.ts.map +1 -0
  35. package/content/code-block/CodeBlockHeader.js +16 -0
  36. package/content/code-block/CodeBlockHeader.js.map +1 -0
  37. package/content/code-block/CodeBlockLazy.d.ts +11 -0
  38. package/content/code-block/CodeBlockLazy.d.ts.map +1 -0
  39. package/content/code-block/CodeBlockLazy.js +14 -0
  40. package/content/code-block/CodeBlockLazy.js.map +1 -0
  41. package/content/code-block/CodeBlockLoading.d.ts +31 -0
  42. package/content/code-block/CodeBlockLoading.d.ts.map +1 -0
  43. package/content/code-block/CodeBlockLoading.js +90 -0
  44. package/content/code-block/CodeBlockLoading.js.map +1 -0
  45. package/content/code-block/CodeBlockSection.d.ts +40 -0
  46. package/content/code-block/CodeBlockSection.d.ts.map +1 -0
  47. package/content/code-block/CodeBlockSection.js +105 -0
  48. package/content/code-block/CodeBlockSection.js.map +1 -0
  49. package/content/code-block/CodeBlockToasts.d.ts +26 -0
  50. package/content/code-block/CodeBlockToasts.d.ts.map +1 -0
  51. package/content/code-block/CodeBlockToasts.js +88 -0
  52. package/content/code-block/CodeBlockToasts.js.map +1 -0
  53. package/content/code-block/code-block.module.css +949 -0
  54. package/content/code-block/index.d.ts +4 -0
  55. package/content/code-block/index.d.ts.map +1 -0
  56. package/content/code-block/index.js +4 -0
  57. package/content/code-block/index.js.map +1 -0
  58. package/content/demo/DemoContent.d.ts +32 -0
  59. package/content/demo/DemoContent.d.ts.map +1 -0
  60. package/content/demo/DemoContent.js +87 -0
  61. package/content/demo/DemoContent.js.map +1 -0
  62. package/content/demo/DemoFrame.d.ts +6 -0
  63. package/content/demo/DemoFrame.d.ts.map +1 -0
  64. package/content/demo/DemoFrame.js +17 -0
  65. package/content/demo/DemoFrame.js.map +1 -0
  66. package/content/demo/DemoLazy.d.ts +11 -0
  67. package/content/demo/DemoLazy.d.ts.map +1 -0
  68. package/content/demo/DemoLazy.js +14 -0
  69. package/content/demo/DemoLazy.js.map +1 -0
  70. package/content/demo/DemoLoading.d.ts +23 -0
  71. package/content/demo/DemoLoading.d.ts.map +1 -0
  72. package/content/demo/DemoLoading.js +26 -0
  73. package/content/demo/DemoLoading.js.map +1 -0
  74. package/content/demo/demo.module.css +163 -0
  75. package/content/demo/index.d.ts +4 -0
  76. package/content/demo/index.d.ts.map +1 -0
  77. package/content/demo/index.js +4 -0
  78. package/content/demo/index.js.map +1 -0
  79. package/content/empty-state/EmptyState.d.ts +1 -1
  80. package/content/empty-state/EmptyState.js +1 -1
  81. package/content/empty-state/empty-state.module.css +11 -11
  82. package/content/feature-grid/feature-grid.module.css +22 -22
  83. package/content/index-rows/IndexRows.d.ts +2 -2
  84. package/content/index-rows/IndexRows.d.ts.map +1 -1
  85. package/content/index-rows/IndexRows.js +1 -1
  86. package/content/index-rows/index-rows.module.css +29 -29
  87. package/content/pricing/Pricing.d.ts +4 -4
  88. package/content/pricing/Pricing.d.ts.map +1 -1
  89. package/content/pricing/Pricing.js +4 -4
  90. package/content/pricing/Pricing.js.map +1 -1
  91. package/content/pricing/pricing.module.css +22 -22
  92. package/content/profile/Profile.d.ts +1 -1
  93. package/content/profile/Profile.js +2 -2
  94. package/content/profile/profile.module.css +13 -13
  95. package/content/quote/Quote.d.ts +1 -1
  96. package/content/quote/quote.module.css +9 -9
  97. package/content/timeline/Timeline.d.ts +1 -1
  98. package/content/timeline/Timeline.d.ts.map +1 -1
  99. package/content/timeline/Timeline.js +5 -5
  100. package/content/timeline/Timeline.js.map +1 -1
  101. package/content/timeline/timeline.module.css +12 -12
  102. package/content/types-table/TypePre.d.ts +11 -0
  103. package/content/types-table/TypePre.d.ts.map +1 -0
  104. package/content/types-table/TypePre.js +13 -0
  105. package/content/types-table/TypePre.js.map +1 -0
  106. package/content/types-table/TypesTable.d.ts +22 -0
  107. package/content/types-table/TypesTable.d.ts.map +1 -0
  108. package/content/types-table/TypesTable.js +124 -0
  109. package/content/types-table/TypesTable.js.map +1 -0
  110. package/content/types-table/index.d.ts +3 -0
  111. package/content/types-table/index.d.ts.map +1 -0
  112. package/content/types-table/index.js +3 -0
  113. package/content/types-table/index.js.map +1 -0
  114. package/content/types-table/types-table.module.css +160 -0
  115. package/data/chart/Chart.d.ts +8 -1
  116. package/data/chart/Chart.d.ts.map +1 -1
  117. package/data/chart/Chart.js +28 -15
  118. package/data/chart/Chart.js.map +1 -1
  119. package/data/chart/chart.module.css +20 -6
  120. package/data/figure/Figure.d.ts +1 -1
  121. package/data/figure/Figure.js +1 -1
  122. package/data/figure/figure.module.css +7 -7
  123. package/data/map/Map.d.ts +3 -3
  124. package/data/map/Map.d.ts.map +1 -1
  125. package/data/map/Map.js +10 -8
  126. package/data/map/Map.js.map +1 -1
  127. package/data/map/MapCanvas.d.ts.map +1 -1
  128. package/data/map/MapCanvas.js +5 -9
  129. package/data/map/MapCanvas.js.map +1 -1
  130. package/data/map/map.module.css +39 -14
  131. package/data/map/mapStyle.d.ts +2 -2
  132. package/data/map/mapStyle.d.ts.map +1 -1
  133. package/data/map/mapStyle.js +5 -5
  134. package/data/map/mapStyle.js.map +1 -1
  135. package/data/scroll-area/ScrollArea.d.ts.map +1 -1
  136. package/data/scroll-area/ScrollArea.js +8 -4
  137. package/data/scroll-area/ScrollArea.js.map +1 -1
  138. package/data/scroll-area/scroll-area.module.css +28 -9
  139. package/data/spec-grid/spec-grid.module.css +8 -8
  140. package/data/spec-list/spec-list.module.css +3 -3
  141. package/data/spec-sheet/SpecSheet.d.ts +2 -2
  142. package/data/spec-sheet/SpecSheet.js +1 -1
  143. package/data/spec-sheet/spec-sheet.module.css +9 -9
  144. package/data/stat/Stat.d.ts +1 -1
  145. package/data/stat/Stat.d.ts.map +1 -1
  146. package/data/stat/stat.module.css +4 -4
  147. package/data/table/Table.d.ts +6 -5
  148. package/data/table/Table.d.ts.map +1 -1
  149. package/data/table/Table.js.map +1 -1
  150. package/data/table/table.module.css +43 -46
  151. package/disclosure/accordion/Accordion.d.ts +1 -1
  152. package/disclosure/accordion/Accordion.js +1 -1
  153. package/disclosure/accordion/accordion.module.css +12 -12
  154. package/disclosure/collapsible/Collapsible.d.ts +4 -4
  155. package/disclosure/collapsible/Collapsible.js +4 -4
  156. package/disclosure/collapsible/collapsible.module.css +10 -10
  157. package/disclosure/faq/FAQ.d.ts +3 -3
  158. package/disclosure/faq/FAQ.d.ts.map +1 -1
  159. package/disclosure/faq/FAQ.js +3 -3
  160. package/disclosure/faq/FAQ.js.map +1 -1
  161. package/disclosure/faq/faq.module.css +20 -20
  162. package/feedback/alert/alert.module.css +4 -4
  163. package/feedback/avatar/avatar-group.module.css +2 -2
  164. package/feedback/avatar/avatar.module.css +9 -9
  165. package/feedback/badge/Badge.d.ts +1 -1
  166. package/feedback/badge/badge.module.css +7 -7
  167. package/feedback/meter/Meter.d.ts +2 -2
  168. package/feedback/meter/meter.module.css +14 -14
  169. package/feedback/progress/Progress.d.ts +1 -1
  170. package/feedback/progress/progress.module.css +7 -7
  171. package/feedback/tag/tag.module.css +7 -7
  172. package/feedback/toast/Toast.d.ts +3 -3
  173. package/feedback/toast/Toast.d.ts.map +1 -1
  174. package/feedback/toast/Toast.js +17 -7
  175. package/feedback/toast/Toast.js.map +1 -1
  176. package/feedback/toast/toast.module.css +31 -20
  177. package/forms/autocomplete/Autocomplete.d.ts +11 -0
  178. package/forms/autocomplete/Autocomplete.d.ts.map +1 -1
  179. package/forms/autocomplete/Autocomplete.js +27 -6
  180. package/forms/autocomplete/Autocomplete.js.map +1 -1
  181. package/forms/autocomplete/autocomplete.module.css +35 -41
  182. package/forms/checkbox/Checkbox.js +1 -1
  183. package/forms/checkbox/checkbox.module.css +29 -25
  184. package/forms/checkbox-group/checkbox-group.module.css +4 -4
  185. package/forms/combobox/Combobox.d.ts +10 -0
  186. package/forms/combobox/Combobox.d.ts.map +1 -1
  187. package/forms/combobox/Combobox.js +28 -7
  188. package/forms/combobox/Combobox.js.map +1 -1
  189. package/forms/combobox/combobox.module.css +34 -41
  190. package/forms/field/field.module.css +1 -1
  191. package/forms/fieldset/Fieldset.d.ts +1 -1
  192. package/forms/fieldset/Fieldset.js +2 -2
  193. package/forms/fieldset/fieldset.module.css +14 -14
  194. package/forms/form/form.module.css +2 -2
  195. package/forms/input/Input.d.ts +10 -3
  196. package/forms/input/Input.d.ts.map +1 -1
  197. package/forms/input/Input.js +10 -4
  198. package/forms/input/Input.js.map +1 -1
  199. package/forms/input/input.module.css +38 -21
  200. package/forms/number-field/number-field.module.css +24 -23
  201. package/forms/radio/Radio.d.ts +1 -1
  202. package/forms/radio/Radio.d.ts.map +1 -1
  203. package/forms/radio/Radio.js +5 -3
  204. package/forms/radio/Radio.js.map +1 -1
  205. package/forms/radio/radio.module.css +38 -30
  206. package/forms/radio-group/RadioGroup.d.ts +1 -1
  207. package/forms/radio-group/radio-group.module.css +3 -3
  208. package/forms/search/Search.d.ts +10 -0
  209. package/forms/search/Search.d.ts.map +1 -1
  210. package/forms/search/Search.js +25 -6
  211. package/forms/search/Search.js.map +1 -1
  212. package/forms/search/search.module.css +25 -33
  213. package/forms/select/Select.d.ts +10 -2
  214. package/forms/select/Select.d.ts.map +1 -1
  215. package/forms/select/Select.js +27 -12
  216. package/forms/select/Select.js.map +1 -1
  217. package/forms/select/select.module.css +42 -48
  218. package/forms/slider/Slider.js +2 -2
  219. package/forms/slider/slider.module.css +23 -23
  220. package/forms/switch/Switch.js +1 -1
  221. package/forms/switch/switch.module.css +23 -19
  222. package/foundations/expanding-box/ExpandingBox.d.ts +86 -0
  223. package/foundations/expanding-box/ExpandingBox.d.ts.map +1 -0
  224. package/foundations/expanding-box/ExpandingBox.js +179 -0
  225. package/foundations/expanding-box/ExpandingBox.js.map +1 -0
  226. package/foundations/expanding-box/expanding-box.module.css +415 -0
  227. package/foundations/expanding-box/index.d.ts +3 -0
  228. package/foundations/expanding-box/index.d.ts.map +1 -0
  229. package/foundations/expanding-box/index.js +3 -0
  230. package/foundations/expanding-box/index.js.map +1 -0
  231. package/foundations/expanding-box/startExpandingTransition.d.ts +33 -0
  232. package/foundations/expanding-box/startExpandingTransition.d.ts.map +1 -0
  233. package/foundations/expanding-box/startExpandingTransition.js +82 -0
  234. package/foundations/expanding-box/startExpandingTransition.js.map +1 -0
  235. package/foundations/ground/Ground.d.ts +1 -1
  236. package/foundations/ground/ground.module.css +4 -4
  237. package/foundations/icon/Icon.d.ts +1 -1
  238. package/foundations/icon/Icon.js +1 -1
  239. package/foundations/icon/icon.module.css +1 -1
  240. package/foundations/outline-morph/OutlineMorph.d.ts +112 -0
  241. package/foundations/outline-morph/OutlineMorph.d.ts.map +1 -0
  242. package/foundations/outline-morph/OutlineMorph.js +83 -0
  243. package/foundations/outline-morph/OutlineMorph.js.map +1 -0
  244. package/foundations/outline-morph/index.d.ts +3 -0
  245. package/foundations/outline-morph/index.d.ts.map +1 -0
  246. package/foundations/outline-morph/index.js +3 -0
  247. package/foundations/outline-morph/index.js.map +1 -0
  248. package/foundations/outline-morph/morphEngine.d.ts +219 -0
  249. package/foundations/outline-morph/morphEngine.d.ts.map +1 -0
  250. package/foundations/outline-morph/morphEngine.js +1331 -0
  251. package/foundations/outline-morph/morphEngine.js.map +1 -0
  252. package/foundations/outline-morph/outline-morph.module.css +113 -0
  253. package/foundations/outline-morph/useOutlineMorphRoot.d.ts +50 -0
  254. package/foundations/outline-morph/useOutlineMorphRoot.d.ts.map +1 -0
  255. package/foundations/outline-morph/useOutlineMorphRoot.js +55 -0
  256. package/foundations/outline-morph/useOutlineMorphRoot.js.map +1 -0
  257. package/foundations/separator/separator.module.css +10 -10
  258. package/foundations/sticker/Sticker.d.ts +4 -4
  259. package/foundations/sticker/Sticker.d.ts.map +1 -1
  260. package/foundations/sticker/Sticker.js +3 -3
  261. package/foundations/sticker/sticker.module.css +10 -10
  262. package/icons/paths.d.ts +1 -1
  263. package/icons/paths.d.ts.map +1 -1
  264. package/icons/paths.js +50 -0
  265. package/icons/paths.js.map +1 -1
  266. package/navigation/breadcrumb/Breadcrumb.d.ts +7 -1
  267. package/navigation/breadcrumb/Breadcrumb.d.ts.map +1 -1
  268. package/navigation/breadcrumb/Breadcrumb.js +8 -8
  269. package/navigation/breadcrumb/Breadcrumb.js.map +1 -1
  270. package/navigation/breadcrumb/breadcrumb.module.css +14 -14
  271. package/navigation/file-tabs/FileTabs.d.ts +169 -0
  272. package/navigation/file-tabs/FileTabs.d.ts.map +1 -0
  273. package/navigation/file-tabs/FileTabs.js +253 -0
  274. package/navigation/file-tabs/FileTabs.js.map +1 -0
  275. package/navigation/file-tabs/file-tabs.module.css +868 -0
  276. package/navigation/file-tabs/index.d.ts +2 -0
  277. package/navigation/file-tabs/index.d.ts.map +1 -0
  278. package/navigation/file-tabs/index.js +2 -0
  279. package/navigation/file-tabs/index.js.map +1 -0
  280. package/navigation/nav-drawer/NavDrawer.d.ts +32 -6
  281. package/navigation/nav-drawer/NavDrawer.d.ts.map +1 -1
  282. package/navigation/nav-drawer/NavDrawer.js +94 -28
  283. package/navigation/nav-drawer/NavDrawer.js.map +1 -1
  284. package/navigation/nav-drawer/nav-drawer.module.css +78 -55
  285. package/navigation/navigation-bar/NavigationBar.d.ts +31 -11
  286. package/navigation/navigation-bar/NavigationBar.d.ts.map +1 -1
  287. package/navigation/navigation-bar/NavigationBar.js +40 -17
  288. package/navigation/navigation-bar/NavigationBar.js.map +1 -1
  289. package/navigation/navigation-bar/navigation-bar.module.css +58 -27
  290. package/navigation/navigation-menu/NavigationMenu.d.ts +9 -9
  291. package/navigation/navigation-menu/NavigationMenu.d.ts.map +1 -1
  292. package/navigation/navigation-menu/NavigationMenu.js +15 -15
  293. package/navigation/navigation-menu/navigation-menu.module.css +39 -53
  294. package/navigation/pagination/Pagination.js +1 -1
  295. package/navigation/pagination/pagination.module.css +24 -24
  296. package/navigation/sidebar-nav/SidebarNav.d.ts +71 -0
  297. package/navigation/sidebar-nav/SidebarNav.d.ts.map +1 -0
  298. package/navigation/sidebar-nav/SidebarNav.js +169 -0
  299. package/navigation/sidebar-nav/SidebarNav.js.map +1 -0
  300. package/navigation/sidebar-nav/index.d.ts +2 -0
  301. package/navigation/sidebar-nav/index.d.ts.map +1 -0
  302. package/navigation/sidebar-nav/index.js +2 -0
  303. package/navigation/sidebar-nav/index.js.map +1 -0
  304. package/navigation/sidebar-nav/sidebar-nav.module.css +270 -0
  305. package/navigation/table-of-contents/TableOfContents.d.ts +92 -0
  306. package/navigation/table-of-contents/TableOfContents.d.ts.map +1 -0
  307. package/navigation/table-of-contents/TableOfContents.js +211 -0
  308. package/navigation/table-of-contents/TableOfContents.js.map +1 -0
  309. package/navigation/table-of-contents/index.d.ts +3 -0
  310. package/navigation/table-of-contents/index.d.ts.map +1 -0
  311. package/navigation/table-of-contents/index.js +3 -0
  312. package/navigation/table-of-contents/index.js.map +1 -0
  313. package/navigation/table-of-contents/table-of-contents.module.css +322 -0
  314. package/navigation/table-of-contents/useActiveHeading.d.ts +37 -0
  315. package/navigation/table-of-contents/useActiveHeading.d.ts.map +1 -0
  316. package/navigation/table-of-contents/useActiveHeading.js +111 -0
  317. package/navigation/table-of-contents/useActiveHeading.js.map +1 -0
  318. package/navigation/tabs/Tabs.d.ts +2 -2
  319. package/navigation/tabs/Tabs.js +3 -3
  320. package/navigation/tabs/tabs.module.css +22 -19
  321. package/navigation/toolbar/Toolbar.d.ts +7 -1
  322. package/navigation/toolbar/Toolbar.d.ts.map +1 -1
  323. package/navigation/toolbar/Toolbar.js +3 -3
  324. package/navigation/toolbar/Toolbar.js.map +1 -1
  325. package/navigation/toolbar/toolbar.module.css +6 -6
  326. package/overlays/alert-dialog/AlertDialog.d.ts +14 -4
  327. package/overlays/alert-dialog/AlertDialog.d.ts.map +1 -1
  328. package/overlays/alert-dialog/AlertDialog.js +15 -5
  329. package/overlays/alert-dialog/AlertDialog.js.map +1 -1
  330. package/overlays/alert-dialog/alert-dialog.module.css +4 -4
  331. package/overlays/context-menu/ContextMenu.d.ts +1 -1
  332. package/overlays/context-menu/ContextMenu.js +1 -1
  333. package/overlays/dialog/Dialog.d.ts +26 -11
  334. package/overlays/dialog/Dialog.d.ts.map +1 -1
  335. package/overlays/dialog/Dialog.js +36 -17
  336. package/overlays/dialog/Dialog.js.map +1 -1
  337. package/overlays/dialog/dialog.module.css +32 -31
  338. package/overlays/dialog/morph.d.ts +17 -0
  339. package/overlays/dialog/morph.d.ts.map +1 -0
  340. package/overlays/dialog/morph.js +44 -0
  341. package/overlays/dialog/morph.js.map +1 -0
  342. package/overlays/menu/Menu.d.ts +18 -7
  343. package/overlays/menu/Menu.d.ts.map +1 -1
  344. package/overlays/menu/Menu.js +35 -12
  345. package/overlays/menu/Menu.js.map +1 -1
  346. package/overlays/menu/menu.module.css +26 -50
  347. package/overlays/menu/morph.d.ts +16 -0
  348. package/overlays/menu/morph.d.ts.map +1 -0
  349. package/overlays/menu/morph.js +36 -0
  350. package/overlays/menu/morph.js.map +1 -0
  351. package/overlays/menu/popup.d.ts +2 -0
  352. package/overlays/menu/popup.d.ts.map +1 -1
  353. package/overlays/menu/popup.js +11 -3
  354. package/overlays/menu/popup.js.map +1 -1
  355. package/overlays/menubar/Menubar.d.ts +10 -1
  356. package/overlays/menubar/Menubar.d.ts.map +1 -1
  357. package/overlays/menubar/Menubar.js +22 -12
  358. package/overlays/menubar/Menubar.js.map +1 -1
  359. package/overlays/menubar/menubar.module.css +13 -13
  360. package/overlays/popover/Popover.d.ts +22 -8
  361. package/overlays/popover/Popover.d.ts.map +1 -1
  362. package/overlays/popover/Popover.js +51 -16
  363. package/overlays/popover/Popover.js.map +1 -1
  364. package/overlays/popover/popover.module.css +73 -47
  365. package/overlays/preview-card/PreviewCard.d.ts +3 -3
  366. package/overlays/preview-card/PreviewCard.d.ts.map +1 -1
  367. package/overlays/preview-card/PreviewCard.js +5 -6
  368. package/overlays/preview-card/PreviewCard.js.map +1 -1
  369. package/overlays/preview-card/preview-card.module.css +19 -54
  370. package/overlays/search-dialog/SearchDialog.d.ts +89 -0
  371. package/overlays/search-dialog/SearchDialog.d.ts.map +1 -0
  372. package/overlays/search-dialog/SearchDialog.js +220 -0
  373. package/overlays/search-dialog/SearchDialog.js.map +1 -0
  374. package/overlays/search-dialog/SearchDialogPopup.d.ts +39 -0
  375. package/overlays/search-dialog/SearchDialogPopup.d.ts.map +1 -0
  376. package/overlays/search-dialog/SearchDialogPopup.js +80 -0
  377. package/overlays/search-dialog/SearchDialogPopup.js.map +1 -0
  378. package/overlays/search-dialog/SearchDialogTrigger.d.ts +24 -0
  379. package/overlays/search-dialog/SearchDialogTrigger.d.ts.map +1 -0
  380. package/overlays/search-dialog/SearchDialogTrigger.js +32 -0
  381. package/overlays/search-dialog/SearchDialogTrigger.js.map +1 -0
  382. package/overlays/search-dialog/index.d.ts +3 -0
  383. package/overlays/search-dialog/index.d.ts.map +1 -0
  384. package/overlays/search-dialog/index.js +3 -0
  385. package/overlays/search-dialog/index.js.map +1 -0
  386. package/overlays/search-dialog/search-dialog.module.css +492 -0
  387. package/overlays/search-dialog/useShortcutLabel.d.ts +13 -0
  388. package/overlays/search-dialog/useShortcutLabel.d.ts.map +1 -0
  389. package/overlays/search-dialog/useShortcutLabel.js +19 -0
  390. package/overlays/search-dialog/useShortcutLabel.js.map +1 -0
  391. package/overlays/search-dialog/variants.d.ts +25 -0
  392. package/overlays/search-dialog/variants.d.ts.map +1 -0
  393. package/overlays/search-dialog/variants.js +31 -0
  394. package/overlays/search-dialog/variants.js.map +1 -0
  395. package/overlays/tooltip/Tooltip.d.ts +3 -3
  396. package/overlays/tooltip/Tooltip.d.ts.map +1 -1
  397. package/overlays/tooltip/Tooltip.js +3 -3
  398. package/overlays/tooltip/Tooltip.js.map +1 -1
  399. package/overlays/tooltip/tooltip.module.css +2 -2
  400. package/package.json +27 -19
  401. package/page/announcement-bar/AnnouncementBar.d.ts +1 -1
  402. package/page/announcement-bar/AnnouncementBar.js +4 -4
  403. package/page/announcement-bar/AnnouncementBar.js.map +1 -1
  404. package/page/announcement-bar/announcement-bar.module.css +11 -17
  405. package/page/cta-block/CTABlock.d.ts +5 -5
  406. package/page/cta-block/CTABlock.d.ts.map +1 -1
  407. package/page/cta-block/CTABlock.js +2 -2
  408. package/page/cta-block/cta-block.module.css +26 -26
  409. package/page/docs-layout/DocsLayout.d.ts +83 -0
  410. package/page/docs-layout/DocsLayout.d.ts.map +1 -0
  411. package/page/docs-layout/DocsLayout.js +108 -0
  412. package/page/docs-layout/DocsLayout.js.map +1 -0
  413. package/page/docs-layout/docs-layout.module.css +266 -0
  414. package/page/docs-layout/index.d.ts +2 -0
  415. package/page/docs-layout/index.d.ts.map +1 -0
  416. package/page/docs-layout/index.js +2 -0
  417. package/page/docs-layout/index.js.map +1 -0
  418. package/page/footer/Footer.d.ts +1 -1
  419. package/page/footer/Footer.js +1 -1
  420. package/page/footer/footer.module.css +31 -31
  421. package/page/hero/Hero.d.ts +3 -3
  422. package/page/hero/Hero.d.ts.map +1 -1
  423. package/page/hero/Hero.js +1 -1
  424. package/page/hero/hero.module.css +36 -36
  425. package/page/marquee/Marquee.d.ts +2 -2
  426. package/page/marquee/Marquee.js +1 -1
  427. package/page/marquee/marquee.module.css +11 -11
  428. package/page/newsletter/Newsletter.d.ts.map +1 -1
  429. package/page/newsletter/Newsletter.js +4 -59
  430. package/page/newsletter/Newsletter.js.map +1 -1
  431. package/page/newsletter/newsletter.module.css +44 -22
  432. package/page/section-bar/SectionBar.d.ts +10 -3
  433. package/page/section-bar/SectionBar.d.ts.map +1 -1
  434. package/page/section-bar/SectionBar.js +21 -11
  435. package/page/section-bar/SectionBar.js.map +1 -1
  436. package/page/section-bar/section-bar.module.css +43 -46
  437. package/page/section-divider/SectionDivider.d.ts +2 -2
  438. package/page/section-divider/SectionDivider.js +4 -4
  439. package/page/section-divider/SectionDivider.js.map +1 -1
  440. package/page/section-divider/section-divider.module.css +18 -18
  441. package/page/section-header/SectionHeader.d.ts +7 -7
  442. package/page/section-header/SectionHeader.d.ts.map +1 -1
  443. package/page/section-header/SectionHeader.js +3 -3
  444. package/page/section-header/SectionHeader.js.map +1 -1
  445. package/page/section-header/section-header.module.css +16 -16
  446. package/utils/Ornament.d.ts +1 -1
  447. package/utils/Ornament.js +2 -2
  448. package/utils/assignRef.d.ts +7 -1
  449. package/utils/assignRef.d.ts.map +1 -1
  450. package/utils/assignRef.js +18 -0
  451. package/utils/assignRef.js.map +1 -1
  452. package/utils/docs/DemoTitle.d.ts +12 -0
  453. package/utils/docs/DemoTitle.d.ts.map +1 -0
  454. package/utils/docs/DemoTitle.js +11 -0
  455. package/utils/docs/DemoTitle.js.map +1 -0
  456. package/utils/docs/Pre.d.ts +39 -0
  457. package/utils/docs/Pre.d.ts.map +1 -0
  458. package/utils/docs/Pre.js +26 -0
  459. package/utils/docs/Pre.js.map +1 -0
  460. package/utils/docs/createDemo.d.ts +89 -0
  461. package/utils/docs/createDemo.d.ts.map +1 -0
  462. package/utils/docs/createDemo.js +51 -0
  463. package/utils/docs/createDemo.js.map +1 -0
  464. package/utils/docs/createMdxComponents.d.ts +52 -0
  465. package/utils/docs/createMdxComponents.d.ts.map +1 -0
  466. package/utils/docs/createMdxComponents.js +59 -0
  467. package/utils/docs/createMdxComponents.js.map +1 -0
  468. package/utils/docs/createTypes.d.ts +23 -0
  469. package/utils/docs/createTypes.d.ts.map +1 -0
  470. package/utils/docs/createTypes.js +27 -0
  471. package/utils/docs/createTypes.js.map +1 -0
  472. package/utils/docs/index.d.ts +8 -0
  473. package/utils/docs/index.d.ts.map +1 -0
  474. package/utils/docs/index.js +16 -0
  475. package/utils/docs/index.js.map +1 -0
  476. package/utils/docs/mdx.module.css +201 -0
  477. package/utils/docs/serverSourceEnhancers.d.ts +26 -0
  478. package/utils/docs/serverSourceEnhancers.d.ts.map +1 -0
  479. package/utils/docs/serverSourceEnhancers.js +32 -0
  480. package/utils/docs/serverSourceEnhancers.js.map +1 -0
  481. package/utils/docs/toSidebarItems.d.ts +23 -0
  482. package/utils/docs/toSidebarItems.d.ts.map +1 -0
  483. package/utils/docs/toSidebarItems.js +36 -0
  484. package/utils/docs/toSidebarItems.js.map +1 -0
  485. package/utils/font-fallbacks.css +176 -0
  486. package/utils/fonts.d.ts +1 -0
  487. package/utils/fonts.d.ts.map +1 -1
  488. package/utils/fonts.js +12 -0
  489. package/utils/fonts.js.map +1 -1
  490. package/utils/frame.d.ts +4 -0
  491. package/utils/frame.d.ts.map +1 -0
  492. package/utils/frame.js +11 -0
  493. package/utils/frame.js.map +1 -0
  494. package/utils/global.css +480 -266
  495. package/utils/line.module.css +17 -17
  496. package/utils/media.css +1 -1
  497. package/utils/ornament.module.css +19 -19
  498. package/utils/overlay.d.ts +4 -4
  499. package/utils/overlay.js +4 -4
  500. package/utils/pattern.module.css +45 -45
  501. package/utils/print.css +48 -34
  502. package/utils/reset.css +9 -2
  503. package/utils/roles.css +29 -29
  504. package/utils/seriesPatterns.js +3 -3
  505. package/utils/syntax.module.css +92 -0
  506. package/utils/theme.css +6 -6
  507. package/utils/tokens.css +262 -192
  508. package/utils/tokens.d.ts +51 -8
  509. package/utils/tokens.d.ts.map +1 -1
  510. package/utils/tokens.js +46 -9
  511. package/utils/tokens.js.map +1 -1
  512. package/utils/type.module.css +87 -87
  513. package/utils/useReleaseMark.d.ts +13 -0
  514. package/utils/useReleaseMark.d.ts.map +1 -0
  515. package/utils/useReleaseMark.js +44 -0
  516. package/utils/useReleaseMark.js.map +1 -0
  517. package/utils/view-transitions.css +122 -0
@@ -0,0 +1,949 @@
1
+ /*
2
+ * Code Block. Parts: `base` (the frame), `target` (a hidden `#slug` scroll
3
+ * target), `variantSelect` and `transformSwitch` (the one-file actions'
4
+ * scroll anchors), `transformGroup` and `transformToggle` (the TS | JS
5
+ * switch's group and halves, lightened in the header), `source`, `pre` (useCode's `preClassName`: the engine's
6
+ * `<pre>`), `checkbox` and `toggle` (the window's control). The header is
7
+ * File Tabs (`navigation/file-tabs`), which owns its geometry: the folder
8
+ * tabs in their native scroll row, the frame's side edges over them, the
9
+ * hanging "More actions" trigger (a FileTabsControl) and the status.
10
+ *
11
+ * The code's spacing is the source's, to the pixel, because it places the
12
+ * native scrollbars: `source` pads 10 px above and below and the `pre` 6 px
13
+ * more, so the tab strip's classic scrollbar hangs over the source's top
14
+ * padding and the code's own sits 6 px under the last line and 10 px above
15
+ * the frame's foot, edge to edge.
16
+ *
17
+ * The docs engine's own hooks are styled as global classes: frames and lines
18
+ * (`.frame`, `.line`, `[data-frame-*]`, `[data-hl*]`, `mark`), the swap
19
+ * (`[data-transforming]`, `.collapse`, `[data-expanding]`), the window
20
+ * (`code[data-collapsible]`, `[data-scrollbar-gutter]`), the editable
21
+ * prompt, and the syntax tokens (starry-night `pl-*`, pipeline `fgd-*`).
22
+ * Colors are role variables and scale steps only, so the block follows its
23
+ * ground and the page mode with no mode-specific rule; nothing is
24
+ * transparent, faded, shadowed or graded [D12, D91]. Local custom
25
+ * properties carry dimensions only.
26
+ */
27
+
28
+ /* Composition sits in top-level rules, outside the layers: Lightning CSS
29
+ * (Next.js with Turbopack) rejects `composes` inside @layer or any nesting.
30
+ * The composed classes keep their own layers. */
31
+ .toggle {
32
+ composes: typeButton from '../../utils/type.module.css';
33
+ }
34
+
35
+ /* The swap's line grow and shrink run as keyframes, not transitions: React
36
+ * reuses the span when a line becomes a bridge, so @starting-style would
37
+ * never fire. */
38
+ @keyframes code-block-grow {
39
+ from {
40
+ block-size: 0;
41
+ }
42
+ to {
43
+ block-size: var(--code-block-line);
44
+ }
45
+ }
46
+
47
+ @keyframes code-block-shrink {
48
+ from {
49
+ block-size: var(--code-block-line);
50
+ }
51
+ to {
52
+ block-size: 0;
53
+ }
54
+ }
55
+
56
+ @layer base {
57
+ /*
58
+ * The frame: every fill has an edge [D12], at the page's standard panel
59
+ * radius (only the tabs take the paper-tab radius). It clips nothing, as
60
+ * in the source: the header's "More actions" trigger hangs past its
61
+ * inline-end edge, and its parts keep inside it on their own (the code
62
+ * scrolls in the `pre`, the tabs in their row). No min-content floor as a flex or
63
+ * grid item. File Tabs' header sits at its top (`frame="top"`, or
64
+ * `"joined"` embedded).
65
+ */
66
+ .base {
67
+ /* The frame's corner radius (the Demo's frame takes the same token, so the embedded code shares it). */
68
+ --code-block-radius: var(--radius-2-25);
69
+
70
+ min-inline-size: 0;
71
+ margin-block: var(--size-px-5);
72
+ border: var(--border-size-1) solid var(--role-rule);
73
+ border-radius: var(--code-block-radius);
74
+ background-color: var(--primary1);
75
+ color: var(--primary12);
76
+ }
77
+
78
+ /* A hidden target for native `#slug` links: in flow, so the browser can
79
+ * scroll to it, and zero tall. */
80
+ .target {
81
+ display: block;
82
+ block-size: 0;
83
+ scroll-margin-block-start: var(--size-px-3);
84
+ }
85
+
86
+ /* The one-file actions' scroll anchors for a swap: real boxes, so they can be measured. */
87
+ .variantSelect,
88
+ .transformSwitch {
89
+ display: inline-flex;
90
+ flex: none;
91
+ }
92
+
93
+ .variantSelect {
94
+ flex: 0 1 auto;
95
+ min-inline-size: var(--size-px-10);
96
+ }
97
+
98
+ /*
99
+ * The code's wrapper: the source's 10 px above and below (the `pre`
100
+ * scrolls inside it). The foot keeps the `pre`, and so its native
101
+ * scrollbar, clear of the frame's rounded bottom corners: a rectangle is
102
+ * inside a corner of inner radius r when it sits r above the inner
103
+ * bottom edge (at any inline position, so the scrollbar and the
104
+ * highlighted lines can run edge to edge) or r(1 - 1/√2) in from both
105
+ * edges. The source's 10 px holds for our 7 px inner radius; the foot
106
+ * grows with the radius if it's ever larger.
107
+ */
108
+ .source {
109
+ --code-block-inset: 10px; /* the source's code wrapper padding; no step */
110
+ --code-block-foot: max(var(--code-block-inset), calc(var(--code-block-radius) - var(--border-size-1)));
111
+
112
+ position: relative;
113
+ padding-block: var(--code-block-inset) var(--code-block-foot);
114
+ }
115
+
116
+ /* The code: mono at the caption size, reading leading; the line height is
117
+ * also the height a swap's bridge line grows to. */
118
+ .pre {
119
+ --code-block-line: calc(var(--fgd-font-size-caption) * var(--fgd-leading-reading));
120
+ /* A classic scrollbar's height: the window swaps the real scrollbar for
121
+ * this much margin while it collapses (a platform metric, not a token). */
122
+ --code-block-gutter: 15px;
123
+ --code-block-pad: 6px; /* the source's pre padding, above and below; no step */
124
+
125
+ margin: 0;
126
+ padding-block: var(--code-block-pad);
127
+ overflow-x: auto;
128
+ tab-size: 2;
129
+ font-family: var(--fgd-font-mono);
130
+ font-size: var(--fgd-font-size-caption);
131
+ line-height: var(--code-block-line);
132
+ color: var(--primary12);
133
+ }
134
+
135
+ /* Block, so frames stretch to the widest line. */
136
+ .pre > :global(code) {
137
+ display: block;
138
+ min-inline-size: fit-content;
139
+ font: inherit;
140
+ }
141
+
142
+ .pre :global(.frame) {
143
+ display: block;
144
+ padding-inline: var(--size-px-2-5);
145
+ }
146
+
147
+ /* A lined frame: the newlines between its line spans take no space. */
148
+ .pre :global(.frame[data-lined]) {
149
+ white-space: normal;
150
+ line-height: 0;
151
+ }
152
+
153
+ .pre :global(.frame[data-lined] .line) {
154
+ display: block;
155
+ position: relative;
156
+ white-space: pre;
157
+ line-height: var(--code-block-line);
158
+ }
159
+
160
+ /*
161
+ * A blank line keeps its height, as it does in an unlined frame (the
162
+ * loading fallback, or a frame the engine hasn't lined yet), so the two
163
+ * render alike and nothing shifts when a frame is lined. Not a line a
164
+ * swap inserts, which grows from nothing.
165
+ */
166
+ .pre :global(.frame[data-lined] .line:not([data-expanding])) {
167
+ min-block-size: var(--code-block-line);
168
+ }
169
+
170
+ /*
171
+ * Emphasis: a highlighted frame or line takes the --primary3 fill and a
172
+ * --border-size-2 start bar in --role-accent, so it still reads in print
173
+ * and forced colors where fills drop; a strong line steps to --primary4.
174
+ */
175
+ .pre :global(.frame[data-frame-type='highlighted']),
176
+ .pre :global(.frame[data-frame-type='highlighted-unfocused']) {
177
+ padding-inline-start: calc(var(--size-px-2-5) - var(--border-size-2));
178
+ border-inline-start: var(--border-size-2) solid var(--role-accent);
179
+ background-color: var(--primary3);
180
+ }
181
+
182
+ /* A highlighted line in an unhighlighted frame: its own fill and bar, edge to edge. */
183
+ .pre :global(.line[data-hl]) {
184
+ margin-inline: calc(-1 * var(--size-px-2-5));
185
+ padding-inline: calc(var(--size-px-2-5) - var(--border-size-2)) var(--size-px-2-5);
186
+ border-inline-start: var(--border-size-2) solid var(--role-accent);
187
+ background-color: var(--primary3);
188
+ }
189
+
190
+ .pre :global(.line[data-hl='strong']) {
191
+ background-color: var(--primary4);
192
+ }
193
+
194
+ /* Inside a highlighted frame the frame carries the bar and fill; only a strong line adds its step. */
195
+ .pre :global(.frame[data-frame-type^='highlighted'] .line[data-hl]) {
196
+ margin-inline: calc(var(--border-size-2) - var(--size-px-2-5)) calc(-1 * var(--size-px-2-5));
197
+ padding-inline: calc(var(--size-px-2-5) - var(--border-size-2)) var(--size-px-2-5);
198
+ border-inline-start: 0;
199
+ background: none;
200
+ }
201
+
202
+ .pre :global(.frame[data-frame-type^='highlighted'] .line[data-hl='strong']) {
203
+ background-color: var(--primary4);
204
+ }
205
+
206
+ /* Inline highlights: a fill tier plus an underline, so a mark survives print. */
207
+ .pre :global(mark) {
208
+ background-color: var(--primary3);
209
+ color: inherit;
210
+ text-decoration-line: underline;
211
+ text-decoration-color: var(--role-accent);
212
+ text-decoration-thickness: var(--border-size-1);
213
+ text-underline-offset: 0.2em;
214
+ }
215
+
216
+ .pre :global(mark[data-hl]) {
217
+ background-color: var(--primary4);
218
+ }
219
+
220
+ /* Strong: the heavier underline carries it; the fill stays --primary4, where every token ink holds 4.5:1. */
221
+ .pre :global(mark[data-hl='strong']) {
222
+ text-decoration-thickness: var(--border-size-2);
223
+ }
224
+
225
+ /* Range and frame descriptions: an inverse badge at the line's end. */
226
+ .pre :global(.line[data-hl-description])::after,
227
+ .pre :global(.frame[data-frame-description])::before {
228
+ float: inline-end;
229
+ padding-inline: var(--size-px-1);
230
+ border-radius: var(--radius-1);
231
+ background-color: var(--primary12);
232
+ color: var(--primary1);
233
+ line-height: var(--fgd-leading-compact);
234
+ }
235
+
236
+ .pre :global(.line[data-hl-description])::after {
237
+ content: attr(data-hl-description);
238
+ }
239
+
240
+ .pre :global(.frame[data-frame-description])::before {
241
+ content: attr(data-frame-description);
242
+ }
243
+
244
+ /*
245
+ * The swap (useCode's `transformDelay` / `variantSwapDelay`): a bridge
246
+ * (`.collapse`, one empty span per line) and inserted lines
247
+ * (`[data-expanding]`) grow or shrink one line height each over
248
+ * --fgd-duration-swap while the `pre` carries `data-transforming`. The
249
+ * duration must equal the JS delay; both are instant under --motionNotOK.
250
+ */
251
+ .pre :global(.frame .collapse) {
252
+ display: block;
253
+ overflow: hidden;
254
+ }
255
+
256
+ .pre :global(.frame .collapse > span) {
257
+ display: block;
258
+ block-size: 0;
259
+ overflow: hidden;
260
+ }
261
+
262
+ .pre :global(.frame .line[data-expanding]) {
263
+ display: block;
264
+ overflow: hidden;
265
+ }
266
+
267
+ /*
268
+ * Editable code (only with the docs engine's editor): the wrapper is the
269
+ * keyboard stop and shows the ring; the "Press Enter to start editing"
270
+ * prompt is an inverse chip, shown with visibility, never faded.
271
+ */
272
+ .source :global(pre):focus-visible {
273
+ outline: none;
274
+ }
275
+
276
+ .source :global(.editable-code-wrapper) {
277
+ display: block;
278
+ position: relative;
279
+ }
280
+
281
+ .source :global(.editable-code-wrapper):focus-visible {
282
+ outline: var(--fgd-focus-width) solid var(--primary12);
283
+ outline-offset: calc(-1 * var(--fgd-focus-width));
284
+ }
285
+
286
+ .source :global(.editable-code-wrapper) :global(.editable-code-overlay[hidden]) {
287
+ display: block;
288
+ }
289
+
290
+ .source :global(.editable-code-wrapper) :global(.editable-code-overlay) {
291
+ position: absolute;
292
+ z-index: 1;
293
+ inset-block-start: var(--size-px-2);
294
+ inset-inline: 0;
295
+ inline-size: fit-content;
296
+ margin-inline: auto;
297
+ padding: var(--size-px-1) var(--size-px-2-5);
298
+ border: var(--border-size-2) solid var(--primary12);
299
+ border-radius: var(--radius-2-25);
300
+ background-color: var(--primary12);
301
+ color: var(--primary1);
302
+ font-family: var(--fgd-font-mono);
303
+ font-size: var(--fgd-font-size-caption);
304
+ line-height: var(--fgd-leading-compact);
305
+ visibility: hidden;
306
+ pointer-events: none;
307
+ }
308
+
309
+ .source :global(.editable-code-wrapper)[data-editable-prompt] :global(.editable-code-overlay) {
310
+ visibility: visible;
311
+ }
312
+
313
+ .source :global(.editable-code-wrapper) :global(.editable-code-overlay) :global(kbd) {
314
+ display: inline-block;
315
+ margin-inline: var(--size-px-1);
316
+ padding-inline: var(--size-px-1);
317
+ border: var(--border-size-1) solid var(--primary1);
318
+ border-radius: var(--radius-1);
319
+ font: inherit;
320
+ }
321
+
322
+ /*
323
+ * Syntax tokens. The frame's face is always --primary1, where only three
324
+ * steps are text-safe on every scope: --primary12 (11.7:1 or more),
325
+ * --secondary12 (10.7:1 or more) and --primary11 (4.9:1 or more), whatever
326
+ * the primary and secondary. So color sorts tokens into three tiers and
327
+ * weight (700, the heavier Plex Mono cut) and slant tell the rest apart:
328
+ *
329
+ * text --primary12 400
330
+ * functions --primary12 700 (entity names, JSX variables)
331
+ * strings --primary12 400 oblique (delimiters, regex, attribute values)
332
+ * keywords --secondary12 700 (and tags)
333
+ * constants --secondary12 400 (numbers, booleans, null, types, CSS values)
334
+ * comments --primary11 400 oblique
335
+ * punctuation --primary11 400
336
+ *
337
+ * Keywords and strings never share a color. Steps, not --role-muted or
338
+ * --role-heading: those follow the ground (--role-heading is
339
+ * --secondary12 on page grounds, --role-muted is --primary12 on the
340
+ * fields), while the face these tokens sit on does not. Print turns every
341
+ * step black; weight and slant still carry keywords, names, strings and
342
+ * comments.
343
+ */
344
+ .source :global(.pl-c) {
345
+ color: var(--primary11);
346
+ font-style: italic;
347
+ }
348
+
349
+ .source :global(.pl-ba),
350
+ .source :global(.pl-sg),
351
+ .source :global(.fgd-pu),
352
+ .source :global(.fgd-ae),
353
+ .source :global(.fgd-td) {
354
+ color: var(--primary11);
355
+ font-style: normal;
356
+ }
357
+
358
+ /* Keywords and tags. */
359
+ .source :global(.pl-k),
360
+ .source :global(.pl-ent),
361
+ .source :global(.fgd-jt),
362
+ .source :global(.fgd-ht),
363
+ .source :global(.fgd-this) {
364
+ color: var(--secondary12);
365
+ font-weight: var(--font-weight-7);
366
+ }
367
+
368
+ /* Constants: numbers, booleans, null, built-in types, CSS values. */
369
+ .source :global(.pl-c1),
370
+ .source :global(.pl-s .pl-v),
371
+ .source :global(.fgd-num),
372
+ .source :global(.fgd-bool),
373
+ .source :global(.fgd-n),
374
+ .source :global(.fgd-cv),
375
+ .source :global(.fgd-bt) {
376
+ color: var(--secondary12);
377
+ font-weight: var(--font-weight-4);
378
+ font-style: normal;
379
+ }
380
+
381
+ /* Strings: the ink, oblique. */
382
+ .source :global(.pl-s),
383
+ .source :global(.pl-pds),
384
+ .source :global(.pl-sr),
385
+ .source :global(.fgd-av),
386
+ .source :global(.fgd-ps) {
387
+ color: var(--primary12);
388
+ font-style: italic;
389
+ }
390
+
391
+ /* Functions and entity names: the ink, heavy. */
392
+ .source :global(.pl-e),
393
+ .source :global(.pl-en),
394
+ .source :global(.pl-v),
395
+ .source :global(.pl-smw),
396
+ .source :global(.fgd-jv) {
397
+ color: var(--primary12);
398
+ font-weight: var(--font-weight-7);
399
+ }
400
+
401
+ /* Code inside a string (a template expression) resets to plain text. */
402
+ .source :global(.pl-smi),
403
+ .source :global(.pl-s .pl-s1),
404
+ .source :global(.fgd-op),
405
+ .source :global(.fgd-ak),
406
+ .source :global(.fgd-da),
407
+ .source :global(.fgd-cp),
408
+ .source :global(.fgd-te),
409
+ .source :global(.fgd-jsx) {
410
+ color: var(--primary12);
411
+ font-style: normal;
412
+ }
413
+
414
+ .source :global(.pl-mh),
415
+ .source :global(.pl-mb),
416
+ .source :global(.pl-ms) {
417
+ font-weight: var(--font-weight-7);
418
+ }
419
+
420
+ .source :global(.pl-mi) {
421
+ font-style: italic;
422
+ }
423
+
424
+ /*
425
+ * The window's control: a visually hidden checkbox (the state, which
426
+ * works before hydration) and its label, a full-width row styled like
427
+ * CollapsibleTrigger with the disclosure glyph [D109].
428
+ */
429
+ .checkbox {
430
+ position: absolute;
431
+ inline-size: 1px;
432
+ block-size: 1px;
433
+ margin: -1px;
434
+ padding: 0;
435
+ border: 0;
436
+ overflow: hidden;
437
+ clip-path: inset(50%);
438
+ white-space: nowrap;
439
+ }
440
+
441
+ .toggle {
442
+ display: flex;
443
+ gap: var(--size-px-2);
444
+ align-items: center;
445
+ box-sizing: border-box;
446
+ inline-size: 100%;
447
+ min-block-size: var(--fgd-size-hit);
448
+ padding-inline: var(--size-px-2-5);
449
+ border-block-start: var(--border-size-1) solid var(--role-rule);
450
+ color: var(--primary12);
451
+ cursor: pointer;
452
+ }
453
+
454
+ /* The bare-text hover underline's color, weight and offset [D181]. */
455
+ .toggleLabel {
456
+ text-decoration-color: var(--role-accent);
457
+ text-decoration-thickness: var(--border-size-2);
458
+ text-underline-offset: var(--size-px-1);
459
+ }
460
+
461
+ .showFewer {
462
+ display: none;
463
+ }
464
+
465
+ /*
466
+ * The truncation edge: where the window cuts a highlighted run, a
467
+ * --border-size-2 --role-rule rule across the window's foot, in place of
468
+ * a gradient fade [D21]. It overlays the toggle's rule, so nothing shifts.
469
+ */
470
+ .source::after {
471
+ position: absolute;
472
+ inset-inline: 0;
473
+ inset-block-end: calc(-1 * var(--border-size-1));
474
+ border-block-end: var(--border-size-2) solid var(--role-rule);
475
+ visibility: hidden;
476
+ pointer-events: none;
477
+ content: '';
478
+ }
479
+
480
+ @media (forced-colors: active) {
481
+ .pre :global(.frame[data-frame-type='highlighted']),
482
+ .pre :global(.frame[data-frame-type='highlighted-unfocused']),
483
+ .pre :global(.line[data-hl]) {
484
+ border-inline-start-color: CanvasText;
485
+ }
486
+ }
487
+
488
+ @media (prefers-reduced-motion: no-preference) {
489
+ .toggleLabel {
490
+ transition-property: text-decoration-color;
491
+ transition-duration: var(--fgd-duration-quick);
492
+ transition-timing-function: var(--ease-out-3);
493
+ }
494
+ }
495
+ }
496
+
497
+ @layer variants {
498
+ /* Part of a composite that frames it (Demo): no outer frame; the header (`frame="joined"`) joins the part above. */
499
+ .embedded {
500
+ margin-block: 0;
501
+ border: 0;
502
+ border-radius: 0;
503
+ }
504
+ }
505
+
506
+ @layer states {
507
+ /*
508
+ * The TS | JS switch, lightened in the code header only, so it sits with
509
+ * the quiet header controls rather than outweighing them (user,
510
+ * 2026-09-27: "Ok let's try lightening it"). The segmented group
511
+ * (`transformGroup`) keeps its box: its edge drops from --border-size-2
512
+ * --primary12 to --border-size-1 --role-rule, the frame's rule, and a
513
+ * --border-size-1 padding makes up the difference, so the switch and the
514
+ * header keep their size. The divider between the halves always shows.
515
+ * The selected half (`transformToggle`, `data-pressed`) loses the inverse
516
+ * fill and its inside edge (its padding takes the edge's width back):
517
+ * the --primary12 ink at --font-weight-7 with its ● mark; the other half
518
+ * is --role-muted at --font-weight-4 (P11 on the P1 face: 5.77:1 or more
519
+ * in light mode, 8.98:1 in dark). Hover [D181, D140]: the group's edge
520
+ * steps to --primary12 and an off half's label to the ink, at once (the
521
+ * Toggle's own transition), with no fill or underline; the focus ring and
522
+ * the momentary pressed inverse pair are the Toggle's. The Toggle and
523
+ * Toggle Group components are unchanged everywhere else.
524
+ */
525
+ .transformSwitch > .transformGroup {
526
+ padding: calc(var(--border-size-2) - var(--border-size-1));
527
+ border-width: var(--border-size-1);
528
+ border-color: var(--role-rule);
529
+ }
530
+
531
+ .transformSwitch > .transformGroup:has(> .transformToggle:not([data-disabled]):hover) {
532
+ border-color: var(--primary12);
533
+ }
534
+
535
+ .transformSwitch > .transformGroup > span[aria-hidden='true'] {
536
+ visibility: visible;
537
+ }
538
+
539
+ .transformSwitch .transformToggle:not([data-pressed]) {
540
+ --type-weight: var(--font-weight-4);
541
+
542
+ color: var(--role-muted);
543
+ }
544
+
545
+ .transformSwitch .transformToggle[data-pressed] {
546
+ --toggle-edge: 0px;
547
+
548
+ background: none;
549
+ color: var(--primary12);
550
+ }
551
+
552
+ .transformSwitch .transformToggle[data-pressed]:not([data-disabled], :active):hover,
553
+ .transformSwitch .transformToggle:not([data-disabled], [data-pressed]):hover {
554
+ background: none;
555
+ color: var(--primary12);
556
+ }
557
+
558
+ .transformSwitch .transformToggle:not([data-disabled], [data-pressed]):hover > span {
559
+ text-decoration-line: none;
560
+ }
561
+
562
+ .transformSwitch .transformToggle:not([data-disabled]):active {
563
+ background-color: var(--primary12);
564
+ color: var(--role-inverse);
565
+ }
566
+
567
+ /* The swap's phases on the `pre`. */
568
+ .pre[data-transforming='expanded'] :global(.frame .collapse > span) {
569
+ block-size: var(--code-block-line);
570
+ }
571
+
572
+ .pre[data-transforming='collapsing'] :global(.frame .collapse > span) {
573
+ animation: code-block-shrink var(--fgd-duration-swap) var(--ease-out-3) both;
574
+ }
575
+
576
+ .pre[data-transforming='expanding'] :global(.frame .collapse > span) {
577
+ animation: code-block-grow var(--fgd-duration-swap) var(--ease-out-3) forwards;
578
+ }
579
+
580
+ .pre[data-transforming='expanded'] :global(.frame .line[data-expanding]) {
581
+ block-size: 0;
582
+ }
583
+
584
+ .pre[data-transforming='collapsing'] :global(.frame .line[data-expanding]) {
585
+ animation: code-block-grow var(--fgd-duration-swap) var(--ease-out-3) both;
586
+ }
587
+
588
+ .pre[data-transforming='expanding'] :global(.frame .line[data-expanding]) {
589
+ animation: code-block-shrink var(--fgd-duration-swap) var(--ease-out-3) forwards;
590
+ }
591
+
592
+ /*
593
+ * The window (`collapsible`, only where the code has one): frames outside
594
+ * it are clipped to no height and hidden (out of the accessibility tree,
595
+ * the focus order and the caret) until the checkbox is checked. A clip
596
+ * reveal, never opacity [D91]: --fgd-duration-disclosure on --ease-out-3,
597
+ * frames bordering the window first and the far ones after a third.
598
+ */
599
+ .base[data-collapsible]
600
+ .pre
601
+ :global(
602
+ code[data-collapsible]
603
+ > .frame:is(
604
+ :not([data-frame-type]),
605
+ [data-frame-type='highlighted-unfocused'],
606
+ [data-frame-type='focus-unfocused']
607
+ )
608
+ ) {
609
+ max-block-size: 0;
610
+ overflow: hidden;
611
+ overflow-anchor: none;
612
+ visibility: hidden;
613
+ }
614
+
615
+ .base[data-collapsible]:has(> .checkbox:checked)
616
+ .pre
617
+ :global(
618
+ code[data-collapsible]
619
+ > .frame:is(
620
+ :not([data-frame-type]),
621
+ [data-frame-type='highlighted-unfocused'],
622
+ [data-frame-type='focus-unfocused']
623
+ )
624
+ ) {
625
+ /* A frame holds at most 120 lines. */
626
+ max-block-size: calc(120 * var(--code-block-line));
627
+ visibility: visible;
628
+ }
629
+
630
+ @supports (interpolate-size: allow-keywords) {
631
+ .base[data-collapsible]
632
+ .pre
633
+ :global(
634
+ code[data-collapsible]
635
+ > .frame:is(
636
+ :not([data-frame-type]),
637
+ [data-frame-type='highlighted-unfocused'],
638
+ [data-frame-type='focus-unfocused']
639
+ )
640
+ ) {
641
+ interpolate-size: allow-keywords;
642
+ max-block-size: none;
643
+ block-size: 0;
644
+ overflow: clip;
645
+ }
646
+
647
+ .base[data-collapsible]:has(> .checkbox:checked)
648
+ .pre
649
+ :global(
650
+ code[data-collapsible]
651
+ > .frame:is(
652
+ :not([data-frame-type]),
653
+ [data-frame-type='highlighted-unfocused'],
654
+ [data-frame-type='focus-unfocused']
655
+ )
656
+ ) {
657
+ max-block-size: none;
658
+ block-size: auto;
659
+ }
660
+ }
661
+
662
+ /* The window's context lines sit a solid ink step lighter until expanded (no opacity). */
663
+ .base[data-collapsible]:not(:has(> .checkbox:checked))
664
+ .pre
665
+ :global(
666
+ code[data-collapsible]
667
+ > .frame:is([data-frame-type='padding-top'], [data-frame-type='padding-bottom'])
668
+ ),
669
+ .base[data-collapsible]:not(:has(> .checkbox:checked))
670
+ .pre
671
+ :global(
672
+ code[data-collapsible]
673
+ > .frame:is([data-frame-type='padding-top'], [data-frame-type='padding-bottom'])
674
+ *
675
+ ) {
676
+ color: var(--role-muted);
677
+ }
678
+
679
+ /* The toggle follows a windowed block: the wrapper drops its foot, leaving the pre's 6 px (the source's). */
680
+ .base[data-collapsible] .source:has(:global(code[data-collapsible])) {
681
+ padding-block-end: 0;
682
+ }
683
+
684
+ /* Collapsed: no horizontal scroll, so the window clips cleanly. */
685
+ .base[data-collapsible] .pre:has(> :global(code[data-collapsible])) {
686
+ overflow-x: hidden;
687
+ }
688
+
689
+ .base[data-collapsible]:has(> .checkbox:checked) .pre:not([data-scrollbar-gutter]) {
690
+ overflow-x: auto;
691
+ }
692
+
693
+ /* A window cut through a highlighted run: no foot padding, and the truncation edge shows. */
694
+ .base[data-collapsible]:not(:has(> .checkbox:checked))
695
+ .pre:has(> :global(code > .frame[data-frame-truncated='visible'])) {
696
+ padding-block-end: 0;
697
+ }
698
+
699
+ .base[data-collapsible]:not(:has(> .checkbox:checked))
700
+ .source:has(:global(code > .frame[data-frame-truncated='visible']))::after {
701
+ visibility: visible;
702
+ }
703
+
704
+ /* An empty window (`data-focused-lines="0"`) takes no height while collapsed, and drops the toggle's rule. */
705
+ .base[data-collapsible]:not(:has(> .checkbox:checked))
706
+ .source:has(:global(code[data-collapsible][data-focused-lines='0'])) {
707
+ padding-block-start: 0;
708
+ }
709
+
710
+ .base[data-collapsible]:not(:has(> .checkbox:checked))
711
+ .pre:has(> :global(code[data-collapsible][data-focused-lines='0'])) {
712
+ padding-block: 0;
713
+ }
714
+
715
+ .base[data-collapsible]:not(:has(> .checkbox:checked)):has(
716
+ .source :global(code[data-collapsible][data-focused-lines='0'])
717
+ )
718
+ > .toggle {
719
+ border-block-start-width: 0;
720
+ }
721
+
722
+ /*
723
+ * The scrollbar swap useCodeWindow drives on the `pre`: while the window
724
+ * moves, the real horizontal scrollbar gives way to an equal margin, so
725
+ * nothing jumps.
726
+ */
727
+ .pre[data-scrollbar-gutter] {
728
+ overflow-x: hidden;
729
+ }
730
+
731
+ .pre[data-scrollbar-gutter='collapse-from'] > :global(code),
732
+ .pre[data-scrollbar-gutter='expand-to'] > :global(code) {
733
+ margin-block-end: var(--code-block-gutter);
734
+ }
735
+
736
+ .pre[data-scrollbar-gutter='collapse-to'] > :global(code),
737
+ .pre[data-scrollbar-gutter='expand-from'] > :global(code) {
738
+ margin-block-end: 0;
739
+ }
740
+
741
+ /* The toggle: shown (with its checkbox) only where the code has a window. */
742
+ .base:not(:has(.source :global(code[data-collapsible]))) > .checkbox,
743
+ .base:not(:has(.source :global(code[data-collapsible]))) > .toggle {
744
+ display: none;
745
+ }
746
+
747
+ .checkbox:checked ~ .toggle .showAll {
748
+ display: none;
749
+ }
750
+
751
+ .checkbox:checked ~ .toggle .showFewer {
752
+ display: inline;
753
+ }
754
+
755
+ .checkbox:not(:disabled) ~ .toggle:hover .toggleLabel {
756
+ text-decoration-line: underline;
757
+ }
758
+
759
+ /* Focus: the ring on the row, inside the frame's clip, keyboard only [D45]. */
760
+ .checkbox:focus-visible ~ .toggle {
761
+ outline: var(--fgd-focus-width) solid var(--primary12);
762
+ outline-offset: calc(-1 * var(--fgd-focus-width));
763
+ }
764
+
765
+ /* Disabled (a fallback carrying only the window): --role-muted, no opacity [D85]. */
766
+ .checkbox:disabled ~ .toggle {
767
+ color: var(--role-muted);
768
+ cursor: default;
769
+ }
770
+
771
+ @media (prefers-reduced-motion: no-preference) {
772
+ .base[data-collapsible]
773
+ .pre
774
+ :global(
775
+ code[data-collapsible]
776
+ > .frame:is(
777
+ :not([data-frame-type]),
778
+ [data-frame-type='highlighted-unfocused'],
779
+ [data-frame-type='focus-unfocused']
780
+ )
781
+ ) {
782
+ transition:
783
+ max-block-size var(--fgd-duration-disclosure) var(--ease-out-3),
784
+ visibility var(--fgd-duration-disclosure);
785
+ }
786
+
787
+ /*
788
+ * Without `interpolate-size`, the capped max-block-size runs twice as
789
+ * long, so the visible growth keeps pace (the source ran it five times,
790
+ * 1000 ms; capped at 2 × --fgd-duration-disclosure, D205).
791
+ */
792
+ .base[data-collapsible]:has(> .checkbox:checked)
793
+ .pre
794
+ :global(
795
+ code[data-collapsible]
796
+ > .frame:is(
797
+ :not([data-frame-type]),
798
+ [data-frame-type='highlighted-unfocused'],
799
+ [data-frame-type='focus-unfocused']
800
+ )
801
+ ) {
802
+ transition:
803
+ max-block-size calc(2 * var(--fgd-duration-disclosure)) var(--ease-out-3),
804
+ visibility 0s;
805
+ }
806
+
807
+ @supports (interpolate-size: allow-keywords) {
808
+ .base[data-collapsible]
809
+ .pre
810
+ :global(
811
+ code[data-collapsible]
812
+ > .frame:is(
813
+ :not([data-frame-type]),
814
+ [data-frame-type='highlighted-unfocused'],
815
+ [data-frame-type='focus-unfocused']
816
+ )
817
+ ) {
818
+ transition:
819
+ block-size var(--fgd-duration-disclosure) var(--ease-out-3),
820
+ visibility var(--fgd-duration-disclosure);
821
+ }
822
+
823
+ /* Far frames wait a third, then grow in the remaining two thirds. */
824
+ .base[data-collapsible]:has(> .checkbox:checked)
825
+ .pre
826
+ :global(
827
+ code[data-collapsible]
828
+ > .frame:is(
829
+ :not([data-frame-type]),
830
+ [data-frame-type='highlighted-unfocused'],
831
+ [data-frame-type='focus-unfocused']
832
+ )
833
+ ) {
834
+ transition:
835
+ block-size calc(var(--fgd-duration-disclosure) * 2 / 3) var(--ease-out-3)
836
+ calc(var(--fgd-duration-disclosure) / 3),
837
+ visibility 0s;
838
+ }
839
+
840
+ /* Frames bordering the window grow at once, over the whole duration. */
841
+ .base[data-collapsible]:has(> .checkbox:checked)
842
+ .pre
843
+ :global(
844
+ code[data-collapsible]
845
+ > .frame:is(
846
+ :not([data-frame-type]),
847
+ [data-frame-type='highlighted-unfocused'],
848
+ [data-frame-type='focus-unfocused']
849
+ ):has(
850
+ + .frame[data-frame-type]:not(
851
+ [data-frame-type='highlighted-unfocused'],
852
+ [data-frame-type='focus-unfocused']
853
+ )
854
+ )
855
+ ),
856
+ .base[data-collapsible]:has(> .checkbox:checked)
857
+ .pre
858
+ :global(
859
+ code[data-collapsible]
860
+ > .frame[data-frame-type]:not(
861
+ [data-frame-type='highlighted-unfocused'],
862
+ [data-frame-type='focus-unfocused']
863
+ )
864
+ + .frame:is(
865
+ :not([data-frame-type]),
866
+ [data-frame-type='highlighted-unfocused'],
867
+ [data-frame-type='focus-unfocused']
868
+ )
869
+ ) {
870
+ transition:
871
+ block-size var(--fgd-duration-disclosure) var(--ease-out-3),
872
+ visibility 0s;
873
+ }
874
+ }
875
+
876
+ .base[data-collapsible] .pre:has(> :global(code[data-collapsible][data-focused-lines='0'])),
877
+ .base[data-collapsible] .source:has(:global(code[data-collapsible][data-focused-lines='0'])) {
878
+ transition: padding-block var(--fgd-duration-disclosure) var(--ease-out-3);
879
+ }
880
+
881
+ /* The toggle's top rule is a weight: it steps at once as the window opens or closes [D205]. */
882
+
883
+ .pre[data-scrollbar-gutter='collapse-to'] > :global(code),
884
+ .pre[data-scrollbar-gutter='expand-to'] > :global(code) {
885
+ transition: margin-block-end var(--fgd-duration-disclosure) var(--ease-out-3);
886
+ }
887
+ }
888
+ }
889
+
890
+ @layer print {
891
+ @media print {
892
+ /* A code block never splits across pages (§7). */
893
+ .base {
894
+ break-inside: avoid;
895
+ }
896
+
897
+ /* Screen-only controls (File Tabs hides the header's own); the file label stays. */
898
+ .checkbox,
899
+ .toggle,
900
+ .source::after {
901
+ display: none;
902
+ }
903
+
904
+ /* Paper cannot scroll: long lines wrap inside the frame, with the screen's spacing. */
905
+ .source,
906
+ .base[data-collapsible] .source {
907
+ padding-block: var(--code-block-inset);
908
+ }
909
+
910
+ .pre,
911
+ .base[data-collapsible] .pre {
912
+ padding-block: var(--code-block-pad);
913
+ overflow: visible;
914
+ white-space: pre-wrap;
915
+ overflow-wrap: anywhere;
916
+ }
917
+
918
+ .pre > :global(code) {
919
+ min-inline-size: 0;
920
+ margin-block-end: 0;
921
+ }
922
+
923
+ .pre :global(.frame[data-lined] .line) {
924
+ white-space: pre-wrap;
925
+ }
926
+
927
+ /* Disclosures print open: every frame of the window's block shows, in the ink. */
928
+ .pre :global(code > .frame),
929
+ .pre :global(code > .frame *) {
930
+ max-block-size: none;
931
+ block-size: auto;
932
+ overflow: visible;
933
+ visibility: visible;
934
+ }
935
+
936
+ .pre :global(code > .frame[data-frame-type^='padding']),
937
+ .pre :global(code > .frame[data-frame-type^='padding'] *) {
938
+ color: inherit;
939
+ }
940
+
941
+ /* Badges drop their fill on paper: an outlined tag in the ink instead. */
942
+ .pre :global(.line[data-hl-description])::after,
943
+ .pre :global(.frame[data-frame-description])::before {
944
+ border: var(--border-size-1) solid var(--primary12);
945
+ background: none;
946
+ color: var(--primary12);
947
+ }
948
+ }
949
+ }