@janga/norna 0.7.17 → 0.7.22

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 (533) hide show
  1. package/README.md +32 -13
  2. package/astro.config.mjs +22 -0
  3. package/bin/norna-cli.mjs +7 -1
  4. package/package.json +46 -12
  5. package/schemas/category.schema.json +20 -0
  6. package/schemas/config.schema.json +55 -4
  7. package/schemas/content-frontmatter.schema.json +5 -5
  8. package/schemas/manifest.json +4 -2
  9. package/schemas/page-theme.schema.json +192 -0
  10. package/schemas/sitewide-content.schema.json +18 -18
  11. package/schemas/theme.schema.json +364 -226
  12. package/scripts/add-site-node.mjs +251 -0
  13. package/scripts/check-config.mjs +12 -3
  14. package/scripts/deploy-site.mjs +6 -9
  15. package/scripts/generate-images.mjs +18 -29
  16. package/scripts/generate-schemas.mjs +7 -1
  17. package/scripts/init-site.mjs +35 -0
  18. package/scripts/lib/astro-command.mjs +14 -9
  19. package/scripts/lib/editor-language-service.mjs +28 -191
  20. package/scripts/lib/heading-ids.mjs +3 -1
  21. package/scripts/lib/navigation-model.mjs +23 -17
  22. package/scripts/lib/norna-markdown-blocks.mjs +64 -145
  23. package/scripts/lib/norna-markdown-render-plugin.mjs +37 -0
  24. package/scripts/lib/object.mjs +28 -0
  25. package/scripts/lib/page-markdown.mjs +282 -0
  26. package/scripts/lib/page-model.mjs +26 -7
  27. package/scripts/lib/presentation-contract.mjs +266 -0
  28. package/scripts/lib/presentation-palette-metadata.mjs +51 -0
  29. package/scripts/lib/presentation.mjs +548 -93
  30. package/scripts/lib/project-config.mjs +73 -16
  31. package/scripts/lib/schema-definitions.mjs +89 -21
  32. package/scripts/lib/schema-editor-metadata.mjs +166 -33
  33. package/scripts/lib/schema-value-definitions.mjs +32 -4
  34. package/scripts/lib/site-content.mjs +33 -223
  35. package/scripts/lib/site-conventions.mjs +1 -0
  36. package/scripts/lib/site-paths.mjs +11 -6
  37. package/scripts/lib/site-structure.mjs +189 -0
  38. package/scripts/lib/theme-config.mjs +3 -2
  39. package/scripts/lib/theme-presets.mjs +105 -101
  40. package/scripts/lib/theme-profiles.mjs +221 -0
  41. package/scripts/lib/typography.mjs +220 -35
  42. package/scripts/lib/yaml-config.mjs +46 -6
  43. package/scripts/lib/yaml-indentation.mjs +86 -0
  44. package/scripts/show-typography.mjs +3 -36
  45. package/scripts/sync-content-sections.mjs +88 -79
  46. package/src/components/DisplaySettings.astro +107 -0
  47. package/src/components/ImageCarousel.astro +34 -13
  48. package/src/components/NavigationPageTree.astro +154 -34
  49. package/src/components/PageContentsLinks.astro +40 -0
  50. package/src/components/SectionNavigationScript.astro +68 -7
  51. package/src/components/SiteBreadcrumbs.astro +24 -18
  52. package/src/components/SiteNavigation.astro +130 -46
  53. package/src/components/SitePage.astro +65 -55
  54. package/src/components/SiteSection.astro +37 -198
  55. package/src/components/SiteTreeNavigation.astro +36 -0
  56. package/src/components/TreeNavigationScript.astro +83 -0
  57. package/src/content.config.ts +2 -8
  58. package/src/layouts/BaseLayout.astro +52 -2
  59. package/src/lib/generatedImages.ts +0 -7
  60. package/src/lib/pageThemes.ts +11 -9
  61. package/src/lib/readerPreferencesScript.mjs +141 -0
  62. package/src/lib/sectionContent.ts +120 -206
  63. package/src/lib/siteNavigation.ts +38 -19
  64. package/src/lib/sitePages.ts +115 -33
  65. package/src/pages/[...slug].astro +2 -2
  66. package/src/pages/index.astro +2 -1
  67. package/src/styles/global.css +1110 -279
  68. package/starters/basic/README.md +8 -8
  69. package/starters/basic/site/theme.yaml +1 -105
  70. package/docs/README.md +0 -135
  71. package/docs/assets/norna-dog-shelter.jpg +0 -0
  72. package/docs/commands.md +0 -189
  73. package/docs/configuration.md +0 -119
  74. package/docs/content.md +0 -342
  75. package/docs/design/command-organization.md +0 -414
  76. package/docs/design/navigation-and-theme-plan.md +0 -115
  77. package/docs/design/norna-diagram-design.md +0 -159
  78. package/docs/design/site-examples-structure.md +0 -115
  79. package/docs/engine-development.md +0 -218
  80. package/docs/getting-started.md +0 -206
  81. package/docs/how-to/embedded-site.md +0 -35
  82. package/docs/images-and-metadata.md +0 -186
  83. package/docs/local-development.md +0 -82
  84. package/docs/pages.md +0 -134
  85. package/docs/public-files.md +0 -118
  86. package/docs/publishing.md +0 -117
  87. package/docs/requirements.md +0 -54
  88. package/docs/site-files.md +0 -145
  89. package/docs/sitewide-content.md +0 -73
  90. package/docs/theme.md +0 -271
  91. package/docs/typography.md +0 -180
  92. package/examples/README.md +0 -43
  93. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/site.schema.json +0 -35
  94. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/sitewide.schema.json +0 -97
  95. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/theme.schema.json +0 -852
  96. package/examples/complete-sites/dog-shelter-multi-page/.astro/content-assets.mjs +0 -4
  97. package/examples/complete-sites/dog-shelter-multi-page/.astro/content-modules.mjs +0 -1
  98. package/examples/complete-sites/dog-shelter-multi-page/.astro/content.d.ts +0 -183
  99. package/examples/complete-sites/dog-shelter-multi-page/.astro/data-store.json +0 -1
  100. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev-local.json +0 -8
  101. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.json +0 -13
  102. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.log +0 -36
  103. package/examples/complete-sites/dog-shelter-multi-page/.astro/settings.json +0 -5
  104. package/examples/complete-sites/dog-shelter-multi-page/.astro/types.d.ts +0 -2
  105. package/examples/complete-sites/dog-shelter-multi-page/README.md +0 -24
  106. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/_metadata.json +0 -74
  107. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-B3JHJyiv.js +0 -434
  108. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-B3JHJyiv.js.map +0 -1
  109. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
  110. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
  111. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
  112. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
  113. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
  114. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
  115. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
  116. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
  117. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-C3SVr7dT.js +0 -1534
  118. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-C3SVr7dT.js.map +0 -1
  119. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-BLtvqtzO.js +0 -48
  120. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +0 -1
  121. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-C92i61-2.js +0 -42
  122. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-C92i61-2.js.map +0 -1
  123. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/package.json +0 -3
  124. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
  125. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-v5GgKks_.js +0 -190
  126. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-v5GgKks_.js.map +0 -1
  127. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-BFvJVp26.js +0 -458
  128. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +0 -1
  129. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js +0 -1016
  130. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +0 -1
  131. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-vo3A6TMn.js +0 -32
  132. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-vo3A6TMn.js.map +0 -1
  133. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-DwhzGckb.js +0 -111
  134. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-DwhzGckb.js.map +0 -1
  135. package/examples/complete-sites/dog-shelter-multi-page/site/.norna/generated-images.json +0 -98
  136. package/examples/complete-sites/dog-shelter-multi-page/site/config.yaml +0 -1
  137. package/examples/complete-sites/dog-shelter-multi-page/site/content.md +0 -23
  138. package/examples/complete-sites/dog-shelter-multi-page/site/images/shelter-dog.jpg +0 -0
  139. package/examples/complete-sites/dog-shelter-multi-page/site/pages/010-dogs/content.md +0 -21
  140. package/examples/complete-sites/dog-shelter-multi-page/site/pages/010-dogs/images/rex.jpg +0 -0
  141. package/examples/complete-sites/dog-shelter-multi-page/site/pages/010-dogs/images/rover.jpg +0 -0
  142. package/examples/complete-sites/dog-shelter-multi-page/site/pages/020-adopt/content.md +0 -22
  143. package/examples/complete-sites/dog-shelter-multi-page/site/pages/020-adopt/images/adoption-dog.jpg +0 -0
  144. package/examples/complete-sites/dog-shelter-multi-page/site/public/favicon.svg +0 -10
  145. package/examples/complete-sites/dog-shelter-multi-page/site/public/logo.svg +0 -9
  146. package/examples/complete-sites/dog-shelter-multi-page/site/public/robots.txt +0 -2
  147. package/examples/complete-sites/dog-shelter-multi-page/site/sitewide-content.yaml +0 -4
  148. package/examples/complete-sites/dog-shelter-multi-page/site/theme.yaml +0 -1
  149. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/site.schema.json +0 -35
  150. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/sitewide.schema.json +0 -97
  151. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/theme.schema.json +0 -852
  152. package/examples/complete-sites/dog-shelter-single-page/.astro/content-assets.mjs +0 -4
  153. package/examples/complete-sites/dog-shelter-single-page/.astro/content-modules.mjs +0 -1
  154. package/examples/complete-sites/dog-shelter-single-page/.astro/content.d.ts +0 -183
  155. package/examples/complete-sites/dog-shelter-single-page/.astro/data-store.json +0 -1
  156. package/examples/complete-sites/dog-shelter-single-page/.astro/dev-local.json +0 -8
  157. package/examples/complete-sites/dog-shelter-single-page/.astro/dev.json +0 -13
  158. package/examples/complete-sites/dog-shelter-single-page/.astro/dev.log +0 -18
  159. package/examples/complete-sites/dog-shelter-single-page/.astro/settings.json +0 -5
  160. package/examples/complete-sites/dog-shelter-single-page/.astro/types.d.ts +0 -2
  161. package/examples/complete-sites/dog-shelter-single-page/README.md +0 -24
  162. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/_metadata.json +0 -74
  163. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro-B3JHJyiv.js +0 -434
  164. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro-B3JHJyiv.js.map +0 -1
  165. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
  166. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
  167. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
  168. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
  169. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
  170. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
  171. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
  172. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
  173. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/audit-C3SVr7dT.js +0 -1534
  174. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/audit-C3SVr7dT.js.map +0 -1
  175. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/highlight-BLtvqtzO.js +0 -48
  176. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +0 -1
  177. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/icons-C92i61-2.js +0 -42
  178. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/icons-C92i61-2.js.map +0 -1
  179. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/package.json +0 -3
  180. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
  181. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/settings-v5GgKks_.js +0 -190
  182. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/settings-v5GgKks_.js.map +0 -1
  183. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/toolbar-BFvJVp26.js +0 -458
  184. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +0 -1
  185. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js +0 -1016
  186. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +0 -1
  187. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/window-vo3A6TMn.js +0 -32
  188. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/window-vo3A6TMn.js.map +0 -1
  189. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/xray-DwhzGckb.js +0 -111
  190. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/xray-DwhzGckb.js.map +0 -1
  191. package/examples/complete-sites/dog-shelter-single-page/site/.norna/generated-images.json +0 -50
  192. package/examples/complete-sites/dog-shelter-single-page/site/config.yaml +0 -1
  193. package/examples/complete-sites/dog-shelter-single-page/site/content.md +0 -37
  194. package/examples/complete-sites/dog-shelter-single-page/site/images/foster-dog.jpg +0 -0
  195. package/examples/complete-sites/dog-shelter-single-page/site/images/rescue-dog.jpg +0 -0
  196. package/examples/complete-sites/dog-shelter-single-page/site/public/favicon.svg +0 -10
  197. package/examples/complete-sites/dog-shelter-single-page/site/public/logo.svg +0 -9
  198. package/examples/complete-sites/dog-shelter-single-page/site/public/robots.txt +0 -2
  199. package/examples/complete-sites/dog-shelter-single-page/site/sitewide-content.yaml +0 -4
  200. package/examples/complete-sites/dog-shelter-single-page/site/theme.yaml +0 -1
  201. package/examples/feature-demos/media-and-surfaces/.astro/collections/site.schema.json +0 -35
  202. package/examples/feature-demos/media-and-surfaces/.astro/collections/sitewide.schema.json +0 -97
  203. package/examples/feature-demos/media-and-surfaces/.astro/collections/theme.schema.json +0 -852
  204. package/examples/feature-demos/media-and-surfaces/.astro/content-assets.mjs +0 -4
  205. package/examples/feature-demos/media-and-surfaces/.astro/content-modules.mjs +0 -1
  206. package/examples/feature-demos/media-and-surfaces/.astro/content.d.ts +0 -183
  207. package/examples/feature-demos/media-and-surfaces/.astro/data-store.json +0 -1
  208. package/examples/feature-demos/media-and-surfaces/.astro/dev.log +0 -14
  209. package/examples/feature-demos/media-and-surfaces/.astro/settings.json +0 -5
  210. package/examples/feature-demos/media-and-surfaces/.astro/types.d.ts +0 -2
  211. package/examples/feature-demos/media-and-surfaces/README.md +0 -21
  212. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/_metadata.json +0 -80
  213. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro-B3JHJyiv.js +0 -434
  214. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro-B3JHJyiv.js.map +0 -1
  215. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
  216. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
  217. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
  218. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
  219. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
  220. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
  221. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
  222. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
  223. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/audit-C3SVr7dT.js +0 -1534
  224. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/audit-C3SVr7dT.js.map +0 -1
  225. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/embla-carousel.js +0 -1389
  226. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/embla-carousel.js.map +0 -1
  227. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/highlight-BLtvqtzO.js +0 -48
  228. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +0 -1
  229. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/icons-C92i61-2.js +0 -42
  230. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/icons-C92i61-2.js.map +0 -1
  231. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/package.json +0 -3
  232. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
  233. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/settings-v5GgKks_.js +0 -190
  234. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/settings-v5GgKks_.js.map +0 -1
  235. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/toolbar-BFvJVp26.js +0 -458
  236. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +0 -1
  237. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/ui-library-Cd35oAvo.js +0 -1016
  238. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +0 -1
  239. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/window-vo3A6TMn.js +0 -32
  240. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/window-vo3A6TMn.js.map +0 -1
  241. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/xray-DwhzGckb.js +0 -111
  242. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/xray-DwhzGckb.js.map +0 -1
  243. package/examples/feature-demos/media-and-surfaces/site/.norna/generated-images.json +0 -66
  244. package/examples/feature-demos/media-and-surfaces/site/config.yaml +0 -1
  245. package/examples/feature-demos/media-and-surfaces/site/content.md +0 -15
  246. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/content.md +0 -71
  247. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/card-carousel.svg +0 -11
  248. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/card-stack.svg +0 -9
  249. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/card-surfaces.svg +0 -8
  250. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/carousel-one.svg +0 -8
  251. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/carousel-three.svg +0 -13
  252. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/carousel-two.svg +0 -8
  253. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/stack-one.svg +0 -8
  254. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/stack-two.svg +0 -9
  255. package/examples/feature-demos/media-and-surfaces/site/pages/020-surfaces/content.md +0 -41
  256. package/examples/feature-demos/media-and-surfaces/site/pages/020-surfaces/theme.yaml +0 -3
  257. package/examples/feature-demos/media-and-surfaces/site/public/robots.txt +0 -2
  258. package/examples/feature-demos/media-and-surfaces/site/sitewide-content.yaml +0 -2
  259. package/examples/feature-demos/media-and-surfaces/site/theme.yaml +0 -1
  260. package/examples/feature-demos/sitewide-content/.astro/collections/site.schema.json +0 -59
  261. package/examples/feature-demos/sitewide-content/.astro/collections/sitewide.schema.json +0 -138
  262. package/examples/feature-demos/sitewide-content/.astro/collections/theme.schema.json +0 -755
  263. package/examples/feature-demos/sitewide-content/.astro/content-assets.mjs +0 -1
  264. package/examples/feature-demos/sitewide-content/.astro/content-modules.mjs +0 -1
  265. package/examples/feature-demos/sitewide-content/.astro/content.d.ts +0 -183
  266. package/examples/feature-demos/sitewide-content/.astro/data-store.json +0 -1
  267. package/examples/feature-demos/sitewide-content/.astro/dev.json +0 -13
  268. package/examples/feature-demos/sitewide-content/.astro/dev.log +0 -18
  269. package/examples/feature-demos/sitewide-content/.astro/settings.json +0 -5
  270. package/examples/feature-demos/sitewide-content/.astro/types.d.ts +0 -2
  271. package/examples/feature-demos/sitewide-content/README.md +0 -26
  272. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/_metadata.json +0 -74
  273. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro-B3JHJyiv.js +0 -434
  274. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro-B3JHJyiv.js.map +0 -1
  275. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
  276. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
  277. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
  278. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
  279. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
  280. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
  281. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
  282. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
  283. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/audit-C3SVr7dT.js +0 -1534
  284. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/audit-C3SVr7dT.js.map +0 -1
  285. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/highlight-BLtvqtzO.js +0 -48
  286. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +0 -1
  287. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/icons-C92i61-2.js +0 -42
  288. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/icons-C92i61-2.js.map +0 -1
  289. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/package.json +0 -3
  290. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
  291. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/settings-v5GgKks_.js +0 -190
  292. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/settings-v5GgKks_.js.map +0 -1
  293. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/toolbar-BFvJVp26.js +0 -458
  294. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +0 -1
  295. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/ui-library-Cd35oAvo.js +0 -1016
  296. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +0 -1
  297. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/window-vo3A6TMn.js +0 -32
  298. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/window-vo3A6TMn.js.map +0 -1
  299. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/xray-DwhzGckb.js +0 -111
  300. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/xray-DwhzGckb.js.map +0 -1
  301. package/examples/feature-demos/sitewide-content/site/.norna/generated-images.json +0 -1
  302. package/examples/feature-demos/sitewide-content/site/config.yaml +0 -1
  303. package/examples/feature-demos/sitewide-content/site/content.md +0 -17
  304. package/examples/feature-demos/sitewide-content/site/pages/010-logo-and-navigation/content.md +0 -17
  305. package/examples/feature-demos/sitewide-content/site/pages/020-notices/content.md +0 -23
  306. package/examples/feature-demos/sitewide-content/site/pages/030-footer/content.md +0 -18
  307. package/examples/feature-demos/sitewide-content/site/public/logo.svg +0 -6
  308. package/examples/feature-demos/sitewide-content/site/public/robots.txt +0 -2
  309. package/examples/feature-demos/sitewide-content/site/sitewide-content.yaml +0 -14
  310. package/examples/feature-demos/sitewide-content/site/theme.yaml +0 -1
  311. package/examples/feature-demos/theme-presets/.astro/collections/routeTheme.schema.json +0 -746
  312. package/examples/feature-demos/theme-presets/.astro/collections/site.schema.json +0 -59
  313. package/examples/feature-demos/theme-presets/.astro/collections/sitewide.schema.json +0 -138
  314. package/examples/feature-demos/theme-presets/.astro/collections/theme.schema.json +0 -755
  315. package/examples/feature-demos/theme-presets/.astro/content-assets.mjs +0 -4
  316. package/examples/feature-demos/theme-presets/.astro/content-modules.mjs +0 -1
  317. package/examples/feature-demos/theme-presets/.astro/content.d.ts +0 -183
  318. package/examples/feature-demos/theme-presets/.astro/data-store.json +0 -1
  319. package/examples/feature-demos/theme-presets/.astro/dev-local.json +0 -8
  320. package/examples/feature-demos/theme-presets/.astro/dev.json +0 -15
  321. package/examples/feature-demos/theme-presets/.astro/dev.log +0 -164
  322. package/examples/feature-demos/theme-presets/.astro/settings.json +0 -5
  323. package/examples/feature-demos/theme-presets/.astro/types.d.ts +0 -2
  324. package/examples/feature-demos/theme-presets/README.md +0 -18
  325. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/_metadata.json +0 -80
  326. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro-D_GIpJIE.js +0 -434
  327. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -1
  328. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
  329. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
  330. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
  331. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
  332. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
  333. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
  334. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
  335. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
  336. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/audit-DM9Hkl5B.js +0 -1534
  337. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -1
  338. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/embla-carousel.js +0 -1389
  339. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/embla-carousel.js.map +0 -1
  340. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/highlight-DnZ1ULOL.js +0 -48
  341. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -1
  342. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/icons-RyebKi45.js +0 -42
  343. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -1
  344. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/package.json +0 -3
  345. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
  346. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/settings-DaU-gNnK.js +0 -190
  347. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -1
  348. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/toolbar-63PA619H.js +0 -458
  349. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -1
  350. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/ui-library--bkcNSYz.js +0 -1016
  351. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -1
  352. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/window-jPkpKVcy.js +0 -32
  353. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -1
  354. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/xray-BXCHpEJP.js +0 -111
  355. package/examples/feature-demos/theme-presets/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -1
  356. package/examples/feature-demos/theme-presets/site/.norna/generated-images.json +0 -290
  357. package/examples/feature-demos/theme-presets/site/config.yaml +0 -1
  358. package/examples/feature-demos/theme-presets/site/content.md +0 -14
  359. package/examples/feature-demos/theme-presets/site/pages/010-portfolio/content.md +0 -31
  360. package/examples/feature-demos/theme-presets/site/pages/010-portfolio/images/puppy-portrait.jpg +0 -0
  361. package/examples/feature-demos/theme-presets/site/pages/010-portfolio/images/shepherd-portrait.jpg +0 -0
  362. package/examples/feature-demos/theme-presets/site/pages/010-portfolio/images/white-puppy.jpg +0 -0
  363. package/examples/feature-demos/theme-presets/site/pages/010-portfolio/theme.yaml +0 -1
  364. package/examples/feature-demos/theme-presets/site/pages/020-documentation/content.md +0 -30
  365. package/examples/feature-demos/theme-presets/site/pages/020-documentation/images/black-schnauzer.jpg +0 -0
  366. package/examples/feature-demos/theme-presets/site/pages/020-documentation/images/retriever-portrait.jpg +0 -0
  367. package/examples/feature-demos/theme-presets/site/pages/020-documentation/images/schnauzer-portrait.jpg +0 -0
  368. package/examples/feature-demos/theme-presets/site/pages/020-documentation/theme.yaml +0 -1
  369. package/examples/feature-demos/theme-presets/site/pages/030-project/content.md +0 -31
  370. package/examples/feature-demos/theme-presets/site/pages/030-project/images/boxer-portrait.jpg +0 -0
  371. package/examples/feature-demos/theme-presets/site/pages/030-project/images/grass-puppy.jpg +0 -0
  372. package/examples/feature-demos/theme-presets/site/pages/030-project/images/grey-street-dog.jpg +0 -0
  373. package/examples/feature-demos/theme-presets/site/pages/030-project/theme.yaml +0 -1
  374. package/examples/feature-demos/theme-presets/site/pages/040-statement/content.md +0 -31
  375. package/examples/feature-demos/theme-presets/site/pages/040-statement/images/black-pedigree.jpg +0 -0
  376. package/examples/feature-demos/theme-presets/site/pages/040-statement/images/sheepdog-grass.jpg +0 -0
  377. package/examples/feature-demos/theme-presets/site/pages/040-statement/images/sheepdog-wide.jpg +0 -0
  378. package/examples/feature-demos/theme-presets/site/pages/040-statement/theme.yaml +0 -1
  379. package/examples/feature-demos/theme-presets/site/public/robots.txt +0 -2
  380. package/examples/feature-demos/theme-presets/site/sitewide-content.yaml +0 -3
  381. package/examples/feature-demos/theme-presets/site/theme.yaml +0 -1
  382. package/fixtures/basic/site/.norna/generated-images.json +0 -1
  383. package/fixtures/basic/site/config.yaml +0 -1
  384. package/fixtures/basic/site/content.md +0 -14
  385. package/fixtures/basic/site/public/robots.txt +0 -2
  386. package/fixtures/basic/site/sitewide-content.yaml +0 -3
  387. package/fixtures/basic/site/theme.yaml +0 -8
  388. package/fixtures/content-model-v2/.astro/collections/site.schema.json +0 -776
  389. package/fixtures/content-model-v2/.astro/collections/theme.schema.json +0 -668
  390. package/fixtures/content-model-v2/.astro/content-assets.mjs +0 -4
  391. package/fixtures/content-model-v2/.astro/content-modules.mjs +0 -1
  392. package/fixtures/content-model-v2/.astro/content.d.ts +0 -175
  393. package/fixtures/content-model-v2/.astro/data-store.json +0 -1
  394. package/fixtures/content-model-v2/.astro/dev-local.json +0 -8
  395. package/fixtures/content-model-v2/.astro/dev.json +0 -13
  396. package/fixtures/content-model-v2/.astro/dev.log +0 -231
  397. package/fixtures/content-model-v2/.astro/settings.json +0 -5
  398. package/fixtures/content-model-v2/.astro/types.d.ts +0 -2
  399. package/fixtures/content-model-v2/dist/_astro/GalleryGrid.astro_astro_type_script_index_0_lang.B0kxDyGz.js +0 -1
  400. package/fixtures/content-model-v2/dist/_astro/SitePage.BbfZub4g.css +0 -1
  401. package/fixtures/content-model-v2/dist/guide/index.html +0 -3
  402. package/fixtures/content-model-v2/dist/images/generated/intro/detail-27930b14-480.webp +0 -0
  403. package/fixtures/content-model-v2/dist/images/generated/intro/detail-27930b14-768.webp +0 -0
  404. package/fixtures/content-model-v2/dist/images/generated/intro/detail-27930b14-971.webp +0 -0
  405. package/fixtures/content-model-v2/dist/images/generated/intro/duplicate-49c98f6c-480.webp +0 -0
  406. package/fixtures/content-model-v2/dist/images/generated/intro/duplicate-49c98f6c-768.webp +0 -0
  407. package/fixtures/content-model-v2/dist/images/generated/intro/duplicate-49c98f6c-971.webp +0 -0
  408. package/fixtures/content-model-v2/dist/images/generated/intro/hero-6d588a83-480.webp +0 -0
  409. package/fixtures/content-model-v2/dist/images/generated/intro/hero-6d588a83-768.webp +0 -0
  410. package/fixtures/content-model-v2/dist/images/generated/intro/hero-6d588a83-971.webp +0 -0
  411. package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-1080.webp +0 -0
  412. package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-1440.webp +0 -0
  413. package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-1600.webp +0 -0
  414. package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-480.webp +0 -0
  415. package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-768.webp +0 -0
  416. package/fixtures/content-model-v2/dist/images/generated/routes/010-guide/images/intro/duplicate-5cf614d2-480.webp +0 -0
  417. package/fixtures/content-model-v2/dist/images/generated/routes/010-guide/images/intro/duplicate-5cf614d2-768.webp +0 -0
  418. package/fixtures/content-model-v2/dist/images/generated/routes/010-guide/images/intro/duplicate-5cf614d2-960.webp +0 -0
  419. package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-1080.webp +0 -0
  420. package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-1440.webp +0 -0
  421. package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-1600.webp +0 -0
  422. package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-480.webp +0 -0
  423. package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-768.webp +0 -0
  424. package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-1080.webp +0 -0
  425. package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-1440.webp +0 -0
  426. package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-1600.webp +0 -0
  427. package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-480.webp +0 -0
  428. package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-768.webp +0 -0
  429. package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-1080.webp +0 -0
  430. package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-1440.webp +0 -0
  431. package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-1600.webp +0 -0
  432. package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-480.webp +0 -0
  433. package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-768.webp +0 -0
  434. package/fixtures/content-model-v2/dist/index.html +0 -8
  435. package/fixtures/content-model-v2/node_modules/.vite/deps/_metadata.json +0 -80
  436. package/fixtures/content-model-v2/node_modules/.vite/deps/astro-D_GIpJIE.js +0 -434
  437. package/fixtures/content-model-v2/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -1
  438. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
  439. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
  440. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
  441. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
  442. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
  443. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
  444. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
  445. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
  446. package/fixtures/content-model-v2/node_modules/.vite/deps/audit-DM9Hkl5B.js +0 -1534
  447. package/fixtures/content-model-v2/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -1
  448. package/fixtures/content-model-v2/node_modules/.vite/deps/embla-carousel.js +0 -1389
  449. package/fixtures/content-model-v2/node_modules/.vite/deps/embla-carousel.js.map +0 -1
  450. package/fixtures/content-model-v2/node_modules/.vite/deps/highlight-DnZ1ULOL.js +0 -48
  451. package/fixtures/content-model-v2/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -1
  452. package/fixtures/content-model-v2/node_modules/.vite/deps/icons-RyebKi45.js +0 -42
  453. package/fixtures/content-model-v2/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -1
  454. package/fixtures/content-model-v2/node_modules/.vite/deps/package.json +0 -3
  455. package/fixtures/content-model-v2/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
  456. package/fixtures/content-model-v2/node_modules/.vite/deps/settings-DaU-gNnK.js +0 -190
  457. package/fixtures/content-model-v2/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -1
  458. package/fixtures/content-model-v2/node_modules/.vite/deps/toolbar-63PA619H.js +0 -458
  459. package/fixtures/content-model-v2/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -1
  460. package/fixtures/content-model-v2/node_modules/.vite/deps/ui-library--bkcNSYz.js +0 -1016
  461. package/fixtures/content-model-v2/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -1
  462. package/fixtures/content-model-v2/node_modules/.vite/deps/window-jPkpKVcy.js +0 -32
  463. package/fixtures/content-model-v2/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -1
  464. package/fixtures/content-model-v2/node_modules/.vite/deps/xray-BXCHpEJP.js +0 -111
  465. package/fixtures/content-model-v2/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -1
  466. package/fixtures/content-model-v2/site/.norna/generated-images.json +0 -210
  467. package/fixtures/content-model-v2/site/config.yaml +0 -1
  468. package/fixtures/content-model-v2/site/content.md +0 -79
  469. package/fixtures/content-model-v2/site/images/adopt.svg +0 -9
  470. package/fixtures/content-model-v2/site/images/detail.jpg +0 -0
  471. package/fixtures/content-model-v2/site/images/duplicate.jpg +0 -0
  472. package/fixtures/content-model-v2/site/images/foster.svg +0 -12
  473. package/fixtures/content-model-v2/site/images/hero.jpg +0 -0
  474. package/fixtures/content-model-v2/site/images/image.jpg +0 -0
  475. package/fixtures/content-model-v2/site/images/slide-one.jpg +0 -0
  476. package/fixtures/content-model-v2/site/images/slide-three.jpg +0 -0
  477. package/fixtures/content-model-v2/site/images/slide-two.jpg +0 -0
  478. package/fixtures/content-model-v2/site/pages/010-guide/content.md +0 -18
  479. package/fixtures/content-model-v2/site/pages/010-guide/images/duplicate.jpg +0 -0
  480. package/fixtures/content-model-v2/site/theme.yaml +0 -4
  481. package/fixtures/nested-pages/site/.norna/generated-images.json +0 -10
  482. package/fixtures/nested-pages/site/config.yaml +0 -1
  483. package/fixtures/nested-pages/site/content.md +0 -15
  484. package/fixtures/nested-pages/site/pages/010-guides/content.md +0 -15
  485. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/content.md +0 -21
  486. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/images/diagram.svg +0 -21
  487. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/pages/010-macos/content.md +0 -14
  488. package/fixtures/nested-pages/site/pages/010-guides/pages/020-workflows/content.md +0 -11
  489. package/fixtures/nested-pages/site/pages/010-guides/theme.yaml +0 -3
  490. package/fixtures/nested-pages/site/pages/020-reference/content.md +0 -10
  491. package/fixtures/nested-pages/site/pages/020-reference/pages/010-installation/content.md +0 -11
  492. package/fixtures/nested-pages/site/theme.yaml +0 -3
  493. package/scripts/build-pages.mjs +0 -69
  494. package/scripts/lib/example-sites.mjs +0 -37
  495. package/scripts/lib/frontmatter-yaml.mjs +0 -113
  496. package/scripts/lib/git-status.mjs +0 -7
  497. package/scripts/release.mjs +0 -153
  498. package/scripts/test-banner-visibility.mjs +0 -80
  499. package/scripts/test-ci-lockfile.mjs +0 -65
  500. package/scripts/test-cli-discovery.mjs +0 -124
  501. package/scripts/test-client-javascript.mjs +0 -218
  502. package/scripts/test-content-check.mjs +0 -621
  503. package/scripts/test-content-model-v2.mjs +0 -1629
  504. package/scripts/test-documentation.mjs +0 -187
  505. package/scripts/test-editor-language-service.mjs +0 -302
  506. package/scripts/test-engine-commands.mjs +0 -204
  507. package/scripts/test-examples.mjs +0 -24
  508. package/scripts/test-heading-ids.mjs +0 -68
  509. package/scripts/test-navigation-model.mjs +0 -63
  510. package/scripts/test-navigation-preview.mjs +0 -108
  511. package/scripts/test-navigation.mjs +0 -148
  512. package/scripts/test-nested-pages.mjs +0 -110
  513. package/scripts/test-package-check.mjs +0 -531
  514. package/scripts/test-page-model.mjs +0 -80
  515. package/scripts/test-project-config.mjs +0 -144
  516. package/scripts/test-schemas.mjs +0 -154
  517. package/scripts/test-site-public.mjs +0 -85
  518. package/scripts/test-theme-presets.mjs +0 -182
  519. package/src/components/SiteNotesScript.astro +0 -43
  520. package/starters/basic/site/images/.gitkeep +0 -1
  521. package/starters/project/.github/workflows/deploy.yml +0 -64
  522. package/starters/project/README.md +0 -84
  523. package/starters/project/package-lock.json +0 -4296
  524. package/starters/project/package.json +0 -37
  525. package/starters/project/site/config.yaml +0 -1
  526. package/starters/project/site/content.md +0 -119
  527. package/starters/project/site/pages/010-guide/content.md +0 -80
  528. package/starters/project/site/public/robots.txt +0 -2
  529. package/starters/project/site/sitewide-content.yaml +0 -3
  530. package/starters/project/site/theme.yaml +0 -31
  531. package/tsconfig.json +0 -5
  532. /package/starters/basic/site/{content.md → pages/000-home/content.md} +0 -0
  533. /package/{fixtures/basic/site → starters/basic/site/pages/000-home}/images/.gitkeep +0 -0
@@ -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, corners, 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`.
@@ -65,7 +65,7 @@ Use `npm run norna:engine:version` to inspect the installed engine and
65
65
 
66
66
  Generic documentation lives in the `norna` repository:
67
67
 
68
- - `docs/getting-started.md`
68
+ - `docs/README.md`
69
69
  - `docs/site-files.md`
70
70
  - `docs/public-files.md`
71
71
  - `docs/content.md`
@@ -1,105 +1 @@
1
- # norna:start theme-help
2
- # Site-wide visual defaults. Remove a value to use the engine default.
3
- # Active values below are ordinary YAML; this marked comment block is only help text.
4
- #
5
- # Available structure:
6
- # layout:
7
- # density: compact | normal | airy
8
- # pageWidth: CSS length, e.g. 1180px
9
- # gutter:
10
- # desktop: CSS length or clamp(), e.g. clamp(1.25rem, 4vw, 3rem)
11
- # mobile: CSS length, e.g. 1rem
12
- # spacing:
13
- # firstSectionTop:
14
- # desktop: CSS length or clamp(), e.g. clamp(1.875rem, 3vw, 2.75rem)
15
- # mobile: CSS length, e.g. 1.375rem
16
- # sectionGap:
17
- # desktop: CSS length or clamp(), e.g. clamp(1.4rem, 3vw, 2.75rem)
18
- # mobile: CSS length, e.g. 1.5rem
19
- # finalSectionBottom:
20
- # desktop: CSS length or clamp(), e.g. clamp(1.4rem, 3vw, 2.75rem)
21
- # mobile: CSS length, e.g. 1.5rem
22
- # headingToBlock:
23
- # desktop: CSS length, e.g. 0.75em
24
- # mobile: CSS length, e.g. 0.7em
25
- # blockGap:
26
- # desktop: CSS length, e.g. 1.5em
27
- # mobile: CSS length, e.g. 1.25em
28
- # imageGap:
29
- # desktop: CSS length or clamp(), e.g. clamp(1.25rem, 2.8vw, 2rem)
30
- # mobile: CSS length, e.g. 1.5rem
31
- # images:
32
- # width: CSS length, e.g. 900px
33
- # maxAvailableWidthPercent:
34
- # desktop: number from 1 through 100
35
- # mobile: number from 1 through 100
36
- # maxAvailableHeightPercent:
37
- # desktop: number from 1 through 100
38
- # mobile: number from 1 through 100
39
- # typography:
40
- # fontFamily: CSS font-family stack
41
- # profile: restrained | dense | reading | statement
42
- # rhythm: compact | normal | airy
43
- # overrides:
44
- # headings:
45
- # h2:
46
- # align:
47
- # desktop: left | center | right
48
- # mobile: left | center | right
49
- # size: small | medium | large | xlarge
50
- # lineHeight: number from 1 through 3
51
- # spacingBefore: CSS length, e.g. 0
52
- # spacingAfter: CSS length, e.g. 0.55em
53
- # h3:
54
- # align:
55
- # desktop: left | center | right
56
- # mobile: left | center | right
57
- # size: small | medium | large | xlarge
58
- # lineHeight: number from 1 through 3
59
- # spacingBefore: CSS length, e.g. 1.5em
60
- # spacingAfter: CSS length, e.g. 0.5em
61
- # h4:
62
- # align:
63
- # desktop: left | center | right
64
- # mobile: left | center | right
65
- # size: small | medium | large | xlarge
66
- # lineHeight: number from 1 through 3
67
- # spacingBefore: CSS length, e.g. 1.1em
68
- # spacingAfter: CSS length, e.g. 0.4em
69
- # body:
70
- # align:
71
- # desktop: left | center | right
72
- # mobile: left | center | right
73
- # size: small | medium | large | xlarge
74
- # lineHeight: number from 1 through 3
75
- # paragraphSpacing: CSS length, e.g. 0.85em
76
- # caption:
77
- # align:
78
- # desktop: left | center | right
79
- # mobile: left | center | right
80
- # size: small | medium | large | xlarge
81
- # lineHeight: number from 1 through 3
82
- # spacingBefore: CSS length, e.g. 0.5em
83
- # palette: dark # Alternatives: light, paper
84
- # sectionSurfaces: [base, soft, emphasis]
85
- # norna:end theme-help
86
- layout:
87
- density: normal
88
- pageWidth: 1180px
89
- gutter:
90
- desktop: clamp(1.25rem, 4vw, 3rem)
91
- mobile: 1rem
92
- images:
93
- width: 900px
94
- maxAvailableWidthPercent:
95
- desktop: 100
96
- mobile: 100
97
- maxAvailableHeightPercent:
98
- desktop: 74
99
- mobile: 68
100
- typography:
101
- fontFamily: "Arial, 'Helvetica Neue', Helvetica, sans-serif"
102
- profile: restrained
103
- rhythm: normal
104
- palette: dark # Alternatives: light, paper
105
- sectionSurfaces: [base, soft, emphasis]
1
+ preset: project
package/docs/README.md DELETED
@@ -1,135 +0,0 @@
1
- # Norna Documentation
2
-
3
- The [Norna introduction site](https://janga.github.io/norna/) explains what the
4
- tool is for. These Markdown files are the authoritative tutorial, workflow
5
- guides, and reference.
6
-
7
- ## Start Here
8
-
9
- 1. [Build your first Norna site](getting-started.md) follows one short path from
10
- an empty directory to a checked build.
11
- 2. [Site Files](site-files.md) is the canonical map of every source file,
12
- convention-based directory, and generated location.
13
- 3. [Requirements and limitations](requirements.md) lists required software and
14
- current product boundaries.
15
- 4. [Examples](../examples/README.md) pairs complete and focused source projects
16
- with rendered sites.
17
-
18
- Do not read the reference from beginning to end before trying Norna. Complete
19
- the tutorial, then open the reference for the file or workflow you are changing.
20
-
21
- ## Site File Reference
22
-
23
- Norna expects this top-level source model:
24
-
25
- ```text
26
- site/
27
- |-- config.yaml
28
- |-- theme.yaml
29
- |-- sitewide-content.yaml
30
- |-- content.md
31
- |-- images/
32
- |-- pages/
33
- `-- public/
34
- ```
35
-
36
- - [`config.yaml`](configuration.md): public URL, language, and native browser
37
- scroll behavior.
38
- - [`theme.yaml`](theme.md): complete visual presets and focused presentation
39
- overrides.
40
- - [`sitewide-content.yaml`](sitewide-content.md): shared logo display settings,
41
- banners, and footer.
42
- - [`content.md`](content.md): Markdown page title, optional metadata, sections,
43
- prose, notes, and Norna blocks.
44
- - [`images/`](images-and-metadata.md): managed source formats, variants, sync,
45
- and generated image state.
46
- - [`pages/`](pages.md): additional pages, ordering, URLs, page themes, and
47
- page-local images.
48
- - [`public/`](public-files.md): navigation logos, favicons, and other static
49
- files copied without managed-image processing.
50
- - [Generated files](site-files.md#generated-files): `site/.norna/public/`,
51
- `dist/`, and `.astro/`.
52
-
53
- The [complete Site Files reference](site-files.md) explains which paths are
54
- required, optional, convention-discovered, versioned, or generated.
55
-
56
- ## Common Workflows
57
-
58
- ### Create And Run A Site
59
-
60
- - [Create a standalone site](getting-started.md#1-create-and-run-the-site)
61
- - [Add Norna to an existing Node project](how-to/embedded-site.md)
62
- - [Start and manage local preview](local-development.md)
63
- - [Inspect or update the installed engine](commands.md#command-summary)
64
-
65
- ### Write Content
66
-
67
- - [Write page sections](content.md#sections)
68
- - [Use image stacks, carousels, and cards](content.md#norna-blocks)
69
- - [Add notes to prose](content.md#markdown-text)
70
- - [Add another page](pages.md)
71
- - [Add shared banners or footer content](sitewide-content.md)
72
-
73
- ### Work With Images And Public Assets
74
-
75
- - [Add managed source images](images-and-metadata.md#managed-source-images)
76
- - [Check and sync moved image references](content.md#validation-and-sync)
77
- - [Add a navigation logo](public-files.md#navigation-logo)
78
- - [Add browser icons](public-files.md#browser-icons)
79
- - [Add other static files](public-files.md#other-static-files)
80
-
81
- ### Change Presentation
82
-
83
- - [Choose a complete theme preset](theme.md#theme-presets)
84
- - [Inspect and override a preset](theme.md#overrides)
85
- - [Give a page a different theme](theme.md#page-themes)
86
- - [Adjust typography](typography.md)
87
-
88
- ### Check, Build, And Publish
89
-
90
- - [Run configuration and content checks](commands.md#starter-npm-scripts)
91
- - [Build and inspect generated output](site-files.md#generated-files)
92
- - [Publish through GitHub Pages](publishing.md#github-pages-workflow)
93
- - [Monitor or troubleshoot deployment](publishing.md)
94
-
95
- ## Concepts And Explanation
96
-
97
- - [Norna's site model](https://janga.github.io/norna/concepts/) explains how
98
- files, sections, images, and pages become a website.
99
- - [Images and Metadata](images-and-metadata.md) explains managed variants and
100
- published URLs.
101
- - [Command Organization](design/command-organization.md) explains standalone,
102
- embedded, and engine-development command models.
103
- - [Site Examples Structure](design/site-examples-structure.md) distinguishes
104
- starters, examples, documentation sites, and fixtures.
105
-
106
- ## Command And Platform Reference
107
-
108
- - [Commands](commands.md): CLI commands, npm scripts, and options.
109
- - [Requirements and limitations](requirements.md): runtime dependencies,
110
- optional tools, and current boundaries.
111
- - [Publishing](publishing.md): GitHub Pages workflow and deploy helpers.
112
-
113
- ## Troubleshooting
114
-
115
- - [Common first problems](getting-started.md#common-first-problems)
116
- - [Manage and restart local preview](local-development.md#manage-preview)
117
- - [Rebuild a stale preview](local-development.md#rebuild-stale-preview)
118
- - [Validate and sync content](content.md#validation-and-sync)
119
- - [Inspect publishing failures](publishing.md)
120
- - [Report a reproducible problem](https://github.com/janga/norna/issues)
121
-
122
- ## Engine Contributors
123
-
124
- Start with [Engine Development](engine-development.md). Design documents live
125
- under [`docs/design/`](design/), and planned work is tracked in
126
- [BACKLOG.md](../BACKLOG.md).
127
-
128
- ## AI-Readable Access
129
-
130
- The documentation source is Markdown and can be read directly from this
131
- repository. The published site also exposes
132
- [`llms.txt`](https://janga.github.io/norna/llms.txt), which links AI tools to
133
- the authoritative Markdown entry points rather than duplicating them.
134
-
135
- Norna is licensed under [GNU GPL v3](../LICENSE).
Binary file
package/docs/commands.md DELETED
@@ -1,189 +0,0 @@
1
- # Commands
2
-
3
- The `norna` binary is the stable command surface. Site repositories normally
4
- use starter npm scripts such as `npm run norna:content:check`; those scripts
5
- call the local `norna` binary from `node_modules/.bin`.
6
-
7
- Npm installation exposes the command as `norna` on macOS, Linux, and Windows
8
- through the package `bin` field. When a globally installed `norna` is started
9
- inside a project that declares and has installed its own `@janga/norna`
10
- dependency, the launcher delegates to that project-local version. If no
11
- project-local install is found, the version that was started continues running.
12
-
13
- The project-owned `norna:*` npm scripts are the portable default for both
14
- standalone and embedded sites. To use direct commands from an ordinary shell,
15
- install the launcher once:
16
-
17
- ```sh
18
- npm install --global @janga/norna@latest
19
- ```
20
-
21
- You can then use commands such as `norna dev`, `norna check`, and
22
- `norna build`. The launcher still delegates to the current project's locally
23
- installed and pinned Norna version.
24
-
25
- ## CLI Commands
26
-
27
- ```sh
28
- norna dev:local
29
- norna dev:lan
30
- norna dev:restart
31
- norna dev:status
32
- norna dev:logs
33
- norna dev:stop
34
- norna check
35
- norna config:check
36
- norna content:check
37
- norna content:sync
38
- norna theme:presets
39
- norna theme:export <preset>
40
- norna typography profiles
41
- norna typography show
42
- norna site:public
43
- norna images
44
- norna engine:update [version|latest]
45
- norna engine:version [--latest]
46
- norna init <target-dir> [--type standalone|embedded] [--site-dir <path>]
47
- norna build
48
- norna build:local
49
- norna deploy
50
- norna deploy:commit
51
- norna deploy:watch
52
- norna preview
53
- norna astro
54
- norna doctor
55
- ```
56
-
57
- Global options:
58
-
59
- ```sh
60
- norna --site-dir <path> <command>
61
- norna --help
62
- ```
63
-
64
- `norna dev` is accepted as an alias for `dev:local`. `norna check` runs the
65
- configuration and content checks in sequence. `help`, `-h`, and `--help` print
66
- usage.
67
-
68
- ## Starter npm Scripts
69
-
70
- The starter uses `norna:*` for norna-specific work. This avoids collisions
71
- when a Norna site is embedded inside a larger GitHub project
72
- whose own `build`, `test`, or deploy scripts mean something different.
73
-
74
- The stable project scripts are:
75
-
76
- ```sh
77
- npm run norna:dev
78
- npm run norna:dev:lan
79
- npm run norna:dev:restart
80
- npm run norna:dev:status
81
- npm run norna:dev:logs
82
- npm run norna:dev:stop
83
- npm run norna:check
84
- npm run norna:config:check
85
- npm run norna:content:check
86
- npm run norna:sync
87
- npm run norna:theme:presets
88
- npm run norna:theme:export -- <preset>
89
- npm run norna:typography:profiles
90
- npm run norna:typography:show
91
- npm run norna:public
92
- npm run norna:images
93
- npm run norna:build
94
- npm run norna:build:local
95
- npm run norna:deploy
96
- npm run norna:deploy:commit
97
- npm run norna:deploy:watch
98
- npm run norna:doctor
99
- npm run norna:preview
100
- npm run norna:engine:update
101
- npm run norna:engine:version
102
- ```
103
-
104
- The standalone starter also provides `npm run dev` and `npm run build` as
105
- convenience aliases. In mixed repositories, such as
106
- a GitHub project that embeds a Norna site next to an app, `build`
107
- should normally mean the repository's complete publishable artifact, while
108
- `norna:build` builds only the `norna` part.
109
-
110
- ## Command Summary
111
-
112
- - `doctor`: prints resolved engine root, site project root, site directory,
113
- content/config/image/public paths, generated manifest, Astro output paths, and
114
- cache path.
115
- - `config:check`: validates `site/config.yaml` against the runtime config
116
- reader.
117
- - `check`: runs `config:check` followed by `content:check`.
118
- - `content:check`: validates section structure, Norna block references,
119
- inline styles, and common content mistakes.
120
- - `content:sync` / `norna:sync`: moves misplaced referenced image files after
121
- confirmation when the intended move is unambiguous. Moving files between the
122
- homepage and an additional page, or between additional pages, requires a clean Git working tree.
123
- - `theme:presets`: lists the available complete theme presets and explains the
124
- intended use of each one.
125
- - `theme:export <preset>`: writes a protected, commented
126
- `orig-<preset>-theme.yaml` reference under the selected site directory. The
127
- available complete theme presets are `portfolio`, `documentation`,
128
- `project`, and `statement`. Norna continues to load only `theme.yaml`.
129
- - `typography profiles`: prints the exact built-in values for typography
130
- profiles and rhythms.
131
- - `typography show`: prints the selected site's resolved typography for the
132
- theme, every page, and every section. Each value includes its source,
133
- and inherited page or section values are marked with `inherited: true`.
134
- - `site:public`: copies `site/public/` into `site/.norna/public/` and
135
- removes stale copied static files.
136
- - `images`: generates WebP variants for raster images, copies managed SVG
137
- images, and writes `site/.norna/generated-images.json`.
138
- - `engine:update [version|latest]`: updates the site repository's
139
- `@janga/norna` dependency with `npm install --save-exact`, normalizes
140
- `package-lock.json` for the pinned GitHub Actions Linux/npm environment, and
141
- verifies it with `npm ci --dry-run` before running config/content/build checks.
142
- Use `--skip-checks` to skip only the site checks; lockfile normalization and
143
- CI verification still run. Unless npm already has a cache configured, it uses
144
- `node_modules/.cache/norna-npm` in the site project.
145
- - `engine:version [--latest]`: prints the declared site dependency, installed
146
- engine version, engine root, Astro dependency, and installed Astro version.
147
- With `--latest`, it also asks npm for the latest published engine version.
148
- - `init <target-dir> [--type standalone|embedded] [--site-dir <path>]`: creates a
149
- standalone site project from the packaged starter, or adds a Norna site
150
- directory plus `norna:*` scripts to an existing project in embedded mode.
151
- Standalone setup pins `@janga/norna` to the version that created it.
152
- - `build`: runs config check, content check, public sync, image generation, and
153
- Astro build.
154
- - `build:local`: runs `build` and restarts `dev:local`.
155
- - `dev:local`: starts Astro dev in background mode on `localhost:4321`. Pass
156
- `--kill` to stop processes that are blocking the standard port before
157
- starting.
158
- - `dev:lan`: starts the same server on all local network interfaces and prints
159
- the IPv4 URL to open from another device on the same network. Stop it after
160
- testing because it is accessible to that local network.
161
- - `dev:restart`, `dev:status`, `dev:logs`, `dev:stop`: manage the local dev
162
- server tracked under `.astro/`.
163
- - `preview`: runs Astro preview with the `norna` Astro config.
164
- - `astro`: runs Astro with the `norna` Astro config.
165
- - `deploy`: discovers the GitHub repository and default branch, then builds and
166
- publishes the already committed branch.
167
- - `deploy:commit`: older convenience flow that builds, stages allowed site
168
- changes, commits, pushes, and checks Pages.
169
- - `deploy:watch`: follows the included `deploy.yml` GitHub Pages workflow run.
170
-
171
- ## Deploy Watch Options
172
-
173
- `deploy:watch` accepts:
174
-
175
- ```sh
176
- --repo <owner/name>
177
- --workflow <name>
178
- --branch <name>
179
- --sha <sha>
180
- --site-url <url>
181
- --interval <duration>
182
- --timeout <duration>
183
- --limit <count>
184
- ```
185
-
186
- Durations may use `ms`, `s`, or `m`, for example `500ms`, `10s`, or `15m`.
187
- Without repository and branch options, Norna discovers the current GitHub
188
- repository and its default branch. Without `--sha`, the current `HEAD` is
189
- monitored.
@@ -1,119 +0,0 @@
1
- # `config.yaml`
2
-
3
- Technical site configuration lives in the selected site's `config.yaml`; by
4
- default that is `site/config.yaml`. The file is required and contains plain
5
- YAML without Markdown frontmatter delimiters.
6
-
7
- A normal configuration needs only the public URL:
8
-
9
- ```yaml
10
- url: https://example.com/
11
- ```
12
-
13
- Norna deliberately keeps this file small. Visual choices belong in
14
- [`theme.yaml`](theme.md), shared editorial content belongs in
15
- [`sitewide-content.yaml`](sitewide-content.md), and page content belongs in
16
- [`content.md`](content.md).
17
-
18
- ## `url`
19
-
20
- - Purpose: canonical public URL and source of the site's deployment path.
21
- - Type: absolute `http` or `https` URL.
22
- - Required: yes.
23
- - Default: none.
24
- - Restrictions: no query string or fragment.
25
-
26
- Norna adds a trailing slash when omitted. The URL pathname becomes the base
27
- path for generated links, browser icons, and managed images, so there is no
28
- separate `basePath` setting.
29
-
30
- Root-hosted site or custom domain:
31
-
32
- ```yaml
33
- url: https://example.com/
34
- ```
35
-
36
- GitHub Pages project site:
37
-
38
- ```yaml
39
- url: https://owner.github.io/repository-name/
40
- ```
41
-
42
- In the second example, Norna derives `/repository-name/` as the base path.
43
- Root-relative Markdown links are prefixed when rendered.
44
-
45
- ## `language`
46
-
47
- - Purpose: language tag on the root `<html lang="...">` element and selection
48
- of Norna's built-in interface text.
49
- - Type: `en`, `sv`, or a regional tag such as `en-GB` or `sv-SE`.
50
- - Required: no.
51
- - Default: `en`.
52
-
53
- Norna includes interface text for English and Swedish. Regional tags use the
54
- language identified by their primary subtag. An unsupported language is an
55
- error because silently rendering English controls on another-language page
56
- would be misleading.
57
-
58
- Interface labels are part of the engine and are not configured individually.
59
- Editorial text remains in page content and `sitewide-content.yaml`.
60
-
61
- ## `scrollBehavior`
62
-
63
- - Purpose: select native same-page anchor movement.
64
- - Type: `instant` or `smooth`.
65
- - Required: no.
66
- - Default: `instant`.
67
-
68
- Example using the browser's native smooth scrolling:
69
-
70
- ```yaml
71
- url: https://example.com/
72
- scrollBehavior: smooth
73
- ```
74
-
75
- Norna does not add a scripted scrolling implementation. Visitors whose system
76
- requests reduced motion always get immediate anchor movement.
77
-
78
- ## Complete Example
79
-
80
- ```yaml
81
- url: https://example.com/
82
- language: en-GB
83
- scrollBehavior: instant
84
- ```
85
-
86
- Run `norna config:check` after changing the file.
87
-
88
- ## Publishing Discovery
89
-
90
- GitHub repository, default branch, and deploy workflow are not fields in
91
- `config.yaml`.
92
-
93
- `norna deploy` discovers the current GitHub repository and default branch
94
- through the authenticated GitHub CLI. Norna's included workflow file is
95
- `.github/workflows/deploy.yml`. `deploy:watch` accepts command-line overrides
96
- when a one-off run needs different operational values.
97
-
98
- See [Publishing](publishing.md) for the complete workflow.
99
-
100
- ## Site Directory Selection
101
-
102
- The site directory is not configured in `config.yaml`.
103
-
104
- Use one of:
105
-
106
- ```sh
107
- NORNA_SITE_DIR=presentation norna build
108
- norna --site-dir presentation build
109
- ```
110
-
111
- If `NORNA_SITE_DIR` is set to an empty value, commands fail. Relative site
112
- directories are resolved by walking upward from the invocation directory until
113
- the selected directory contains `config.yaml` and `content.md`.
114
-
115
- Without an explicit selection, the current directory itself can be the site
116
- directory when it contains those two files. Otherwise Norna walks upward for a
117
- default `site/` directory containing them.
118
-
119
- See [Site Files](site-files.md) for the complete source and generated layout.