@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
@@ -27,79 +27,148 @@
27
27
  "description": "For short, expressive sites, with larger typography, airy spacing, and stronger section emphasis."
28
28
  }
29
29
  ],
30
- "markdownDescription": "```yaml\npreset: documentation\n```\n\nSelects coordinated navigation, layout, image sizing, typography, palette and section surfaces. This is the normal starting point for a theme.\n\n[Compare theme presets](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#theme-presets)"
30
+ "markdownDescription": "```yaml\npreset: documentation\n```\n\nSelects coordinated corners, layout, image sizing, content-block defaults, typography, palette and section backgrounds. This is the normal starting point for a theme.\n\n[Compare theme presets](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#theme-presets)"
31
31
  },
32
- "navigation": {
32
+ "colorMode": {
33
33
  "type": "object",
34
34
  "properties": {
35
- "mode": {
36
- "description": "Navigation model. Omit this to keep the selected preset.",
35
+ "default": {
36
+ "description": "Initial color mode. System follows the visitor's operating-system preference.",
37
37
  "type": "string",
38
38
  "oneOf": [
39
39
  {
40
- "const": "automatic",
41
- "title": "Automatic",
42
- "description": "Choose sections for one page, top navigation for a shallow multi-page site, and tree navigation for deeper content."
40
+ "const": "system",
41
+ "title": "System",
42
+ "description": "Follow the visitor's operating-system light or dark preference."
43
43
  },
44
44
  {
45
- "const": "sections",
46
- "title": "Sections",
47
- "description": "Navigate the sections of the current page."
45
+ "const": "light",
46
+ "title": "Light",
47
+ "description": "Start with the palette's light appearance."
48
48
  },
49
49
  {
50
- "const": "top",
51
- "title": "Top",
52
- "description": "Use pages in the top navigation and sections below them."
53
- },
54
- {
55
- "const": "tree",
56
- "title": "Tree",
57
- "description": "Use a hierarchical site-wide navigation tree."
50
+ "const": "dark",
51
+ "title": "Dark",
52
+ "description": "Start with the palette's dark appearance."
58
53
  }
59
54
  ],
60
- "markdownDescription": "```yaml\nnavigation:\n mode: automatic\n```\n\nNavigation model. Omit this to keep the selected preset.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md)",
55
+ "markdownDescription": "```yaml\ncolorMode:\n default: system\n```\n\nInitial color mode. System follows the visitor's operating-system preference.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#color-mode)",
61
56
  "examples": [
62
- "automatic",
63
- "sections",
64
- "top",
65
- "tree"
57
+ "system",
58
+ "light",
59
+ "dark"
66
60
  ]
67
61
  }
68
62
  },
69
63
  "additionalProperties": false,
70
- "description": "Site-wide navigation behavior. This may be set only in the root theme.",
71
- "markdownDescription": "```yaml\nnavigation:\n mode: automatic\n```\n\nSets the site-wide navigation model. Only the root theme may override this preset value.\n\n[Theme reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md)"
64
+ "description": "Site-wide light and dark mode behaviour.",
65
+ "markdownDescription": "```yaml\ncolorMode:\n default: system\n```\n\nControls the initial light or dark appearance. Enable the reader-facing choice under readerControls.\n\n[Color mode](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#color-mode)",
66
+ "defaultSnippets": [
67
+ {
68
+ "label": "Set the initial color mode",
69
+ "markdownDescription": "Follow the system color preference or choose a fixed initial appearance.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#color-mode)",
70
+ "body": "colorMode:\n default: ${1:system}"
71
+ }
72
+ ]
73
+ },
74
+ "readerControls": {
75
+ "type": "object",
76
+ "properties": {
77
+ "colorMode": {
78
+ "description": "Let readers choose System, Light, or Dark color mode in the site-wide Display panel.",
79
+ "type": "boolean",
80
+ "markdownDescription": "```yaml\nreaderControls:\n colorMode: true\n```\n\nLet readers choose System, Light, or Dark color mode in the site-wide Display panel.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#reader-display-controls)"
81
+ },
82
+ "focusReading": {
83
+ "description": "Let readers temporarily hide navigation and other secondary page chrome while reading. Tree navigation always provides this control.",
84
+ "type": "boolean",
85
+ "markdownDescription": "```yaml\nreaderControls:\n focusReading: true\n```\n\nLet readers temporarily hide navigation and other secondary page chrome while reading. Tree navigation always provides this control.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#reader-display-controls)"
86
+ }
87
+ },
88
+ "additionalProperties": false,
89
+ "description": "Optional site-wide reader choices grouped with the always-available reading-width choice in the Display panel.",
90
+ "markdownDescription": "```yaml\nreaderControls:\n colorMode: true\n focusReading: true\n```\n\nAdds optional color-mode and focus-reading choices to the site-wide Display panel. Reading width is always available, and tree navigation always provides Focus reading.\n\n[Reader Display controls](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#reader-display-controls)",
91
+ "defaultSnippets": [
92
+ {
93
+ "label": "Configure the Display panel",
94
+ "markdownDescription": "Offer optional color-mode and focus-reading choices alongside the universal reading-width control. Tree navigation always provides Focus reading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#reader-display-controls)",
95
+ "body": "readerControls:\n colorMode: ${1:true}\n focusReading: ${2:true}"
96
+ }
97
+ ]
98
+ },
99
+ "corners": {
100
+ "description": "Site-wide corner treatment. Omit this to use the selected preset.",
101
+ "type": "string",
102
+ "oneOf": [
103
+ {
104
+ "const": "square",
105
+ "title": "Square",
106
+ "description": "Use square corners for navigation, cards and framed content."
107
+ },
108
+ {
109
+ "const": "rounded",
110
+ "title": "Rounded",
111
+ "description": "Use restrained rounded corners consistently across the site."
112
+ }
113
+ ],
114
+ "markdownDescription": "```yaml\ncorners: rounded\n```\n\nChooses one consistent corner treatment for navigation, cards and framed content throughout the site.\n\n[Corner reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#corners)",
115
+ "examples": [
116
+ "square",
117
+ "rounded"
118
+ ]
72
119
  },
73
120
  "layout": {
74
121
  "type": "object",
75
122
  "properties": {
76
- "density": {
77
- "description": "Overall spacing density. Omit this to keep the selected preset.",
123
+ "contentSpacing": {
124
+ "description": "Page content spacing. Omit this to keep the selected preset or inherited page setting.",
78
125
  "type": "string",
79
126
  "oneOf": [
80
127
  {
81
128
  "const": "compact",
82
129
  "title": "Compact",
83
- "description": "Reduce vertical spacing while preserving readable separation."
130
+ "description": "Use restrained spacing between sections and structured blocks."
84
131
  },
85
132
  {
86
133
  "const": "normal",
87
134
  "title": "Normal",
88
- "description": "Use balanced vertical spacing."
135
+ "description": "Use balanced content spacing."
89
136
  },
90
137
  {
91
- "const": "airy",
92
- "title": "Airy",
93
- "description": "Increase vertical spacing for a more expansive presentation."
138
+ "const": "spacious",
139
+ "title": "Spacious",
140
+ "description": "Use more expansive spacing between sections and structured blocks."
141
+ }
142
+ ],
143
+ "markdownDescription": "```yaml\nlayout:\n contentSpacing: compact\n```\n\nPage content spacing. Omit this to keep the selected preset or inherited page setting.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
144
+ },
145
+ "textWidth": {
146
+ "description": "Body-text line length. Omit this to keep the selected preset or inherited page setting.",
147
+ "type": "string",
148
+ "oneOf": [
149
+ {
150
+ "const": "narrow",
151
+ "title": "Narrow",
152
+ "description": "Use a shorter line length suited to reading-focused text."
153
+ },
154
+ {
155
+ "const": "normal",
156
+ "title": "Normal",
157
+ "description": "Use the balanced default line length."
158
+ },
159
+ {
160
+ "const": "wide",
161
+ "title": "Wide",
162
+ "description": "Allow body text to use more horizontal space."
94
163
  }
95
164
  ],
96
- "markdownDescription": "```yaml\nlayout:\n density: compact\n```\n\nOverall spacing density. Omit this to keep the selected preset.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
165
+ "markdownDescription": "```yaml\nlayout:\n textWidth: narrow\n```\n\nBody-text line length. Omit this to keep the selected preset or inherited page setting.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
97
166
  },
98
167
  "pageWidth": {
99
168
  "description": "Maximum width of the site layout. Omit this to keep the selected preset.",
100
169
  "type": "string",
101
170
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
102
- "markdownDescription": "```yaml\nlayout:\n pageWidth: 72rem\n```\n\nMaximum width of the site layout. Omit this to keep the selected preset.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
171
+ "markdownDescription": "```yaml\nlayout:\n pageWidth: 72rem\n```\n\nMaximum width of the site layout. Omit this to keep the selected preset.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
103
172
  },
104
173
  "gutter": {
105
174
  "description": "Horizontal page gutter as one value or separate desktop and mobile values.",
@@ -116,13 +185,13 @@
116
185
  "type": "string",
117
186
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
118
187
  "description": "Responsive CSS length or clamp() expression.",
119
- "markdownDescription": "```yaml\nlayout:\n gutter:\n desktop: clamp(1.25rem, 4vw, 3rem)\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
188
+ "markdownDescription": "```yaml\nlayout:\n gutter:\n desktop: clamp(1.25rem, 4vw, 3rem)\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
120
189
  },
121
190
  "mobile": {
122
191
  "type": "string",
123
192
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
124
193
  "description": "Responsive CSS length or clamp() expression.",
125
- "markdownDescription": "```yaml\nlayout:\n gutter:\n mobile: 1rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
194
+ "markdownDescription": "```yaml\nlayout:\n gutter:\n mobile: 1rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
126
195
  }
127
196
  },
128
197
  "required": [
@@ -132,11 +201,11 @@
132
201
  "additionalProperties": false
133
202
  }
134
203
  ],
135
- "markdownDescription": "```yaml\nlayout:\n gutter:\n desktop: clamp(1.25rem, 4vw, 3rem)\n mobile: 1rem\n```\n\nHorizontal page gutter as one value or separate desktop and mobile values.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
204
+ "markdownDescription": "```yaml\nlayout:\n gutter:\n desktop: clamp(1.25rem, 4vw, 3rem)\n mobile: 1rem\n```\n\nHorizontal page gutter as one value or separate desktop and mobile values.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
136
205
  "defaultSnippets": [
137
206
  {
138
207
  "label": "Responsive page gutter",
139
- "markdownDescription": "Set separate page gutters for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
208
+ "markdownDescription": "Set separate page gutters for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
140
209
  "body": {
141
210
  "desktop": "${1:clamp(1.25rem, 4vw, 3rem)}",
142
211
  "mobile": "${2:1rem}"
@@ -163,13 +232,13 @@
163
232
  "type": "string",
164
233
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
165
234
  "description": "Responsive CSS length or clamp() expression.",
166
- "markdownDescription": "```yaml\nlayout:\n spacing:\n blockGap:\n desktop: 1.5em\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
235
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n blockGap:\n desktop: 1.5em\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
167
236
  },
168
237
  "mobile": {
169
238
  "type": "string",
170
239
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
171
240
  "description": "Responsive CSS length or clamp() expression.",
172
- "markdownDescription": "```yaml\nlayout:\n spacing:\n blockGap:\n mobile: 1.5em\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
241
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n blockGap:\n mobile: 1.5em\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
173
242
  }
174
243
  },
175
244
  "required": [
@@ -179,11 +248,11 @@
179
248
  "additionalProperties": false
180
249
  }
181
250
  ],
182
- "markdownDescription": "```yaml\nlayout:\n spacing:\n blockGap: 1.5em\n```\n\nDefault vertical gap between structured content blocks.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
251
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n blockGap: 1.5em\n```\n\nDefault vertical gap between structured content blocks.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
183
252
  "defaultSnippets": [
184
253
  {
185
254
  "label": "Responsive spacing",
186
- "markdownDescription": "Set separate spacing values for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
255
+ "markdownDescription": "Set separate spacing values for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
187
256
  "body": {
188
257
  "desktop": "${1:1.5em}",
189
258
  "mobile": "${2:1.5em}"
@@ -206,13 +275,13 @@
206
275
  "type": "string",
207
276
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
208
277
  "description": "Responsive CSS length or clamp() expression.",
209
- "markdownDescription": "```yaml\nlayout:\n spacing:\n finalSectionBottom:\n desktop: 2rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
278
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n finalSectionBottom:\n desktop: 2rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
210
279
  },
211
280
  "mobile": {
212
281
  "type": "string",
213
282
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
214
283
  "description": "Responsive CSS length or clamp() expression.",
215
- "markdownDescription": "```yaml\nlayout:\n spacing:\n finalSectionBottom:\n mobile: 2rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
284
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n finalSectionBottom:\n mobile: 2rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
216
285
  }
217
286
  },
218
287
  "required": [
@@ -222,11 +291,11 @@
222
291
  "additionalProperties": false
223
292
  }
224
293
  ],
225
- "markdownDescription": "```yaml\nlayout:\n spacing:\n finalSectionBottom: 2rem\n```\n\nBottom space after the final section.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
294
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n finalSectionBottom: 2rem\n```\n\nBottom space after the final section.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
226
295
  "defaultSnippets": [
227
296
  {
228
297
  "label": "Responsive spacing",
229
- "markdownDescription": "Set separate spacing values for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
298
+ "markdownDescription": "Set separate spacing values for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
230
299
  "body": {
231
300
  "desktop": "${1:2rem}",
232
301
  "mobile": "${2:2rem}"
@@ -249,13 +318,13 @@
249
318
  "type": "string",
250
319
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
251
320
  "description": "Responsive CSS length or clamp() expression.",
252
- "markdownDescription": "```yaml\nlayout:\n spacing:\n firstSectionTop:\n desktop: 1.5rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
321
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n firstSectionTop:\n desktop: 1.5rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
253
322
  },
254
323
  "mobile": {
255
324
  "type": "string",
256
325
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
257
326
  "description": "Responsive CSS length or clamp() expression.",
258
- "markdownDescription": "```yaml\nlayout:\n spacing:\n firstSectionTop:\n mobile: 1.5rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
327
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n firstSectionTop:\n mobile: 1.5rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
259
328
  }
260
329
  },
261
330
  "required": [
@@ -265,11 +334,11 @@
265
334
  "additionalProperties": false
266
335
  }
267
336
  ],
268
- "markdownDescription": "```yaml\nlayout:\n spacing:\n firstSectionTop: 1.5rem\n```\n\nTop space before the first section.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
337
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n firstSectionTop: 1.5rem\n```\n\nTop space before the first section.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
269
338
  "defaultSnippets": [
270
339
  {
271
340
  "label": "Responsive spacing",
272
- "markdownDescription": "Set separate spacing values for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
341
+ "markdownDescription": "Set separate spacing values for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
273
342
  "body": {
274
343
  "desktop": "${1:1.5rem}",
275
344
  "mobile": "${2:1.5rem}"
@@ -292,13 +361,13 @@
292
361
  "type": "string",
293
362
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
294
363
  "description": "Responsive CSS length or clamp() expression.",
295
- "markdownDescription": "```yaml\nlayout:\n spacing:\n headingToBlock:\n desktop: 0.75em\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
364
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n headingToBlock:\n desktop: 0.75em\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
296
365
  },
297
366
  "mobile": {
298
367
  "type": "string",
299
368
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
300
369
  "description": "Responsive CSS length or clamp() expression.",
301
- "markdownDescription": "```yaml\nlayout:\n spacing:\n headingToBlock:\n mobile: 0.75em\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
370
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n headingToBlock:\n mobile: 0.75em\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
302
371
  }
303
372
  },
304
373
  "required": [
@@ -308,11 +377,11 @@
308
377
  "additionalProperties": false
309
378
  }
310
379
  ],
311
- "markdownDescription": "```yaml\nlayout:\n spacing:\n headingToBlock: 0.75em\n```\n\nGap from a section heading to a following structured block.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
380
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n headingToBlock: 0.75em\n```\n\nGap from a section heading to a following structured block.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
312
381
  "defaultSnippets": [
313
382
  {
314
383
  "label": "Responsive spacing",
315
- "markdownDescription": "Set separate spacing values for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
384
+ "markdownDescription": "Set separate spacing values for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
316
385
  "body": {
317
386
  "desktop": "${1:0.75em}",
318
387
  "mobile": "${2:0.75em}"
@@ -335,13 +404,13 @@
335
404
  "type": "string",
336
405
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
337
406
  "description": "Responsive CSS length or clamp() expression.",
338
- "markdownDescription": "```yaml\nlayout:\n spacing:\n imageGap:\n desktop: 1rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
407
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n imageGap:\n desktop: 1rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
339
408
  },
340
409
  "mobile": {
341
410
  "type": "string",
342
411
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
343
412
  "description": "Responsive CSS length or clamp() expression.",
344
- "markdownDescription": "```yaml\nlayout:\n spacing:\n imageGap:\n mobile: 1rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
413
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n imageGap:\n mobile: 1rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
345
414
  }
346
415
  },
347
416
  "required": [
@@ -351,11 +420,11 @@
351
420
  "additionalProperties": false
352
421
  }
353
422
  ],
354
- "markdownDescription": "```yaml\nlayout:\n spacing:\n imageGap: 1rem\n```\n\nGap between images in an image stack.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
423
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n imageGap: 1rem\n```\n\nGap between images in an image stack.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
355
424
  "defaultSnippets": [
356
425
  {
357
426
  "label": "Responsive spacing",
358
- "markdownDescription": "Set separate spacing values for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
427
+ "markdownDescription": "Set separate spacing values for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
359
428
  "body": {
360
429
  "desktop": "${1:1rem}",
361
430
  "mobile": "${2:1rem}"
@@ -378,13 +447,13 @@
378
447
  "type": "string",
379
448
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
380
449
  "description": "Responsive CSS length or clamp() expression.",
381
- "markdownDescription": "```yaml\nlayout:\n spacing:\n sectionGap:\n desktop: 2rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
450
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n sectionGap:\n desktop: 2rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
382
451
  },
383
452
  "mobile": {
384
453
  "type": "string",
385
454
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
386
455
  "description": "Responsive CSS length or clamp() expression.",
387
- "markdownDescription": "```yaml\nlayout:\n spacing:\n sectionGap:\n mobile: 2rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
456
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n sectionGap:\n mobile: 2rem\n```\n\nResponsive CSS length or clamp() expression.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
388
457
  }
389
458
  },
390
459
  "required": [
@@ -394,11 +463,11 @@
394
463
  "additionalProperties": false
395
464
  }
396
465
  ],
397
- "markdownDescription": "```yaml\nlayout:\n spacing:\n sectionGap: 2rem\n```\n\nVertical separation between page sections.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
466
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n sectionGap: 2rem\n```\n\nVertical separation between page sections.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
398
467
  "defaultSnippets": [
399
468
  {
400
469
  "label": "Responsive spacing",
401
- "markdownDescription": "Set separate spacing values for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
470
+ "markdownDescription": "Set separate spacing values for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
402
471
  "body": {
403
472
  "desktop": "${1:2rem}",
404
473
  "mobile": "${2:2rem}"
@@ -408,11 +477,11 @@
408
477
  }
409
478
  },
410
479
  "additionalProperties": false,
411
- "markdownDescription": "```yaml\nlayout:\n spacing:\n sectionGap: 2rem\n```\n\nFine-grained spacing overrides.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
480
+ "markdownDescription": "```yaml\nlayout:\n spacing:\n sectionGap: 2rem\n```\n\nFine-grained spacing overrides.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
412
481
  "defaultSnippets": [
413
482
  {
414
483
  "label": "Layout spacing overrides",
415
- "markdownDescription": "Start with the structural spacing values most commonly adjusted together.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)",
484
+ "markdownDescription": "Start with the structural spacing values most commonly adjusted together.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)",
416
485
  "body": {
417
486
  "sectionGap": {
418
487
  "desktop": "${1:2rem}",
@@ -427,7 +496,7 @@
427
496
  },
428
497
  "additionalProperties": false,
429
498
  "description": "Optional layout overrides applied after the preset.",
430
- "markdownDescription": "```yaml\nlayout:\n density: compact\n pageWidth: 72rem\n```\n\nOverrides page width, gutters and structural spacing after the selected preset.\n\n[Layout reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#layout)"
499
+ "markdownDescription": "```yaml\nlayout:\n contentSpacing: compact\n textWidth: narrow\n```\n\nOverrides text width, content spacing, page width and gutters after the selected preset.\n\n[Layout reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#layout)"
431
500
  },
432
501
  "images": {
433
502
  "type": "object",
@@ -436,7 +505,7 @@
436
505
  "description": "Maximum managed-image width. Omit this to keep the selected preset.",
437
506
  "type": "string",
438
507
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
439
- "markdownDescription": "```yaml\nimages:\n width: 900px\n```\n\nMaximum managed-image width. Omit this to keep the selected preset.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#image-sizing)"
508
+ "markdownDescription": "```yaml\nimages:\n width: 900px\n```\n\nMaximum managed-image width. Omit this to keep the selected preset.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#image-sizing)"
440
509
  },
441
510
  "maxAvailableWidthPercent": {
442
511
  "description": "Maximum percentage of available horizontal space used by managed images.",
@@ -454,14 +523,14 @@
454
523
  "exclusiveMinimum": 0,
455
524
  "maximum": 100,
456
525
  "description": "Percentage used on wider screens.",
457
- "markdownDescription": "```yaml\nimages:\n maxAvailableWidthPercent:\n desktop: 100\n```\n\nPercentage used on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#image-sizing)"
526
+ "markdownDescription": "```yaml\nimages:\n maxAvailableWidthPercent:\n desktop: 100\n```\n\nPercentage used on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#image-sizing)"
458
527
  },
459
528
  "mobile": {
460
529
  "type": "number",
461
530
  "exclusiveMinimum": 0,
462
531
  "maximum": 100,
463
532
  "description": "Percentage used on narrow screens.",
464
- "markdownDescription": "```yaml\nimages:\n maxAvailableWidthPercent:\n mobile: 100\n```\n\nPercentage used on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#image-sizing)"
533
+ "markdownDescription": "```yaml\nimages:\n maxAvailableWidthPercent:\n mobile: 100\n```\n\nPercentage used on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#image-sizing)"
465
534
  }
466
535
  },
467
536
  "required": [
@@ -471,11 +540,11 @@
471
540
  "additionalProperties": false
472
541
  }
473
542
  ],
474
- "markdownDescription": "```yaml\nimages:\n maxAvailableWidthPercent:\n desktop: 100\n mobile: 100\n```\n\nMaximum percentage of available horizontal space used by managed images.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#image-sizing)",
543
+ "markdownDescription": "```yaml\nimages:\n maxAvailableWidthPercent:\n desktop: 100\n mobile: 100\n```\n\nMaximum percentage of available horizontal space used by managed images.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#image-sizing)",
475
544
  "defaultSnippets": [
476
545
  {
477
546
  "label": "Responsive image limit",
478
- "markdownDescription": "Set separate managed-image limits for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#image-sizing)",
547
+ "markdownDescription": "Set separate managed-image limits for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#image-sizing)",
479
548
  "body": {
480
549
  "desktop": "${1:100}",
481
550
  "mobile": "${2:100}"
@@ -499,14 +568,14 @@
499
568
  "exclusiveMinimum": 0,
500
569
  "maximum": 100,
501
570
  "description": "Percentage used on wider screens.",
502
- "markdownDescription": "```yaml\nimages:\n maxAvailableHeightPercent:\n desktop: 74\n```\n\nPercentage used on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#image-sizing)"
571
+ "markdownDescription": "```yaml\nimages:\n maxAvailableHeightPercent:\n desktop: 74\n```\n\nPercentage used on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#image-sizing)"
503
572
  },
504
573
  "mobile": {
505
574
  "type": "number",
506
575
  "exclusiveMinimum": 0,
507
576
  "maximum": 100,
508
577
  "description": "Percentage used on narrow screens.",
509
- "markdownDescription": "```yaml\nimages:\n maxAvailableHeightPercent:\n mobile: 68\n```\n\nPercentage used on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#image-sizing)"
578
+ "markdownDescription": "```yaml\nimages:\n maxAvailableHeightPercent:\n mobile: 68\n```\n\nPercentage used on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#image-sizing)"
510
579
  }
511
580
  },
512
581
  "required": [
@@ -516,11 +585,11 @@
516
585
  "additionalProperties": false
517
586
  }
518
587
  ],
519
- "markdownDescription": "```yaml\nimages:\n maxAvailableHeightPercent:\n desktop: 74\n mobile: 68\n```\n\nMaximum percentage of viewport height used by managed images.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#image-sizing)",
588
+ "markdownDescription": "```yaml\nimages:\n maxAvailableHeightPercent:\n desktop: 74\n mobile: 68\n```\n\nMaximum percentage of viewport height used by managed images.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#image-sizing)",
520
589
  "defaultSnippets": [
521
590
  {
522
591
  "label": "Responsive image limit",
523
- "markdownDescription": "Set separate managed-image limits for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#image-sizing)",
592
+ "markdownDescription": "Set separate managed-image limits for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#image-sizing)",
524
593
  "body": {
525
594
  "desktop": "${1:74}",
526
595
  "mobile": "${2:68}"
@@ -531,7 +600,70 @@
531
600
  },
532
601
  "additionalProperties": false,
533
602
  "description": "Optional defaults for managed image presentation.",
534
- "markdownDescription": "```yaml\nimages:\n width: 900px\n maxAvailableHeightPercent: 74\n```\n\nOverrides the available width and height used by Norna-managed images.\n\n[Image sizing reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#image-sizing)"
603
+ "markdownDescription": "```yaml\nimages:\n width: 900px\n maxAvailableHeightPercent: 74\n```\n\nOverrides the available width and height used by Norna-managed images.\n\n[Image sizing reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#image-sizing)"
604
+ },
605
+ "blocks": {
606
+ "type": "object",
607
+ "properties": {
608
+ "cardList": {
609
+ "type": "object",
610
+ "properties": {
611
+ "width": {
612
+ "type": "string",
613
+ "description": "Default maximum width for card lists. A width written in a norna-card-list block overrides this value.",
614
+ "oneOf": [
615
+ {
616
+ "const": "text",
617
+ "title": "Text width",
618
+ "description": "Match the active body-text width, including a reader-selected reading width."
619
+ },
620
+ {
621
+ "const": "narrow",
622
+ "title": "Narrow",
623
+ "description": "Limit the complete card list to at most 48rem."
624
+ },
625
+ {
626
+ "const": "normal",
627
+ "title": "Normal",
628
+ "description": "Limit the complete card list to at most 56rem."
629
+ },
630
+ {
631
+ "const": "wide",
632
+ "title": "Wide",
633
+ "description": "Allow the complete card list to use the available page-layout width."
634
+ }
635
+ ],
636
+ "markdownDescription": "```yaml\nblocks:\n cardList:\n width: text\n```\n\nDefault maximum width for card lists. A width written in a norna-card-list block overrides this value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#content-block-defaults)",
637
+ "examples": [
638
+ "text",
639
+ "narrow",
640
+ "normal",
641
+ "wide"
642
+ ]
643
+ }
644
+ },
645
+ "required": [
646
+ "width"
647
+ ],
648
+ "additionalProperties": false,
649
+ "description": "Site-wide card-list defaults.",
650
+ "markdownDescription": "```yaml\nblocks:\n cardList:\n width: text\n```\n\nSets site-wide defaults for card lists. A `width` option in an individual `norna-card-list` block overrides this setting.\n\n[Content block defaults](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#content-block-defaults)"
651
+ }
652
+ },
653
+ "additionalProperties": false,
654
+ "description": "Optional site-wide defaults for structured Norna content blocks.",
655
+ "markdownDescription": "```yaml\nblocks:\n cardList:\n width: text\n```\n\nOverrides preset defaults for structured Norna content blocks throughout the site. Options written directly in a Markdown block take priority.\n\n[Content block defaults](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#content-block-defaults)",
656
+ "defaultSnippets": [
657
+ {
658
+ "label": "Override content-block defaults",
659
+ "markdownDescription": "Override a preset default for structured content blocks across the site.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#content-block-defaults)",
660
+ "body": {
661
+ "cardList": {
662
+ "width": "${1:text}"
663
+ }
664
+ }
665
+ }
666
+ ]
535
667
  },
536
668
  "typography": {
537
669
  "type": "object",
@@ -540,7 +672,7 @@
540
672
  "description": "CSS font-family stack.",
541
673
  "type": "string",
542
674
  "minLength": 1,
543
- "markdownDescription": "```yaml\ntypography:\n fontFamily: \"Arial, sans-serif\"\n```\n\nCSS font-family stack.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
675
+ "markdownDescription": "```yaml\ntypography:\n fontFamily: \"Arial, sans-serif\"\n```\n\nCSS font-family stack.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
544
676
  },
545
677
  "profile": {
546
678
  "description": "Typography profile. Omit this to keep the selected preset.",
@@ -567,7 +699,7 @@
567
699
  "description": "Stronger headings and tighter body rhythm for short, expressive pages."
568
700
  }
569
701
  ],
570
- "markdownDescription": "```yaml\ntypography:\n profile: reading\n```\n\nTypography profile. Omit this to keep the selected preset.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
702
+ "markdownDescription": "```yaml\ntypography:\n profile: reading\n```\n\nTypography profile. Omit this to keep the selected preset.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
571
703
  },
572
704
  "rhythm": {
573
705
  "description": "Typography spacing rhythm. Omit this to keep the selected preset.",
@@ -589,7 +721,7 @@
589
721
  "description": "Increase vertical spacing for a more expansive presentation."
590
722
  }
591
723
  ],
592
- "markdownDescription": "```yaml\ntypography:\n rhythm: normal\n```\n\nTypography spacing rhythm. Omit this to keep the selected preset.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
724
+ "markdownDescription": "```yaml\ntypography:\n rhythm: normal\n```\n\nTypography spacing rhythm. Omit this to keep the selected preset.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
593
725
  },
594
726
  "overrides": {
595
727
  "description": "Focused typography overrides applied after the profile.",
@@ -627,7 +759,7 @@
627
759
  "description": "Align text with the right edge of its text area."
628
760
  }
629
761
  ],
630
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n align:\n desktop: left\n```\n\nText alignment on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
762
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n align:\n desktop: left\n```\n\nText alignment on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
631
763
  },
632
764
  "mobile": {
633
765
  "description": "Text alignment on narrow screens.",
@@ -649,15 +781,15 @@
649
781
  "description": "Align text with the right edge of its text area."
650
782
  }
651
783
  ],
652
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n align:\n mobile: left\n```\n\nText alignment on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
784
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n align:\n mobile: left\n```\n\nText alignment on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
653
785
  }
654
786
  },
655
787
  "additionalProperties": false,
656
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n align:\n desktop: left\n mobile: left\n```\n\nResponsive text alignment override.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)",
788
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n align:\n desktop: left\n mobile: left\n```\n\nResponsive text alignment override.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)",
657
789
  "defaultSnippets": [
658
790
  {
659
791
  "label": "Responsive text alignment",
660
- "markdownDescription": "Set separate text alignment for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)",
792
+ "markdownDescription": "Set separate text alignment for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)",
661
793
  "body": {
662
794
  "desktop": "${1:left}",
663
795
  "mobile": "${2:left}"
@@ -690,14 +822,14 @@
690
822
  "description": "Use the largest available type size for exceptional emphasis."
691
823
  }
692
824
  ],
693
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n size: medium\n```\n\nText size from the active typography system. Omit an override to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
825
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n size: medium\n```\n\nText size from the active typography system. Omit an override to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
694
826
  },
695
827
  "lineHeight": {
696
828
  "type": "number",
697
829
  "minimum": 1,
698
830
  "maximum": 3,
699
- "description": "Unitless line height between 1 and 3.",
700
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n lineHeight: 1.5\n```\n\nUnitless line height between 1 and 3.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
831
+ "description": "Unitless heading line height between 1 and 3.",
832
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n lineHeight: 1.5\n```\n\nUnitless heading line height between 1 and 3.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
701
833
  },
702
834
  "weight": {
703
835
  "description": "Heading font weight. Omit this to keep the profile value.",
@@ -723,23 +855,23 @@
723
855
  "description": "Use bold font weight."
724
856
  }
725
857
  ],
726
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n weight: 600\n```\n\nHeading font weight. Omit this to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
858
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n weight: 600\n```\n\nHeading font weight. Omit this to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
727
859
  },
728
860
  "spacingBefore": {
729
861
  "description": "Vertical space before the heading.",
730
862
  "type": "string",
731
863
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$",
732
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n spacingBefore: 1.5em\n```\n\nVertical space before the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
864
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n spacingBefore: 1.5em\n```\n\nVertical space before the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
733
865
  },
734
866
  "spacingAfter": {
735
867
  "description": "Vertical space after the heading.",
736
868
  "type": "string",
737
869
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$",
738
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n spacingAfter: 0.5em\n```\n\nVertical space after the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
870
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n \n spacingAfter: 0.5em\n```\n\nVertical space after the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
739
871
  }
740
872
  },
741
873
  "additionalProperties": false,
742
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n size: medium\n```\n\nOverrides for Markdown level 1 headings.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
874
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h1:\n size: medium\n```\n\nOverrides for Markdown level 1 headings.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
743
875
  },
744
876
  "h2": {
745
877
  "description": "Overrides for Markdown level 2 section headings.",
@@ -769,7 +901,7 @@
769
901
  "description": "Align text with the right edge of its text area."
770
902
  }
771
903
  ],
772
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n align:\n desktop: left\n```\n\nText alignment on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
904
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n align:\n desktop: left\n```\n\nText alignment on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
773
905
  },
774
906
  "mobile": {
775
907
  "description": "Text alignment on narrow screens.",
@@ -791,15 +923,15 @@
791
923
  "description": "Align text with the right edge of its text area."
792
924
  }
793
925
  ],
794
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n align:\n mobile: left\n```\n\nText alignment on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
926
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n align:\n mobile: left\n```\n\nText alignment on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
795
927
  }
796
928
  },
797
929
  "additionalProperties": false,
798
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n align:\n desktop: left\n mobile: left\n```\n\nResponsive text alignment override.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)",
930
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n align:\n desktop: left\n mobile: left\n```\n\nResponsive text alignment override.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)",
799
931
  "defaultSnippets": [
800
932
  {
801
933
  "label": "Responsive text alignment",
802
- "markdownDescription": "Set separate text alignment for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)",
934
+ "markdownDescription": "Set separate text alignment for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)",
803
935
  "body": {
804
936
  "desktop": "${1:left}",
805
937
  "mobile": "${2:left}"
@@ -832,14 +964,14 @@
832
964
  "description": "Use the largest available type size for exceptional emphasis."
833
965
  }
834
966
  ],
835
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n size: medium\n```\n\nText size from the active typography system. Omit an override to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
967
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n size: medium\n```\n\nText size from the active typography system. Omit an override to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
836
968
  },
837
969
  "lineHeight": {
838
970
  "type": "number",
839
971
  "minimum": 1,
840
972
  "maximum": 3,
841
- "description": "Unitless line height between 1 and 3.",
842
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n lineHeight: 1.5\n```\n\nUnitless line height between 1 and 3.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
973
+ "description": "Unitless heading line height between 1 and 3.",
974
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n lineHeight: 1.5\n```\n\nUnitless heading line height between 1 and 3.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
843
975
  },
844
976
  "weight": {
845
977
  "description": "Heading font weight. Omit this to keep the profile value.",
@@ -865,23 +997,23 @@
865
997
  "description": "Use bold font weight."
866
998
  }
867
999
  ],
868
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n weight: 600\n```\n\nHeading font weight. Omit this to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1000
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n weight: 600\n```\n\nHeading font weight. Omit this to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
869
1001
  },
870
1002
  "spacingBefore": {
871
1003
  "description": "Vertical space before the heading.",
872
1004
  "type": "string",
873
1005
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$",
874
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n spacingBefore: 1.5em\n```\n\nVertical space before the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1006
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n spacingBefore: 1.5em\n```\n\nVertical space before the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
875
1007
  },
876
1008
  "spacingAfter": {
877
1009
  "description": "Vertical space after the heading.",
878
1010
  "type": "string",
879
1011
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$",
880
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n spacingAfter: 0.5em\n```\n\nVertical space after the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1012
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n \n spacingAfter: 0.5em\n```\n\nVertical space after the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
881
1013
  }
882
1014
  },
883
1015
  "additionalProperties": false,
884
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n size: medium\n```\n\nOverrides for Markdown level 2 section headings.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1016
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n size: medium\n```\n\nOverrides for Markdown level 2 section headings.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
885
1017
  },
886
1018
  "h3": {
887
1019
  "description": "Overrides for Markdown level 3 headings.",
@@ -911,7 +1043,7 @@
911
1043
  "description": "Align text with the right edge of its text area."
912
1044
  }
913
1045
  ],
914
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n align:\n desktop: left\n```\n\nText alignment on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1046
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n align:\n desktop: left\n```\n\nText alignment on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
915
1047
  },
916
1048
  "mobile": {
917
1049
  "description": "Text alignment on narrow screens.",
@@ -933,15 +1065,15 @@
933
1065
  "description": "Align text with the right edge of its text area."
934
1066
  }
935
1067
  ],
936
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n align:\n mobile: left\n```\n\nText alignment on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1068
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n align:\n mobile: left\n```\n\nText alignment on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
937
1069
  }
938
1070
  },
939
1071
  "additionalProperties": false,
940
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n align:\n desktop: left\n mobile: left\n```\n\nResponsive text alignment override.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)",
1072
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n align:\n desktop: left\n mobile: left\n```\n\nResponsive text alignment override.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)",
941
1073
  "defaultSnippets": [
942
1074
  {
943
1075
  "label": "Responsive text alignment",
944
- "markdownDescription": "Set separate text alignment for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)",
1076
+ "markdownDescription": "Set separate text alignment for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)",
945
1077
  "body": {
946
1078
  "desktop": "${1:left}",
947
1079
  "mobile": "${2:left}"
@@ -974,14 +1106,14 @@
974
1106
  "description": "Use the largest available type size for exceptional emphasis."
975
1107
  }
976
1108
  ],
977
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n size: medium\n```\n\nText size from the active typography system. Omit an override to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1109
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n size: medium\n```\n\nText size from the active typography system. Omit an override to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
978
1110
  },
979
1111
  "lineHeight": {
980
1112
  "type": "number",
981
1113
  "minimum": 1,
982
1114
  "maximum": 3,
983
- "description": "Unitless line height between 1 and 3.",
984
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n lineHeight: 1.5\n```\n\nUnitless line height between 1 and 3.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1115
+ "description": "Unitless heading line height between 1 and 3.",
1116
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n lineHeight: 1.5\n```\n\nUnitless heading line height between 1 and 3.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
985
1117
  },
986
1118
  "weight": {
987
1119
  "description": "Heading font weight. Omit this to keep the profile value.",
@@ -1007,23 +1139,23 @@
1007
1139
  "description": "Use bold font weight."
1008
1140
  }
1009
1141
  ],
1010
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n weight: 600\n```\n\nHeading font weight. Omit this to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1142
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n weight: 600\n```\n\nHeading font weight. Omit this to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1011
1143
  },
1012
1144
  "spacingBefore": {
1013
1145
  "description": "Vertical space before the heading.",
1014
1146
  "type": "string",
1015
1147
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$",
1016
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n spacingBefore: 1.5em\n```\n\nVertical space before the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1148
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n spacingBefore: 1.5em\n```\n\nVertical space before the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1017
1149
  },
1018
1150
  "spacingAfter": {
1019
1151
  "description": "Vertical space after the heading.",
1020
1152
  "type": "string",
1021
1153
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$",
1022
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n spacingAfter: 0.5em\n```\n\nVertical space after the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1154
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n \n spacingAfter: 0.5em\n```\n\nVertical space after the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1023
1155
  }
1024
1156
  },
1025
1157
  "additionalProperties": false,
1026
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n size: medium\n```\n\nOverrides for Markdown level 3 headings.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1158
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h3:\n size: medium\n```\n\nOverrides for Markdown level 3 headings.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1027
1159
  },
1028
1160
  "h4": {
1029
1161
  "description": "Overrides for Markdown level 4 headings.",
@@ -1053,7 +1185,7 @@
1053
1185
  "description": "Align text with the right edge of its text area."
1054
1186
  }
1055
1187
  ],
1056
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n align:\n desktop: left\n```\n\nText alignment on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1188
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n align:\n desktop: left\n```\n\nText alignment on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1057
1189
  },
1058
1190
  "mobile": {
1059
1191
  "description": "Text alignment on narrow screens.",
@@ -1075,15 +1207,15 @@
1075
1207
  "description": "Align text with the right edge of its text area."
1076
1208
  }
1077
1209
  ],
1078
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n align:\n mobile: left\n```\n\nText alignment on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1210
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n align:\n mobile: left\n```\n\nText alignment on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1079
1211
  }
1080
1212
  },
1081
1213
  "additionalProperties": false,
1082
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n align:\n desktop: left\n mobile: left\n```\n\nResponsive text alignment override.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)",
1214
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n align:\n desktop: left\n mobile: left\n```\n\nResponsive text alignment override.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)",
1083
1215
  "defaultSnippets": [
1084
1216
  {
1085
1217
  "label": "Responsive text alignment",
1086
- "markdownDescription": "Set separate text alignment for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)",
1218
+ "markdownDescription": "Set separate text alignment for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)",
1087
1219
  "body": {
1088
1220
  "desktop": "${1:left}",
1089
1221
  "mobile": "${2:left}"
@@ -1116,14 +1248,14 @@
1116
1248
  "description": "Use the largest available type size for exceptional emphasis."
1117
1249
  }
1118
1250
  ],
1119
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n size: medium\n```\n\nText size from the active typography system. Omit an override to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1251
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n size: medium\n```\n\nText size from the active typography system. Omit an override to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1120
1252
  },
1121
1253
  "lineHeight": {
1122
1254
  "type": "number",
1123
1255
  "minimum": 1,
1124
1256
  "maximum": 3,
1125
- "description": "Unitless line height between 1 and 3.",
1126
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n lineHeight: 1.5\n```\n\nUnitless line height between 1 and 3.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1257
+ "description": "Unitless heading line height between 1 and 3.",
1258
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n lineHeight: 1.5\n```\n\nUnitless heading line height between 1 and 3.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1127
1259
  },
1128
1260
  "weight": {
1129
1261
  "description": "Heading font weight. Omit this to keep the profile value.",
@@ -1149,27 +1281,27 @@
1149
1281
  "description": "Use bold font weight."
1150
1282
  }
1151
1283
  ],
1152
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n weight: 600\n```\n\nHeading font weight. Omit this to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1284
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n weight: 600\n```\n\nHeading font weight. Omit this to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1153
1285
  },
1154
1286
  "spacingBefore": {
1155
1287
  "description": "Vertical space before the heading.",
1156
1288
  "type": "string",
1157
1289
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$",
1158
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n spacingBefore: 1.5em\n```\n\nVertical space before the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1290
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n spacingBefore: 1.5em\n```\n\nVertical space before the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1159
1291
  },
1160
1292
  "spacingAfter": {
1161
1293
  "description": "Vertical space after the heading.",
1162
1294
  "type": "string",
1163
1295
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$",
1164
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n spacingAfter: 0.5em\n```\n\nVertical space after the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1296
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n \n spacingAfter: 0.5em\n```\n\nVertical space after the heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1165
1297
  }
1166
1298
  },
1167
1299
  "additionalProperties": false,
1168
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n size: medium\n```\n\nOverrides for Markdown level 4 headings.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1300
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h4:\n size: medium\n```\n\nOverrides for Markdown level 4 headings.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1169
1301
  }
1170
1302
  },
1171
1303
  "additionalProperties": false,
1172
- "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n size: medium\n```\n\nOverrides for heading levels.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1304
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n headings:\n h2:\n size: medium\n```\n\nOverrides for heading levels.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1173
1305
  },
1174
1306
  "body": {
1175
1307
  "description": "Overrides for body text.",
@@ -1199,7 +1331,7 @@
1199
1331
  "description": "Align text with the right edge of its text area."
1200
1332
  }
1201
1333
  ],
1202
- "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n align:\n desktop: left\n```\n\nText alignment on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1334
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n align:\n desktop: left\n```\n\nText alignment on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1203
1335
  },
1204
1336
  "mobile": {
1205
1337
  "description": "Text alignment on narrow screens.",
@@ -1221,15 +1353,15 @@
1221
1353
  "description": "Align text with the right edge of its text area."
1222
1354
  }
1223
1355
  ],
1224
- "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n align:\n mobile: left\n```\n\nText alignment on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1356
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n align:\n mobile: left\n```\n\nText alignment on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1225
1357
  }
1226
1358
  },
1227
1359
  "additionalProperties": false,
1228
- "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n align:\n desktop: left\n mobile: left\n```\n\nResponsive text alignment override.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)",
1360
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n align:\n desktop: left\n mobile: left\n```\n\nResponsive text alignment override.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)",
1229
1361
  "defaultSnippets": [
1230
1362
  {
1231
1363
  "label": "Responsive text alignment",
1232
- "markdownDescription": "Set separate text alignment for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)",
1364
+ "markdownDescription": "Set separate text alignment for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)",
1233
1365
  "body": {
1234
1366
  "desktop": "${1:left}",
1235
1367
  "mobile": "${2:left}"
@@ -1262,46 +1394,24 @@
1262
1394
  "description": "Use the largest available type size for exceptional emphasis."
1263
1395
  }
1264
1396
  ],
1265
- "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n size: medium\n```\n\nText size from the active typography system. Omit an override to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1397
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n size: medium\n```\n\nText size from the active typography system. Omit an override to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1266
1398
  },
1267
1399
  "lineHeight": {
1268
1400
  "type": "number",
1269
- "minimum": 1,
1401
+ "minimum": 1.4,
1270
1402
  "maximum": 3,
1271
- "description": "Unitless line height between 1 and 3.",
1272
- "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n lineHeight: 1.5\n```\n\nUnitless line height between 1 and 3.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1273
- },
1274
- "width": {
1275
- "description": "Maximum body-text line length.",
1276
- "type": "string",
1277
- "oneOf": [
1278
- {
1279
- "const": "narrow",
1280
- "title": "Narrow",
1281
- "description": "Use a shorter line length suited to reading-focused text."
1282
- },
1283
- {
1284
- "const": "normal",
1285
- "title": "Normal",
1286
- "description": "Use the balanced default line length."
1287
- },
1288
- {
1289
- "const": "wide",
1290
- "title": "Wide",
1291
- "description": "Allow body text to use more horizontal space."
1292
- }
1293
- ],
1294
- "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n width: narrow\n```\n\nMaximum body-text line length.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1403
+ "description": "Unitless body-text line height between 1.4 and 3.",
1404
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n lineHeight: 1.5\n```\n\nUnitless body-text line height between 1.4 and 3.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1295
1405
  },
1296
1406
  "paragraphSpacing": {
1297
1407
  "description": "Vertical space between body paragraphs.",
1298
1408
  "type": "string",
1299
1409
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$",
1300
- "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n paragraphSpacing: 1em\n```\n\nVertical space between body paragraphs.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1410
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n paragraphSpacing: 1em\n```\n\nVertical space between body paragraphs.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1301
1411
  }
1302
1412
  },
1303
1413
  "additionalProperties": false,
1304
- "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n width: narrow\n```\n\nOverrides for body text.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1414
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n lineHeight: 1.55\n```\n\nOverrides for body text.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1305
1415
  },
1306
1416
  "caption": {
1307
1417
  "description": "Overrides for image captions.",
@@ -1331,7 +1441,7 @@
1331
1441
  "description": "Align text with the right edge of its text area."
1332
1442
  }
1333
1443
  ],
1334
- "markdownDescription": "```yaml\ntypography:\n overrides:\n caption:\n align:\n desktop: left\n```\n\nText alignment on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1444
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n caption:\n align:\n desktop: left\n```\n\nText alignment on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1335
1445
  },
1336
1446
  "mobile": {
1337
1447
  "description": "Text alignment on narrow screens.",
@@ -1353,15 +1463,15 @@
1353
1463
  "description": "Align text with the right edge of its text area."
1354
1464
  }
1355
1465
  ],
1356
- "markdownDescription": "```yaml\ntypography:\n overrides:\n caption:\n align:\n mobile: left\n```\n\nText alignment on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1466
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n caption:\n align:\n mobile: left\n```\n\nText alignment on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1357
1467
  }
1358
1468
  },
1359
1469
  "additionalProperties": false,
1360
- "markdownDescription": "```yaml\ntypography:\n overrides:\n caption:\n align:\n desktop: left\n mobile: left\n```\n\nResponsive text alignment override.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)",
1470
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n caption:\n align:\n desktop: left\n mobile: left\n```\n\nResponsive text alignment override.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)",
1361
1471
  "defaultSnippets": [
1362
1472
  {
1363
1473
  "label": "Responsive text alignment",
1364
- "markdownDescription": "Set separate text alignment for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)",
1474
+ "markdownDescription": "Set separate text alignment for wider and narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)",
1365
1475
  "body": {
1366
1476
  "desktop": "${1:left}",
1367
1477
  "mobile": "${2:left}"
@@ -1394,32 +1504,32 @@
1394
1504
  "description": "Use the largest available type size for exceptional emphasis."
1395
1505
  }
1396
1506
  ],
1397
- "markdownDescription": "```yaml\ntypography:\n overrides:\n caption:\n size: medium\n```\n\nText size from the active typography system. Omit an override to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1507
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n caption:\n size: medium\n```\n\nText size from the active typography system. Omit an override to keep the profile value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1398
1508
  },
1399
1509
  "lineHeight": {
1400
1510
  "type": "number",
1401
- "minimum": 1,
1511
+ "minimum": 1.25,
1402
1512
  "maximum": 3,
1403
- "description": "Unitless line height between 1 and 3.",
1404
- "markdownDescription": "```yaml\ntypography:\n overrides:\n caption:\n lineHeight: 1.5\n```\n\nUnitless line height between 1 and 3.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1513
+ "description": "Unitless caption line height between 1.25 and 3.",
1514
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n caption:\n lineHeight: 1.5\n```\n\nUnitless caption line height between 1.25 and 3.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1405
1515
  },
1406
1516
  "spacingBefore": {
1407
1517
  "description": "Vertical space between an image and its caption.",
1408
1518
  "type": "string",
1409
1519
  "pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|ch|lh))$",
1410
- "markdownDescription": "```yaml\ntypography:\n overrides:\n caption:\n spacingBefore: 0.5em\n```\n\nVertical space between an image and its caption.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1520
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n caption:\n spacingBefore: 0.5em\n```\n\nVertical space between an image and its caption.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1411
1521
  }
1412
1522
  },
1413
1523
  "additionalProperties": false,
1414
- "markdownDescription": "```yaml\ntypography:\n overrides:\n caption:\n size: small\n```\n\nOverrides for image captions.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1524
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n caption:\n size: small\n```\n\nOverrides for image captions.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1415
1525
  }
1416
1526
  },
1417
1527
  "additionalProperties": false,
1418
- "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n width: narrow\n```\n\nFocused typography overrides applied after the profile.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)",
1528
+ "markdownDescription": "```yaml\ntypography:\n overrides:\n body:\n lineHeight: 1.55\n```\n\nFocused typography overrides applied after the profile.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)",
1419
1529
  "defaultSnippets": [
1420
1530
  {
1421
1531
  "label": "Typography overrides",
1422
- "markdownDescription": "Start a focused set of heading and body-text overrides.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)",
1532
+ "markdownDescription": "Start a focused set of heading and body-text overrides.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)",
1423
1533
  "body": {
1424
1534
  "headings": {
1425
1535
  "h2": {
@@ -1428,8 +1538,7 @@
1428
1538
  }
1429
1539
  },
1430
1540
  "body": {
1431
- "width": "${3:narrow}",
1432
- "lineHeight": "${4:1.55}"
1541
+ "lineHeight": "${3:1.55}"
1433
1542
  }
1434
1543
  }
1435
1544
  }
@@ -1438,81 +1547,110 @@
1438
1547
  },
1439
1548
  "additionalProperties": false,
1440
1549
  "description": "Typography profile, rhythm, font family, and focused overrides.",
1441
- "markdownDescription": "```yaml\ntypography:\n profile: reading\n rhythm: normal\n```\n\nOverrides the preset's font stack, typography profile, rhythm or individual text settings.\n\n[Typography configuration reference](https://github.com/janga/norna/blob/v0.7.17/docs/typography.md#configuration-shape)"
1550
+ "markdownDescription": "```yaml\ntypography:\n profile: reading\n rhythm: normal\n```\n\nOverrides the preset's font stack, typography profile, rhythm or individual text settings.\n\n[Typography configuration reference](https://github.com/janga/norna/blob/v0.7.22/docs/typography.md#configuration-shape)"
1442
1551
  },
1443
1552
  "palette": {
1444
1553
  "type": "string",
1445
- "description": "Coordinated site color palette. Omit this to use the selected preset.",
1554
+ "description": "Coordinated site color palette. Every palette provides light and dark variants. Omit this to use the selected preset.",
1446
1555
  "oneOf": [
1447
1556
  {
1448
- "const": "dark",
1449
- "title": "Dark",
1450
- "description": "Black page and section surfaces with light text."
1557
+ "const": "near-monochrome",
1558
+ "title": "Near monochrome",
1559
+ "description": "Neutral grays and off-whites with almost no visible hue. Includes coordinated light and dark variants."
1560
+ },
1561
+ {
1562
+ "const": "warm-paper",
1563
+ "title": "Warm paper",
1564
+ "description": "Warm off-whites and browns resembling paper and ink. Includes coordinated light and dark variants."
1565
+ },
1566
+ {
1567
+ "const": "retro-earth",
1568
+ "title": "Retro earth",
1569
+ "description": "Earthy ochres, olives and warm neutrals with a subdued retro character. Includes coordinated light and dark variants."
1451
1570
  },
1452
1571
  {
1453
- "const": "light",
1454
- "title": "Light",
1455
- "description": "White and cool light surfaces with dark text."
1572
+ "const": "clay-rose",
1573
+ "title": "Clay rose",
1574
+ "description": "Muted clay, rose and wine tones with a warm editorial character. Includes coordinated light and dark variants."
1456
1575
  },
1457
1576
  {
1458
- "const": "paper",
1459
- "title": "Paper",
1460
- "description": "Warm off-white surfaces with dark text."
1577
+ "const": "forest-moss",
1578
+ "title": "Forest moss",
1579
+ "description": "Botanical greens, mossy surfaces and warm lichen neutrals. Includes coordinated light and dark variants."
1580
+ },
1581
+ {
1582
+ "const": "mineral-teal",
1583
+ "title": "Mineral teal",
1584
+ "description": "Cool mineral greens with muted teal accents and pale aqua-gray surfaces. Includes coordinated light and dark variants."
1585
+ },
1586
+ {
1587
+ "const": "arctic-blue",
1588
+ "title": "Arctic blue",
1589
+ "description": "Cool blue-gray surfaces with clear, restrained blue accents. Includes coordinated light and dark variants."
1590
+ },
1591
+ {
1592
+ "const": "soft-lavender",
1593
+ "title": "Soft lavender",
1594
+ "description": "Quiet lavender surfaces with low-key mauve accents. Includes coordinated light and dark variants."
1595
+ },
1596
+ {
1597
+ "const": "vivid-night",
1598
+ "title": "Vivid night",
1599
+ "description": "Indigo surfaces with a brighter cyan accent and a dark-first character. Includes coordinated light and dark variants."
1461
1600
  }
1462
1601
  ],
1463
- "markdownDescription": "```yaml\npalette: paper\n```\n\nChooses a coordinated color system for the page frame, navigation, footer and section surfaces.\n\n[Palette and section surfaces](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#palette-and-section-surfaces)",
1602
+ "markdownDescription": "```yaml\npalette: warm-paper\n```\n\nChooses the site color character. Every palette provides coordinated light and dark variants.\n\n[Palette and color mode](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#palette-and-color-mode)",
1464
1603
  "examples": [
1465
- "dark",
1466
- "light",
1467
- "paper"
1604
+ "near-monochrome",
1605
+ "warm-paper",
1606
+ "retro-earth",
1607
+ "clay-rose",
1608
+ "forest-moss",
1609
+ "mineral-teal",
1610
+ "arctic-blue",
1611
+ "soft-lavender",
1612
+ "vivid-night"
1468
1613
  ]
1469
1614
  },
1470
- "sectionSurfaces": {
1471
- "description": "Surface sequence cycled through page sections. Omit this to keep the selected preset.",
1472
- "minItems": 1,
1473
- "maxItems": 3,
1474
- "type": "array",
1475
- "items": {
1476
- "type": "string",
1477
- "description": "Semantic section surface from the active palette.",
1478
- "oneOf": [
1479
- {
1480
- "const": "base",
1481
- "title": "Base",
1482
- "description": "Use the palette's normal page surface."
1483
- },
1484
- {
1485
- "const": "soft",
1486
- "title": "Soft",
1487
- "description": "Use the palette's subtle contrasting surface."
1488
- },
1489
- {
1490
- "const": "emphasis",
1491
- "title": "Emphasis",
1492
- "description": "Use the palette's strongest section surface."
1493
- }
1494
- ]
1615
+ "sections": {
1616
+ "type": "object",
1617
+ "properties": {
1618
+ "backgroundPattern": {
1619
+ "description": "Section background pattern. Alternating and accented create full-width bands with sections or top navigation; tree navigation requires uniform.",
1620
+ "type": "string",
1621
+ "oneOf": [
1622
+ {
1623
+ "const": "uniform",
1624
+ "title": "Uniform",
1625
+ "description": "Use the normal page background for every H2 section. Tree navigation requires this pattern."
1626
+ },
1627
+ {
1628
+ "const": "alternating",
1629
+ "title": "Alternating",
1630
+ "description": "Alternate normal and subtly contrasting full-width section backgrounds. Available with sections and top navigation."
1631
+ },
1632
+ {
1633
+ "const": "accented",
1634
+ "title": "Accented",
1635
+ "description": "Move through base, soft, emphasis and soft full-width section backgrounds before repeating. Available with sections and top navigation."
1636
+ }
1637
+ ],
1638
+ "markdownDescription": "```yaml\nsections:\n backgroundPattern: alternating\n```\n\nSection background pattern. Alternating and accented create full-width bands with sections or top navigation; tree navigation requires uniform.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#section-backgrounds)",
1639
+ "examples": [
1640
+ "uniform",
1641
+ "alternating",
1642
+ "accented"
1643
+ ]
1644
+ }
1495
1645
  },
1496
- "markdownDescription": "```yaml\nsectionSurfaces: [base, soft, emphasis]\n```\n\nLists one to three semantic surfaces. Norna cycles through them in section order; omit this field to keep the preset sequence.\n\n[Palette and section surfaces](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md#palette-and-section-surfaces)",
1497
- "examples": [
1498
- [
1499
- "base"
1500
- ],
1501
- [
1502
- "base",
1503
- "soft"
1504
- ],
1505
- [
1506
- "base",
1507
- "soft",
1508
- "emphasis"
1509
- ]
1510
- ]
1646
+ "additionalProperties": false,
1647
+ "description": "Defaults for page section presentation.",
1648
+ "markdownDescription": "```yaml\nsections:\n backgroundPattern: alternating\n```\n\nChooses whether H2 section backgrounds stay uniform, alternate between two backgrounds or move from base to soft to emphasis and back through soft. Non-uniform patterns are available with sections and top navigation; tree navigation requires uniform.\n\n[Section backgrounds](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md#section-backgrounds)"
1511
1649
  }
1512
1650
  },
1513
1651
  "additionalProperties": false,
1514
- "description": "Visual settings for a site or page. A page theme replaces the inherited visual theme; navigation logo settings remain site-wide.",
1652
+ "description": "Site-wide visual identity and default page presentation. Presets may be selected only in the root theme.",
1515
1653
  "$id": "https://janga.github.io/norna/schemas/theme.schema.json",
1516
1654
  "title": "Norna visual theme",
1517
- "markdownDescription": "```yaml\npreset: documentation\n```\n\nChoose one complete preset first. Add focused overrides only when the site needs to differ from it.\n\n[Theme reference](https://github.com/janga/norna/blob/v0.7.17/docs/theme.md)"
1655
+ "markdownDescription": "```yaml\npreset: documentation\n```\n\nChoose one complete preset first. Add focused overrides only when the site needs to differ from it.\n\n[Theme reference](https://github.com/janga/norna/blob/v0.7.22/docs/theme.md)"
1518
1656
  }