@janga/norna 0.7.17 → 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 (262) hide show
  1. package/README.md +15 -6
  2. package/bin/norna-cli.mjs +1 -1
  3. package/docs/README.md +11 -9
  4. package/docs/configuration.md +25 -2
  5. package/docs/content.md +21 -12
  6. package/docs/design/navigation-and-theme-plan.md +90 -19
  7. package/docs/design/site-examples-structure.md +7 -3
  8. package/docs/engine-development.md +19 -22
  9. package/docs/getting-started.md +3 -3
  10. package/docs/images-and-metadata.md +6 -4
  11. package/docs/pages.md +120 -64
  12. package/docs/public-files.md +1 -1
  13. package/docs/site-files.md +36 -29
  14. package/docs/sitewide-content.md +1 -1
  15. package/docs/theme.md +107 -141
  16. package/docs/typography.md +15 -27
  17. package/examples/README.md +8 -2
  18. package/examples/complete-sites/dog-shelter-multi-page/site/.norna/generated-images.json +5 -5
  19. package/examples/complete-sites/dog-shelter-single-page/site/.norna/generated-images.json +10 -10
  20. package/examples/feature-demos/media-and-surfaces/.astro/collections/theme.schema.json +35 -43
  21. package/examples/feature-demos/media-and-surfaces/.astro/data-store.json +1 -1
  22. package/examples/feature-demos/media-and-surfaces/site/pages/020-surfaces/content.md +2 -1
  23. package/examples/feature-demos/media-and-surfaces/site/pages/020-surfaces/theme.yaml +2 -3
  24. package/examples/feature-demos/theme-preset-documentation/README.md +16 -0
  25. package/examples/feature-demos/theme-preset-documentation/site/.norna/generated-images.json +74 -0
  26. package/examples/feature-demos/{theme-presets/site/pages/020-documentation → theme-preset-documentation/site/pages/000-home}/content.md +1 -1
  27. package/examples/feature-demos/theme-preset-portfolio/README.md +16 -0
  28. package/examples/feature-demos/theme-preset-portfolio/site/.norna/generated-images.json +74 -0
  29. package/examples/feature-demos/theme-preset-portfolio/site/config.yaml +1 -0
  30. package/examples/feature-demos/{theme-presets/site/pages/010-portfolio → theme-preset-portfolio/site/pages/000-home}/content.md +1 -1
  31. package/examples/feature-demos/theme-preset-portfolio/site/public/robots.txt +2 -0
  32. package/examples/feature-demos/theme-preset-portfolio/site/sitewide-content.yaml +3 -0
  33. package/examples/feature-demos/theme-preset-project/README.md +16 -0
  34. package/examples/feature-demos/theme-preset-project/site/.norna/generated-images.json +74 -0
  35. package/examples/feature-demos/theme-preset-project/site/config.yaml +1 -0
  36. package/examples/feature-demos/{theme-presets/site/pages/030-project → theme-preset-project/site/pages/000-home}/content.md +1 -1
  37. package/examples/feature-demos/theme-preset-project/site/public/robots.txt +2 -0
  38. package/examples/feature-demos/theme-preset-project/site/sitewide-content.yaml +3 -0
  39. package/examples/feature-demos/theme-preset-statement/README.md +16 -0
  40. package/examples/feature-demos/theme-preset-statement/site/.norna/generated-images.json +74 -0
  41. package/examples/feature-demos/theme-preset-statement/site/config.yaml +1 -0
  42. package/examples/feature-demos/{theme-presets/site/pages/040-statement → theme-preset-statement/site/pages/000-home}/content.md +1 -1
  43. package/examples/feature-demos/theme-preset-statement/site/public/robots.txt +2 -0
  44. package/examples/feature-demos/theme-preset-statement/site/sitewide-content.yaml +3 -0
  45. package/fixtures/basic/site/theme.yaml +1 -8
  46. package/fixtures/nested-pages/.astro/collections/site.schema.json +35 -0
  47. package/fixtures/nested-pages/.astro/collections/sitewide.schema.json +97 -0
  48. package/fixtures/nested-pages/.astro/collections/theme.schema.json +844 -0
  49. package/fixtures/nested-pages/.astro/content-assets.mjs +4 -0
  50. package/fixtures/nested-pages/.astro/content-modules.mjs +1 -0
  51. package/fixtures/nested-pages/.astro/content.d.ts +183 -0
  52. package/fixtures/nested-pages/.astro/data-store.json +1 -0
  53. package/fixtures/nested-pages/.astro/dev-local.json +8 -0
  54. package/fixtures/nested-pages/.astro/dev.log +1128 -0
  55. package/fixtures/nested-pages/.astro/settings.json +5 -0
  56. package/fixtures/nested-pages/.astro/types.d.ts +2 -0
  57. package/fixtures/nested-pages/node_modules/.vite/deps/_metadata.json +74 -0
  58. package/fixtures/nested-pages/node_modules/.vite/deps/astro-D_GIpJIE.js +434 -0
  59. package/fixtures/nested-pages/node_modules/.vite/deps/astro-D_GIpJIE.js.map +1 -0
  60. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
  61. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
  62. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
  63. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
  64. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
  65. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
  66. package/fixtures/nested-pages/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
  67. package/fixtures/nested-pages/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
  68. package/fixtures/nested-pages/node_modules/.vite/deps/audit-DM9Hkl5B.js +1534 -0
  69. package/fixtures/nested-pages/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +1 -0
  70. package/fixtures/nested-pages/node_modules/.vite/deps/highlight-DnZ1ULOL.js +48 -0
  71. package/fixtures/nested-pages/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +1 -0
  72. package/fixtures/nested-pages/node_modules/.vite/deps/icons-RyebKi45.js +42 -0
  73. package/fixtures/nested-pages/node_modules/.vite/deps/icons-RyebKi45.js.map +1 -0
  74. package/fixtures/nested-pages/node_modules/.vite/deps/package.json +3 -0
  75. package/fixtures/nested-pages/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
  76. package/fixtures/nested-pages/node_modules/.vite/deps/settings-DaU-gNnK.js +190 -0
  77. package/fixtures/nested-pages/node_modules/.vite/deps/settings-DaU-gNnK.js.map +1 -0
  78. package/fixtures/nested-pages/node_modules/.vite/deps/toolbar-63PA619H.js +458 -0
  79. package/fixtures/nested-pages/node_modules/.vite/deps/toolbar-63PA619H.js.map +1 -0
  80. package/fixtures/nested-pages/node_modules/.vite/deps/ui-library--bkcNSYz.js +1016 -0
  81. package/fixtures/nested-pages/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +1 -0
  82. package/fixtures/nested-pages/node_modules/.vite/deps/window-jPkpKVcy.js +32 -0
  83. package/fixtures/nested-pages/node_modules/.vite/deps/window-jPkpKVcy.js.map +1 -0
  84. package/fixtures/nested-pages/node_modules/.vite/deps/xray-BXCHpEJP.js +111 -0
  85. package/fixtures/nested-pages/node_modules/.vite/deps/xray-BXCHpEJP.js.map +1 -0
  86. package/fixtures/nested-pages/site/config.yaml +2 -0
  87. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/pages/010-macos/content.md +4 -0
  88. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/theme.yaml +2 -0
  89. package/fixtures/nested-pages/site/pages/010-guides/pages/030-release-notes/content.md +9 -0
  90. package/fixtures/nested-pages/site/pages/010-guides/pages/040-configuration/content.md +3 -0
  91. package/fixtures/nested-pages/site/pages/010-guides/pages/050-content/content.md +3 -0
  92. package/fixtures/nested-pages/site/pages/010-guides/pages/060-themes/content.md +3 -0
  93. package/fixtures/nested-pages/site/pages/010-guides/pages/070-images/content.md +3 -0
  94. package/fixtures/nested-pages/site/pages/010-guides/pages/080-cards/content.md +3 -0
  95. package/fixtures/nested-pages/site/pages/010-guides/pages/090-notes/content.md +3 -0
  96. package/fixtures/nested-pages/site/pages/010-guides/pages/100-validation/content.md +3 -0
  97. package/fixtures/nested-pages/site/pages/010-guides/pages/110-synchronization/content.md +3 -0
  98. package/fixtures/nested-pages/site/pages/010-guides/pages/120-building/content.md +3 -0
  99. package/fixtures/nested-pages/site/pages/010-guides/pages/130-publishing/content.md +3 -0
  100. package/fixtures/nested-pages/site/pages/010-guides/pages/140-troubleshooting/content.md +3 -0
  101. package/fixtures/nested-pages/site/pages/010-guides/pages/150-migration/content.md +3 -0
  102. package/fixtures/nested-pages/site/pages/010-guides/pages/160-accessibility/content.md +3 -0
  103. package/fixtures/nested-pages/site/pages/010-guides/pages/170-performance/content.md +3 -0
  104. package/fixtures/nested-pages/site/pages/010-guides/pages/180-security/content.md +3 -0
  105. package/fixtures/nested-pages/site/pages/010-guides/pages/190-localization/content.md +3 -0
  106. package/fixtures/nested-pages/site/pages/010-guides/pages/200-upgrading/content.md +3 -0
  107. package/fixtures/nested-pages/site/pages/010-guides/pages/210-faq/content.md +3 -0
  108. package/fixtures/nested-pages/site/pages/010-guides/theme.yaml +7 -3
  109. package/fixtures/nested-pages/site/theme.yaml +1 -3
  110. package/package.json +2 -1
  111. package/schemas/config.schema.json +45 -4
  112. package/schemas/content-frontmatter.schema.json +5 -5
  113. package/schemas/manifest.json +3 -2
  114. package/schemas/page-theme.schema.json +192 -0
  115. package/schemas/sitewide-content.schema.json +17 -17
  116. package/schemas/theme.schema.json +188 -216
  117. package/scripts/check-config.mjs +2 -1
  118. package/scripts/deploy-site.mjs +1 -1
  119. package/scripts/generate-images.mjs +7 -14
  120. package/scripts/generate-schemas.mjs +4 -1
  121. package/scripts/lib/editor-language-service.mjs +0 -14
  122. package/scripts/lib/example-sites.mjs +15 -3
  123. package/scripts/lib/page-model.mjs +26 -7
  124. package/scripts/lib/presentation.mjs +25 -17
  125. package/scripts/lib/project-config.mjs +26 -16
  126. package/scripts/lib/schema-definitions.mjs +42 -14
  127. package/scripts/lib/schema-editor-metadata.mjs +70 -26
  128. package/scripts/lib/schema-value-definitions.mjs +14 -0
  129. package/scripts/lib/site-content.mjs +50 -25
  130. package/scripts/lib/site-conventions.mjs +1 -0
  131. package/scripts/lib/site-paths.mjs +9 -3
  132. package/scripts/lib/theme-config.mjs +3 -2
  133. package/scripts/lib/theme-presets.mjs +54 -21
  134. package/scripts/show-typography.mjs +1 -33
  135. package/scripts/sync-content-sections.mjs +1 -3
  136. package/scripts/test-banner-visibility.mjs +2 -2
  137. package/scripts/test-client-javascript.mjs +11 -4
  138. package/scripts/test-content-check.mjs +25 -25
  139. package/scripts/test-content-model-v2.mjs +165 -101
  140. package/scripts/test-documentation.mjs +4 -2
  141. package/scripts/test-editor-language-service.mjs +11 -8
  142. package/scripts/test-engine-commands.mjs +5 -5
  143. package/scripts/test-examples.mjs +30 -1
  144. package/scripts/test-heading-ids.mjs +2 -2
  145. package/scripts/test-navigation.mjs +11 -2
  146. package/scripts/test-nested-pages.mjs +25 -10
  147. package/scripts/test-package-check.mjs +29 -60
  148. package/scripts/test-page-model.mjs +30 -2
  149. package/scripts/test-project-config.mjs +5 -10
  150. package/scripts/test-schemas.mjs +18 -3
  151. package/scripts/test-theme-presets.mjs +33 -27
  152. package/src/components/NavigationPageTree.astro +114 -25
  153. package/src/components/PageContentsLinks.astro +40 -0
  154. package/src/components/SectionNavigationScript.astro +12 -5
  155. package/src/components/SiteBreadcrumbs.astro +17 -14
  156. package/src/components/SiteNavigation.astro +45 -12
  157. package/src/components/SitePage.astro +37 -23
  158. package/src/components/SiteSection.astro +2 -7
  159. package/src/components/SiteTreeNavigation.astro +35 -0
  160. package/src/components/TreeNavigationScript.astro +83 -0
  161. package/src/content.config.ts +2 -8
  162. package/src/layouts/BaseLayout.astro +10 -0
  163. package/src/lib/pageThemes.ts +11 -9
  164. package/src/lib/sectionContent.ts +1 -5
  165. package/src/lib/siteNavigation.ts +2 -1
  166. package/src/lib/sitePages.ts +25 -14
  167. package/src/pages/index.astro +2 -1
  168. package/src/styles/global.css +411 -43
  169. package/starters/basic/README.md +7 -7
  170. package/starters/basic/site/theme.yaml +1 -105
  171. package/starters/project/README.md +8 -8
  172. package/starters/project/site/theme.yaml +1 -31
  173. package/examples/feature-demos/theme-presets/README.md +0 -18
  174. package/examples/feature-demos/theme-presets/site/.norna/generated-images.json +0 -290
  175. package/examples/feature-demos/theme-presets/site/content.md +0 -14
  176. package/examples/feature-demos/theme-presets/site/theme.yaml +0 -1
  177. /package/examples/complete-sites/dog-shelter-multi-page/site/{content.md → pages/000-home/content.md} +0 -0
  178. /package/examples/complete-sites/dog-shelter-multi-page/site/{images → pages/000-home/images}/shelter-dog.jpg +0 -0
  179. /package/examples/complete-sites/dog-shelter-single-page/site/{content.md → pages/000-home/content.md} +0 -0
  180. /package/examples/complete-sites/dog-shelter-single-page/site/{images → pages/000-home/images}/foster-dog.jpg +0 -0
  181. /package/examples/complete-sites/dog-shelter-single-page/site/{images → pages/000-home/images}/rescue-dog.jpg +0 -0
  182. /package/examples/feature-demos/media-and-surfaces/site/{content.md → pages/000-home/content.md} +0 -0
  183. /package/examples/feature-demos/sitewide-content/site/{content.md → pages/000-home/content.md} +0 -0
  184. /package/examples/feature-demos/{theme-presets → theme-preset-documentation}/site/config.yaml +0 -0
  185. /package/examples/feature-demos/{theme-presets/site/pages/020-documentation → theme-preset-documentation/site/pages/000-home}/images/black-schnauzer.jpg +0 -0
  186. /package/examples/feature-demos/{theme-presets/site/pages/020-documentation → theme-preset-documentation/site/pages/000-home}/images/retriever-portrait.jpg +0 -0
  187. /package/examples/feature-demos/{theme-presets/site/pages/020-documentation → theme-preset-documentation/site/pages/000-home}/images/schnauzer-portrait.jpg +0 -0
  188. /package/examples/feature-demos/{theme-presets → theme-preset-documentation}/site/public/robots.txt +0 -0
  189. /package/examples/feature-demos/{theme-presets → theme-preset-documentation}/site/sitewide-content.yaml +0 -0
  190. /package/examples/feature-demos/{theme-presets/site/pages/020-documentation → theme-preset-documentation/site}/theme.yaml +0 -0
  191. /package/examples/feature-demos/{theme-presets/site/pages/010-portfolio → theme-preset-portfolio/site/pages/000-home}/images/puppy-portrait.jpg +0 -0
  192. /package/examples/feature-demos/{theme-presets/site/pages/010-portfolio → theme-preset-portfolio/site/pages/000-home}/images/shepherd-portrait.jpg +0 -0
  193. /package/examples/feature-demos/{theme-presets/site/pages/010-portfolio → theme-preset-portfolio/site/pages/000-home}/images/white-puppy.jpg +0 -0
  194. /package/examples/feature-demos/{theme-presets/site/pages/010-portfolio → theme-preset-portfolio/site}/theme.yaml +0 -0
  195. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/routeTheme.schema.json +0 -0
  196. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/site.schema.json +0 -0
  197. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/sitewide.schema.json +0 -0
  198. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/theme.schema.json +0 -0
  199. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/content-assets.mjs +0 -0
  200. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/content-modules.mjs +0 -0
  201. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/content.d.ts +0 -0
  202. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/data-store.json +0 -0
  203. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/dev-local.json +0 -0
  204. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/dev.json +0 -0
  205. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/dev.log +0 -0
  206. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/settings.json +0 -0
  207. /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/types.d.ts +0 -0
  208. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/_metadata.json +0 -0
  209. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro-D_GIpJIE.js +0 -0
  210. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -0
  211. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_aria-query.js +0 -0
  212. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -0
  213. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_axobject-query.js +0 -0
  214. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -0
  215. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_html-escaper.js +0 -0
  216. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -0
  217. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -0
  218. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -0
  219. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/audit-DM9Hkl5B.js +0 -0
  220. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -0
  221. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/embla-carousel.js +0 -0
  222. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/embla-carousel.js.map +0 -0
  223. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/highlight-DnZ1ULOL.js +0 -0
  224. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -0
  225. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/icons-RyebKi45.js +0 -0
  226. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -0
  227. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/package.json +0 -0
  228. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -0
  229. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/settings-DaU-gNnK.js +0 -0
  230. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -0
  231. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/toolbar-63PA619H.js +0 -0
  232. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -0
  233. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/ui-library--bkcNSYz.js +0 -0
  234. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -0
  235. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/window-jPkpKVcy.js +0 -0
  236. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -0
  237. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/xray-BXCHpEJP.js +0 -0
  238. /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -0
  239. /package/examples/feature-demos/{theme-presets/site/pages/030-project → theme-preset-project/site/pages/000-home}/images/boxer-portrait.jpg +0 -0
  240. /package/examples/feature-demos/{theme-presets/site/pages/030-project → theme-preset-project/site/pages/000-home}/images/grass-puppy.jpg +0 -0
  241. /package/examples/feature-demos/{theme-presets/site/pages/030-project → theme-preset-project/site/pages/000-home}/images/grey-street-dog.jpg +0 -0
  242. /package/examples/feature-demos/{theme-presets/site/pages/030-project → theme-preset-project/site}/theme.yaml +0 -0
  243. /package/examples/feature-demos/{theme-presets/site/pages/040-statement → theme-preset-statement/site/pages/000-home}/images/black-pedigree.jpg +0 -0
  244. /package/examples/feature-demos/{theme-presets/site/pages/040-statement → theme-preset-statement/site/pages/000-home}/images/sheepdog-grass.jpg +0 -0
  245. /package/examples/feature-demos/{theme-presets/site/pages/040-statement → theme-preset-statement/site/pages/000-home}/images/sheepdog-wide.jpg +0 -0
  246. /package/examples/feature-demos/{theme-presets/site/pages/040-statement → theme-preset-statement/site}/theme.yaml +0 -0
  247. /package/fixtures/basic/site/{content.md → pages/000-home/content.md} +0 -0
  248. /package/fixtures/basic/site/{images → pages/000-home/images}/.gitkeep +0 -0
  249. /package/fixtures/content-model-v2/site/{content.md → pages/000-home/content.md} +0 -0
  250. /package/fixtures/content-model-v2/site/{images → pages/000-home/images}/adopt.svg +0 -0
  251. /package/fixtures/content-model-v2/site/{images → pages/000-home/images}/detail.jpg +0 -0
  252. /package/fixtures/content-model-v2/site/{images → pages/000-home/images}/duplicate.jpg +0 -0
  253. /package/fixtures/content-model-v2/site/{images → pages/000-home/images}/foster.svg +0 -0
  254. /package/fixtures/content-model-v2/site/{images → pages/000-home/images}/hero.jpg +0 -0
  255. /package/fixtures/content-model-v2/site/{images → pages/000-home/images}/image.jpg +0 -0
  256. /package/fixtures/content-model-v2/site/{images → pages/000-home/images}/slide-one.jpg +0 -0
  257. /package/fixtures/content-model-v2/site/{images → pages/000-home/images}/slide-three.jpg +0 -0
  258. /package/fixtures/content-model-v2/site/{images → pages/000-home/images}/slide-two.jpg +0 -0
  259. /package/fixtures/nested-pages/site/{content.md → pages/000-home/content.md} +0 -0
  260. /package/starters/basic/site/{content.md → pages/000-home/content.md} +0 -0
  261. /package/starters/basic/site/{images → pages/000-home/images}/.gitkeep +0 -0
  262. /package/starters/project/site/{content.md → pages/000-home/content.md} +0 -0
@@ -99,6 +99,19 @@ a {
99
99
  color: var(--color-page);
100
100
  }
101
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
+
102
115
  .skip-link {
103
116
  position: fixed;
104
117
  top: 0.75rem;
@@ -359,6 +372,10 @@ a {
359
372
  text-underline-offset: 0.35em;
360
373
  }
361
374
 
375
+ .page-nav .page-nav-page-top {
376
+ font-weight: 700;
377
+ }
378
+
362
379
  .mobile-nav-sections a[aria-current='location'] {
363
380
  opacity: 1;
364
381
  text-decoration: underline;
@@ -380,29 +397,288 @@ a {
380
397
  padding: 0;
381
398
  }
382
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
+
383
651
  .site-breadcrumbs {
384
- width: min(100%, 60ch, var(--text-width));
652
+ height: calc(clamp(1rem, 2.5vw, 1.5rem) + 1.35rem);
653
+ width: min(100%, var(--page-text-width, var(--text-width)));
385
654
  margin: 0 auto;
386
655
  padding-top: clamp(1rem, 2.5vw, 1.5rem);
387
656
  font-size: 1rem;
388
657
  line-height: 1.4;
658
+ overflow: hidden;
389
659
  }
390
660
 
391
661
  .site-breadcrumbs ol {
392
662
  display: flex;
393
- flex-wrap: wrap;
663
+ flex-wrap: nowrap;
394
664
  gap: 0;
395
665
  margin: 0;
396
666
  padding: 0;
397
667
  font-size: 0.78rem;
398
668
  list-style: none;
669
+ white-space: nowrap;
399
670
  }
400
671
 
401
672
  .site-breadcrumbs li {
402
673
  display: flex;
674
+ min-width: 0;
403
675
  align-items: center;
404
676
  }
405
677
 
678
+ .site-breadcrumbs li:last-child {
679
+ flex: 0 1 auto;
680
+ }
681
+
406
682
  .site-breadcrumbs li + li::before {
407
683
  margin: 0 0.55rem;
408
684
  content: "/";
@@ -410,9 +686,13 @@ a {
410
686
  }
411
687
 
412
688
  .site-breadcrumbs a {
689
+ display: block;
690
+ min-width: 0;
413
691
  color: inherit;
414
692
  opacity: 0.72;
693
+ overflow: hidden;
415
694
  text-decoration: none;
695
+ text-overflow: ellipsis;
416
696
  }
417
697
 
418
698
  .site-breadcrumbs a:hover,
@@ -423,7 +703,11 @@ a {
423
703
  }
424
704
 
425
705
  .site-breadcrumbs [aria-current='page'] {
706
+ display: block;
707
+ min-width: 0;
708
+ overflow: hidden;
426
709
  font-weight: 650;
710
+ text-overflow: ellipsis;
427
711
  }
428
712
 
429
713
  .site-content-has-breadcrumbs > .site-section:first-of-type {
@@ -550,6 +834,10 @@ a {
550
834
  pointer-events: none;
551
835
  }
552
836
 
837
+ .site-page-layout-tree .site-section::before {
838
+ left: 0;
839
+ }
840
+
553
841
  .site-section + .site-section {
554
842
  margin-top: 0;
555
843
  padding-top: var(--space-section-to-section);
@@ -726,7 +1014,7 @@ ul {
726
1014
  .section-markdown pre.astro-code {
727
1015
  margin: 0 0 var(--section-body-paragraph-spacing, 1em);
728
1016
  border: 1px solid color-mix(in srgb, currentColor 18%, transparent);
729
- border-radius: 6px;
1017
+ border-radius: var(--shape-radius-medium, 6px);
730
1018
  padding: 0.78rem 0.9rem;
731
1019
  background: #0d1117 !important;
732
1020
  font-size: 0.92em;
@@ -903,7 +1191,7 @@ ul {
903
1191
  align-content: start;
904
1192
  margin: 0;
905
1193
  border: 1px solid color-mix(in srgb, currentColor 18%, transparent);
906
- border-radius: 8px;
1194
+ border-radius: var(--shape-radius-large, 8px);
907
1195
  padding: var(--card-list-padding);
908
1196
  background: color-mix(in srgb, var(--section-background-color, var(--color-page)) 92%, currentColor 8%);
909
1197
  color: inherit;
@@ -1335,9 +1623,12 @@ ul {
1335
1623
  text-transform: none;
1336
1624
  }
1337
1625
 
1338
- .mobile-nav-panel ul {
1626
+ .mobile-nav-panel :is(ul, ol) {
1339
1627
  display: grid;
1340
1628
  gap: 0;
1629
+ margin: 0;
1630
+ padding: 0;
1631
+ list-style: none;
1341
1632
  }
1342
1633
 
1343
1634
  .navigation-page-tree-mobile > .navigation-page-node {
@@ -1348,74 +1639,129 @@ ul {
1348
1639
  border-top: 0;
1349
1640
  }
1350
1641
 
1351
- .navigation-page-tree-mobile .navigation-page-link,
1352
- .mobile-navigation-branch > summary,
1353
- .mobile-navigation-page-links a {
1642
+ .navigation-page-tree-mobile .navigation-page-link {
1354
1643
  display: flex;
1355
1644
  align-items: center;
1356
1645
  width: 100%;
1357
1646
  min-height: 3.25rem;
1358
- padding: 0.75rem 0;
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;
1359
1655
  }
1360
1656
 
1361
- .mobile-navigation-branch > summary {
1657
+ .navigation-page-tree-mobile .navigation-page-disclosure > .navigation-page-summary {
1658
+ position: static;
1659
+ display: flex;
1660
+ align-items: center;
1362
1661
  justify-content: space-between;
1363
- border: 0;
1662
+ width: 100%;
1663
+ height: auto;
1664
+ min-height: 3.25rem;
1665
+ padding: 0.75rem 0;
1364
1666
  font-size: 0.94rem;
1365
- font-weight: 650;
1366
- letter-spacing: 0;
1367
1667
  line-height: 1.35;
1368
- list-style: none;
1369
- text-transform: none;
1370
- cursor: pointer;
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;
1371
1680
  }
1372
1681
 
1373
- .mobile-nav-menu .mobile-navigation-branch > summary::after {
1374
- content: "+";
1375
- font-size: 1.1rem;
1376
- font-weight: 400;
1377
- opacity: 0.7;
1682
+ .navigation-page-tree-mobile .navigation-page-disclosure[open] > .navigation-page-open-link {
1683
+ display: flex;
1378
1684
  }
1379
1685
 
1380
- .mobile-nav-menu .mobile-navigation-branch[open] > summary::after {
1381
- content: "−";
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;
1382
1691
  }
1383
1692
 
1384
- .mobile-navigation-branch > summary::-webkit-details-marker {
1385
- display: none;
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;
1705
+ line-height: 1;
1706
+ transition: transform 140ms ease;
1707
+ }
1708
+
1709
+ .navigation-page-disclosure[open] > .navigation-page-summary .navigation-page-chevron::before {
1710
+ transform: rotate(90deg);
1711
+ }
1712
+
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: "›";
1386
1716
  }
1387
1717
 
1388
- .mobile-navigation-branch-content {
1718
+ .navigation-page-tree-mobile .navigation-page-branch-content {
1389
1719
  margin-left: 0.35rem;
1390
1720
  border-left: 1px solid color-mix(in srgb, currentColor 20%, transparent);
1391
1721
  padding-left: 1rem;
1392
1722
  }
1393
1723
 
1394
- .mobile-navigation-page-links li,
1395
- .mobile-navigation-branch-content > .navigation-page-tree-mobile > .navigation-page-node {
1396
- border-top: 1px solid color-mix(in srgb, currentColor 10%, transparent);
1397
- }
1398
-
1399
- .mobile-navigation-page-links li:first-child {
1400
- border-top: 0;
1724
+ .navigation-page-tree-mobile .navigation-page-sections {
1725
+ margin: 0 0 0.45rem;
1401
1726
  }
1402
1727
 
1403
- .mobile-navigation-page-links a,
1404
- .navigation-page-tree-mobile .navigation-page-link {
1405
- font-size: 0.9rem;
1406
- letter-spacing: 0;
1407
- line-height: 1.35;
1408
- text-transform: none;
1728
+ .navigation-page-branch-content > .navigation-page-tree-mobile > .navigation-page-node {
1729
+ border-top: 1px solid color-mix(in srgb, currentColor 10%, transparent);
1409
1730
  }
1410
1731
 
1411
- .navigation-page-node-current > .navigation-page-link,
1412
- .navigation-page-node-current > .mobile-navigation-branch > summary > span,
1413
- .navigation-page-node-current-branch > .mobile-navigation-branch > summary > span {
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;
1414
1736
  text-decoration: underline;
1415
1737
  text-decoration-thickness: 1px;
1416
1738
  text-underline-offset: 0.3em;
1417
1739
  }
1418
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
+
1419
1765
  .mobile-nav-panel a,
1420
1766
  .mobile-nav-page-open,
1421
1767
  .mobile-nav-back {
@@ -1539,10 +1885,15 @@ ul {
1539
1885
  opacity: 0.78;
1540
1886
  }
1541
1887
 
1542
- .mobile-nav-sections .mobile-nav-overview {
1888
+ .mobile-nav-sections .mobile-nav-overview,
1889
+ .mobile-nav-sections .mobile-nav-page-top {
1543
1890
  font-weight: 650;
1544
1891
  }
1545
1892
 
1893
+ .mobile-nav-sections li:not(.mobile-nav-page-top-item) a {
1894
+ padding-left: 1rem;
1895
+ }
1896
+
1546
1897
  .mobile-nav-sections a:hover,
1547
1898
  .mobile-nav-sections a:focus-visible,
1548
1899
  .mobile-nav-sections a[aria-current='location'] {
@@ -1560,6 +1911,23 @@ ul {
1560
1911
  width: min(calc(100% - (var(--content-gutter) * 2)), var(--page-width));
1561
1912
  }
1562
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
+
1563
1931
  .site-banners {
1564
1932
  width: min(calc(100% - 2rem), var(--page-width));
1565
1933
  padding-top: 0.75rem;
@@ -18,9 +18,9 @@ npm run norna:dev -- --kill
18
18
  Edit shared logo settings, banners, and footer in
19
19
  `site/sitewide-content.yaml`,
20
20
  site-wide visual defaults in `site/theme.yaml`, homepage content and section
21
- metadata in `site/content.md`, and technical settings such as URL and locale
22
- in `site/config.yaml`. Keep managed homepage source images directly under
23
- `site/images/` and static public files under `site/public/`.
21
+ metadata in `site/pages/000-home/content.md`, and technical settings such as URL
22
+ and locale in `site/config.yaml`. Keep managed homepage source images under
23
+ `site/pages/000-home/images/` and static public files under `site/public/`.
24
24
 
25
25
  For a GitHub Pages project site without a custom domain, include the repository
26
26
  path in the public URL:
@@ -34,10 +34,10 @@ Norna derives `/repository-name/` as the base path. Use a root URL such as
34
34
 
35
35
  In GitHub repository settings, configure Pages to build from GitHub Actions.
36
36
 
37
- Page width, side gutters, layout density, typography rhythm, image width, image
38
- height limits, font, palettes, section surfaces, and site-wide typography are
39
- configured in `site/theme.yaml`. A page may replace that visual theme with its
40
- own `theme.yaml`.
37
+ Page width, side gutters, content spacing, image sizing, palette, shape, and
38
+ site-wide typography are configured in `site/theme.yaml`. A page may use a
39
+ limited `theme.yaml` for local text width, content spacing, managed-image
40
+ sizing, and section background pattern.
41
41
 
42
42
  Commit `package-lock.json` after the first install so GitHub Actions can use
43
43
  `npm ci`.