@janga/norna 0.7.16 → 0.7.18

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 (342) hide show
  1. package/README.md +18 -9
  2. package/astro.config.mjs +35 -3
  3. package/bin/norna-cli.mjs +1 -1
  4. package/docs/README.md +16 -14
  5. package/docs/commands.md +2 -2
  6. package/docs/configuration.md +25 -2
  7. package/docs/content.md +92 -103
  8. package/docs/design/navigation-and-theme-plan.md +186 -0
  9. package/docs/design/norna-diagram-design.md +9 -9
  10. package/docs/design/site-examples-structure.md +15 -11
  11. package/docs/engine-development.md +19 -22
  12. package/docs/getting-started.md +21 -16
  13. package/docs/images-and-metadata.md +12 -9
  14. package/docs/pages.md +190 -0
  15. package/docs/public-files.md +49 -36
  16. package/docs/publishing.md +19 -3
  17. package/docs/site-files.md +46 -38
  18. package/docs/sitewide-content.md +20 -36
  19. package/docs/theme.md +109 -143
  20. package/docs/typography.md +19 -31
  21. package/examples/README.md +10 -4
  22. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/site.schema.json +17 -41
  23. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/sitewide.schema.json +26 -67
  24. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/theme.schema.json +185 -88
  25. package/examples/complete-sites/dog-shelter-multi-page/.astro/data-store.json +1 -1
  26. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev-local.json +4 -4
  27. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.json +5 -5
  28. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.log +33 -23
  29. package/examples/complete-sites/dog-shelter-multi-page/README.md +1 -1
  30. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/_metadata.json +8 -8
  31. package/examples/complete-sites/dog-shelter-multi-page/site/.norna/generated-images.json +20 -20
  32. package/examples/complete-sites/dog-shelter-multi-page/site/{content.md → pages/000-home/content.md} +3 -4
  33. package/examples/complete-sites/dog-shelter-multi-page/site/{routes → pages}/010-dogs/content.md +3 -4
  34. package/examples/complete-sites/dog-shelter-multi-page/site/{routes → pages}/020-adopt/content.md +3 -4
  35. package/examples/complete-sites/dog-shelter-multi-page/site/sitewide-content.yaml +2 -4
  36. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/site.schema.json +17 -41
  37. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/sitewide.schema.json +26 -67
  38. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/theme.schema.json +185 -88
  39. package/examples/complete-sites/dog-shelter-single-page/.astro/data-store.json +1 -1
  40. package/examples/complete-sites/dog-shelter-single-page/.astro/dev-local.json +8 -0
  41. package/examples/complete-sites/dog-shelter-single-page/.astro/dev.json +5 -5
  42. package/examples/complete-sites/dog-shelter-single-page/.astro/dev.log +16 -12
  43. package/examples/complete-sites/dog-shelter-single-page/README.md +1 -1
  44. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/_metadata.json +8 -8
  45. package/examples/complete-sites/dog-shelter-single-page/site/.norna/generated-images.json +12 -12
  46. package/examples/complete-sites/dog-shelter-single-page/site/{content.md → pages/000-home/content.md} +5 -2
  47. package/examples/complete-sites/dog-shelter-single-page/site/sitewide-content.yaml +2 -4
  48. package/examples/feature-demos/media-and-surfaces/.astro/collections/site.schema.json +17 -41
  49. package/examples/feature-demos/media-and-surfaces/.astro/collections/sitewide.schema.json +26 -67
  50. package/examples/feature-demos/media-and-surfaces/.astro/collections/theme.schema.json +180 -91
  51. package/examples/feature-demos/media-and-surfaces/.astro/data-store.json +1 -1
  52. package/examples/feature-demos/media-and-surfaces/.astro/dev.log +4 -14
  53. package/examples/feature-demos/media-and-surfaces/README.md +2 -2
  54. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/_metadata.json +9 -9
  55. package/examples/feature-demos/media-and-surfaces/site/.norna/generated-images.json +16 -16
  56. package/examples/feature-demos/media-and-surfaces/site/{content.md → pages/000-home/content.md} +4 -7
  57. package/examples/feature-demos/media-and-surfaces/site/{routes → pages}/010-media/content.md +6 -5
  58. package/examples/feature-demos/media-and-surfaces/site/{routes → pages}/020-surfaces/content.md +9 -7
  59. package/examples/feature-demos/media-and-surfaces/site/pages/020-surfaces/theme.yaml +2 -0
  60. package/examples/feature-demos/media-and-surfaces/site/sitewide-content.yaml +0 -2
  61. package/examples/feature-demos/sitewide-content/README.md +3 -3
  62. package/examples/feature-demos/sitewide-content/site/pages/000-home/content.md +17 -0
  63. package/examples/feature-demos/sitewide-content/site/pages/010-logo-and-navigation/content.md +17 -0
  64. package/examples/feature-demos/sitewide-content/site/{routes → pages}/020-notices/content.md +7 -6
  65. package/examples/feature-demos/sitewide-content/site/{routes → pages}/030-footer/content.md +6 -5
  66. package/examples/feature-demos/sitewide-content/site/sitewide-content.yaml +4 -13
  67. package/examples/feature-demos/theme-preset-documentation/README.md +16 -0
  68. package/examples/feature-demos/theme-preset-documentation/site/.norna/generated-images.json +74 -0
  69. package/examples/feature-demos/{theme-presets/site/routes/020-documentation → theme-preset-documentation/site/pages/000-home}/content.md +4 -7
  70. package/examples/feature-demos/theme-preset-documentation/site/sitewide-content.yaml +3 -0
  71. package/examples/feature-demos/theme-preset-portfolio/README.md +16 -0
  72. package/examples/feature-demos/theme-preset-portfolio/site/.norna/generated-images.json +74 -0
  73. package/examples/feature-demos/theme-preset-portfolio/site/config.yaml +1 -0
  74. package/examples/feature-demos/{theme-presets/site/routes/010-portfolio → theme-preset-portfolio/site/pages/000-home}/content.md +4 -7
  75. package/examples/feature-demos/theme-preset-portfolio/site/public/robots.txt +2 -0
  76. package/examples/feature-demos/theme-preset-portfolio/site/sitewide-content.yaml +3 -0
  77. package/examples/feature-demos/theme-preset-project/README.md +16 -0
  78. package/examples/feature-demos/theme-preset-project/site/.norna/generated-images.json +74 -0
  79. package/examples/feature-demos/theme-preset-project/site/config.yaml +1 -0
  80. package/examples/feature-demos/{theme-presets/site/routes/030-project → theme-preset-project/site/pages/000-home}/content.md +4 -7
  81. package/examples/feature-demos/theme-preset-project/site/public/robots.txt +2 -0
  82. package/examples/feature-demos/theme-preset-project/site/sitewide-content.yaml +3 -0
  83. package/examples/feature-demos/theme-preset-statement/README.md +16 -0
  84. package/examples/feature-demos/theme-preset-statement/site/.norna/generated-images.json +74 -0
  85. package/examples/feature-demos/theme-preset-statement/site/config.yaml +1 -0
  86. package/examples/feature-demos/{theme-presets/site/routes/040-statement → theme-preset-statement/site/pages/000-home}/content.md +4 -7
  87. package/examples/feature-demos/theme-preset-statement/site/public/robots.txt +2 -0
  88. package/examples/feature-demos/theme-preset-statement/site/sitewide-content.yaml +3 -0
  89. package/fixtures/basic/site/{content.md → pages/000-home/content.md} +5 -6
  90. package/fixtures/basic/site/sitewide-content.yaml +1 -8
  91. package/fixtures/basic/site/theme.yaml +1 -8
  92. package/fixtures/content-model-v2/site/{content.md → pages/000-home/content.md} +11 -13
  93. package/fixtures/content-model-v2/site/pages/010-guide/content.md +18 -0
  94. package/fixtures/nested-pages/.astro/collections/site.schema.json +35 -0
  95. package/fixtures/nested-pages/.astro/collections/sitewide.schema.json +97 -0
  96. package/fixtures/nested-pages/.astro/collections/theme.schema.json +844 -0
  97. package/fixtures/nested-pages/.astro/content-assets.mjs +4 -0
  98. package/fixtures/nested-pages/.astro/content-modules.mjs +1 -0
  99. package/fixtures/nested-pages/.astro/content.d.ts +183 -0
  100. package/fixtures/nested-pages/.astro/data-store.json +1 -0
  101. package/fixtures/nested-pages/.astro/dev-local.json +8 -0
  102. package/fixtures/nested-pages/.astro/dev.log +1128 -0
  103. package/fixtures/nested-pages/.astro/settings.json +5 -0
  104. package/fixtures/nested-pages/.astro/types.d.ts +2 -0
  105. package/fixtures/nested-pages/node_modules/.vite/deps/_metadata.json +74 -0
  106. package/fixtures/nested-pages/node_modules/.vite/deps/astro-D_GIpJIE.js +434 -0
  107. package/fixtures/nested-pages/node_modules/.vite/deps/astro-D_GIpJIE.js.map +1 -0
  108. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
  109. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
  110. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
  111. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
  112. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
  113. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
  114. package/fixtures/nested-pages/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
  115. package/fixtures/nested-pages/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
  116. package/fixtures/nested-pages/node_modules/.vite/deps/audit-DM9Hkl5B.js +1534 -0
  117. package/fixtures/nested-pages/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +1 -0
  118. package/fixtures/nested-pages/node_modules/.vite/deps/highlight-DnZ1ULOL.js +48 -0
  119. package/fixtures/nested-pages/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +1 -0
  120. package/fixtures/nested-pages/node_modules/.vite/deps/icons-RyebKi45.js +42 -0
  121. package/fixtures/nested-pages/node_modules/.vite/deps/icons-RyebKi45.js.map +1 -0
  122. package/fixtures/nested-pages/node_modules/.vite/deps/package.json +3 -0
  123. package/fixtures/nested-pages/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
  124. package/fixtures/nested-pages/node_modules/.vite/deps/settings-DaU-gNnK.js +190 -0
  125. package/fixtures/nested-pages/node_modules/.vite/deps/settings-DaU-gNnK.js.map +1 -0
  126. package/fixtures/nested-pages/node_modules/.vite/deps/toolbar-63PA619H.js +458 -0
  127. package/fixtures/nested-pages/node_modules/.vite/deps/toolbar-63PA619H.js.map +1 -0
  128. package/fixtures/nested-pages/node_modules/.vite/deps/ui-library--bkcNSYz.js +1016 -0
  129. package/fixtures/nested-pages/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +1 -0
  130. package/fixtures/nested-pages/node_modules/.vite/deps/window-jPkpKVcy.js +32 -0
  131. package/fixtures/nested-pages/node_modules/.vite/deps/window-jPkpKVcy.js.map +1 -0
  132. package/fixtures/nested-pages/node_modules/.vite/deps/xray-BXCHpEJP.js +111 -0
  133. package/fixtures/nested-pages/node_modules/.vite/deps/xray-BXCHpEJP.js.map +1 -0
  134. package/fixtures/nested-pages/site/.norna/generated-images.json +10 -0
  135. package/fixtures/nested-pages/site/config.yaml +3 -0
  136. package/fixtures/nested-pages/site/pages/000-home/content.md +15 -0
  137. package/fixtures/nested-pages/site/pages/010-guides/content.md +15 -0
  138. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/content.md +21 -0
  139. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/images/diagram.svg +21 -0
  140. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/pages/010-macos/content.md +18 -0
  141. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/theme.yaml +2 -0
  142. package/fixtures/nested-pages/site/pages/010-guides/pages/020-workflows/content.md +11 -0
  143. package/fixtures/nested-pages/site/pages/010-guides/pages/030-release-notes/content.md +9 -0
  144. package/fixtures/nested-pages/site/pages/010-guides/pages/040-configuration/content.md +3 -0
  145. package/fixtures/nested-pages/site/pages/010-guides/pages/050-content/content.md +3 -0
  146. package/fixtures/nested-pages/site/pages/010-guides/pages/060-themes/content.md +3 -0
  147. package/fixtures/nested-pages/site/pages/010-guides/pages/070-images/content.md +3 -0
  148. package/fixtures/nested-pages/site/pages/010-guides/pages/080-cards/content.md +3 -0
  149. package/fixtures/nested-pages/site/pages/010-guides/pages/090-notes/content.md +3 -0
  150. package/fixtures/nested-pages/site/pages/010-guides/pages/100-validation/content.md +3 -0
  151. package/fixtures/nested-pages/site/pages/010-guides/pages/110-synchronization/content.md +3 -0
  152. package/fixtures/nested-pages/site/pages/010-guides/pages/120-building/content.md +3 -0
  153. package/fixtures/nested-pages/site/pages/010-guides/pages/130-publishing/content.md +3 -0
  154. package/fixtures/nested-pages/site/pages/010-guides/pages/140-troubleshooting/content.md +3 -0
  155. package/fixtures/nested-pages/site/pages/010-guides/pages/150-migration/content.md +3 -0
  156. package/fixtures/nested-pages/site/pages/010-guides/pages/160-accessibility/content.md +3 -0
  157. package/fixtures/nested-pages/site/pages/010-guides/pages/170-performance/content.md +3 -0
  158. package/fixtures/nested-pages/site/pages/010-guides/pages/180-security/content.md +3 -0
  159. package/fixtures/nested-pages/site/pages/010-guides/pages/190-localization/content.md +3 -0
  160. package/fixtures/nested-pages/site/pages/010-guides/pages/200-upgrading/content.md +3 -0
  161. package/fixtures/nested-pages/site/pages/010-guides/pages/210-faq/content.md +3 -0
  162. package/fixtures/nested-pages/site/pages/010-guides/theme.yaml +7 -0
  163. package/fixtures/nested-pages/site/pages/020-reference/content.md +10 -0
  164. package/fixtures/nested-pages/site/pages/020-reference/pages/010-installation/content.md +11 -0
  165. package/fixtures/nested-pages/site/theme.yaml +1 -0
  166. package/package.json +8 -4
  167. package/schemas/config.schema.json +46 -5
  168. package/schemas/content-frontmatter.schema.json +28 -63
  169. package/schemas/manifest.json +4 -2
  170. package/schemas/page-theme.schema.json +192 -0
  171. package/schemas/sitewide-content.schema.json +58 -132
  172. package/schemas/theme.schema.json +434 -152
  173. package/scripts/check-config.mjs +8 -6
  174. package/scripts/deploy-site.mjs +6 -8
  175. package/scripts/doctor.mjs +2 -2
  176. package/scripts/generate-images.mjs +15 -29
  177. package/scripts/generate-schemas.mjs +7 -218
  178. package/scripts/lib/base-path-redirect.mjs +9 -0
  179. package/scripts/lib/editor-language-service.mjs +125 -79
  180. package/scripts/lib/example-sites.mjs +15 -3
  181. package/scripts/lib/heading-ids.mjs +161 -0
  182. package/scripts/lib/navigation-model.mjs +51 -0
  183. package/scripts/lib/norna-markdown-blocks.mjs +3 -4
  184. package/scripts/lib/page-model.mjs +102 -0
  185. package/scripts/lib/presentation.mjs +25 -17
  186. package/scripts/lib/project-config.mjs +46 -8
  187. package/scripts/lib/schema-definitions.mjs +78 -55
  188. package/scripts/lib/schema-editor-metadata.mjs +519 -0
  189. package/scripts/lib/schema-value-definitions.mjs +20 -6
  190. package/scripts/lib/site-content.mjs +159 -97
  191. package/scripts/lib/site-conventions.mjs +1 -0
  192. package/scripts/lib/site-paths.mjs +11 -5
  193. package/scripts/lib/theme-config.mjs +12 -18
  194. package/scripts/lib/theme-presets.mjs +55 -14
  195. package/scripts/release.mjs +1 -1
  196. package/scripts/show-typography.mjs +4 -30
  197. package/scripts/sync-content-sections.mjs +107 -68
  198. package/scripts/{test-temporary-visibility.mjs → test-banner-visibility.mjs} +8 -25
  199. package/scripts/test-client-javascript.mjs +50 -46
  200. package/scripts/test-content-check.mjs +153 -69
  201. package/scripts/test-content-model-v2.mjs +566 -285
  202. package/scripts/test-documentation.mjs +10 -3
  203. package/scripts/test-editor-language-service.mjs +172 -25
  204. package/scripts/test-engine-commands.mjs +6 -5
  205. package/scripts/test-examples.mjs +30 -1
  206. package/scripts/test-heading-ids.mjs +68 -0
  207. package/scripts/test-navigation-model.mjs +63 -0
  208. package/scripts/test-navigation.mjs +11 -2
  209. package/scripts/test-nested-pages.mjs +125 -0
  210. package/scripts/test-package-check.mjs +55 -95
  211. package/scripts/test-page-model.mjs +108 -0
  212. package/scripts/test-project-config.mjs +22 -3
  213. package/scripts/test-schemas.mjs +82 -15
  214. package/scripts/test-theme-presets.mjs +57 -42
  215. package/src/components/NavigationPageTree.astro +157 -0
  216. package/src/components/PageContentsLinks.astro +40 -0
  217. package/src/components/SectionNavigationScript.astro +117 -5
  218. package/src/components/SiteBreadcrumbs.astro +32 -0
  219. package/src/components/SiteNavigation.astro +97 -68
  220. package/src/components/SitePage.astro +93 -55
  221. package/src/components/SiteSection.astro +29 -27
  222. package/src/components/SiteTreeNavigation.astro +35 -0
  223. package/src/components/TreeNavigationScript.astro +83 -0
  224. package/src/content.config.ts +8 -10
  225. package/src/layouts/BaseLayout.astro +21 -20
  226. package/src/lib/pageThemes.ts +44 -0
  227. package/src/lib/sectionContent.ts +106 -107
  228. package/src/lib/siteNavigation.ts +49 -0
  229. package/src/lib/sitePages.ts +96 -38
  230. package/src/pages/{[slug].astro → [...slug].astro} +2 -2
  231. package/src/pages/index.astro +2 -1
  232. package/src/styles/global.css +743 -57
  233. package/starters/basic/README.md +9 -11
  234. package/starters/basic/site/{content.md → pages/000-home/content.md} +7 -4
  235. package/starters/basic/site/sitewide-content.yaml +1 -10
  236. package/starters/basic/site/theme.yaml +1 -105
  237. package/starters/project/README.md +14 -14
  238. package/starters/project/site/{content.md → pages/000-home/content.md} +5 -4
  239. package/starters/project/site/{routes → pages}/010-guide/content.md +5 -4
  240. package/starters/project/site/sitewide-content.yaml +1 -10
  241. package/starters/project/site/theme.yaml +1 -31
  242. package/docs/routes.md +0 -121
  243. package/examples/feature-demos/media-and-surfaces/site/routes/020-surfaces/theme.yaml +0 -3
  244. package/examples/feature-demos/sitewide-content/site/content.md +0 -16
  245. package/examples/feature-demos/sitewide-content/site/routes/010-identity/content.md +0 -20
  246. package/examples/feature-demos/theme-presets/README.md +0 -18
  247. package/examples/feature-demos/theme-presets/site/.norna/generated-images.json +0 -290
  248. package/examples/feature-demos/theme-presets/site/content.md +0 -17
  249. package/examples/feature-demos/theme-presets/site/sitewide-content.yaml +0 -12
  250. package/examples/feature-demos/theme-presets/site/theme.yaml +0 -1
  251. package/fixtures/content-model-v2/site/routes/010-guide/content.md +0 -17
  252. package/scripts/lib/route-model.mjs +0 -17
  253. package/scripts/test-route-model.mjs +0 -32
  254. package/src/lib/routeThemes.ts +0 -41
  255. /package/examples/complete-sites/dog-shelter-multi-page/site/{images/intro → pages/000-home/images}/shelter-dog.jpg +0 -0
  256. /package/examples/complete-sites/dog-shelter-multi-page/site/{routes/010-dogs/images/dogs → pages/010-dogs/images}/rex.jpg +0 -0
  257. /package/examples/complete-sites/dog-shelter-multi-page/site/{routes/010-dogs/images/dogs → pages/010-dogs/images}/rover.jpg +0 -0
  258. /package/examples/complete-sites/dog-shelter-multi-page/site/{routes/020-adopt/images/adopt → pages/020-adopt/images}/adoption-dog.jpg +0 -0
  259. /package/examples/complete-sites/dog-shelter-single-page/site/{images/you-can-help → pages/000-home/images}/foster-dog.jpg +0 -0
  260. /package/examples/complete-sites/dog-shelter-single-page/site/{images/what-we-do → pages/000-home/images}/rescue-dog.jpg +0 -0
  261. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/cards → pages/010-media/images}/card-carousel.svg +0 -0
  262. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/cards → pages/010-media/images}/card-stack.svg +0 -0
  263. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/cards → pages/010-media/images}/card-surfaces.svg +0 -0
  264. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/carousel → pages/010-media/images}/carousel-one.svg +0 -0
  265. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/carousel → pages/010-media/images}/carousel-three.svg +0 -0
  266. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/carousel → pages/010-media/images}/carousel-two.svg +0 -0
  267. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/stack → pages/010-media/images}/stack-one.svg +0 -0
  268. /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/stack → pages/010-media/images}/stack-two.svg +0 -0
  269. /package/examples/feature-demos/{theme-presets → theme-preset-documentation}/site/config.yaml +0 -0
  270. /package/examples/feature-demos/{theme-presets/site/routes/020-documentation/images/documentation → theme-preset-documentation/site/pages/000-home/images}/black-schnauzer.jpg +0 -0
  271. /package/examples/feature-demos/{theme-presets/site/routes/020-documentation/images/documentation → theme-preset-documentation/site/pages/000-home/images}/retriever-portrait.jpg +0 -0
  272. /package/examples/feature-demos/{theme-presets/site/routes/020-documentation/images/documentation → theme-preset-documentation/site/pages/000-home/images}/schnauzer-portrait.jpg +0 -0
  273. /package/examples/feature-demos/{theme-presets → theme-preset-documentation}/site/public/robots.txt +0 -0
  274. /package/examples/feature-demos/{theme-presets/site/routes/020-documentation → theme-preset-documentation/site}/theme.yaml +0 -0
  275. /package/examples/feature-demos/{theme-presets/site/routes/010-portfolio/images/portfolio → theme-preset-portfolio/site/pages/000-home/images}/puppy-portrait.jpg +0 -0
  276. /package/examples/feature-demos/{theme-presets/site/routes/010-portfolio/images/portfolio → theme-preset-portfolio/site/pages/000-home/images}/shepherd-portrait.jpg +0 -0
  277. /package/examples/feature-demos/{theme-presets/site/routes/010-portfolio/images/portfolio → theme-preset-portfolio/site/pages/000-home/images}/white-puppy.jpg +0 -0
  278. /package/examples/feature-demos/{theme-presets/site/routes/010-portfolio → theme-preset-portfolio/site}/theme.yaml +0 -0
  279. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/routeTheme.schema.json +0 -0
  280. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/site.schema.json +0 -0
  281. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/sitewide.schema.json +0 -0
  282. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/theme.schema.json +0 -0
  283. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/content-assets.mjs +0 -0
  284. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/content-modules.mjs +0 -0
  285. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/content.d.ts +0 -0
  286. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/data-store.json +0 -0
  287. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/dev-local.json +0 -0
  288. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/dev.json +0 -0
  289. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/dev.log +0 -0
  290. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/settings.json +0 -0
  291. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/types.d.ts +0 -0
  292. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/_metadata.json +0 -0
  293. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro-D_GIpJIE.js +0 -0
  294. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -0
  295. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_aria-query.js +0 -0
  296. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -0
  297. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_axobject-query.js +0 -0
  298. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -0
  299. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_html-escaper.js +0 -0
  300. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -0
  301. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -0
  302. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -0
  303. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/audit-DM9Hkl5B.js +0 -0
  304. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -0
  305. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/embla-carousel.js +0 -0
  306. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/embla-carousel.js.map +0 -0
  307. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/highlight-DnZ1ULOL.js +0 -0
  308. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -0
  309. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/icons-RyebKi45.js +0 -0
  310. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -0
  311. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/package.json +0 -0
  312. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -0
  313. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/settings-DaU-gNnK.js +0 -0
  314. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -0
  315. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/toolbar-63PA619H.js +0 -0
  316. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -0
  317. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/ui-library--bkcNSYz.js +0 -0
  318. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -0
  319. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/window-jPkpKVcy.js +0 -0
  320. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -0
  321. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/xray-BXCHpEJP.js +0 -0
  322. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -0
  323. /package/examples/feature-demos/{theme-presets/site/routes/030-project/images/project → theme-preset-project/site/pages/000-home/images}/boxer-portrait.jpg +0 -0
  324. /package/examples/feature-demos/{theme-presets/site/routes/030-project/images/project → theme-preset-project/site/pages/000-home/images}/grass-puppy.jpg +0 -0
  325. /package/examples/feature-demos/{theme-presets/site/routes/030-project/images/project → theme-preset-project/site/pages/000-home/images}/grey-street-dog.jpg +0 -0
  326. /package/examples/feature-demos/{theme-presets/site/routes/030-project → theme-preset-project/site}/theme.yaml +0 -0
  327. /package/examples/feature-demos/{theme-presets/site/routes/040-statement/images/statement → theme-preset-statement/site/pages/000-home/images}/black-pedigree.jpg +0 -0
  328. /package/examples/feature-demos/{theme-presets/site/routes/040-statement/images/statement → theme-preset-statement/site/pages/000-home/images}/sheepdog-grass.jpg +0 -0
  329. /package/examples/feature-demos/{theme-presets/site/routes/040-statement/images/statement → theme-preset-statement/site/pages/000-home/images}/sheepdog-wide.jpg +0 -0
  330. /package/examples/feature-demos/{theme-presets/site/routes/040-statement → theme-preset-statement/site}/theme.yaml +0 -0
  331. /package/fixtures/basic/site/{images/work → pages/000-home/images}/.gitkeep +0 -0
  332. /package/fixtures/content-model-v2/site/{images/card-section → pages/000-home/images}/adopt.svg +0 -0
  333. /package/fixtures/content-model-v2/site/{images/intro → pages/000-home/images}/detail.jpg +0 -0
  334. /package/fixtures/content-model-v2/site/{images/intro → pages/000-home/images}/duplicate.jpg +0 -0
  335. /package/fixtures/content-model-v2/site/{images/card-section → pages/000-home/images}/foster.svg +0 -0
  336. /package/fixtures/content-model-v2/site/{images/intro → pages/000-home/images}/hero.jpg +0 -0
  337. /package/fixtures/content-model-v2/site/{images/plain → pages/000-home/images}/image.jpg +0 -0
  338. /package/fixtures/content-model-v2/site/{images/timed → pages/000-home/images}/slide-one.jpg +0 -0
  339. /package/fixtures/content-model-v2/site/{images/timed → pages/000-home/images}/slide-three.jpg +0 -0
  340. /package/fixtures/content-model-v2/site/{images/timed → pages/000-home/images}/slide-two.jpg +0 -0
  341. /package/fixtures/content-model-v2/site/{routes/010-guide/images/intro → pages/010-guide/images}/duplicate.jpg +0 -0
  342. /package/starters/basic/site/{images/work → pages/000-home/images}/.gitkeep +0 -0
@@ -44,6 +44,9 @@
44
44
  --space-section-to-section-desktop: clamp(2.55rem, 4.2vw, 3.9rem);
45
45
  --space-section-to-section-mobile: 2.25rem;
46
46
  --space-section-to-section: var(--space-section-to-section-desktop);
47
+ --space-page-title-to-first-section-desktop: clamp(0.9rem, 1.6vw, 1.4rem);
48
+ --space-page-title-to-first-section-mobile: 0.9rem;
49
+ --space-page-title-to-first-section: var(--space-page-title-to-first-section-desktop);
47
50
  --space-final-section-bottom-desktop: var(--space-section-to-section-desktop);
48
51
  --space-final-section-bottom-mobile: var(--space-section-to-section-mobile);
49
52
  --space-final-section-bottom: var(--space-final-section-bottom-desktop);
@@ -96,6 +99,19 @@ a {
96
99
  color: var(--color-page);
97
100
  }
98
101
 
102
+ .visually-hidden {
103
+ position: absolute;
104
+ width: 1px;
105
+ height: 1px;
106
+ margin: -1px;
107
+ padding: 0;
108
+ border: 0;
109
+ overflow: hidden;
110
+ clip: rect(0 0 0 0);
111
+ clip-path: inset(50%);
112
+ white-space: nowrap;
113
+ }
114
+
99
115
  .skip-link {
100
116
  position: fixed;
101
117
  top: 0.75rem;
@@ -193,13 +209,18 @@ a {
193
209
  }
194
210
 
195
211
  .site-nav a:hover,
212
+ .site-nav a:focus-visible,
196
213
  .site-nav a[aria-current='page'],
197
214
  .mobile-nav-panel a:hover,
215
+ .mobile-nav-panel a:focus-visible,
198
216
  .mobile-nav-panel a[aria-current='page'] {
199
217
  opacity: 1;
200
218
  }
201
219
 
202
- .site-nav a[aria-current='page'] {
220
+ .site-nav > ul > .site-nav-item > a:hover,
221
+ .site-nav > ul > .site-nav-item > a:focus-visible,
222
+ .site-nav > ul > .site-nav-item > a[aria-current='page'],
223
+ .site-nav > ul > .site-nav-item-current-branch > a {
203
224
  text-decoration: underline;
204
225
  text-decoration-thickness: 1px;
205
226
  text-underline-offset: 0.35em;
@@ -232,6 +253,20 @@ a {
232
253
  gap: 0.65rem;
233
254
  }
234
255
 
256
+ .site-nav-submenu .navigation-page-tree-submenu {
257
+ gap: 0.75rem;
258
+ }
259
+
260
+ .site-nav-submenu .navigation-page-tree-submenu .navigation-page-tree-submenu {
261
+ margin: 0.15rem 0 0 0.35rem;
262
+ border-left: 1px solid color-mix(in srgb, currentColor 24%, transparent);
263
+ padding-left: 0.75rem;
264
+ }
265
+
266
+ .site-nav-submenu .navigation-page-link {
267
+ font-weight: 650;
268
+ }
269
+
235
270
  .site-nav-submenu a {
236
271
  font-size: 0.76rem;
237
272
  letter-spacing: 0.03em;
@@ -242,7 +277,8 @@ a {
242
277
  }
243
278
 
244
279
  .site-nav-submenu a:hover,
245
- .site-nav-submenu a:focus-visible {
280
+ .site-nav-submenu a:focus-visible,
281
+ .site-nav-submenu a[aria-current='location'] {
246
282
  opacity: 1;
247
283
  text-decoration: underline;
248
284
  text-underline-offset: 0.25em;
@@ -256,6 +292,13 @@ a {
256
292
  transform: translate(-50%, 0);
257
293
  }
258
294
 
295
+ .site-nav-item[data-submenu-dismissed='true'] .site-nav-submenu {
296
+ opacity: 0;
297
+ visibility: hidden;
298
+ pointer-events: none;
299
+ transform: translate(-50%, -0.35rem);
300
+ }
301
+
259
302
  .mobile-nav-menu {
260
303
  display: none;
261
304
  }
@@ -264,10 +307,29 @@ a {
264
307
  border-top: 1px solid color-mix(in srgb, currentColor 14%, transparent);
265
308
  }
266
309
 
310
+ .page-nav-inner {
311
+ display: flex;
312
+ align-items: center;
313
+ justify-content: center;
314
+ gap: clamp(1.1rem, 2.5vw, 2rem);
315
+ width: min(calc(100% - (var(--content-gutter) * 2)), var(--page-width));
316
+ margin: 0 auto;
317
+ }
318
+
319
+ .page-nav-label {
320
+ flex: 0 0 auto;
321
+ font-size: 0.7rem;
322
+ font-weight: 650;
323
+ letter-spacing: 0.08em;
324
+ opacity: 0.55;
325
+ text-transform: uppercase;
326
+ white-space: nowrap;
327
+ }
328
+
267
329
  .page-nav ul {
268
330
  display: flex;
269
331
  flex-wrap: wrap;
270
- justify-content: center;
332
+ justify-content: flex-start;
271
333
  gap: 0 clamp(1.4rem, 4vw, 3.25rem);
272
334
  margin: 0;
273
335
  padding: 0;
@@ -302,14 +364,19 @@ a {
302
364
  }
303
365
 
304
366
  .page-nav a:hover,
305
- .page-nav a:focus-visible {
367
+ .page-nav a:focus-visible,
368
+ .page-nav a[aria-current='location'] {
306
369
  opacity: 1;
307
370
  text-decoration: underline;
308
371
  text-decoration-thickness: 1px;
309
372
  text-underline-offset: 0.35em;
310
373
  }
311
374
 
312
- .mobile-page-nav a[aria-current='true'] {
375
+ .page-nav .page-nav-page-top {
376
+ font-weight: 700;
377
+ }
378
+
379
+ .mobile-nav-sections a[aria-current='location'] {
313
380
  opacity: 1;
314
381
  text-decoration: underline;
315
382
  text-decoration-thickness: 1px;
@@ -330,6 +397,323 @@ a {
330
397
  padding: 0;
331
398
  }
332
399
 
400
+ .site-page-layout:not(.site-page-layout-tree) {
401
+ display: contents;
402
+ }
403
+
404
+ .site-page-layout-tree {
405
+ display: grid;
406
+ grid-template-columns: minmax(12rem, 14rem) minmax(0, 1fr);
407
+ align-items: start;
408
+ gap: var(--local-navigation-gap, clamp(1.5rem, 3vw, 3rem));
409
+ min-height: calc(100svh - var(--site-top-anchor-offset));
410
+ width: min(calc(100% - (var(--content-gutter) * 2)), max(var(--page-width), 76rem));
411
+ margin: 0 auto;
412
+ }
413
+
414
+ .site-page-layout-tree > .site-content {
415
+ width: 100%;
416
+ min-width: 0;
417
+ }
418
+
419
+ .tree-local-navigation {
420
+ position: sticky;
421
+ top: calc(var(--site-top-anchor-offset) + 1.25rem);
422
+ z-index: 3;
423
+ max-height: calc(100svh - var(--site-top-anchor-offset) - 2.5rem);
424
+ padding: 1.5rem 0;
425
+ background: var(--color-page);
426
+ overflow-y: auto;
427
+ overscroll-behavior: contain;
428
+ }
429
+
430
+ .navigation-page-sections {
431
+ margin: 0.15rem 0 0.55rem 0.3rem;
432
+ border-left: 2px solid color-mix(in srgb, currentColor 38%, transparent);
433
+ padding: 0.2rem 0 0.25rem 0.85rem;
434
+ }
435
+
436
+ .navigation-page-tree,
437
+ .page-contents-links {
438
+ margin: 0;
439
+ padding: 0;
440
+ list-style: none;
441
+ }
442
+
443
+ .navigation-page-node {
444
+ position: relative;
445
+ }
446
+
447
+ .navigation-page-tree-sidebar .navigation-page-link {
448
+ display: block;
449
+ padding: 0.45rem 2rem 0.45rem 0;
450
+ color: inherit;
451
+ font-size: 0.86rem;
452
+ line-height: 1.35;
453
+ opacity: 0.72;
454
+ text-decoration: none;
455
+ }
456
+
457
+ .navigation-page-tree-sidebar > .navigation-page-node > .navigation-page-link {
458
+ font-size: 0.94rem;
459
+ font-weight: 700;
460
+ opacity: 1;
461
+ }
462
+
463
+ .navigation-page-tree-sidebar .navigation-page-link:hover,
464
+ .navigation-page-tree-sidebar .navigation-page-link:focus-visible,
465
+ .navigation-page-tree-sidebar .navigation-page-link[aria-current='page'] {
466
+ opacity: 1;
467
+ text-decoration: underline;
468
+ text-decoration-thickness: 1px;
469
+ text-underline-offset: 0.28em;
470
+ }
471
+
472
+ .navigation-page-tree-sidebar .navigation-page-tree-sidebar {
473
+ margin: 0.25rem 0 0.25rem 0.3rem;
474
+ border-left: 1px solid color-mix(in srgb, currentColor 18%, transparent);
475
+ padding-left: 0.85rem;
476
+ }
477
+
478
+ .navigation-page-branch:not(.navigation-page-disclosure) > summary {
479
+ position: absolute;
480
+ top: 0.25rem;
481
+ right: 0;
482
+ display: grid;
483
+ place-items: center;
484
+ width: 1.8rem;
485
+ height: 1.8rem;
486
+ border: 0;
487
+ border-radius: var(--shape-radius-small, 2px);
488
+ list-style: none;
489
+ cursor: pointer;
490
+ opacity: 0.66;
491
+ }
492
+
493
+ .navigation-page-branch:not(.navigation-page-disclosure) > summary::-webkit-details-marker {
494
+ display: none;
495
+ }
496
+
497
+ .navigation-page-branch:not(.navigation-page-disclosure) > summary:hover,
498
+ .navigation-page-branch:not(.navigation-page-disclosure) > summary:focus-visible {
499
+ background: color-mix(in srgb, currentColor 8%, transparent);
500
+ opacity: 1;
501
+ }
502
+
503
+ .navigation-page-branch:not(.navigation-page-disclosure) > summary > [aria-hidden='true']::before {
504
+ content: "+";
505
+ }
506
+
507
+ .navigation-page-branch:not(.navigation-page-disclosure)[open] > summary > [aria-hidden='true']::before {
508
+ content: "−";
509
+ }
510
+
511
+ .navigation-page-disclosure > .navigation-page-summary {
512
+ display: flex;
513
+ align-items: center;
514
+ justify-content: space-between;
515
+ width: 100%;
516
+ border: 0;
517
+ border-radius: var(--shape-radius-small, 2px);
518
+ padding: 0.45rem 0;
519
+ font-size: 0.86rem;
520
+ line-height: 1.35;
521
+ list-style: none;
522
+ cursor: pointer;
523
+ opacity: 0.72;
524
+ }
525
+
526
+ .navigation-page-disclosure {
527
+ position: relative;
528
+ }
529
+
530
+ .navigation-page-disclosure > .navigation-page-summary::-webkit-details-marker {
531
+ display: none;
532
+ }
533
+
534
+ .navigation-page-disclosure > .navigation-page-summary:hover,
535
+ .navigation-page-disclosure > .navigation-page-summary:focus-visible,
536
+ .navigation-page-disclosure[data-current-page='true'] > .navigation-page-summary {
537
+ opacity: 1;
538
+ }
539
+
540
+ .navigation-page-disclosure > .navigation-page-summary:hover > :first-child,
541
+ .navigation-page-disclosure > .navigation-page-summary:focus-visible > :first-child,
542
+ .navigation-page-disclosure[data-current-page='true'] > .navigation-page-summary > :first-child {
543
+ text-decoration: underline;
544
+ text-decoration-thickness: 1px;
545
+ text-underline-offset: 0.28em;
546
+ }
547
+
548
+ .navigation-page-disclosure[open] > .navigation-page-summary > .navigation-page-summary-title {
549
+ opacity: 0;
550
+ }
551
+
552
+ .navigation-page-open-link {
553
+ position: absolute;
554
+ top: 0;
555
+ left: 0;
556
+ display: none;
557
+ max-width: calc(100% - 2rem);
558
+ padding: 0.45rem 0;
559
+ color: inherit;
560
+ font-size: 0.86rem;
561
+ line-height: 1.35;
562
+ opacity: 0.72;
563
+ overflow: hidden;
564
+ text-decoration: none;
565
+ text-overflow: ellipsis;
566
+ white-space: nowrap;
567
+ }
568
+
569
+ .navigation-page-disclosure[open] > .navigation-page-open-link {
570
+ display: block;
571
+ }
572
+
573
+ .navigation-page-open-link:hover,
574
+ .navigation-page-open-link:focus-visible,
575
+ .navigation-page-open-link[aria-current='page'] {
576
+ opacity: 1;
577
+ text-decoration: underline;
578
+ text-decoration-thickness: 1px;
579
+ text-underline-offset: 0.28em;
580
+ }
581
+
582
+ .navigation-page-chevron::before {
583
+ display: block;
584
+ content: "›";
585
+ font-size: 1.15rem;
586
+ line-height: 1;
587
+ transition: transform 140ms ease;
588
+ }
589
+
590
+ .navigation-page-disclosure[open] > .navigation-page-summary .navigation-page-chevron::before {
591
+ transform: rotate(90deg);
592
+ }
593
+
594
+ .navigation-page-tree-sidebar > .navigation-page-node > .navigation-page-disclosure > .navigation-page-summary {
595
+ font-size: 0.94rem;
596
+ font-weight: 700;
597
+ opacity: 1;
598
+ }
599
+
600
+ .navigation-page-tree-sidebar > .navigation-page-node > .navigation-page-disclosure > .navigation-page-open-link {
601
+ font-size: 0.94rem;
602
+ font-weight: 700;
603
+ opacity: 1;
604
+ }
605
+
606
+ .navigation-page-tree-sidebar .navigation-page-disclosure > .navigation-page-branch-content {
607
+ margin: 0.1rem 0 0.25rem 0.3rem;
608
+ border-left: 1px solid color-mix(in srgb, currentColor 18%, transparent);
609
+ padding-left: 0.85rem;
610
+ }
611
+
612
+ .navigation-page-tree-sidebar .navigation-page-disclosure .navigation-page-tree-sidebar {
613
+ margin: 0.25rem 0;
614
+ border-left: 0;
615
+ padding-left: 0;
616
+ }
617
+
618
+ .navigation-page-disclosure[data-current-branch='true']:not([data-current-page='true']):not([data-sections-open='true'])
619
+ > .navigation-page-branch-content > .navigation-page-sections {
620
+ display: none;
621
+ }
622
+
623
+ .page-contents-links li + li {
624
+ margin-top: 0.45rem;
625
+ }
626
+
627
+ .page-contents-links ol {
628
+ margin: 0.45rem 0 0;
629
+ padding-left: 0.8rem;
630
+ border-left: 1px solid color-mix(in srgb, currentColor 16%, transparent);
631
+ list-style: none;
632
+ }
633
+
634
+ .page-contents-links a {
635
+ display: block;
636
+ color: inherit;
637
+ font-size: 0.8rem;
638
+ line-height: 1.4;
639
+ opacity: 0.64;
640
+ text-decoration: none;
641
+ }
642
+
643
+ .page-contents-links a:hover,
644
+ .page-contents-links a:focus-visible,
645
+ .page-contents-links a[aria-current='location'] {
646
+ opacity: 1;
647
+ text-decoration: underline;
648
+ text-underline-offset: 0.25em;
649
+ }
650
+
651
+ .site-breadcrumbs {
652
+ height: calc(clamp(1rem, 2.5vw, 1.5rem) + 1.35rem);
653
+ width: min(100%, var(--page-text-width, var(--text-width)));
654
+ margin: 0 auto;
655
+ padding-top: clamp(1rem, 2.5vw, 1.5rem);
656
+ font-size: 1rem;
657
+ line-height: 1.4;
658
+ overflow: hidden;
659
+ }
660
+
661
+ .site-breadcrumbs ol {
662
+ display: flex;
663
+ flex-wrap: nowrap;
664
+ gap: 0;
665
+ margin: 0;
666
+ padding: 0;
667
+ font-size: 0.78rem;
668
+ list-style: none;
669
+ white-space: nowrap;
670
+ }
671
+
672
+ .site-breadcrumbs li {
673
+ display: flex;
674
+ min-width: 0;
675
+ align-items: center;
676
+ }
677
+
678
+ .site-breadcrumbs li:last-child {
679
+ flex: 0 1 auto;
680
+ }
681
+
682
+ .site-breadcrumbs li + li::before {
683
+ margin: 0 0.55rem;
684
+ content: "/";
685
+ opacity: 0.38;
686
+ }
687
+
688
+ .site-breadcrumbs a {
689
+ display: block;
690
+ min-width: 0;
691
+ color: inherit;
692
+ opacity: 0.72;
693
+ overflow: hidden;
694
+ text-decoration: none;
695
+ text-overflow: ellipsis;
696
+ }
697
+
698
+ .site-breadcrumbs a:hover,
699
+ .site-breadcrumbs a:focus-visible {
700
+ opacity: 1;
701
+ text-decoration: underline;
702
+ text-underline-offset: 0.25em;
703
+ }
704
+
705
+ .site-breadcrumbs [aria-current='page'] {
706
+ display: block;
707
+ min-width: 0;
708
+ overflow: hidden;
709
+ font-weight: 650;
710
+ text-overflow: ellipsis;
711
+ }
712
+
713
+ .site-content-has-breadcrumbs > .site-section:first-of-type {
714
+ padding-top: clamp(1.15rem, 2.5vw, 1.75rem);
715
+ }
716
+
333
717
  .site-banners {
334
718
  position: relative;
335
719
  z-index: 2;
@@ -450,11 +834,27 @@ a {
450
834
  pointer-events: none;
451
835
  }
452
836
 
837
+ .site-page-layout-tree .site-section::before {
838
+ left: 0;
839
+ }
840
+
453
841
  .site-section + .site-section {
454
842
  margin-top: 0;
455
843
  padding-top: var(--space-section-to-section);
456
844
  }
457
845
 
846
+ .site-section-page-title-empty .section-header {
847
+ padding-bottom: 0;
848
+ }
849
+
850
+ .site-section-page-title-empty .section-header h1 {
851
+ padding-bottom: 0;
852
+ }
853
+
854
+ .site-section-page-title-empty + .site-section {
855
+ padding-top: var(--space-page-title-to-first-section);
856
+ }
857
+
458
858
  .site-section:last-child {
459
859
  padding-bottom: var(--space-final-section-bottom);
460
860
  }
@@ -467,11 +867,12 @@ a {
467
867
  .section-header {
468
868
  width: min(100%, var(--section-heading-width-desktop, 760px));
469
869
  margin: 0 auto;
470
- padding: 0 0 var(--section-heading-spacing-after, 0.55em);
870
+ padding: 0;
471
871
  text-align: var(--section-heading-align-desktop, center);
472
872
  }
473
873
 
474
- .site-section-first-block-is-visual .section-header {
874
+ .site-section-first-block-is-visual .section-header h1,
875
+ .site-section-first-block-is-visual .section-header h2 {
475
876
  padding-bottom: var(--space-heading-to-block);
476
877
  }
477
878
 
@@ -485,6 +886,7 @@ ul {
485
886
  .section-header h1,
486
887
  .section-header h2 {
487
888
  margin-bottom: 0;
889
+ padding-bottom: var(--section-heading-spacing-after, 0.55em);
488
890
  color: inherit;
489
891
  font-size: var(--section-heading-font-size-desktop, clamp(1.35rem, 1.1rem + 0.9vw, 2rem));
490
892
  font-weight: var(--section-heading-font-weight, 400);
@@ -612,7 +1014,7 @@ ul {
612
1014
  .section-markdown pre.astro-code {
613
1015
  margin: 0 0 var(--section-body-paragraph-spacing, 1em);
614
1016
  border: 1px solid color-mix(in srgb, currentColor 18%, transparent);
615
- border-radius: 6px;
1017
+ border-radius: var(--shape-radius-medium, 6px);
616
1018
  padding: 0.78rem 0.9rem;
617
1019
  background: #0d1117 !important;
618
1020
  font-size: 0.92em;
@@ -789,7 +1191,7 @@ ul {
789
1191
  align-content: start;
790
1192
  margin: 0;
791
1193
  border: 1px solid color-mix(in srgb, currentColor 18%, transparent);
792
- border-radius: 8px;
1194
+ border-radius: var(--shape-radius-large, 8px);
793
1195
  padding: var(--card-list-padding);
794
1196
  background: color-mix(in srgb, var(--section-background-color, var(--color-page)) 92%, currentColor 8%);
795
1197
  color: inherit;
@@ -1115,6 +1517,7 @@ ul {
1115
1517
  --space-heading-to-block: var(--space-heading-to-block-mobile);
1116
1518
  --space-image-item: var(--space-image-item-mobile);
1117
1519
  --space-section-to-section: var(--space-section-to-section-mobile);
1520
+ --space-page-title-to-first-section: var(--space-page-title-to-first-section-mobile);
1118
1521
  --space-final-section-bottom: var(--space-final-section-bottom-mobile);
1119
1522
  --content-gutter: var(--content-gutter-mobile);
1120
1523
  --image-max-available-width: var(--image-max-available-width-mobile);
@@ -1122,6 +1525,10 @@ ul {
1122
1525
  --site-top-anchor-offset: 6.25rem;
1123
1526
  }
1124
1527
 
1528
+ .site-top {
1529
+ backdrop-filter: none;
1530
+ }
1531
+
1125
1532
  .site-nav-row {
1126
1533
  width: min(calc(100% - (var(--content-gutter) * 2)), var(--page-width));
1127
1534
  padding: 0.75rem 0;
@@ -1146,30 +1553,20 @@ ul {
1146
1553
  display: block;
1147
1554
  position: relative;
1148
1555
  flex: 0 0 auto;
1556
+ margin-left: auto;
1149
1557
  }
1150
1558
 
1151
- .page-nav ul {
1152
- gap: 0 1.55rem;
1153
- padding: 0 1rem;
1154
- text-align: center;
1155
- }
1156
-
1157
- .page-nav li + li::before {
1158
- left: -0.95rem;
1159
- }
1160
-
1161
- .page-nav a {
1162
- padding: 0.95rem 0 0.85rem;
1163
- font-size: 0.72rem;
1164
- white-space: nowrap;
1559
+ .page-nav {
1560
+ display: none;
1165
1561
  }
1166
1562
 
1167
- .mobile-nav-menu summary {
1563
+ .mobile-nav-menu > summary {
1168
1564
  display: flex;
1169
1565
  align-items: center;
1170
- gap: 0.42rem;
1566
+ gap: 0.5rem;
1567
+ min-height: 2.75rem;
1171
1568
  border: 1px solid currentColor;
1172
- padding: 0.5rem 0.7rem 0.44rem;
1569
+ padding: 0.55rem 0.75rem;
1173
1570
  font-size: 0.72rem;
1174
1571
  font-weight: 700;
1175
1572
  letter-spacing: 0.1em;
@@ -1179,69 +1576,358 @@ ul {
1179
1576
  text-transform: uppercase;
1180
1577
  }
1181
1578
 
1182
- .mobile-nav-menu summary::after {
1183
- content: "▾";
1184
- font-size: 0.82em;
1579
+ .mobile-nav-menu > summary::after {
1580
+ content: "☰";
1581
+ font-size: 1rem;
1185
1582
  line-height: 1;
1186
- opacity: 0.78;
1583
+ opacity: 0.86;
1187
1584
  }
1188
1585
 
1189
- .mobile-nav-menu[open] summary::after {
1190
- transform: rotate(180deg);
1586
+ .mobile-nav-menu[open] > summary::after {
1587
+ content: "×";
1588
+ font-size: 1.25rem;
1191
1589
  }
1192
1590
 
1193
- .mobile-nav-menu summary::-webkit-details-marker {
1591
+ .mobile-nav-menu > summary::-webkit-details-marker {
1194
1592
  display: none;
1195
1593
  }
1196
1594
 
1197
1595
  .mobile-nav-panel {
1198
- position: absolute;
1199
- top: calc(100% + 0.75rem);
1596
+ position: fixed;
1597
+ top: var(--site-top-anchor-offset);
1200
1598
  right: 0;
1201
- display: grid;
1202
- gap: 1.75rem;
1203
- width: min(82vw, 22rem);
1204
- border: 1px solid color-mix(in srgb, currentColor 30%, transparent);
1205
- padding: 1rem;
1599
+ bottom: 0;
1600
+ left: 0;
1601
+ width: 100%;
1602
+ max-height: none;
1603
+ border-top: 1px solid color-mix(in srgb, currentColor 24%, transparent);
1604
+ padding: clamp(1.25rem, 5vw, 2rem) var(--content-gutter) max(1.5rem, env(safe-area-inset-bottom));
1206
1605
  background: var(--site-top-background-color, var(--color-nav-background));
1207
- box-shadow: 0 1rem 2.5rem rgb(0 0 0 / 0.28);
1606
+ box-shadow: 0 1.5rem 3.5rem rgb(0 0 0 / 0.32);
1208
1607
  color: var(--site-top-text-color, var(--color-text));
1608
+ overflow-y: auto;
1609
+ overscroll-behavior: contain;
1610
+ }
1611
+
1612
+ .mobile-site-nav {
1613
+ width: min(100%, 32rem);
1614
+ margin: 0 auto;
1209
1615
  }
1210
1616
 
1211
1617
  .mobile-nav-panel h2 {
1212
- margin: 0 0 0.75rem;
1213
- font-size: 0.68rem;
1214
- font-weight: 700;
1215
- letter-spacing: 0.14em;
1618
+ margin: 0 0 1.25rem;
1619
+ font-size: clamp(1.25rem, 5vw, 1.55rem);
1620
+ font-weight: 650;
1621
+ letter-spacing: 0;
1622
+ line-height: 1.2;
1623
+ text-transform: none;
1624
+ }
1625
+
1626
+ .mobile-nav-panel :is(ul, ol) {
1627
+ display: grid;
1628
+ gap: 0;
1629
+ margin: 0;
1630
+ padding: 0;
1631
+ list-style: none;
1632
+ }
1633
+
1634
+ .navigation-page-tree-mobile > .navigation-page-node {
1635
+ border-top: 1px solid color-mix(in srgb, currentColor 14%, transparent);
1636
+ }
1637
+
1638
+ .navigation-page-tree-mobile > .navigation-page-node:first-child {
1639
+ border-top: 0;
1640
+ }
1641
+
1642
+ .navigation-page-tree-mobile .navigation-page-link {
1643
+ display: flex;
1644
+ align-items: center;
1645
+ width: 100%;
1646
+ min-height: 3.25rem;
1647
+ padding: 0.75rem 2.5rem 0.75rem 0;
1648
+ color: inherit;
1649
+ font-size: 0.94rem;
1650
+ letter-spacing: 0;
1651
+ line-height: 1.35;
1652
+ opacity: 0.78;
1653
+ text-decoration: none;
1654
+ text-transform: none;
1655
+ }
1656
+
1657
+ .navigation-page-tree-mobile .navigation-page-disclosure > .navigation-page-summary {
1658
+ position: static;
1659
+ display: flex;
1660
+ align-items: center;
1661
+ justify-content: space-between;
1662
+ width: 100%;
1663
+ height: auto;
1664
+ min-height: 3.25rem;
1665
+ padding: 0.75rem 0;
1666
+ font-size: 0.94rem;
1667
+ line-height: 1.35;
1668
+ opacity: 0.78;
1669
+ }
1670
+
1671
+ .navigation-page-tree-mobile .navigation-page-disclosure > .navigation-page-open-link {
1672
+ display: none;
1673
+ align-items: center;
1674
+ min-height: 3.25rem;
1675
+ max-width: calc(100% - 2.5rem);
1676
+ padding: 0.75rem 0;
1677
+ font-size: 0.94rem;
1678
+ line-height: 1.35;
1679
+ opacity: 0.78;
1680
+ }
1681
+
1682
+ .navigation-page-tree-mobile .navigation-page-disclosure[open] > .navigation-page-open-link {
1683
+ display: flex;
1684
+ }
1685
+
1686
+ .navigation-page-tree-mobile .navigation-page-disclosure > .navigation-page-summary:hover,
1687
+ .navigation-page-tree-mobile .navigation-page-disclosure > .navigation-page-summary:focus-visible,
1688
+ .navigation-page-node-current > .navigation-page-disclosure > .navigation-page-summary {
1689
+ background: transparent;
1690
+ opacity: 1;
1691
+ }
1692
+
1693
+ .navigation-page-tree-mobile .navigation-page-disclosure > .navigation-page-summary:hover > :first-child,
1694
+ .navigation-page-tree-mobile .navigation-page-disclosure > .navigation-page-summary:focus-visible > :first-child,
1695
+ .navigation-page-node-current > .navigation-page-disclosure > .navigation-page-summary > :first-child {
1696
+ text-decoration: underline;
1697
+ text-decoration-thickness: 1px;
1698
+ text-underline-offset: 0.3em;
1699
+ }
1700
+
1701
+ .navigation-page-chevron::before {
1702
+ display: block;
1703
+ content: "›";
1704
+ font-size: 1.25rem;
1216
1705
  line-height: 1;
1217
- text-transform: uppercase;
1706
+ transition: transform 140ms ease;
1218
1707
  }
1219
1708
 
1220
- .mobile-page-nav {
1221
- border-top: 1px solid color-mix(in srgb, currentColor 18%, transparent);
1222
- padding-top: 1.05rem;
1709
+ .navigation-page-disclosure[open] > .navigation-page-summary .navigation-page-chevron::before {
1710
+ transform: rotate(90deg);
1223
1711
  }
1224
1712
 
1225
- .mobile-nav-panel ul {
1226
- display: grid;
1227
- gap: 0.65rem;
1713
+ .navigation-page-tree-mobile .navigation-page-disclosure > .navigation-page-summary > [aria-hidden='true']::before,
1714
+ .navigation-page-tree-mobile .navigation-page-disclosure[open] > .navigation-page-summary > [aria-hidden='true']::before {
1715
+ content: "›";
1716
+ }
1717
+
1718
+ .navigation-page-tree-mobile .navigation-page-branch-content {
1719
+ margin-left: 0.35rem;
1720
+ border-left: 1px solid color-mix(in srgb, currentColor 20%, transparent);
1721
+ padding-left: 1rem;
1722
+ }
1723
+
1724
+ .navigation-page-tree-mobile .navigation-page-sections {
1725
+ margin: 0 0 0.45rem;
1726
+ }
1727
+
1728
+ .navigation-page-branch-content > .navigation-page-tree-mobile > .navigation-page-node {
1729
+ border-top: 1px solid color-mix(in srgb, currentColor 10%, transparent);
1730
+ }
1731
+
1732
+ .navigation-page-tree-mobile .navigation-page-link:hover,
1733
+ .navigation-page-tree-mobile .navigation-page-link:focus-visible,
1734
+ .navigation-page-tree-mobile .navigation-page-link[aria-current='page'] {
1735
+ opacity: 1;
1736
+ text-decoration: underline;
1737
+ text-decoration-thickness: 1px;
1738
+ text-underline-offset: 0.3em;
1739
+ }
1740
+
1741
+ .page-contents-links-mobile {
1742
+ margin-top: 0.25rem;
1743
+ }
1744
+
1745
+ .page-contents-links-mobile > li {
1746
+ border-bottom: 1px solid color-mix(in srgb, currentColor 12%, transparent);
1747
+ }
1748
+
1749
+ .page-contents-links-mobile li + li {
1750
+ margin-top: 0;
1751
+ }
1752
+
1753
+ .page-contents-links-mobile ol {
1754
+ border-left: 1px solid color-mix(in srgb, currentColor 16%, transparent);
1755
+ padding-left: 1rem;
1756
+ }
1757
+
1758
+ .page-contents-links-mobile a {
1759
+ min-height: 3.2rem;
1760
+ padding: 0.85rem 0;
1761
+ font-size: 0.92rem;
1762
+ opacity: 0.78;
1763
+ }
1764
+
1765
+ .mobile-nav-panel a,
1766
+ .mobile-nav-page-open,
1767
+ .mobile-nav-back {
1768
+ font-family: inherit;
1769
+ font-size: 0.94rem;
1770
+ letter-spacing: 0;
1771
+ line-height: 1.35;
1772
+ text-transform: none;
1773
+ }
1774
+
1775
+ .mobile-nav-page {
1776
+ border-top: 1px solid color-mix(in srgb, currentColor 14%, transparent);
1777
+ padding: 0;
1778
+ }
1779
+
1780
+ .mobile-nav-page:first-child {
1781
+ border-top: 0;
1782
+ }
1783
+
1784
+ .mobile-nav-page > a,
1785
+ .mobile-nav-page-open {
1786
+ display: flex;
1787
+ align-items: center;
1788
+ justify-content: space-between;
1789
+ width: 100%;
1790
+ min-height: 3.4rem;
1791
+ padding: 0.8rem 0;
1792
+ font-weight: 600;
1793
+ }
1794
+
1795
+ .mobile-nav-page-open {
1796
+ display: none;
1797
+ border: 0;
1798
+ background: transparent;
1799
+ color: currentColor;
1800
+ cursor: pointer;
1801
+ font-weight: 600;
1802
+ text-align: left;
1228
1803
  }
1229
1804
 
1230
- .mobile-nav-panel a {
1231
- font-size: 0.82rem;
1232
- letter-spacing: 0.06em;
1805
+ .mobile-nav-page-open::after {
1806
+ content: "›";
1807
+ font-size: 1.35rem;
1808
+ line-height: 1;
1809
+ opacity: 0.68;
1233
1810
  }
1234
1811
 
1235
- .mobile-page-nav a[aria-current='true'] {
1812
+ .mobile-nav-page-open:hover > span,
1813
+ .mobile-nav-page-open:focus-visible > span,
1814
+ .mobile-nav-page-open[aria-current='page'] > span {
1236
1815
  text-decoration: underline;
1237
1816
  text-decoration-thickness: 1px;
1238
- text-underline-offset: 0.35em;
1817
+ text-underline-offset: 0.3em;
1818
+ }
1819
+
1820
+ .mobile-nav-menu[data-mobile-navigation-ready='true'] .mobile-nav-page-open,
1821
+ .mobile-nav-menu[data-mobile-navigation-ready='true'] .mobile-nav-back {
1822
+ display: flex;
1823
+ }
1824
+
1825
+ .mobile-nav-menu[data-mobile-navigation-ready='true'] .mobile-nav-page-fallback {
1826
+ display: none;
1827
+ }
1828
+
1829
+ .mobile-nav-view[hidden] {
1830
+ display: none;
1831
+ }
1832
+
1833
+ .mobile-nav-menu:not([data-mobile-navigation-ready='true']) .mobile-nav-page-view:not([data-current-page='true']) {
1834
+ display: none;
1835
+ }
1836
+
1837
+ .mobile-nav-page-view + .mobile-nav-page-view,
1838
+ .mobile-nav-view + .mobile-nav-view {
1839
+ margin-top: 2rem;
1840
+ }
1841
+
1842
+ .mobile-nav-menu[data-mobile-navigation-ready='true'] .mobile-nav-view {
1843
+ margin-top: 0;
1844
+ }
1845
+
1846
+ .mobile-nav-back {
1847
+ display: none;
1848
+ align-items: center;
1849
+ gap: 0.55rem;
1850
+ min-height: 2.75rem;
1851
+ margin: -0.4rem 0 0.65rem;
1852
+ border: 0;
1853
+ padding: 0;
1854
+ background: transparent;
1855
+ color: currentColor;
1856
+ cursor: pointer;
1857
+ opacity: 0.78;
1858
+ }
1859
+
1860
+ .mobile-nav-back::before {
1861
+ content: "‹";
1862
+ font-size: 1.35rem;
1863
+ line-height: 1;
1864
+ }
1865
+
1866
+ .mobile-nav-back:hover,
1867
+ .mobile-nav-back:focus-visible {
1868
+ opacity: 1;
1869
+ text-decoration: underline;
1870
+ text-underline-offset: 0.25em;
1871
+ }
1872
+
1873
+ .mobile-nav-sections {
1874
+ border-top: 1px solid color-mix(in srgb, currentColor 16%, transparent);
1875
+ }
1876
+
1877
+ .mobile-nav-sections li {
1878
+ border-bottom: 1px solid color-mix(in srgb, currentColor 12%, transparent);
1879
+ }
1880
+
1881
+ .mobile-nav-sections a {
1882
+ min-height: 3.2rem;
1883
+ padding: 0.85rem 0;
1884
+ font-size: 0.92rem;
1885
+ opacity: 0.78;
1886
+ }
1887
+
1888
+ .mobile-nav-sections .mobile-nav-overview,
1889
+ .mobile-nav-sections .mobile-nav-page-top {
1890
+ font-weight: 650;
1891
+ }
1892
+
1893
+ .mobile-nav-sections li:not(.mobile-nav-page-top-item) a {
1894
+ padding-left: 1rem;
1895
+ }
1896
+
1897
+ .mobile-nav-sections a:hover,
1898
+ .mobile-nav-sections a:focus-visible,
1899
+ .mobile-nav-sections a[aria-current='location'] {
1900
+ opacity: 1;
1901
+ text-decoration: underline;
1902
+ text-decoration-thickness: 1px;
1903
+ text-underline-offset: 0.25em;
1904
+ }
1905
+
1906
+ .mobile-navigation-open {
1907
+ overflow: hidden;
1239
1908
  }
1240
1909
 
1241
1910
  .site-content {
1242
1911
  width: min(calc(100% - (var(--content-gutter) * 2)), var(--page-width));
1243
1912
  }
1244
1913
 
1914
+ .site-page-layout-tree {
1915
+ display: block;
1916
+ width: 100%;
1917
+ }
1918
+
1919
+ .site-page-layout-tree > .site-content {
1920
+ width: min(calc(100% - (var(--content-gutter) * 2)), var(--page-width));
1921
+ }
1922
+
1923
+ .site-page-layout-tree .site-section::before {
1924
+ left: calc(50% - 50vw);
1925
+ }
1926
+
1927
+ .tree-local-navigation {
1928
+ display: none;
1929
+ }
1930
+
1245
1931
  .site-banners {
1246
1932
  width: min(calc(100% - 2rem), var(--page-width));
1247
1933
  padding-top: 0.75rem;