@janga/norna 0.7.18 → 0.7.23

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 (615) hide show
  1. package/README.md +22 -12
  2. package/astro.config.mjs +25 -0
  3. package/bin/norna-cli.mjs +8 -2
  4. package/package.json +60 -13
  5. package/schemas/category.schema.json +20 -0
  6. package/schemas/config.schema.json +22 -14
  7. package/schemas/content-frontmatter.schema.json +25 -5
  8. package/schemas/manifest.json +2 -1
  9. package/schemas/page-theme.schema.json +58 -30
  10. package/schemas/sitewide-content.schema.json +20 -19
  11. package/schemas/theme.schema.json +542 -243
  12. package/scripts/add-site-node.mjs +251 -0
  13. package/scripts/check-config.mjs +32 -4
  14. package/scripts/deploy-site.mjs +5 -9
  15. package/scripts/dev-local.mjs +175 -112
  16. package/scripts/generate-images.mjs +11 -15
  17. package/scripts/generate-schemas.mjs +4 -1
  18. package/scripts/init-site.mjs +35 -0
  19. package/scripts/lib/astro-command.mjs +14 -9
  20. package/scripts/lib/content-sync-apply.mjs +34 -0
  21. package/scripts/lib/content-sync-plan.mjs +179 -0
  22. package/scripts/lib/editor-language-service.mjs +156 -177
  23. package/scripts/lib/heading-ids.mjs +4 -2
  24. package/scripts/lib/image-presentation.mjs +2 -0
  25. package/scripts/lib/markdown-links.mjs +182 -0
  26. package/scripts/lib/navigation-model.mjs +36 -19
  27. package/scripts/lib/norna-markdown-blocks.mjs +65 -145
  28. package/scripts/lib/norna-markdown-render-plugin.mjs +37 -0
  29. package/scripts/lib/object.mjs +28 -0
  30. package/scripts/lib/page-aliases.mjs +164 -0
  31. package/scripts/lib/page-markdown.mjs +332 -0
  32. package/scripts/lib/presentation-contract.mjs +266 -0
  33. package/scripts/lib/presentation-palette-metadata.mjs +51 -0
  34. package/scripts/lib/presentation.mjs +508 -79
  35. package/scripts/lib/project-config.mjs +78 -10
  36. package/scripts/lib/schema-definitions.mjs +67 -16
  37. package/scripts/lib/schema-editor-metadata.mjs +126 -24
  38. package/scripts/lib/schema-value-definitions.mjs +30 -12
  39. package/scripts/lib/site-content.mjs +46 -239
  40. package/scripts/lib/site-link-graph.mjs +326 -0
  41. package/scripts/lib/site-page-urls.mjs +10 -0
  42. package/scripts/lib/site-paths.mjs +2 -3
  43. package/scripts/lib/site-structure.mjs +189 -0
  44. package/scripts/lib/sitemap.mjs +34 -0
  45. package/scripts/lib/theme-presets.mjs +118 -119
  46. package/scripts/lib/theme-profiles.mjs +223 -0
  47. package/scripts/lib/typography.mjs +220 -35
  48. package/scripts/lib/yaml-config.mjs +50 -6
  49. package/scripts/lib/yaml-indentation.mjs +86 -0
  50. package/scripts/show-typography.mjs +2 -3
  51. package/scripts/sync-content-sections.mjs +158 -244
  52. package/scripts/sync-site-public.mjs +23 -2
  53. package/src/components/CodeBlockCopyScript.astro +92 -0
  54. package/src/components/DisplaySettings.astro +107 -0
  55. package/src/components/ImageCarousel.astro +38 -13
  56. package/src/components/NavigationPageTree.astro +103 -88
  57. package/src/components/PageAliasRedirect.astro +49 -0
  58. package/src/components/PageContentsNavigation.astro +21 -0
  59. package/src/components/SectionNavigationScript.astro +112 -2
  60. package/src/components/SiteBreadcrumbs.astro +15 -12
  61. package/src/components/SiteNavigation.astro +104 -41
  62. package/src/components/SitePage.astro +76 -40
  63. package/src/components/SiteSection.astro +40 -191
  64. package/src/components/SiteTreeNavigation.astro +10 -10
  65. package/src/content.config.ts +5 -2
  66. package/src/layouts/BaseLayout.astro +55 -9
  67. package/src/lib/generatedImages.ts +0 -7
  68. package/src/lib/readerPreferencesScript.mjs +141 -0
  69. package/src/lib/sectionContent.ts +119 -201
  70. package/src/lib/siteNavigation.ts +36 -18
  71. package/src/lib/sitePages.ts +92 -20
  72. package/src/pages/[...slug].astro +35 -8
  73. package/src/styles/content.css +494 -0
  74. package/src/styles/foundations.css +284 -0
  75. package/src/styles/global.css +6 -2047
  76. package/src/styles/media.css +523 -0
  77. package/src/styles/navigation.css +495 -0
  78. package/src/styles/page-layout.css +437 -0
  79. package/src/styles/responsive.css +525 -0
  80. package/starters/basic/README.md +3 -3
  81. package/docs/README.md +0 -137
  82. package/docs/assets/norna-dog-shelter.jpg +0 -0
  83. package/docs/commands.md +0 -189
  84. package/docs/configuration.md +0 -142
  85. package/docs/content.md +0 -351
  86. package/docs/design/command-organization.md +0 -414
  87. package/docs/design/navigation-and-theme-plan.md +0 -186
  88. package/docs/design/norna-diagram-design.md +0 -159
  89. package/docs/design/site-examples-structure.md +0 -119
  90. package/docs/engine-development.md +0 -215
  91. package/docs/getting-started.md +0 -206
  92. package/docs/how-to/embedded-site.md +0 -35
  93. package/docs/images-and-metadata.md +0 -188
  94. package/docs/local-development.md +0 -82
  95. package/docs/pages.md +0 -190
  96. package/docs/public-files.md +0 -118
  97. package/docs/publishing.md +0 -117
  98. package/docs/requirements.md +0 -54
  99. package/docs/site-files.md +0 -152
  100. package/docs/sitewide-content.md +0 -73
  101. package/docs/theme.md +0 -237
  102. package/docs/typography.md +0 -168
  103. package/examples/README.md +0 -49
  104. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/site.schema.json +0 -35
  105. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/sitewide.schema.json +0 -97
  106. package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/theme.schema.json +0 -852
  107. package/examples/complete-sites/dog-shelter-multi-page/.astro/content-assets.mjs +0 -4
  108. package/examples/complete-sites/dog-shelter-multi-page/.astro/content-modules.mjs +0 -1
  109. package/examples/complete-sites/dog-shelter-multi-page/.astro/content.d.ts +0 -183
  110. package/examples/complete-sites/dog-shelter-multi-page/.astro/data-store.json +0 -1
  111. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev-local.json +0 -8
  112. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.json +0 -13
  113. package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.log +0 -36
  114. package/examples/complete-sites/dog-shelter-multi-page/.astro/settings.json +0 -5
  115. package/examples/complete-sites/dog-shelter-multi-page/.astro/types.d.ts +0 -2
  116. package/examples/complete-sites/dog-shelter-multi-page/README.md +0 -24
  117. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/_metadata.json +0 -74
  118. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-B3JHJyiv.js +0 -434
  119. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-B3JHJyiv.js.map +0 -1
  120. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
  121. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
  122. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
  123. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
  124. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
  125. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
  126. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
  127. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
  128. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-C3SVr7dT.js +0 -1534
  129. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-C3SVr7dT.js.map +0 -1
  130. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-BLtvqtzO.js +0 -48
  131. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +0 -1
  132. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-C92i61-2.js +0 -42
  133. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-C92i61-2.js.map +0 -1
  134. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/package.json +0 -3
  135. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
  136. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-v5GgKks_.js +0 -190
  137. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-v5GgKks_.js.map +0 -1
  138. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-BFvJVp26.js +0 -458
  139. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +0 -1
  140. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js +0 -1016
  141. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +0 -1
  142. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-vo3A6TMn.js +0 -32
  143. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-vo3A6TMn.js.map +0 -1
  144. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-DwhzGckb.js +0 -111
  145. package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-DwhzGckb.js.map +0 -1
  146. package/examples/complete-sites/dog-shelter-multi-page/site/.norna/generated-images.json +0 -98
  147. package/examples/complete-sites/dog-shelter-multi-page/site/config.yaml +0 -1
  148. package/examples/complete-sites/dog-shelter-multi-page/site/pages/000-home/content.md +0 -23
  149. package/examples/complete-sites/dog-shelter-multi-page/site/pages/000-home/images/shelter-dog.jpg +0 -0
  150. package/examples/complete-sites/dog-shelter-multi-page/site/pages/010-dogs/content.md +0 -21
  151. package/examples/complete-sites/dog-shelter-multi-page/site/pages/010-dogs/images/rex.jpg +0 -0
  152. package/examples/complete-sites/dog-shelter-multi-page/site/pages/010-dogs/images/rover.jpg +0 -0
  153. package/examples/complete-sites/dog-shelter-multi-page/site/pages/020-adopt/content.md +0 -22
  154. package/examples/complete-sites/dog-shelter-multi-page/site/pages/020-adopt/images/adoption-dog.jpg +0 -0
  155. package/examples/complete-sites/dog-shelter-multi-page/site/public/favicon.svg +0 -10
  156. package/examples/complete-sites/dog-shelter-multi-page/site/public/logo.svg +0 -9
  157. package/examples/complete-sites/dog-shelter-multi-page/site/public/robots.txt +0 -2
  158. package/examples/complete-sites/dog-shelter-multi-page/site/sitewide-content.yaml +0 -4
  159. package/examples/complete-sites/dog-shelter-multi-page/site/theme.yaml +0 -1
  160. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/site.schema.json +0 -35
  161. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/sitewide.schema.json +0 -97
  162. package/examples/complete-sites/dog-shelter-single-page/.astro/collections/theme.schema.json +0 -852
  163. package/examples/complete-sites/dog-shelter-single-page/.astro/content-assets.mjs +0 -4
  164. package/examples/complete-sites/dog-shelter-single-page/.astro/content-modules.mjs +0 -1
  165. package/examples/complete-sites/dog-shelter-single-page/.astro/content.d.ts +0 -183
  166. package/examples/complete-sites/dog-shelter-single-page/.astro/data-store.json +0 -1
  167. package/examples/complete-sites/dog-shelter-single-page/.astro/dev-local.json +0 -8
  168. package/examples/complete-sites/dog-shelter-single-page/.astro/dev.json +0 -13
  169. package/examples/complete-sites/dog-shelter-single-page/.astro/dev.log +0 -18
  170. package/examples/complete-sites/dog-shelter-single-page/.astro/settings.json +0 -5
  171. package/examples/complete-sites/dog-shelter-single-page/.astro/types.d.ts +0 -2
  172. package/examples/complete-sites/dog-shelter-single-page/README.md +0 -24
  173. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/_metadata.json +0 -74
  174. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro-B3JHJyiv.js +0 -434
  175. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro-B3JHJyiv.js.map +0 -1
  176. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
  177. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
  178. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
  179. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
  180. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
  181. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
  182. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
  183. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
  184. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/audit-C3SVr7dT.js +0 -1534
  185. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/audit-C3SVr7dT.js.map +0 -1
  186. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/highlight-BLtvqtzO.js +0 -48
  187. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +0 -1
  188. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/icons-C92i61-2.js +0 -42
  189. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/icons-C92i61-2.js.map +0 -1
  190. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/package.json +0 -3
  191. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
  192. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/settings-v5GgKks_.js +0 -190
  193. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/settings-v5GgKks_.js.map +0 -1
  194. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/toolbar-BFvJVp26.js +0 -458
  195. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +0 -1
  196. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js +0 -1016
  197. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +0 -1
  198. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/window-vo3A6TMn.js +0 -32
  199. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/window-vo3A6TMn.js.map +0 -1
  200. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/xray-DwhzGckb.js +0 -111
  201. package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/xray-DwhzGckb.js.map +0 -1
  202. package/examples/complete-sites/dog-shelter-single-page/site/.norna/generated-images.json +0 -50
  203. package/examples/complete-sites/dog-shelter-single-page/site/config.yaml +0 -1
  204. package/examples/complete-sites/dog-shelter-single-page/site/pages/000-home/content.md +0 -37
  205. package/examples/complete-sites/dog-shelter-single-page/site/pages/000-home/images/foster-dog.jpg +0 -0
  206. package/examples/complete-sites/dog-shelter-single-page/site/pages/000-home/images/rescue-dog.jpg +0 -0
  207. package/examples/complete-sites/dog-shelter-single-page/site/public/favicon.svg +0 -10
  208. package/examples/complete-sites/dog-shelter-single-page/site/public/logo.svg +0 -9
  209. package/examples/complete-sites/dog-shelter-single-page/site/public/robots.txt +0 -2
  210. package/examples/complete-sites/dog-shelter-single-page/site/sitewide-content.yaml +0 -4
  211. package/examples/complete-sites/dog-shelter-single-page/site/theme.yaml +0 -1
  212. package/examples/feature-demos/media-and-surfaces/.astro/collections/site.schema.json +0 -35
  213. package/examples/feature-demos/media-and-surfaces/.astro/collections/sitewide.schema.json +0 -97
  214. package/examples/feature-demos/media-and-surfaces/.astro/collections/theme.schema.json +0 -844
  215. package/examples/feature-demos/media-and-surfaces/.astro/content-assets.mjs +0 -4
  216. package/examples/feature-demos/media-and-surfaces/.astro/content-modules.mjs +0 -1
  217. package/examples/feature-demos/media-and-surfaces/.astro/content.d.ts +0 -183
  218. package/examples/feature-demos/media-and-surfaces/.astro/data-store.json +0 -1
  219. package/examples/feature-demos/media-and-surfaces/.astro/dev.log +0 -14
  220. package/examples/feature-demos/media-and-surfaces/.astro/settings.json +0 -5
  221. package/examples/feature-demos/media-and-surfaces/.astro/types.d.ts +0 -2
  222. package/examples/feature-demos/media-and-surfaces/README.md +0 -21
  223. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/_metadata.json +0 -80
  224. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro-B3JHJyiv.js +0 -434
  225. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro-B3JHJyiv.js.map +0 -1
  226. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
  227. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
  228. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
  229. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
  230. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
  231. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
  232. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
  233. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
  234. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/audit-C3SVr7dT.js +0 -1534
  235. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/audit-C3SVr7dT.js.map +0 -1
  236. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/embla-carousel.js +0 -1389
  237. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/embla-carousel.js.map +0 -1
  238. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/highlight-BLtvqtzO.js +0 -48
  239. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +0 -1
  240. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/icons-C92i61-2.js +0 -42
  241. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/icons-C92i61-2.js.map +0 -1
  242. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/package.json +0 -3
  243. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
  244. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/settings-v5GgKks_.js +0 -190
  245. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/settings-v5GgKks_.js.map +0 -1
  246. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/toolbar-BFvJVp26.js +0 -458
  247. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +0 -1
  248. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/ui-library-Cd35oAvo.js +0 -1016
  249. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +0 -1
  250. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/window-vo3A6TMn.js +0 -32
  251. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/window-vo3A6TMn.js.map +0 -1
  252. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/xray-DwhzGckb.js +0 -111
  253. package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/xray-DwhzGckb.js.map +0 -1
  254. package/examples/feature-demos/media-and-surfaces/site/.norna/generated-images.json +0 -66
  255. package/examples/feature-demos/media-and-surfaces/site/config.yaml +0 -1
  256. package/examples/feature-demos/media-and-surfaces/site/pages/000-home/content.md +0 -15
  257. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/content.md +0 -71
  258. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/card-carousel.svg +0 -11
  259. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/card-stack.svg +0 -9
  260. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/card-surfaces.svg +0 -8
  261. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/carousel-one.svg +0 -8
  262. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/carousel-three.svg +0 -13
  263. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/carousel-two.svg +0 -8
  264. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/stack-one.svg +0 -8
  265. package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/stack-two.svg +0 -9
  266. package/examples/feature-demos/media-and-surfaces/site/pages/020-surfaces/content.md +0 -42
  267. package/examples/feature-demos/media-and-surfaces/site/pages/020-surfaces/theme.yaml +0 -2
  268. package/examples/feature-demos/media-and-surfaces/site/public/robots.txt +0 -2
  269. package/examples/feature-demos/media-and-surfaces/site/sitewide-content.yaml +0 -2
  270. package/examples/feature-demos/media-and-surfaces/site/theme.yaml +0 -1
  271. package/examples/feature-demos/sitewide-content/.astro/collections/site.schema.json +0 -59
  272. package/examples/feature-demos/sitewide-content/.astro/collections/sitewide.schema.json +0 -138
  273. package/examples/feature-demos/sitewide-content/.astro/collections/theme.schema.json +0 -755
  274. package/examples/feature-demos/sitewide-content/.astro/content-assets.mjs +0 -1
  275. package/examples/feature-demos/sitewide-content/.astro/content-modules.mjs +0 -1
  276. package/examples/feature-demos/sitewide-content/.astro/content.d.ts +0 -183
  277. package/examples/feature-demos/sitewide-content/.astro/data-store.json +0 -1
  278. package/examples/feature-demos/sitewide-content/.astro/dev.json +0 -13
  279. package/examples/feature-demos/sitewide-content/.astro/dev.log +0 -18
  280. package/examples/feature-demos/sitewide-content/.astro/settings.json +0 -5
  281. package/examples/feature-demos/sitewide-content/.astro/types.d.ts +0 -2
  282. package/examples/feature-demos/sitewide-content/README.md +0 -26
  283. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/_metadata.json +0 -74
  284. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro-B3JHJyiv.js +0 -434
  285. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro-B3JHJyiv.js.map +0 -1
  286. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
  287. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
  288. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
  289. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
  290. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
  291. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
  292. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
  293. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
  294. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/audit-C3SVr7dT.js +0 -1534
  295. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/audit-C3SVr7dT.js.map +0 -1
  296. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/highlight-BLtvqtzO.js +0 -48
  297. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +0 -1
  298. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/icons-C92i61-2.js +0 -42
  299. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/icons-C92i61-2.js.map +0 -1
  300. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/package.json +0 -3
  301. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
  302. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/settings-v5GgKks_.js +0 -190
  303. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/settings-v5GgKks_.js.map +0 -1
  304. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/toolbar-BFvJVp26.js +0 -458
  305. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +0 -1
  306. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/ui-library-Cd35oAvo.js +0 -1016
  307. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +0 -1
  308. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/window-vo3A6TMn.js +0 -32
  309. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/window-vo3A6TMn.js.map +0 -1
  310. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/xray-DwhzGckb.js +0 -111
  311. package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/xray-DwhzGckb.js.map +0 -1
  312. package/examples/feature-demos/sitewide-content/site/.norna/generated-images.json +0 -1
  313. package/examples/feature-demos/sitewide-content/site/config.yaml +0 -1
  314. package/examples/feature-demos/sitewide-content/site/pages/000-home/content.md +0 -17
  315. package/examples/feature-demos/sitewide-content/site/pages/010-logo-and-navigation/content.md +0 -17
  316. package/examples/feature-demos/sitewide-content/site/pages/020-notices/content.md +0 -23
  317. package/examples/feature-demos/sitewide-content/site/pages/030-footer/content.md +0 -18
  318. package/examples/feature-demos/sitewide-content/site/public/logo.svg +0 -6
  319. package/examples/feature-demos/sitewide-content/site/public/robots.txt +0 -2
  320. package/examples/feature-demos/sitewide-content/site/sitewide-content.yaml +0 -14
  321. package/examples/feature-demos/sitewide-content/site/theme.yaml +0 -1
  322. package/examples/feature-demos/theme-preset-documentation/README.md +0 -16
  323. package/examples/feature-demos/theme-preset-documentation/site/.norna/generated-images.json +0 -74
  324. package/examples/feature-demos/theme-preset-documentation/site/config.yaml +0 -1
  325. package/examples/feature-demos/theme-preset-documentation/site/pages/000-home/content.md +0 -30
  326. package/examples/feature-demos/theme-preset-documentation/site/pages/000-home/images/black-schnauzer.jpg +0 -0
  327. package/examples/feature-demos/theme-preset-documentation/site/pages/000-home/images/retriever-portrait.jpg +0 -0
  328. package/examples/feature-demos/theme-preset-documentation/site/pages/000-home/images/schnauzer-portrait.jpg +0 -0
  329. package/examples/feature-demos/theme-preset-documentation/site/public/robots.txt +0 -2
  330. package/examples/feature-demos/theme-preset-documentation/site/sitewide-content.yaml +0 -3
  331. package/examples/feature-demos/theme-preset-documentation/site/theme.yaml +0 -1
  332. package/examples/feature-demos/theme-preset-portfolio/README.md +0 -16
  333. package/examples/feature-demos/theme-preset-portfolio/site/.norna/generated-images.json +0 -74
  334. package/examples/feature-demos/theme-preset-portfolio/site/config.yaml +0 -1
  335. package/examples/feature-demos/theme-preset-portfolio/site/pages/000-home/content.md +0 -31
  336. package/examples/feature-demos/theme-preset-portfolio/site/pages/000-home/images/puppy-portrait.jpg +0 -0
  337. package/examples/feature-demos/theme-preset-portfolio/site/pages/000-home/images/shepherd-portrait.jpg +0 -0
  338. package/examples/feature-demos/theme-preset-portfolio/site/pages/000-home/images/white-puppy.jpg +0 -0
  339. package/examples/feature-demos/theme-preset-portfolio/site/public/robots.txt +0 -2
  340. package/examples/feature-demos/theme-preset-portfolio/site/sitewide-content.yaml +0 -3
  341. package/examples/feature-demos/theme-preset-portfolio/site/theme.yaml +0 -1
  342. package/examples/feature-demos/theme-preset-project/.astro/collections/routeTheme.schema.json +0 -746
  343. package/examples/feature-demos/theme-preset-project/.astro/collections/site.schema.json +0 -59
  344. package/examples/feature-demos/theme-preset-project/.astro/collections/sitewide.schema.json +0 -138
  345. package/examples/feature-demos/theme-preset-project/.astro/collections/theme.schema.json +0 -755
  346. package/examples/feature-demos/theme-preset-project/.astro/content-assets.mjs +0 -4
  347. package/examples/feature-demos/theme-preset-project/.astro/content-modules.mjs +0 -1
  348. package/examples/feature-demos/theme-preset-project/.astro/content.d.ts +0 -183
  349. package/examples/feature-demos/theme-preset-project/.astro/data-store.json +0 -1
  350. package/examples/feature-demos/theme-preset-project/.astro/dev-local.json +0 -8
  351. package/examples/feature-demos/theme-preset-project/.astro/dev.json +0 -15
  352. package/examples/feature-demos/theme-preset-project/.astro/dev.log +0 -164
  353. package/examples/feature-demos/theme-preset-project/.astro/settings.json +0 -5
  354. package/examples/feature-demos/theme-preset-project/.astro/types.d.ts +0 -2
  355. package/examples/feature-demos/theme-preset-project/README.md +0 -16
  356. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/_metadata.json +0 -80
  357. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/astro-D_GIpJIE.js +0 -434
  358. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -1
  359. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
  360. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
  361. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
  362. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
  363. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
  364. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
  365. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
  366. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
  367. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/audit-DM9Hkl5B.js +0 -1534
  368. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -1
  369. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/embla-carousel.js +0 -1389
  370. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/embla-carousel.js.map +0 -1
  371. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/highlight-DnZ1ULOL.js +0 -48
  372. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -1
  373. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/icons-RyebKi45.js +0 -42
  374. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -1
  375. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/package.json +0 -3
  376. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
  377. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/settings-DaU-gNnK.js +0 -190
  378. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -1
  379. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/toolbar-63PA619H.js +0 -458
  380. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -1
  381. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/ui-library--bkcNSYz.js +0 -1016
  382. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -1
  383. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/window-jPkpKVcy.js +0 -32
  384. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -1
  385. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/xray-BXCHpEJP.js +0 -111
  386. package/examples/feature-demos/theme-preset-project/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -1
  387. package/examples/feature-demos/theme-preset-project/site/.norna/generated-images.json +0 -74
  388. package/examples/feature-demos/theme-preset-project/site/config.yaml +0 -1
  389. package/examples/feature-demos/theme-preset-project/site/pages/000-home/content.md +0 -31
  390. package/examples/feature-demos/theme-preset-project/site/pages/000-home/images/boxer-portrait.jpg +0 -0
  391. package/examples/feature-demos/theme-preset-project/site/pages/000-home/images/grass-puppy.jpg +0 -0
  392. package/examples/feature-demos/theme-preset-project/site/pages/000-home/images/grey-street-dog.jpg +0 -0
  393. package/examples/feature-demos/theme-preset-project/site/public/robots.txt +0 -2
  394. package/examples/feature-demos/theme-preset-project/site/sitewide-content.yaml +0 -3
  395. package/examples/feature-demos/theme-preset-project/site/theme.yaml +0 -1
  396. package/examples/feature-demos/theme-preset-statement/README.md +0 -16
  397. package/examples/feature-demos/theme-preset-statement/site/.norna/generated-images.json +0 -74
  398. package/examples/feature-demos/theme-preset-statement/site/config.yaml +0 -1
  399. package/examples/feature-demos/theme-preset-statement/site/pages/000-home/content.md +0 -31
  400. package/examples/feature-demos/theme-preset-statement/site/pages/000-home/images/black-pedigree.jpg +0 -0
  401. package/examples/feature-demos/theme-preset-statement/site/pages/000-home/images/sheepdog-grass.jpg +0 -0
  402. package/examples/feature-demos/theme-preset-statement/site/pages/000-home/images/sheepdog-wide.jpg +0 -0
  403. package/examples/feature-demos/theme-preset-statement/site/public/robots.txt +0 -2
  404. package/examples/feature-demos/theme-preset-statement/site/sitewide-content.yaml +0 -3
  405. package/examples/feature-demos/theme-preset-statement/site/theme.yaml +0 -1
  406. package/fixtures/basic/site/.norna/generated-images.json +0 -1
  407. package/fixtures/basic/site/config.yaml +0 -1
  408. package/fixtures/basic/site/pages/000-home/content.md +0 -14
  409. package/fixtures/basic/site/pages/000-home/images/.gitkeep +0 -1
  410. package/fixtures/basic/site/public/robots.txt +0 -2
  411. package/fixtures/basic/site/sitewide-content.yaml +0 -3
  412. package/fixtures/basic/site/theme.yaml +0 -1
  413. package/fixtures/content-model-v2/.astro/collections/site.schema.json +0 -776
  414. package/fixtures/content-model-v2/.astro/collections/theme.schema.json +0 -668
  415. package/fixtures/content-model-v2/.astro/content-assets.mjs +0 -4
  416. package/fixtures/content-model-v2/.astro/content-modules.mjs +0 -1
  417. package/fixtures/content-model-v2/.astro/content.d.ts +0 -175
  418. package/fixtures/content-model-v2/.astro/data-store.json +0 -1
  419. package/fixtures/content-model-v2/.astro/dev-local.json +0 -8
  420. package/fixtures/content-model-v2/.astro/dev.json +0 -13
  421. package/fixtures/content-model-v2/.astro/dev.log +0 -231
  422. package/fixtures/content-model-v2/.astro/settings.json +0 -5
  423. package/fixtures/content-model-v2/.astro/types.d.ts +0 -2
  424. package/fixtures/content-model-v2/dist/_astro/GalleryGrid.astro_astro_type_script_index_0_lang.B0kxDyGz.js +0 -1
  425. package/fixtures/content-model-v2/dist/_astro/SitePage.BbfZub4g.css +0 -1
  426. package/fixtures/content-model-v2/dist/guide/index.html +0 -3
  427. package/fixtures/content-model-v2/dist/images/generated/intro/detail-27930b14-480.webp +0 -0
  428. package/fixtures/content-model-v2/dist/images/generated/intro/detail-27930b14-768.webp +0 -0
  429. package/fixtures/content-model-v2/dist/images/generated/intro/detail-27930b14-971.webp +0 -0
  430. package/fixtures/content-model-v2/dist/images/generated/intro/duplicate-49c98f6c-480.webp +0 -0
  431. package/fixtures/content-model-v2/dist/images/generated/intro/duplicate-49c98f6c-768.webp +0 -0
  432. package/fixtures/content-model-v2/dist/images/generated/intro/duplicate-49c98f6c-971.webp +0 -0
  433. package/fixtures/content-model-v2/dist/images/generated/intro/hero-6d588a83-480.webp +0 -0
  434. package/fixtures/content-model-v2/dist/images/generated/intro/hero-6d588a83-768.webp +0 -0
  435. package/fixtures/content-model-v2/dist/images/generated/intro/hero-6d588a83-971.webp +0 -0
  436. package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-1080.webp +0 -0
  437. package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-1440.webp +0 -0
  438. package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-1600.webp +0 -0
  439. package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-480.webp +0 -0
  440. package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-768.webp +0 -0
  441. package/fixtures/content-model-v2/dist/images/generated/routes/010-guide/images/intro/duplicate-5cf614d2-480.webp +0 -0
  442. package/fixtures/content-model-v2/dist/images/generated/routes/010-guide/images/intro/duplicate-5cf614d2-768.webp +0 -0
  443. package/fixtures/content-model-v2/dist/images/generated/routes/010-guide/images/intro/duplicate-5cf614d2-960.webp +0 -0
  444. package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-1080.webp +0 -0
  445. package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-1440.webp +0 -0
  446. package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-1600.webp +0 -0
  447. package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-480.webp +0 -0
  448. package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-768.webp +0 -0
  449. package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-1080.webp +0 -0
  450. package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-1440.webp +0 -0
  451. package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-1600.webp +0 -0
  452. package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-480.webp +0 -0
  453. package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-768.webp +0 -0
  454. package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-1080.webp +0 -0
  455. package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-1440.webp +0 -0
  456. package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-1600.webp +0 -0
  457. package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-480.webp +0 -0
  458. package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-768.webp +0 -0
  459. package/fixtures/content-model-v2/dist/index.html +0 -8
  460. package/fixtures/content-model-v2/node_modules/.vite/deps/_metadata.json +0 -80
  461. package/fixtures/content-model-v2/node_modules/.vite/deps/astro-D_GIpJIE.js +0 -434
  462. package/fixtures/content-model-v2/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -1
  463. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
  464. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
  465. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
  466. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
  467. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
  468. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
  469. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
  470. package/fixtures/content-model-v2/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
  471. package/fixtures/content-model-v2/node_modules/.vite/deps/audit-DM9Hkl5B.js +0 -1534
  472. package/fixtures/content-model-v2/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -1
  473. package/fixtures/content-model-v2/node_modules/.vite/deps/embla-carousel.js +0 -1389
  474. package/fixtures/content-model-v2/node_modules/.vite/deps/embla-carousel.js.map +0 -1
  475. package/fixtures/content-model-v2/node_modules/.vite/deps/highlight-DnZ1ULOL.js +0 -48
  476. package/fixtures/content-model-v2/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -1
  477. package/fixtures/content-model-v2/node_modules/.vite/deps/icons-RyebKi45.js +0 -42
  478. package/fixtures/content-model-v2/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -1
  479. package/fixtures/content-model-v2/node_modules/.vite/deps/package.json +0 -3
  480. package/fixtures/content-model-v2/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
  481. package/fixtures/content-model-v2/node_modules/.vite/deps/settings-DaU-gNnK.js +0 -190
  482. package/fixtures/content-model-v2/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -1
  483. package/fixtures/content-model-v2/node_modules/.vite/deps/toolbar-63PA619H.js +0 -458
  484. package/fixtures/content-model-v2/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -1
  485. package/fixtures/content-model-v2/node_modules/.vite/deps/ui-library--bkcNSYz.js +0 -1016
  486. package/fixtures/content-model-v2/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -1
  487. package/fixtures/content-model-v2/node_modules/.vite/deps/window-jPkpKVcy.js +0 -32
  488. package/fixtures/content-model-v2/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -1
  489. package/fixtures/content-model-v2/node_modules/.vite/deps/xray-BXCHpEJP.js +0 -111
  490. package/fixtures/content-model-v2/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -1
  491. package/fixtures/content-model-v2/site/.norna/generated-images.json +0 -210
  492. package/fixtures/content-model-v2/site/config.yaml +0 -1
  493. package/fixtures/content-model-v2/site/pages/000-home/content.md +0 -79
  494. package/fixtures/content-model-v2/site/pages/000-home/images/adopt.svg +0 -9
  495. package/fixtures/content-model-v2/site/pages/000-home/images/detail.jpg +0 -0
  496. package/fixtures/content-model-v2/site/pages/000-home/images/duplicate.jpg +0 -0
  497. package/fixtures/content-model-v2/site/pages/000-home/images/foster.svg +0 -12
  498. package/fixtures/content-model-v2/site/pages/000-home/images/hero.jpg +0 -0
  499. package/fixtures/content-model-v2/site/pages/000-home/images/image.jpg +0 -0
  500. package/fixtures/content-model-v2/site/pages/000-home/images/slide-one.jpg +0 -0
  501. package/fixtures/content-model-v2/site/pages/000-home/images/slide-three.jpg +0 -0
  502. package/fixtures/content-model-v2/site/pages/000-home/images/slide-two.jpg +0 -0
  503. package/fixtures/content-model-v2/site/pages/010-guide/content.md +0 -18
  504. package/fixtures/content-model-v2/site/pages/010-guide/images/duplicate.jpg +0 -0
  505. package/fixtures/content-model-v2/site/theme.yaml +0 -4
  506. package/fixtures/nested-pages/.astro/collections/site.schema.json +0 -35
  507. package/fixtures/nested-pages/.astro/collections/sitewide.schema.json +0 -97
  508. package/fixtures/nested-pages/.astro/collections/theme.schema.json +0 -844
  509. package/fixtures/nested-pages/.astro/content-assets.mjs +0 -4
  510. package/fixtures/nested-pages/.astro/content-modules.mjs +0 -1
  511. package/fixtures/nested-pages/.astro/content.d.ts +0 -183
  512. package/fixtures/nested-pages/.astro/data-store.json +0 -1
  513. package/fixtures/nested-pages/.astro/dev-local.json +0 -8
  514. package/fixtures/nested-pages/.astro/dev.log +0 -1128
  515. package/fixtures/nested-pages/.astro/settings.json +0 -5
  516. package/fixtures/nested-pages/.astro/types.d.ts +0 -2
  517. package/fixtures/nested-pages/node_modules/.vite/deps/_metadata.json +0 -74
  518. package/fixtures/nested-pages/node_modules/.vite/deps/astro-D_GIpJIE.js +0 -434
  519. package/fixtures/nested-pages/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -1
  520. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
  521. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
  522. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
  523. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
  524. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
  525. package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
  526. package/fixtures/nested-pages/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
  527. package/fixtures/nested-pages/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
  528. package/fixtures/nested-pages/node_modules/.vite/deps/audit-DM9Hkl5B.js +0 -1534
  529. package/fixtures/nested-pages/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -1
  530. package/fixtures/nested-pages/node_modules/.vite/deps/highlight-DnZ1ULOL.js +0 -48
  531. package/fixtures/nested-pages/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -1
  532. package/fixtures/nested-pages/node_modules/.vite/deps/icons-RyebKi45.js +0 -42
  533. package/fixtures/nested-pages/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -1
  534. package/fixtures/nested-pages/node_modules/.vite/deps/package.json +0 -3
  535. package/fixtures/nested-pages/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
  536. package/fixtures/nested-pages/node_modules/.vite/deps/settings-DaU-gNnK.js +0 -190
  537. package/fixtures/nested-pages/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -1
  538. package/fixtures/nested-pages/node_modules/.vite/deps/toolbar-63PA619H.js +0 -458
  539. package/fixtures/nested-pages/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -1
  540. package/fixtures/nested-pages/node_modules/.vite/deps/ui-library--bkcNSYz.js +0 -1016
  541. package/fixtures/nested-pages/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -1
  542. package/fixtures/nested-pages/node_modules/.vite/deps/window-jPkpKVcy.js +0 -32
  543. package/fixtures/nested-pages/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -1
  544. package/fixtures/nested-pages/node_modules/.vite/deps/xray-BXCHpEJP.js +0 -111
  545. package/fixtures/nested-pages/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -1
  546. package/fixtures/nested-pages/site/.norna/generated-images.json +0 -10
  547. package/fixtures/nested-pages/site/config.yaml +0 -3
  548. package/fixtures/nested-pages/site/pages/000-home/content.md +0 -15
  549. package/fixtures/nested-pages/site/pages/010-guides/content.md +0 -15
  550. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/content.md +0 -21
  551. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/images/diagram.svg +0 -21
  552. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/pages/010-macos/content.md +0 -18
  553. package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/theme.yaml +0 -2
  554. package/fixtures/nested-pages/site/pages/010-guides/pages/020-workflows/content.md +0 -11
  555. package/fixtures/nested-pages/site/pages/010-guides/pages/030-release-notes/content.md +0 -9
  556. package/fixtures/nested-pages/site/pages/010-guides/pages/040-configuration/content.md +0 -3
  557. package/fixtures/nested-pages/site/pages/010-guides/pages/050-content/content.md +0 -3
  558. package/fixtures/nested-pages/site/pages/010-guides/pages/060-themes/content.md +0 -3
  559. package/fixtures/nested-pages/site/pages/010-guides/pages/070-images/content.md +0 -3
  560. package/fixtures/nested-pages/site/pages/010-guides/pages/080-cards/content.md +0 -3
  561. package/fixtures/nested-pages/site/pages/010-guides/pages/090-notes/content.md +0 -3
  562. package/fixtures/nested-pages/site/pages/010-guides/pages/100-validation/content.md +0 -3
  563. package/fixtures/nested-pages/site/pages/010-guides/pages/110-synchronization/content.md +0 -3
  564. package/fixtures/nested-pages/site/pages/010-guides/pages/120-building/content.md +0 -3
  565. package/fixtures/nested-pages/site/pages/010-guides/pages/130-publishing/content.md +0 -3
  566. package/fixtures/nested-pages/site/pages/010-guides/pages/140-troubleshooting/content.md +0 -3
  567. package/fixtures/nested-pages/site/pages/010-guides/pages/150-migration/content.md +0 -3
  568. package/fixtures/nested-pages/site/pages/010-guides/pages/160-accessibility/content.md +0 -3
  569. package/fixtures/nested-pages/site/pages/010-guides/pages/170-performance/content.md +0 -3
  570. package/fixtures/nested-pages/site/pages/010-guides/pages/180-security/content.md +0 -3
  571. package/fixtures/nested-pages/site/pages/010-guides/pages/190-localization/content.md +0 -3
  572. package/fixtures/nested-pages/site/pages/010-guides/pages/200-upgrading/content.md +0 -3
  573. package/fixtures/nested-pages/site/pages/010-guides/pages/210-faq/content.md +0 -3
  574. package/fixtures/nested-pages/site/pages/010-guides/theme.yaml +0 -7
  575. package/fixtures/nested-pages/site/pages/020-reference/content.md +0 -10
  576. package/fixtures/nested-pages/site/pages/020-reference/pages/010-installation/content.md +0 -11
  577. package/fixtures/nested-pages/site/theme.yaml +0 -1
  578. package/scripts/build-pages.mjs +0 -69
  579. package/scripts/lib/example-sites.mjs +0 -49
  580. package/scripts/lib/frontmatter-yaml.mjs +0 -113
  581. package/scripts/lib/git-status.mjs +0 -7
  582. package/scripts/release.mjs +0 -153
  583. package/scripts/test-banner-visibility.mjs +0 -80
  584. package/scripts/test-ci-lockfile.mjs +0 -65
  585. package/scripts/test-cli-discovery.mjs +0 -124
  586. package/scripts/test-client-javascript.mjs +0 -225
  587. package/scripts/test-content-check.mjs +0 -621
  588. package/scripts/test-content-model-v2.mjs +0 -1693
  589. package/scripts/test-documentation.mjs +0 -189
  590. package/scripts/test-editor-language-service.mjs +0 -305
  591. package/scripts/test-engine-commands.mjs +0 -204
  592. package/scripts/test-examples.mjs +0 -53
  593. package/scripts/test-heading-ids.mjs +0 -68
  594. package/scripts/test-navigation-model.mjs +0 -63
  595. package/scripts/test-navigation-preview.mjs +0 -108
  596. package/scripts/test-navigation.mjs +0 -157
  597. package/scripts/test-nested-pages.mjs +0 -125
  598. package/scripts/test-package-check.mjs +0 -500
  599. package/scripts/test-page-model.mjs +0 -108
  600. package/scripts/test-project-config.mjs +0 -139
  601. package/scripts/test-schemas.mjs +0 -169
  602. package/scripts/test-site-public.mjs +0 -85
  603. package/scripts/test-theme-presets.mjs +0 -188
  604. package/src/components/SiteNotesScript.astro +0 -43
  605. package/starters/project/.github/workflows/deploy.yml +0 -64
  606. package/starters/project/README.md +0 -84
  607. package/starters/project/package-lock.json +0 -4296
  608. package/starters/project/package.json +0 -37
  609. package/starters/project/site/config.yaml +0 -1
  610. package/starters/project/site/pages/000-home/content.md +0 -119
  611. package/starters/project/site/pages/010-guide/content.md +0 -80
  612. package/starters/project/site/public/robots.txt +0 -2
  613. package/starters/project/site/sitewide-content.yaml +0 -3
  614. package/starters/project/site/theme.yaml +0 -1
  615. package/tsconfig.json +0 -5
@@ -1,77 +1,433 @@
1
1
  import {
2
+ assertTypographyContract,
2
3
  defaultTypography,
3
4
  resolveTypographyConfig,
4
5
  } from './typography.mjs';
6
+ import {
7
+ assertPaletteModeContract,
8
+ createSemanticColorRoles,
9
+ deriveSecondaryTextColor,
10
+ } from './presentation-contract.mjs';
11
+ import { presentationPaletteNames } from './presentation-palette-metadata.mjs';
5
12
  import { resolveThemeConfig } from './theme-presets.mjs';
6
13
 
7
- export const presentationPaletteNames = ['dark', 'light', 'paper'];
14
+ export { presentationPaletteNames };
15
+ export const appearanceNames = ['system', 'light', 'dark'];
8
16
  const sectionBackgroundPatterns = Object.freeze({
9
17
  uniform: ['base'],
10
18
  alternating: ['base', 'soft'],
11
- cycling: ['base', 'soft', 'emphasis'],
19
+ accented: ['base', 'soft', 'emphasis', 'soft'],
12
20
  });
13
21
 
22
+ const createPaletteMode = ({ appearance, page, surfaces, frame, css }) => {
23
+ const resolvedSurfaces = Object.fromEntries(Object.entries(surfaces).map(([name, surface]) => [
24
+ name,
25
+ Object.freeze({
26
+ ...surface,
27
+ secondaryTextColor: deriveSecondaryTextColor(surface.textColor, surface.backgroundColor),
28
+ }),
29
+ ]));
30
+
31
+ return Object.freeze({
32
+ page: Object.freeze(page),
33
+ surfaces: Object.freeze(resolvedSurfaces),
34
+ frame: Object.freeze(frame),
35
+ css: Object.freeze(css),
36
+ semantic: createSemanticColorRoles({
37
+ appearance,
38
+ page,
39
+ secondaryText: css.muted,
40
+ linkText: css.accent,
41
+ }),
42
+ });
43
+ };
44
+
14
45
  const presentationPalettes = Object.freeze({
15
- dark: {
16
- colorScheme: 'dark',
17
- page: { backgroundColor: '#000000', textColor: '#f2eee6' },
18
- surfaces: {
19
- base: { backgroundColor: '#000000', textColor: '#f2eee6' },
20
- soft: { backgroundColor: '#171717', textColor: '#f2eee6' },
21
- emphasis: { backgroundColor: '#252525', textColor: '#f2eee6' },
22
- },
23
- frame: { backgroundColor: '#000000', textColor: '#f2eee6' },
24
- css: {
25
- surface: '#101010',
26
- muted: '#aaa49a',
27
- soft: '#302f2c',
28
- accent: '#d8d2c8',
29
- border: 'rgb(255 255 255 / 14%)',
30
- navBackground: 'rgb(0 0 0 / 90%)',
31
- navSeparator: 'rgb(255 255 255 / 28%)',
32
- },
33
- },
34
- light: {
35
- colorScheme: 'light',
36
- page: { backgroundColor: '#ffffff', textColor: '#17201d' },
37
- surfaces: {
38
- base: { backgroundColor: '#ffffff', textColor: '#17201d' },
39
- soft: { backgroundColor: '#f1f4f2', textColor: '#17201d' },
40
- emphasis: { backgroundColor: '#dde7e1', textColor: '#17201d' },
41
- },
42
- frame: { backgroundColor: '#ffffff', textColor: '#17201d' },
43
- css: {
44
- surface: '#f7f8f7',
45
- muted: '#5e655f',
46
- soft: '#d9dfda',
47
- accent: '#38645a',
48
- border: 'rgb(0 0 0 / 14%)',
49
- navBackground: 'rgb(255 255 255 / 92%)',
50
- navSeparator: 'rgb(0 0 0 / 20%)',
51
- },
52
- },
53
- paper: {
54
- colorScheme: 'light',
55
- page: { backgroundColor: '#f8f5ee', textColor: '#272522' },
56
- surfaces: {
57
- base: { backgroundColor: '#f8f5ee', textColor: '#272522' },
58
- soft: { backgroundColor: '#ebe5d9', textColor: '#272522' },
59
- emphasis: { backgroundColor: '#ded4c5', textColor: '#272522' },
60
- },
61
- frame: { backgroundColor: '#f8f5ee', textColor: '#272522' },
62
- css: {
63
- surface: '#f0ebe1',
64
- muted: '#746e63',
65
- soft: '#d8d0c4',
66
- accent: '#685a43',
67
- border: 'rgb(39 37 34 / 18%)',
68
- navBackground: 'rgb(248 245 238 / 92%)',
69
- navSeparator: 'rgb(39 37 34 / 24%)',
70
- },
71
- },
46
+ 'near-monochrome': Object.freeze({
47
+ defaultAppearance: 'dark',
48
+ modes: Object.freeze({
49
+ light: createPaletteMode({
50
+ appearance: 'light',
51
+ page: { backgroundColor: '#f7f7f5', textColor: '#171717' },
52
+ surfaces: {
53
+ base: { backgroundColor: '#f7f7f5', textColor: '#171717' },
54
+ soft: { backgroundColor: '#ececea', textColor: '#171717' },
55
+ emphasis: { backgroundColor: '#dadad6', textColor: '#171717' },
56
+ },
57
+ frame: { backgroundColor: '#f7f7f5', textColor: '#171717' },
58
+ css: {
59
+ surface: '#eeeeeb',
60
+ muted: '#666660',
61
+ soft: '#d8d8d3',
62
+ accent: '#4b4b46',
63
+ border: 'rgb(23 23 23 / 16%)',
64
+ navSeparator: 'rgb(23 23 23 / 24%)',
65
+ },
66
+ }),
67
+ dark: createPaletteMode({
68
+ appearance: 'dark',
69
+ page: { backgroundColor: '#000000', textColor: '#f2eee6' },
70
+ surfaces: {
71
+ base: { backgroundColor: '#000000', textColor: '#f2eee6' },
72
+ soft: { backgroundColor: '#171717', textColor: '#f2eee6' },
73
+ emphasis: { backgroundColor: '#252525', textColor: '#f2eee6' },
74
+ },
75
+ frame: { backgroundColor: '#000000', textColor: '#f2eee6' },
76
+ css: {
77
+ surface: '#101010',
78
+ muted: '#aaa49a',
79
+ soft: '#302f2c',
80
+ accent: '#d8d2c8',
81
+ border: 'rgb(255 255 255 / 14%)',
82
+ navSeparator: 'rgb(255 255 255 / 28%)',
83
+ },
84
+ }),
85
+ }),
86
+ }),
87
+ 'arctic-blue': Object.freeze({
88
+ defaultAppearance: 'light',
89
+ modes: Object.freeze({
90
+ light: createPaletteMode({
91
+ appearance: 'light',
92
+ page: { backgroundColor: '#f3f6f8', textColor: '#202932' },
93
+ surfaces: {
94
+ base: { backgroundColor: '#f3f6f8', textColor: '#202932' },
95
+ soft: { backgroundColor: '#e4eaf0', textColor: '#202932' },
96
+ emphasis: { backgroundColor: '#d3dee8', textColor: '#202932' },
97
+ },
98
+ frame: { backgroundColor: '#f3f6f8', textColor: '#202932' },
99
+ css: {
100
+ surface: '#e9eef2',
101
+ muted: '#5d6a76',
102
+ soft: '#d5dfe7',
103
+ accent: '#2a5877',
104
+ border: 'rgb(32 41 50 / 16%)',
105
+ navSeparator: 'rgb(32 41 50 / 24%)',
106
+ },
107
+ }),
108
+ dark: createPaletteMode({
109
+ appearance: 'dark',
110
+ page: { backgroundColor: '#17202a', textColor: '#edf3f7' },
111
+ surfaces: {
112
+ base: { backgroundColor: '#17202a', textColor: '#edf3f7' },
113
+ soft: { backgroundColor: '#202c38', textColor: '#edf3f7' },
114
+ emphasis: { backgroundColor: '#2b3c4b', textColor: '#edf3f7' },
115
+ },
116
+ frame: { backgroundColor: '#17202a', textColor: '#edf3f7' },
117
+ css: {
118
+ surface: '#1d2833',
119
+ muted: '#b2bec8',
120
+ soft: '#354655',
121
+ accent: '#9bc5de',
122
+ border: 'rgb(237 243 247 / 16%)',
123
+ navSeparator: 'rgb(237 243 247 / 28%)',
124
+ },
125
+ }),
126
+ }),
127
+ }),
128
+ 'mineral-teal': Object.freeze({
129
+ defaultAppearance: 'light',
130
+ modes: Object.freeze({
131
+ light: createPaletteMode({
132
+ appearance: 'light',
133
+ page: { backgroundColor: '#eef4f1', textColor: '#203631' },
134
+ surfaces: {
135
+ base: { backgroundColor: '#eef4f1', textColor: '#203631' },
136
+ soft: { backgroundColor: '#dce9e4', textColor: '#203631' },
137
+ emphasis: { backgroundColor: '#c8ddd5', textColor: '#203631' },
138
+ },
139
+ frame: { backgroundColor: '#eef4f1', textColor: '#203631' },
140
+ css: {
141
+ surface: '#e3ece8',
142
+ muted: '#536560',
143
+ soft: '#cfdfd9',
144
+ accent: '#155f5a',
145
+ border: 'rgb(32 54 49 / 17%)',
146
+ navSeparator: 'rgb(32 54 49 / 24%)',
147
+ },
148
+ }),
149
+ dark: createPaletteMode({
150
+ appearance: 'dark',
151
+ page: { backgroundColor: '#102d2c', textColor: '#edf5f1' },
152
+ surfaces: {
153
+ base: { backgroundColor: '#102d2c', textColor: '#edf5f1' },
154
+ soft: { backgroundColor: '#173a37', textColor: '#edf5f1' },
155
+ emphasis: { backgroundColor: '#24504a', textColor: '#edf5f1' },
156
+ },
157
+ frame: { backgroundColor: '#102d2c', textColor: '#edf5f1' },
158
+ css: {
159
+ surface: '#153633',
160
+ muted: '#b2c5bf',
161
+ soft: '#2c554f',
162
+ accent: '#8bd5ca',
163
+ border: 'rgb(237 245 241 / 16%)',
164
+ navSeparator: 'rgb(237 245 241 / 28%)',
165
+ },
166
+ }),
167
+ }),
168
+ }),
169
+ 'soft-lavender': Object.freeze({
170
+ defaultAppearance: 'light',
171
+ modes: Object.freeze({
172
+ light: createPaletteMode({
173
+ appearance: 'light',
174
+ page: { backgroundColor: '#f7f3fa', textColor: '#2e2736' },
175
+ surfaces: {
176
+ base: { backgroundColor: '#f7f3fa', textColor: '#2e2736' },
177
+ soft: { backgroundColor: '#ebe4f1', textColor: '#2e2736' },
178
+ emphasis: { backgroundColor: '#ddd3e8', textColor: '#2e2736' },
179
+ },
180
+ frame: { backgroundColor: '#f7f3fa', textColor: '#2e2736' },
181
+ css: {
182
+ surface: '#eee8f3',
183
+ muted: '#6c6273',
184
+ soft: '#ded5e7',
185
+ accent: '#604678',
186
+ border: 'rgb(46 39 54 / 16%)',
187
+ navSeparator: 'rgb(46 39 54 / 24%)',
188
+ },
189
+ }),
190
+ dark: createPaletteMode({
191
+ appearance: 'dark',
192
+ page: { backgroundColor: '#251f2e', textColor: '#f4edf8' },
193
+ surfaces: {
194
+ base: { backgroundColor: '#251f2e', textColor: '#f4edf8' },
195
+ soft: { backgroundColor: '#31283d', textColor: '#f4edf8' },
196
+ emphasis: { backgroundColor: '#42344f', textColor: '#f4edf8' },
197
+ },
198
+ frame: { backgroundColor: '#251f2e', textColor: '#f4edf8' },
199
+ css: {
200
+ surface: '#2d2538',
201
+ muted: '#c1b4c7',
202
+ soft: '#4b3d57',
203
+ accent: '#d4b7e3',
204
+ border: 'rgb(244 237 248 / 16%)',
205
+ navSeparator: 'rgb(244 237 248 / 28%)',
206
+ },
207
+ }),
208
+ }),
209
+ }),
210
+ 'warm-paper': Object.freeze({
211
+ defaultAppearance: 'light',
212
+ modes: Object.freeze({
213
+ light: createPaletteMode({
214
+ appearance: 'light',
215
+ page: { backgroundColor: '#f8f5ee', textColor: '#272522' },
216
+ surfaces: {
217
+ base: { backgroundColor: '#f8f5ee', textColor: '#272522' },
218
+ soft: { backgroundColor: '#ebe5d9', textColor: '#272522' },
219
+ emphasis: { backgroundColor: '#ded4c5', textColor: '#272522' },
220
+ },
221
+ frame: { backgroundColor: '#f8f5ee', textColor: '#272522' },
222
+ css: {
223
+ surface: '#f0ebe1',
224
+ muted: '#6b655b',
225
+ soft: '#d8d0c4',
226
+ accent: '#5f513c',
227
+ border: 'rgb(39 37 34 / 18%)',
228
+ navSeparator: 'rgb(39 37 34 / 24%)',
229
+ },
230
+ }),
231
+ dark: createPaletteMode({
232
+ appearance: 'dark',
233
+ page: { backgroundColor: '#1b1916', textColor: '#f3ede2' },
234
+ surfaces: {
235
+ base: { backgroundColor: '#1b1916', textColor: '#f3ede2' },
236
+ soft: { backgroundColor: '#25211c', textColor: '#f3ede2' },
237
+ emphasis: { backgroundColor: '#342d25', textColor: '#f3ede2' },
238
+ },
239
+ frame: { backgroundColor: '#1b1916', textColor: '#f3ede2' },
240
+ css: {
241
+ surface: '#211e1a',
242
+ muted: '#b9ad9c',
243
+ soft: '#3b342b',
244
+ accent: '#d5bea0',
245
+ border: 'rgb(243 237 226 / 16%)',
246
+ navSeparator: 'rgb(243 237 226 / 26%)',
247
+ },
248
+ }),
249
+ }),
250
+ }),
251
+ 'retro-earth': Object.freeze({
252
+ defaultAppearance: 'light',
253
+ modes: Object.freeze({
254
+ light: createPaletteMode({
255
+ appearance: 'light',
256
+ page: { backgroundColor: '#f7efd9', textColor: '#34291c' },
257
+ surfaces: {
258
+ base: { backgroundColor: '#f7efd9', textColor: '#34291c' },
259
+ soft: { backgroundColor: '#eadbb8', textColor: '#34291c' },
260
+ emphasis: { backgroundColor: '#d8c18c', textColor: '#34291c' },
261
+ },
262
+ frame: { backgroundColor: '#f7efd9', textColor: '#34291c' },
263
+ css: {
264
+ surface: '#efe2c4',
265
+ muted: '#6c5e4c',
266
+ soft: '#deca9c',
267
+ accent: '#5e4514',
268
+ border: 'rgb(52 41 28 / 18%)',
269
+ navSeparator: 'rgb(52 41 28 / 25%)',
270
+ },
271
+ }),
272
+ dark: createPaletteMode({
273
+ appearance: 'dark',
274
+ page: { backgroundColor: '#282117', textColor: '#f5e8c9' },
275
+ surfaces: {
276
+ base: { backgroundColor: '#282117', textColor: '#f5e8c9' },
277
+ soft: { backgroundColor: '#382c1e', textColor: '#f5e8c9' },
278
+ emphasis: { backgroundColor: '#4b3a24', textColor: '#f5e8c9' },
279
+ },
280
+ frame: { backgroundColor: '#282117', textColor: '#f5e8c9' },
281
+ css: {
282
+ surface: '#33291c',
283
+ muted: '#c6b796',
284
+ soft: '#54422a',
285
+ accent: '#e5c36c',
286
+ border: 'rgb(245 232 201 / 16%)',
287
+ navSeparator: 'rgb(245 232 201 / 28%)',
288
+ },
289
+ }),
290
+ }),
291
+ }),
292
+ 'clay-rose': Object.freeze({
293
+ defaultAppearance: 'light',
294
+ modes: Object.freeze({
295
+ light: createPaletteMode({
296
+ appearance: 'light',
297
+ page: { backgroundColor: '#f7efed', textColor: '#3c2929' },
298
+ surfaces: {
299
+ base: { backgroundColor: '#f7efed', textColor: '#3c2929' },
300
+ soft: { backgroundColor: '#ecdeda', textColor: '#3c2929' },
301
+ emphasis: { backgroundColor: '#ddc7c1', textColor: '#3c2929' },
302
+ },
303
+ frame: { backgroundColor: '#f7efed', textColor: '#3c2929' },
304
+ css: {
305
+ surface: '#f0e3e0',
306
+ muted: '#6d5558',
307
+ soft: '#e2cfca',
308
+ accent: '#71313d',
309
+ border: 'rgb(60 41 41 / 17%)',
310
+ navSeparator: 'rgb(60 41 41 / 25%)',
311
+ },
312
+ }),
313
+ dark: createPaletteMode({
314
+ appearance: 'dark',
315
+ page: { backgroundColor: '#2d1e22', textColor: '#f7ebeb' },
316
+ surfaces: {
317
+ base: { backgroundColor: '#2d1e22', textColor: '#f7ebeb' },
318
+ soft: { backgroundColor: '#3b282e', textColor: '#f7ebeb' },
319
+ emphasis: { backgroundColor: '#50343d', textColor: '#f7ebeb' },
320
+ },
321
+ frame: { backgroundColor: '#2d1e22', textColor: '#f7ebeb' },
322
+ css: {
323
+ surface: '#36252a',
324
+ muted: '#c8b3b7',
325
+ soft: '#58404a',
326
+ accent: '#e6a7b0',
327
+ border: 'rgb(247 235 235 / 16%)',
328
+ navSeparator: 'rgb(247 235 235 / 28%)',
329
+ },
330
+ }),
331
+ }),
332
+ }),
333
+ 'forest-moss': Object.freeze({
334
+ defaultAppearance: 'light',
335
+ modes: Object.freeze({
336
+ light: createPaletteMode({
337
+ appearance: 'light',
338
+ page: { backgroundColor: '#f1f3e8', textColor: '#263225' },
339
+ surfaces: {
340
+ base: { backgroundColor: '#f1f3e8', textColor: '#263225' },
341
+ soft: { backgroundColor: '#e1e6d2', textColor: '#263225' },
342
+ emphasis: { backgroundColor: '#cbd5b7', textColor: '#263225' },
343
+ },
344
+ frame: { backgroundColor: '#f1f3e8', textColor: '#263225' },
345
+ css: {
346
+ surface: '#e7eadb',
347
+ muted: '#52604c',
348
+ soft: '#d5ddc5',
349
+ accent: '#324e25',
350
+ border: 'rgb(38 50 37 / 17%)',
351
+ navSeparator: 'rgb(38 50 37 / 24%)',
352
+ },
353
+ }),
354
+ dark: createPaletteMode({
355
+ appearance: 'dark',
356
+ page: { backgroundColor: '#172218', textColor: '#eef2e6' },
357
+ surfaces: {
358
+ base: { backgroundColor: '#172218', textColor: '#eef2e6' },
359
+ soft: { backgroundColor: '#213022', textColor: '#eef2e6' },
360
+ emphasis: { backgroundColor: '#314531', textColor: '#eef2e6' },
361
+ },
362
+ frame: { backgroundColor: '#172218', textColor: '#eef2e6' },
363
+ css: {
364
+ surface: '#1d2a1e',
365
+ muted: '#b8c3af',
366
+ soft: '#394c37',
367
+ accent: '#add493',
368
+ border: 'rgb(238 242 230 / 16%)',
369
+ navSeparator: 'rgb(238 242 230 / 28%)',
370
+ },
371
+ }),
372
+ }),
373
+ }),
374
+ 'vivid-night': Object.freeze({
375
+ defaultAppearance: 'dark',
376
+ modes: Object.freeze({
377
+ light: createPaletteMode({
378
+ appearance: 'light',
379
+ page: { backgroundColor: '#f2f4fb', textColor: '#25243a' },
380
+ surfaces: {
381
+ base: { backgroundColor: '#f2f4fb', textColor: '#25243a' },
382
+ soft: { backgroundColor: '#e2e6f3', textColor: '#25243a' },
383
+ emphasis: { backgroundColor: '#d0d7eb', textColor: '#25243a' },
384
+ },
385
+ frame: { backgroundColor: '#f2f4fb', textColor: '#25243a' },
386
+ css: {
387
+ surface: '#e8eaf5',
388
+ muted: '#62647a',
389
+ soft: '#d5daec',
390
+ accent: '#3b568f',
391
+ border: 'rgb(37 36 58 / 16%)',
392
+ navSeparator: 'rgb(37 36 58 / 24%)',
393
+ },
394
+ }),
395
+ dark: createPaletteMode({
396
+ appearance: 'dark',
397
+ page: { backgroundColor: '#1d1b2d', textColor: '#f4f1ff' },
398
+ surfaces: {
399
+ base: { backgroundColor: '#1d1b2d', textColor: '#f4f1ff' },
400
+ soft: { backgroundColor: '#29263d', textColor: '#f4f1ff' },
401
+ emphasis: { backgroundColor: '#38334f', textColor: '#f4f1ff' },
402
+ },
403
+ frame: { backgroundColor: '#1d1b2d', textColor: '#f4f1ff' },
404
+ css: {
405
+ surface: '#252238',
406
+ muted: '#bbb7cc',
407
+ soft: '#403a58',
408
+ accent: '#9fe4e8',
409
+ border: 'rgb(244 241 255 / 16%)',
410
+ navSeparator: 'rgb(244 241 255 / 28%)',
411
+ },
412
+ }),
413
+ }),
414
+ }),
72
415
  });
73
416
 
74
- export const getPresentationPalette = (paletteName = 'dark') => {
417
+ const implementedPaletteNames = Object.keys(presentationPalettes);
418
+ const missingPaletteNames = presentationPaletteNames.filter((name) => !implementedPaletteNames.includes(name));
419
+ const unexpectedPaletteNames = implementedPaletteNames.filter((name) => !presentationPaletteNames.includes(name));
420
+ if (missingPaletteNames.length > 0 || unexpectedPaletteNames.length > 0) {
421
+ throw new Error(`Palette metadata and implementations differ. Missing: ${missingPaletteNames.join(', ') || '(none)'}. Unexpected: ${unexpectedPaletteNames.join(', ') || '(none)'}.`);
422
+ }
423
+
424
+ for (const [paletteName, palette] of Object.entries(presentationPalettes)) {
425
+ for (const [modeName, mode] of Object.entries(palette.modes)) {
426
+ assertPaletteModeContract(paletteName, modeName, mode);
427
+ }
428
+ }
429
+
430
+ export const getPresentationPalette = (paletteName = 'near-monochrome') => {
75
431
  const palette = presentationPalettes[paletteName];
76
432
  if (!palette) {
77
433
  throw new Error(`Unknown presentation palette: ${paletteName}. Use one of: ${presentationPaletteNames.join(', ')}`);
@@ -81,19 +437,29 @@ export const getPresentationPalette = (paletteName = 'dark') => {
81
437
  };
82
438
 
83
439
  export const getPresentationCssVariables = (presentation) => {
84
- const { palette } = presentation;
85
- return {
86
- '--color-page': palette.page.backgroundColor,
87
- '--color-text': palette.page.textColor,
88
- '--color-surface': palette.css.surface,
89
- '--color-muted': palette.css.muted,
90
- '--color-soft': palette.css.soft,
91
- '--color-accent': palette.css.accent,
92
- '--color-border': palette.css.border,
93
- '--color-nav-background': palette.css.navBackground,
94
- '--color-nav-separator': palette.css.navSeparator,
95
- '--color-scheme': palette.colorScheme,
96
- };
440
+ const variables = {};
441
+ for (const [modeName, palette] of Object.entries(presentation.paletteModes)) {
442
+ const prefix = `--palette-${modeName}`;
443
+ variables[`${prefix}-page-background`] = palette.page.backgroundColor;
444
+ variables[`${prefix}-page-text`] = palette.page.textColor;
445
+ variables[`${prefix}-frame-background`] = palette.frame.backgroundColor;
446
+ variables[`${prefix}-frame-text`] = palette.frame.textColor;
447
+ for (const [surfaceName, surface] of Object.entries(palette.surfaces)) {
448
+ variables[`${prefix}-surface-${surfaceName}-background`] = surface.backgroundColor;
449
+ variables[`${prefix}-surface-${surfaceName}-text`] = surface.textColor;
450
+ variables[`${prefix}-surface-${surfaceName}-secondary-text`] = surface.secondaryTextColor;
451
+ }
452
+ for (const [name, value] of Object.entries(palette.css)) {
453
+ const cssName = name.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);
454
+ variables[`${prefix}-${cssName}`] = value;
455
+ }
456
+ for (const [name, value] of Object.entries(palette.semantic)) {
457
+ const cssName = name.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);
458
+ variables[`${prefix}-${cssName}`] = value;
459
+ }
460
+ }
461
+
462
+ return variables;
97
463
  };
98
464
 
99
465
  const getSectionSurfaces = (pattern = 'uniform', sourceLabel = 'theme.yaml') => {
@@ -107,24 +473,82 @@ const getSectionSurfaces = (pattern = 'uniform', sourceLabel = 'theme.yaml') =>
107
473
 
108
474
  export const resolveThemePresentation = (theme, sourceLabel = 'theme.yaml') => {
109
475
  const normalizedTheme = resolveThemeConfig(theme, sourceLabel);
110
- const paletteName = normalizedTheme.palette ?? 'dark';
476
+ const paletteName = normalizedTheme.palette ?? 'near-monochrome';
111
477
  const palette = getPresentationPalette(paletteName);
112
- const typography = resolveTypographyConfig(normalizedTheme.typography ?? defaultTypography);
478
+ const appearance = normalizedTheme.appearance ?? {};
479
+ const readerControls = normalizedTheme.readerControls ?? {};
480
+ const defaultAppearance = appearance.default ?? palette.defaultAppearance;
481
+ if (!appearanceNames.includes(defaultAppearance)) {
482
+ throw new Error(`appearance.default must be one of ${appearanceNames.join(', ')} in ${sourceLabel}.`);
483
+ }
484
+ const typography = resolveTypographyConfig(normalizedTheme.typography ?? defaultTypography, sourceLabel);
113
485
  const textWidth = normalizedTheme.layout?.textWidth;
114
486
  if (textWidth !== undefined) {
115
487
  typography.values.body.width = textWidth;
116
488
  }
489
+ assertTypographyContract(typography, sourceLabel);
117
490
 
118
491
  return {
119
492
  paletteName,
120
- palette,
493
+ palette: palette.modes[defaultAppearance === 'dark' ? 'dark' : 'light'],
494
+ paletteModes: palette.modes,
495
+ appearance: {
496
+ default: defaultAppearance,
497
+ },
498
+ readerPreferences: {
499
+ controls: {
500
+ appearance: readerControls.appearance === true,
501
+ readingWidth: true,
502
+ focusReading: readerControls.focusReading === true,
503
+ },
504
+ defaults: {
505
+ appearance: defaultAppearance,
506
+ readingWidth: textWidth === 'narrow' ? 'narrow' : textWidth === 'wide' ? 'wide' : 'standard',
507
+ focusReading: 'off',
508
+ },
509
+ },
510
+ blocks: {
511
+ cardList: {
512
+ width: normalizedTheme.blocks?.cardList?.width ?? 'normal',
513
+ },
514
+ },
121
515
  sectionSurfaces: getSectionSurfaces(normalizedTheme.sections?.backgroundPattern, sourceLabel),
122
516
  typography,
123
517
  };
124
518
  };
125
519
 
126
- export const resolvePagePresentation = (theme, sourceLabel) => {
520
+ export const assertSectionBackgroundPatternCompatibility = (
521
+ theme,
522
+ sourceLabel = 'theme.yaml',
523
+ navigationMode = 'sections',
524
+ ) => {
525
+ const requestedPattern = theme?.sections?.backgroundPattern;
526
+ if (navigationMode === 'tree' && requestedPattern !== undefined && requestedPattern !== 'uniform') {
527
+ throw new Error([
528
+ `sections.backgroundPattern "${requestedPattern}" cannot be used with tree navigation in ${sourceLabel}.`,
529
+ 'Tree navigation uses one uniform reading surface so the navigation rail and page content remain distinct.',
530
+ 'Remove sections.backgroundPattern or set it to uniform.',
531
+ ].join('\n'));
532
+ }
533
+ };
534
+
535
+ export const resolvePagePresentation = (theme, sourceLabel, { navigationMode = 'sections' } = {}) => {
536
+ assertSectionBackgroundPatternCompatibility(theme, sourceLabel, navigationMode);
537
+
127
538
  const resolvedThemePresentation = resolveThemePresentation(theme, sourceLabel);
539
+ if (navigationMode === 'tree') {
540
+ return {
541
+ ...resolvedThemePresentation,
542
+ readerPreferences: {
543
+ ...resolvedThemePresentation.readerPreferences,
544
+ controls: {
545
+ ...resolvedThemePresentation.readerPreferences.controls,
546
+ focusReading: true,
547
+ },
548
+ },
549
+ sectionSurfaces: getSectionSurfaces('uniform', sourceLabel),
550
+ };
551
+ }
128
552
 
129
553
  return resolvedThemePresentation;
130
554
  };
@@ -142,8 +566,13 @@ export const resolveSectionSurface = (pagePresentation, sectionIndex) => {
142
566
 
143
567
  return {
144
568
  name: surfaceName,
145
- ...pagePresentation.palette.surfaces[surfaceName],
569
+ backgroundColor: `var(--color-surface-${surfaceName}-background)`,
570
+ textColor: `var(--color-surface-${surfaceName}-text)`,
571
+ secondaryTextColor: `var(--color-surface-${surfaceName}-secondary-text)`,
146
572
  };
147
573
  };
148
574
 
149
- export const resolveFrameColors = ({ theme, sourceLabel }) => resolveThemePresentation(theme, sourceLabel).palette.frame;
575
+ export const resolveFrameColors = () => ({
576
+ backgroundColor: 'var(--color-frame-background)',
577
+ textColor: 'var(--color-frame-text)',
578
+ });