@janga/norna 0.7.10 → 0.7.12
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.
- package/README.md +120 -106
- package/bin/norna-cli.mjs +4 -1
- package/docs/README.md +107 -74
- package/docs/assets/norna-dog-shelter.jpg +0 -0
- package/docs/commands.md +13 -4
- package/docs/configuration.md +86 -184
- package/docs/content.md +14 -14
- package/docs/design/command-organization.md +1 -1
- package/docs/design/norna-diagram-design.md +2 -1
- package/docs/design/site-examples-structure.md +38 -24
- package/docs/engine-development.md +28 -15
- package/docs/getting-started.md +141 -124
- package/docs/how-to/embedded-site.md +35 -0
- package/docs/publishing.md +47 -46
- package/docs/requirements.md +54 -0
- package/docs/routes.md +3 -2
- package/docs/site-structure.md +12 -9
- package/docs/sitewide-content.md +2 -1
- package/docs/theme.md +104 -34
- package/docs/typography.md +32 -17
- package/examples/README.md +43 -0
- package/examples/{typography-presets → complete-sites/dog-shelter-multi-page}/.astro/collections/sitewide.schema.json +24 -0
- package/examples/{typography-presets → complete-sites/dog-shelter-multi-page}/.astro/collections/theme.schema.json +9 -24
- package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/.astro/content.d.ts +9 -1
- package/examples/complete-sites/dog-shelter-multi-page/.astro/data-store.json +1 -0
- package/examples/{typography-presets → complete-sites/dog-shelter-multi-page}/.astro/dev-local.json +2 -2
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.json +13 -0
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.log +26 -0
- package/examples/complete-sites/dog-shelter-multi-page/.astro/settings.json +5 -0
- package/examples/complete-sites/dog-shelter-multi-page/README.md +16 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/_metadata.json +74 -0
- package/examples/{typography-presets/node_modules/.vite/deps/astro-D_GIpJIE.js → complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-B3JHJyiv.js} +4 -4
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
- package/examples/{typography-presets → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/astro_n_aria-query.js +151 -151
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
- package/examples/{typography-presets → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/astro_n_axobject-query.js +131 -131
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
- package/examples/{typography-presets → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/astro_n_html-escaper.js +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
- package/examples/{typography-presets → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +10 -10
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
- package/examples/{typography-presets/node_modules/.vite/deps/audit-DM9Hkl5B.js → complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-C3SVr7dT.js} +10 -10
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-C3SVr7dT.js.map +1 -0
- package/examples/{typography-presets/node_modules/.vite/deps/highlight-DnZ1ULOL.js → complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-BLtvqtzO.js} +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
- package/examples/{typography-presets/node_modules/.vite/deps/icons-RyebKi45.js → complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-C92i61-2.js} +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
- package/examples/{typography-presets/node_modules/.vite/deps/settings-DaU-gNnK.js → complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-v5GgKks_.js} +2 -2
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-v5GgKks_.js.map +1 -0
- package/examples/{typography-presets/node_modules/.vite/deps/toolbar-63PA619H.js → complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-BFvJVp26.js} +2 -2
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +1 -0
- package/examples/{typography-presets/node_modules/.vite/deps/ui-library--bkcNSYz.js → complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js} +10 -10
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +1 -0
- package/examples/{typography-presets/node_modules/.vite/deps/window-jPkpKVcy.js → complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-vo3A6TMn.js} +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
- package/examples/{typography-presets/node_modules/.vite/deps/xray-BXCHpEJP.js → complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-DwhzGckb.js} +3 -3
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-DwhzGckb.js.map +1 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/.norna/generated-images.json +98 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/config.md +3 -0
- package/examples/{002-dog-shelter-multi-page → complete-sites/dog-shelter-multi-page}/site/content.md +12 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/public/logo.svg +9 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/route-content.md +22 -0
- package/examples/{002-dog-shelter-multi-page → complete-sites/dog-shelter-multi-page}/site/routes/020-adopt/route-content.md +11 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/sitewide-content.md +16 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/theme.md +3 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/site.schema.json +59 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/sitewide.schema.json +138 -0
- package/examples/{dog-gallery → complete-sites/dog-shelter-single-page}/.astro/collections/theme.schema.json +151 -68
- package/examples/complete-sites/dog-shelter-single-page/.astro/content.d.ts +183 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/data-store.json +1 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev.json +13 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev.log +14 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/settings.json +5 -0
- package/examples/complete-sites/dog-shelter-single-page/README.md +16 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/_metadata.json +74 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro-B3JHJyiv.js +434 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/audit-C3SVr7dT.js +1534 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/audit-C3SVr7dT.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/highlight-BLtvqtzO.js +48 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/icons-C92i61-2.js +42 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/settings-v5GgKks_.js +190 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/settings-v5GgKks_.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/toolbar-BFvJVp26.js +458 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js +1016 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/window-vo3A6TMn.js +32 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/xray-DwhzGckb.js +111 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/xray-DwhzGckb.js.map +1 -0
- package/examples/complete-sites/dog-shelter-single-page/site/.norna/generated-images.json +50 -0
- package/examples/complete-sites/dog-shelter-single-page/site/config.md +3 -0
- package/examples/complete-sites/dog-shelter-single-page/site/content.md +34 -0
- package/examples/complete-sites/dog-shelter-single-page/site/public/logo.svg +9 -0
- package/examples/complete-sites/dog-shelter-single-page/site/sitewide-content.md +16 -0
- package/examples/complete-sites/dog-shelter-single-page/site/theme.md +3 -0
- package/examples/feature-demos/media-and-surfaces/.astro/collections/site.schema.json +59 -0
- package/examples/feature-demos/media-and-surfaces/.astro/collections/sitewide.schema.json +138 -0
- package/examples/feature-demos/media-and-surfaces/.astro/collections/theme.schema.json +755 -0
- package/examples/feature-demos/media-and-surfaces/.astro/content-assets.mjs +4 -0
- package/examples/feature-demos/media-and-surfaces/.astro/content-modules.mjs +1 -0
- package/examples/feature-demos/media-and-surfaces/.astro/content.d.ts +183 -0
- package/examples/feature-demos/media-and-surfaces/.astro/data-store.json +1 -0
- package/examples/feature-demos/media-and-surfaces/.astro/dev.log +24 -0
- package/examples/feature-demos/media-and-surfaces/.astro/settings.json +5 -0
- package/examples/feature-demos/media-and-surfaces/.astro/types.d.ts +2 -0
- package/examples/feature-demos/media-and-surfaces/README.md +21 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/_metadata.json +80 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro-B3JHJyiv.js +434 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/audit-C3SVr7dT.js +1534 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/audit-C3SVr7dT.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/embla-carousel.js +1389 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/embla-carousel.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/highlight-BLtvqtzO.js +48 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/icons-C92i61-2.js +42 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/package.json +3 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/settings-v5GgKks_.js +190 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/settings-v5GgKks_.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/toolbar-BFvJVp26.js +458 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/ui-library-Cd35oAvo.js +1016 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/window-vo3A6TMn.js +32 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/xray-DwhzGckb.js +111 -0
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/xray-DwhzGckb.js.map +1 -0
- package/examples/{presentation → feature-demos/media-and-surfaces}/site/.norna/generated-images.json +16 -16
- package/examples/feature-demos/media-and-surfaces/site/config.md +4 -0
- package/examples/feature-demos/media-and-surfaces/site/content.md +18 -0
- package/examples/{presentation/site/routes/020-media → feature-demos/media-and-surfaces/site/routes/010-media}/route-content.md +17 -24
- package/examples/{presentation/site/routes/030-surfaces → feature-demos/media-and-surfaces/site/routes/020-surfaces}/route-content.md +1 -1
- package/examples/{presentation/site/routes/030-surfaces → feature-demos/media-and-surfaces/site/routes/020-surfaces}/theme.md +1 -0
- package/examples/feature-demos/media-and-surfaces/site/sitewide-content.md +6 -0
- package/examples/feature-demos/media-and-surfaces/site/theme.md +3 -0
- package/examples/feature-demos/sitewide-content/.astro/collections/site.schema.json +59 -0
- package/examples/feature-demos/sitewide-content/.astro/collections/sitewide.schema.json +138 -0
- package/examples/feature-demos/sitewide-content/.astro/collections/theme.schema.json +755 -0
- package/examples/feature-demos/sitewide-content/.astro/content-assets.mjs +1 -0
- package/examples/feature-demos/sitewide-content/.astro/content-modules.mjs +1 -0
- package/examples/feature-demos/sitewide-content/.astro/content.d.ts +183 -0
- package/examples/feature-demos/sitewide-content/.astro/data-store.json +1 -0
- package/examples/feature-demos/sitewide-content/.astro/dev.json +13 -0
- package/examples/feature-demos/sitewide-content/.astro/dev.log +18 -0
- package/examples/feature-demos/sitewide-content/.astro/settings.json +5 -0
- package/examples/feature-demos/sitewide-content/.astro/types.d.ts +2 -0
- package/examples/feature-demos/sitewide-content/README.md +18 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/_metadata.json +74 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro-B3JHJyiv.js +434 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro-B3JHJyiv.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/audit-C3SVr7dT.js +1534 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/audit-C3SVr7dT.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/highlight-BLtvqtzO.js +48 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/icons-C92i61-2.js +42 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/icons-C92i61-2.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/package.json +3 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/settings-v5GgKks_.js +190 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/settings-v5GgKks_.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/toolbar-BFvJVp26.js +458 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/ui-library-Cd35oAvo.js +1016 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/window-vo3A6TMn.js +32 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/window-vo3A6TMn.js.map +1 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/xray-DwhzGckb.js +111 -0
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/xray-DwhzGckb.js.map +1 -0
- package/examples/feature-demos/sitewide-content/site/.norna/generated-images.json +1 -0
- package/examples/feature-demos/sitewide-content/site/config.md +3 -0
- package/examples/feature-demos/sitewide-content/site/content.md +16 -0
- package/examples/feature-demos/sitewide-content/site/public/logo.svg +6 -0
- package/examples/feature-demos/sitewide-content/site/routes/010-identity/route-content.md +20 -0
- package/examples/feature-demos/sitewide-content/site/routes/020-notices/route-content.md +22 -0
- package/examples/feature-demos/sitewide-content/site/routes/030-footer/route-content.md +17 -0
- package/examples/feature-demos/sitewide-content/site/sitewide-content.md +33 -0
- package/examples/feature-demos/sitewide-content/site/theme.md +3 -0
- package/examples/feature-demos/theme-presets/.astro/collections/site.schema.json +59 -0
- package/examples/feature-demos/theme-presets/.astro/collections/sitewide.schema.json +138 -0
- package/examples/feature-demos/theme-presets/.astro/collections/theme.schema.json +755 -0
- package/examples/feature-demos/theme-presets/.astro/content-assets.mjs +4 -0
- package/examples/feature-demos/theme-presets/.astro/content-modules.mjs +1 -0
- package/examples/{typography-presets → feature-demos/theme-presets}/.astro/data-store.json +1 -1
- package/examples/feature-demos/theme-presets/.astro/dev-local.json +8 -0
- package/examples/{typography-presets → feature-demos/theme-presets}/.astro/dev.json +2 -2
- package/examples/feature-demos/theme-presets/.astro/dev.log +164 -0
- package/examples/feature-demos/theme-presets/.astro/types.d.ts +2 -0
- package/examples/feature-demos/theme-presets/README.md +18 -0
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/package.json +3 -0
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
- package/examples/{typography-presets → feature-demos/theme-presets}/site/.norna/generated-images.json +45 -45
- package/examples/feature-demos/theme-presets/site/config.md +3 -0
- package/examples/feature-demos/theme-presets/site/content.md +17 -0
- package/examples/feature-demos/theme-presets/site/routes/010-portfolio/images/portfolio/shepherd-portrait.jpg +0 -0
- package/examples/feature-demos/theme-presets/site/routes/010-portfolio/images/portfolio/white-puppy.jpg +0 -0
- package/examples/{typography-presets/site/routes/010-quiet-gallery → feature-demos/theme-presets/site/routes/010-portfolio}/route-content.md +8 -8
- package/examples/feature-demos/theme-presets/site/routes/010-portfolio/theme.md +3 -0
- package/examples/feature-demos/theme-presets/site/routes/020-documentation/images/documentation/retriever-portrait.jpg +0 -0
- package/examples/{typography-presets/site/routes/020-compact-gallery → feature-demos/theme-presets/site/routes/020-documentation}/route-content.md +8 -8
- package/examples/feature-demos/theme-presets/site/routes/020-documentation/theme.md +3 -0
- package/examples/feature-demos/theme-presets/site/routes/030-project/images/project/boxer-portrait.jpg +0 -0
- package/examples/feature-demos/theme-presets/site/routes/030-project/images/project/grass-puppy.jpg +0 -0
- package/examples/{typography-presets/site/routes/030-text-forward → feature-demos/theme-presets/site/routes/030-project}/route-content.md +8 -8
- package/examples/feature-demos/theme-presets/site/routes/030-project/theme.md +3 -0
- package/examples/feature-demos/theme-presets/site/routes/040-statement/images/statement/sheepdog-grass.jpg +0 -0
- package/examples/{typography-presets → feature-demos/theme-presets}/site/routes/040-statement/route-content.md +3 -3
- package/examples/feature-demos/theme-presets/site/routes/040-statement/theme.md +3 -0
- package/examples/{typography-presets → feature-demos/theme-presets}/site/sitewide-content.md +1 -1
- package/examples/feature-demos/theme-presets/site/theme.md +3 -0
- package/fixtures/basic/site/config.md +3 -0
- package/fixtures/content-model-v2/site/config.md +3 -0
- package/package.json +17 -8
- package/scripts/build-pages.mjs +69 -0
- package/scripts/check-config.mjs +3 -11
- package/scripts/deploy-site.mjs +12 -8
- package/scripts/export-theme-preset.mjs +31 -0
- package/scripts/init-site.mjs +1 -0
- package/scripts/lib/example-sites.mjs +37 -0
- package/scripts/lib/github-repository.mjs +44 -0
- package/scripts/lib/norna-markdown-blocks.mjs +97 -10
- package/scripts/lib/presentation.mjs +6 -5
- package/scripts/lib/project-config.mjs +114 -124
- package/scripts/lib/site-content.mjs +9 -2
- package/scripts/lib/site-paths.mjs +6 -2
- package/scripts/lib/theme-config.mjs +3 -0
- package/scripts/lib/theme-presets.mjs +209 -0
- package/scripts/show-typography.mjs +6 -5
- package/scripts/test-client-javascript.mjs +236 -0
- package/scripts/test-content-check.mjs +103 -0
- package/scripts/test-content-model-v2.mjs +9 -13
- package/scripts/test-documentation.mjs +116 -0
- package/scripts/test-engine-commands.mjs +13 -3
- package/scripts/test-examples.mjs +24 -0
- package/scripts/test-navigation.mjs +73 -45
- package/scripts/test-package-check.mjs +17 -9
- package/scripts/test-project-config.mjs +130 -0
- package/scripts/test-temporary-visibility.mjs +3 -10
- package/scripts/test-theme-presets.mjs +146 -0
- package/scripts/watch-pages-deploy.mjs +15 -11
- package/src/components/GalleryGrid.astro +30 -230
- package/src/components/ImageCarousel.astro +184 -0
- package/src/components/MobileSectionNavigationScript.astro +14 -0
- package/src/components/NornaSmoothScrollScript.astro +250 -0
- package/src/components/SiteNavigation.astro +58 -341
- package/src/components/SiteNotesScript.astro +43 -0
- package/src/components/SitePage.astro +6 -3
- package/src/components/SiteSection.astro +4 -47
- package/src/content.config.ts +2 -0
- package/src/layouts/BaseLayout.astro +1 -1
- package/src/lib/galleryImages.ts +53 -0
- package/src/styles/global.css +83 -1
- package/starters/basic/.github/workflows/deploy.yml +1 -2
- package/starters/basic/README.md +10 -8
- package/starters/basic/package.json +1 -0
- package/starters/basic/site/config.md +3 -0
- package/starters/project/.github/workflows/deploy.yml +1 -2
- package/starters/project/README.md +3 -4
- package/starters/project/package.json +1 -0
- package/starters/project/site/config.md +3 -0
- package/examples/001-dog-shelter-single-page/README.md +0 -9
- package/examples/001-dog-shelter-single-page/site/config.mjs +0 -27
- package/examples/001-dog-shelter-single-page/site/content.md +0 -38
- package/examples/001-dog-shelter-single-page/site/images/what-we-do/dog-house.svg +0 -25
- package/examples/001-dog-shelter-single-page/site/images/you-can-help/heart.svg +0 -13
- package/examples/001-dog-shelter-single-page/site/sitewide-content.md +0 -6
- package/examples/001-dog-shelter-single-page/site/theme.md +0 -25
- package/examples/002-dog-shelter-multi-page/README.md +0 -9
- package/examples/002-dog-shelter-multi-page/site/config.mjs +0 -27
- package/examples/002-dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rex.svg +0 -19
- package/examples/002-dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rover.svg +0 -19
- package/examples/002-dog-shelter-multi-page/site/routes/010-dogs/route-content.md +0 -30
- package/examples/002-dog-shelter-multi-page/site/sitewide-content.md +0 -6
- package/examples/002-dog-shelter-multi-page/site/theme.md +0 -25
- package/examples/dog-gallery/.astro/collections/site.schema.json +0 -776
- package/examples/dog-gallery/.astro/data-store.json +0 -1
- package/examples/dog-gallery/.astro/dev-local.json +0 -8
- package/examples/dog-gallery/.astro/dev.json +0 -13
- package/examples/dog-gallery/.astro/dev.log +0 -95
- package/examples/dog-gallery/.astro/settings.json +0 -5
- package/examples/dog-gallery/dist/_astro/GalleryGrid.astro_astro_type_script_index_0_lang.B0kxDyGz.js +0 -1
- package/examples/dog-gallery/dist/_astro/SitePage.DicGh_5N.css +0 -1
- package/examples/dog-gallery/dist/dog-care/index.html +0 -15
- package/examples/dog-gallery/dist/dog-shelter-logo.svg +0 -14
- package/examples/dog-gallery/dist/favicon.svg +0 -7
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1536.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-960.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1920.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-3939.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1920.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-2400.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1600.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1920.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-2576.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-1277.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1536.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-768.webp +0 -0
- package/examples/dog-gallery/dist/index.html +0 -45
- package/examples/dog-gallery/node_modules/.vite/deps/_metadata.json +0 -74
- package/examples/dog-gallery/site/.norna/generated-images.json +0 -226
- package/examples/dog-gallery/site/config.mjs +0 -47
- package/examples/dog-gallery/site/content.md +0 -127
- package/examples/dog-gallery/site/images/black-dogs/black-puppy-meadow.png +0 -0
- package/examples/dog-gallery/site/images/black-dogs/photo-of-a-black-dog.jpg +0 -0
- package/examples/dog-gallery/site/images/brown-dogs/brown-dog.jpg +0 -0
- package/examples/dog-gallery/site/images/brown-dogs/dog-accompanies-master.jpg +0 -0
- package/examples/dog-gallery/site/images/golden-dogs/golden-retriever.jpg +0 -0
- package/examples/dog-gallery/site/images/golden-dogs/toller-puppy.jpg +0 -0
- package/examples/dog-gallery/site/images/white-dogs/white-cute-dog.jpg +0 -0
- package/examples/dog-gallery/site/images/white-dogs/white-puppy-garden.png +0 -0
- package/examples/dog-gallery/site/public/favicon.svg +0 -7
- package/examples/dog-gallery/site/public/logo.svg +0 -14
- package/examples/dog-gallery/site/routes/010-dog-care/route-content.md +0 -38
- package/examples/dog-gallery/site/sitewide-content.md +0 -16
- package/examples/dog-gallery/site/theme.md +0 -101
- package/examples/presentation/README.md +0 -15
- package/examples/presentation/site/config.mjs +0 -29
- package/examples/presentation/site/content.md +0 -67
- package/examples/presentation/site/public/robots.txt +0 -2
- package/examples/presentation/site/routes/010-presets/route-content.md +0 -63
- package/examples/presentation/site/routes/010-presets/theme.md +0 -4
- package/examples/presentation/site/routes/020-media/theme.md +0 -4
- package/examples/presentation/site/sitewide-content.md +0 -6
- package/examples/presentation/site/theme.md +0 -43
- package/examples/typography-presets/.astro/dev.log +0 -45
- package/examples/typography-presets/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -1
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
- package/examples/typography-presets/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
- package/examples/typography-presets/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -1
- package/examples/typography-presets/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -1
- package/examples/typography-presets/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -1
- package/examples/typography-presets/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -1
- package/examples/typography-presets/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -1
- package/examples/typography-presets/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -1
- package/examples/typography-presets/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -1
- package/examples/typography-presets/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -1
- package/examples/typography-presets/site/config.mjs +0 -29
- package/examples/typography-presets/site/content.md +0 -16
- package/examples/typography-presets/site/routes/010-quiet-gallery/theme.md +0 -4
- package/examples/typography-presets/site/routes/020-compact-gallery/theme.md +0 -4
- package/examples/typography-presets/site/routes/030-text-forward/theme.md +0 -4
- package/examples/typography-presets/site/routes/040-statement/theme.md +0 -4
- package/examples/typography-presets/site/theme.md +0 -43
- package/fixtures/basic/site/config.mjs +0 -27
- package/fixtures/content-model-v2/site/config.mjs +0 -11
- package/starters/basic/site/config.mjs +0 -27
- package/starters/project/site/config.mjs +0 -30
- /package/examples/{typography-presets → complete-sites/dog-shelter-multi-page}/.astro/collections/site.schema.json +0 -0
- /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/.astro/content-assets.mjs +0 -0
- /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/.astro/content-modules.mjs +0 -0
- /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/.astro/types.d.ts +0 -0
- /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/package.json +0 -0
- /package/examples/{dog-gallery → complete-sites/dog-shelter-multi-page}/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -0
- /package/examples/{typography-presets/site/routes/020-compact-gallery/images/compact-gallery/retriever-portrait.jpg → complete-sites/dog-shelter-multi-page/site/images/intro/shelter-dog.jpg} +0 -0
- /package/examples/{001-dog-shelter-single-page → complete-sites/dog-shelter-multi-page}/site/public/favicon.svg +0 -0
- /package/examples/{001-dog-shelter-single-page → complete-sites/dog-shelter-multi-page}/site/public/robots.txt +0 -0
- /package/examples/{typography-presets/site/routes/010-quiet-gallery/images/quiet-gallery/white-puppy.jpg → complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rex.jpg} +0 -0
- /package/examples/{typography-presets/site/routes/030-text-forward/images/text-forward/boxer-portrait.jpg → complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rover.jpg} +0 -0
- /package/examples/{typography-presets/site/routes/040-statement/images/statement/sheepdog-grass.jpg → complete-sites/dog-shelter-multi-page/site/routes/020-adopt/images/adopt/adoption-dog.jpg} +0 -0
- /package/examples/{typography-presets → complete-sites/dog-shelter-single-page}/.astro/content-assets.mjs +0 -0
- /package/examples/{typography-presets → complete-sites/dog-shelter-single-page}/.astro/content-modules.mjs +0 -0
- /package/examples/{typography-presets → complete-sites/dog-shelter-single-page}/.astro/types.d.ts +0 -0
- /package/examples/{typography-presets → complete-sites/dog-shelter-single-page}/node_modules/.vite/deps/package.json +0 -0
- /package/examples/{typography-presets → complete-sites/dog-shelter-single-page}/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -0
- /package/examples/{typography-presets/site/routes/030-text-forward/images/text-forward/grass-puppy.jpg → complete-sites/dog-shelter-single-page/site/images/what-we-do/rescue-dog.jpg} +0 -0
- /package/examples/{typography-presets/site/routes/010-quiet-gallery/images/quiet-gallery/shepherd-portrait.jpg → complete-sites/dog-shelter-single-page/site/images/you-can-help/foster-dog.jpg} +0 -0
- /package/examples/{002-dog-shelter-multi-page → complete-sites/dog-shelter-single-page}/site/public/favicon.svg +0 -0
- /package/examples/{002-dog-shelter-multi-page → complete-sites/dog-shelter-single-page}/site/public/robots.txt +0 -0
- /package/examples/{dog-gallery/dist → feature-demos/media-and-surfaces/site/public}/robots.txt +0 -0
- /package/examples/{presentation/site/routes/020-media → feature-demos/media-and-surfaces/site/routes/010-media}/images/cards/card-carousel.svg +0 -0
- /package/examples/{presentation/site/routes/020-media → feature-demos/media-and-surfaces/site/routes/010-media}/images/cards/card-stack.svg +0 -0
- /package/examples/{presentation/site/routes/020-media → feature-demos/media-and-surfaces/site/routes/010-media}/images/cards/card-surfaces.svg +0 -0
- /package/examples/{presentation/site/routes/020-media → feature-demos/media-and-surfaces/site/routes/010-media}/images/carousel/carousel-one.svg +0 -0
- /package/examples/{presentation/site/routes/020-media → feature-demos/media-and-surfaces/site/routes/010-media}/images/carousel/carousel-three.svg +0 -0
- /package/examples/{presentation/site/routes/020-media → feature-demos/media-and-surfaces/site/routes/010-media}/images/carousel/carousel-two.svg +0 -0
- /package/examples/{presentation/site/routes/020-media → feature-demos/media-and-surfaces/site/routes/010-media}/images/stack/stack-one.svg +0 -0
- /package/examples/{presentation/site/routes/020-media → feature-demos/media-and-surfaces/site/routes/010-media}/images/stack/stack-two.svg +0 -0
- /package/examples/{dog-gallery → feature-demos/sitewide-content}/site/public/robots.txt +0 -0
- /package/examples/{typography-presets → feature-demos/theme-presets}/.astro/collections/routeTheme.schema.json +0 -0
- /package/examples/{typography-presets → feature-demos/theme-presets}/.astro/content.d.ts +0 -0
- /package/examples/{typography-presets → feature-demos/theme-presets}/.astro/settings.json +0 -0
- /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/_metadata.json +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/astro-D_GIpJIE.js +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/astro_n_aria-query.js +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/astro_n_axobject-query.js +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/astro_n_html-escaper.js +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/audit-DM9Hkl5B.js +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -0
- /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/embla-carousel.js +0 -0
- /package/examples/{typography-presets → feature-demos/theme-presets}/node_modules/.vite/deps/embla-carousel.js.map +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/highlight-DnZ1ULOL.js +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/icons-RyebKi45.js +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/settings-DaU-gNnK.js +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/toolbar-63PA619H.js +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/ui-library--bkcNSYz.js +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/window-jPkpKVcy.js +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/xray-BXCHpEJP.js +0 -0
- /package/examples/{dog-gallery → feature-demos/theme-presets}/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -0
- /package/examples/{typography-presets → feature-demos/theme-presets}/site/public/robots.txt +0 -0
- /package/examples/{typography-presets/site/routes/010-quiet-gallery/images/quiet-gallery → feature-demos/theme-presets/site/routes/010-portfolio/images/portfolio}/puppy-portrait.jpg +0 -0
- /package/examples/{typography-presets/site/routes/020-compact-gallery/images/compact-gallery → feature-demos/theme-presets/site/routes/020-documentation/images/documentation}/black-schnauzer.jpg +0 -0
- /package/examples/{typography-presets/site/routes/020-compact-gallery/images/compact-gallery → feature-demos/theme-presets/site/routes/020-documentation/images/documentation}/schnauzer-portrait.jpg +0 -0
- /package/examples/{typography-presets/site/routes/030-text-forward/images/text-forward → feature-demos/theme-presets/site/routes/030-project/images/project}/grey-street-dog.jpg +0 -0
- /package/examples/{typography-presets → feature-demos/theme-presets}/site/routes/040-statement/images/statement/black-pedigree.jpg +0 -0
- /package/examples/{typography-presets → feature-demos/theme-presets}/site/routes/040-statement/images/statement/sheepdog-wide.jpg +0 -0
package/docs/configuration.md
CHANGED
|
@@ -1,223 +1,125 @@
|
|
|
1
1
|
# Configuration
|
|
2
2
|
|
|
3
|
-
Technical site configuration lives in the selected site's `config.
|
|
4
|
-
default that is `site/config.
|
|
3
|
+
Technical site configuration lives in the selected site's `config.md`; by
|
|
4
|
+
default that is `site/config.md`. The file contains YAML frontmatter only.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
the current values for any one site.
|
|
6
|
+
A normal configuration needs only the public URL:
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
```yaml
|
|
9
|
+
---
|
|
10
|
+
url: https://example.com/
|
|
11
|
+
---
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Norna deliberately keeps this file small. Visual choices belong in
|
|
15
|
+
`theme.md`; shared identity, banners and footer content belong in
|
|
16
|
+
`sitewide-content.md`.
|
|
10
17
|
|
|
11
|
-
|
|
18
|
+
## `url`
|
|
12
19
|
|
|
13
|
-
- Purpose: canonical public URL
|
|
14
|
-
|
|
15
|
-
- Type: string.
|
|
20
|
+
- Purpose: canonical public URL and the source of the site's deployment path.
|
|
21
|
+
- Type: absolute `http` or `https` URL.
|
|
16
22
|
- Required: yes.
|
|
17
23
|
- Default: none.
|
|
18
|
-
-
|
|
19
|
-
- Consequence: wrong values render a wrong canonical URL and make deploy
|
|
20
|
-
output point at the wrong site. For GitHub Pages project sites, include the
|
|
21
|
-
repository path in the URL, for example `https://owner.github.io/repo-name/`.
|
|
22
|
-
|
|
23
|
-
Example:
|
|
24
|
+
- Restrictions: no query string or fragment.
|
|
24
25
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### `site.basePath`
|
|
26
|
+
Norna adds a trailing slash when it is omitted. The URL pathname becomes the
|
|
27
|
+
base path for generated links, favicons and managed images, so there is no
|
|
28
|
+
separate `basePath` setting.
|
|
32
29
|
|
|
33
|
-
-
|
|
34
|
-
generated image URLs, and root-relative links or images written in Markdown.
|
|
35
|
-
- Type: string URL path.
|
|
36
|
-
- Required: no.
|
|
37
|
-
- Default: `/`.
|
|
38
|
-
- Validation: must start and end with `/` and must not contain whitespace,
|
|
39
|
-
`?`, `#`, or `//`.
|
|
40
|
-
- Consequence: use `/` for a root site or custom domain. Use
|
|
41
|
-
`/repository-name/` for a GitHub Pages project site without a custom domain.
|
|
42
|
-
Source Markdown can still use root-relative paths such as `/favicon.svg` or
|
|
43
|
-
`/getting-started/`; Norna prefixes them during rendering.
|
|
44
|
-
|
|
45
|
-
Examples:
|
|
46
|
-
|
|
47
|
-
```js
|
|
48
|
-
site: {
|
|
49
|
-
url: 'https://example.com/',
|
|
50
|
-
basePath: '/',
|
|
51
|
-
}
|
|
52
|
-
```
|
|
30
|
+
Root-hosted site or custom domain:
|
|
53
31
|
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
32
|
+
```yaml
|
|
33
|
+
---
|
|
34
|
+
url: https://example.com/
|
|
35
|
+
---
|
|
59
36
|
```
|
|
60
37
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
Visual configuration lives in `site/theme.md`, not `site/config.mjs`.
|
|
64
|
-
|
|
65
|
-
Use [Theme](theme.md) for:
|
|
66
|
-
|
|
67
|
-
- `layout.pageWidth`
|
|
68
|
-
- `layout.gutter`
|
|
69
|
-
- `layout.density`
|
|
70
|
-
- `gallery.width`
|
|
71
|
-
- `gallery.maxAvailableWidthPercent`
|
|
72
|
-
- `gallery.maxAvailableHeightPercent`
|
|
73
|
-
- `typography.fontFamily`
|
|
74
|
-
- typography presets, rhythm, and overrides
|
|
75
|
-
- presentation palettes and section surfaces
|
|
76
|
-
|
|
77
|
-
## Navigation
|
|
78
|
-
|
|
79
|
-
### `navigation.smoothScroll`
|
|
80
|
-
|
|
81
|
-
- Purpose: controls enhanced same-page anchor navigation and native
|
|
82
|
-
`scroll-behavior`.
|
|
83
|
-
- Type: object.
|
|
84
|
-
- Required: no; omitted fields use defaults.
|
|
85
|
-
|
|
86
|
-
Fields:
|
|
87
|
-
|
|
88
|
-
- `navigation.smoothScroll.enabled`: boolean, default `true`.
|
|
89
|
-
- `navigation.smoothScroll.minimumDurationMs`: positive integer, default
|
|
90
|
-
`2000`.
|
|
91
|
-
- `navigation.smoothScroll.maximumDurationMs`: positive integer, default
|
|
92
|
-
`4000`; must be greater than or equal to `minimumDurationMs`.
|
|
93
|
-
- `navigation.smoothScroll.durationPerPixelMs`: positive number, default
|
|
94
|
-
`0.22`.
|
|
38
|
+
GitHub Pages project site:
|
|
95
39
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
Example:
|
|
101
|
-
|
|
102
|
-
```js
|
|
103
|
-
navigation: {
|
|
104
|
-
smoothScroll: {
|
|
105
|
-
enabled: true,
|
|
106
|
-
minimumDurationMs: 600,
|
|
107
|
-
maximumDurationMs: 1_200,
|
|
108
|
-
durationPerPixelMs: 0.2,
|
|
109
|
-
},
|
|
110
|
-
}
|
|
40
|
+
```yaml
|
|
41
|
+
---
|
|
42
|
+
url: https://owner.github.io/repository-name/
|
|
43
|
+
---
|
|
111
44
|
```
|
|
112
45
|
|
|
113
|
-
|
|
46
|
+
In the second example, Norna derives `/repository-name/` as the base path.
|
|
47
|
+
Root-relative links written in Markdown are prefixed when rendered.
|
|
114
48
|
|
|
115
|
-
|
|
49
|
+
## `language`
|
|
116
50
|
|
|
117
|
-
- Purpose: language tag rendered on the root `<html lang="...">` element
|
|
118
|
-
|
|
51
|
+
- Purpose: language tag rendered on the root `<html lang="...">` element and
|
|
52
|
+
selection of Norna's built-in interface text.
|
|
53
|
+
- Type: language tag such as `en`, `en-GB`, `sv` or `sv-SE`.
|
|
119
54
|
- Required: no.
|
|
120
55
|
- Default: `en`.
|
|
121
|
-
- Validation: two or three letters, optionally followed by `-` separated
|
|
122
|
-
subtags.
|
|
123
|
-
- Consequence: screen readers, browsers, and search engines use this to
|
|
124
|
-
interpret the page language.
|
|
125
|
-
|
|
126
|
-
### `locale.labels`
|
|
127
|
-
|
|
128
|
-
- Purpose: site-wide UI labels rendered by the engine for non-editorial
|
|
129
|
-
interface text.
|
|
130
|
-
- Type: object.
|
|
131
|
-
- Required: no; omitted labels use English defaults.
|
|
132
|
-
|
|
133
|
-
Fields:
|
|
134
|
-
|
|
135
|
-
- `locale.labels.skipToContent`: skip-link text, default `Skip to content`.
|
|
136
|
-
- `locale.labels.siteNavigation`: site-level navigation ARIA label and mobile
|
|
137
|
-
menu group heading, default `Pages`.
|
|
138
|
-
- `locale.labels.pageNavigation`: current-page section navigation ARIA label and
|
|
139
|
-
mobile menu group heading, default `On this page`.
|
|
140
|
-
- `locale.labels.sectionNavigation`: legacy section navigation label, default
|
|
141
|
-
`Sections`.
|
|
142
|
-
- `locale.labels.menu`: mobile menu summary text, default `Menu`.
|
|
143
|
-
- `locale.labels.closeMenu`: reserved close-menu label, default `Close menu`.
|
|
144
|
-
- `locale.labels.dismissBanner`: banner dismissal button label, default
|
|
145
|
-
`Dismiss notice`.
|
|
146
|
-
- `locale.labels.siteBanners`: ARIA label for the banner stack, default
|
|
147
|
-
`Site notices`.
|
|
148
|
-
- `locale.labels.gallery`: Norna managed media ARIA label prefix, default
|
|
149
|
-
`Images`.
|
|
150
|
-
|
|
151
|
-
Example:
|
|
152
56
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
skipToContent: 'Hoppa till innehåll',
|
|
158
|
-
siteNavigation: 'Sidor',
|
|
159
|
-
pageNavigation: 'På denna sida',
|
|
160
|
-
sectionNavigation: 'Sektioner',
|
|
161
|
-
menu: 'Meny',
|
|
162
|
-
gallery: 'Bilder',
|
|
163
|
-
},
|
|
164
|
-
}
|
|
165
|
-
```
|
|
57
|
+
Norna currently includes interface text for English and Swedish. Regional tags
|
|
58
|
+
use the language identified by their primary subtag. An unsupported language is
|
|
59
|
+
an error because silently rendering English controls on another-language pages
|
|
60
|
+
would be misleading.
|
|
166
61
|
|
|
167
|
-
|
|
62
|
+
Interface labels are part of the engine and are not configured individually.
|
|
63
|
+
Editorial text remains in `content.md`, route content files and
|
|
64
|
+
`sitewide-content.md`.
|
|
168
65
|
|
|
169
|
-
|
|
170
|
-
`site/sitewide-content.md`. See [Sitewide Content](sitewide-content.md) for the
|
|
171
|
-
schema and examples.
|
|
66
|
+
## `smoothScroll`
|
|
172
67
|
|
|
173
|
-
|
|
68
|
+
- Purpose: enables smooth same-page anchor movement.
|
|
69
|
+
- Type: boolean.
|
|
70
|
+
- Required: no.
|
|
71
|
+
- Default: `false`.
|
|
174
72
|
|
|
175
|
-
|
|
73
|
+
Example:
|
|
176
74
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
75
|
+
```yaml
|
|
76
|
+
---
|
|
77
|
+
url: https://example.com/
|
|
78
|
+
smoothScroll: true
|
|
79
|
+
---
|
|
80
|
+
```
|
|
182
81
|
|
|
183
|
-
|
|
82
|
+
Norna uses the browser's native CSS scrolling behavior rather than a scripted
|
|
83
|
+
animation. Visitors whose system requests reduced motion always get immediate
|
|
84
|
+
anchor movement.
|
|
184
85
|
|
|
185
|
-
|
|
186
|
-
`deploy:watch`.
|
|
187
|
-
- Type: string.
|
|
188
|
-
- Required: yes.
|
|
189
|
-
- Default: none.
|
|
190
|
-
- Validation: non-empty string.
|
|
86
|
+
## Complete Example
|
|
191
87
|
|
|
192
|
-
|
|
88
|
+
```yaml
|
|
89
|
+
---
|
|
90
|
+
url: https://example.com/
|
|
91
|
+
language: en
|
|
92
|
+
smoothScroll: false
|
|
93
|
+
---
|
|
94
|
+
```
|
|
193
95
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
- Type: string.
|
|
197
|
-
- Required: yes.
|
|
198
|
-
- Default: none.
|
|
199
|
-
- Validation: non-empty string.
|
|
96
|
+
Do not add Markdown below the closing `---`; `config.md` is frontmatter-only.
|
|
97
|
+
Run `npm run norna:config:check` after changing it.
|
|
200
98
|
|
|
201
|
-
##
|
|
99
|
+
## Related Files
|
|
202
100
|
|
|
203
|
-
|
|
101
|
+
- [`theme.md`](theme.md) selects a complete presentation preset and optional
|
|
102
|
+
focused overrides.
|
|
103
|
+
- [`sitewide-content.md`](sitewide-content.md) contains shared identity,
|
|
104
|
+
banners and footer content.
|
|
105
|
+
- [`content.md`](content.md) and route content files contain page content.
|
|
204
106
|
|
|
205
|
-
|
|
206
|
-
- Type: object.
|
|
207
|
-
- Required: no; omitted fields use defaults.
|
|
107
|
+
## Publishing Discovery
|
|
208
108
|
|
|
209
|
-
|
|
109
|
+
GitHub repository, default branch and deploy workflow are not site
|
|
110
|
+
configuration fields.
|
|
210
111
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
112
|
+
`norna deploy` discovers the current GitHub repository and its default branch
|
|
113
|
+
through the authenticated GitHub CLI. Norna's included workflow file is
|
|
114
|
+
`.github/workflows/deploy.yml`. `deploy:watch` accepts command-line overrides
|
|
115
|
+
such as `--repo`, `--branch`, `--workflow`, `--interval`, `--timeout` and
|
|
116
|
+
`--limit` when a one-off run needs different values.
|
|
214
117
|
|
|
215
|
-
|
|
216
|
-
override these values for one run.
|
|
118
|
+
See [Publishing](publishing.md) for the complete workflow.
|
|
217
119
|
|
|
218
120
|
## Site Directory Selection
|
|
219
121
|
|
|
220
|
-
The site directory is not configured in `config.
|
|
122
|
+
The site directory is not configured in `config.md`.
|
|
221
123
|
|
|
222
124
|
Use one of:
|
|
223
125
|
|
|
@@ -228,9 +130,9 @@ norna --site-dir my-site build
|
|
|
228
130
|
|
|
229
131
|
If `NORNA_SITE_DIR` is set to an empty value, commands fail. Relative site
|
|
230
132
|
directories are resolved by walking upward from the invocation root until the
|
|
231
|
-
selected directory contains `config.
|
|
133
|
+
selected directory contains `config.md` and `content.md`. Absolute site
|
|
232
134
|
directories are accepted and make their parent the site project root.
|
|
233
135
|
|
|
234
|
-
When no site directory is explicitly selected, the current directory itself
|
|
235
|
-
be the site directory if it contains `config.
|
|
136
|
+
When no site directory is explicitly selected, the current directory itself
|
|
137
|
+
can be the site directory if it contains `config.md` and `content.md`. If not,
|
|
236
138
|
Norna walks upward looking for a default `site/` directory with those files.
|
package/docs/content.md
CHANGED
|
@@ -269,14 +269,16 @@ NORNA_TODAY=2026-08-15 npm run norna:build
|
|
|
269
269
|
|
|
270
270
|
## Markdown Text
|
|
271
271
|
|
|
272
|
-
|
|
272
|
+
Use ordinary Markdown for emphasis and structure:
|
|
273
273
|
|
|
274
274
|
```md
|
|
275
|
-
This sentence contains
|
|
275
|
+
This sentence contains **important text** and *emphasised text*.
|
|
276
276
|
```
|
|
277
277
|
|
|
278
|
-
|
|
279
|
-
[
|
|
278
|
+
Norna intentionally does not support arbitrary inline color or style classes.
|
|
279
|
+
Deprecated syntax such as `[highlighted text]{.yellow}` is rejected by
|
|
280
|
+
`content:check`. Keep the route visually coherent through its `theme.md`
|
|
281
|
+
instead of styling individual phrases.
|
|
280
282
|
|
|
281
283
|
## Validation And Sync
|
|
282
284
|
|
|
@@ -288,27 +290,25 @@ npm run norna:content:check
|
|
|
288
290
|
|
|
289
291
|
This checks section heading ids, section metadata, duplicate image names,
|
|
290
292
|
missing image files, misplaced referenced images, duplicate image references,
|
|
291
|
-
invalid managed media blocks, unreferenced images,
|
|
293
|
+
invalid managed media blocks, unreferenced images, removed inline style syntax,
|
|
292
294
|
Markdown image references to unmanaged local files, and common frontmatter
|
|
293
295
|
indentation and structure mistakes.
|
|
294
296
|
|
|
295
297
|
Frontmatter uses YAML indentation. Use ordinary spaces, not tabs or
|
|
296
298
|
non-breaking spaces. `content:check` reports a focused error when indentation is
|
|
297
299
|
invalid, when a key is indented under a line that already has a value, or when a
|
|
298
|
-
known nested key
|
|
299
|
-
level:
|
|
300
|
+
known nested key appears at the top level:
|
|
300
301
|
|
|
301
302
|
```yaml
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
body:
|
|
307
|
-
paragraphSpacing: 0.8em
|
|
303
|
+
sections:
|
|
304
|
+
intro:
|
|
305
|
+
visible:
|
|
306
|
+
from: "2026-08-01"
|
|
308
307
|
```
|
|
309
308
|
|
|
310
309
|
Top-level page frontmatter may contain only `title`, `description`,
|
|
311
|
-
`navigation`,
|
|
310
|
+
`navigation`, and `sections`. Visual settings belong in the root or route-local
|
|
311
|
+
`theme.md`.
|
|
312
312
|
|
|
313
313
|
Run:
|
|
314
314
|
|
|
@@ -295,7 +295,7 @@ Messages emitted by the engine should mention the direct CLI command and the
|
|
|
295
295
|
starter-style npm wrapper when suggesting a fix.
|
|
296
296
|
|
|
297
297
|
Configuration edits are normally manual edits to the selected site
|
|
298
|
-
`config.
|
|
298
|
+
`config.md`, followed by:
|
|
299
299
|
|
|
300
300
|
```sh
|
|
301
301
|
npm run norna:config:check
|
|
@@ -78,7 +78,8 @@ Diagrams must match the current Norna model:
|
|
|
78
78
|
- Norna managed media blocks cover fixed site patterns such as image stacks,
|
|
79
79
|
carousels, and card lists.
|
|
80
80
|
- `theme.md` controls visual presentation.
|
|
81
|
-
- `config.
|
|
81
|
+
- `config.md` controls the public URL and optional language and smooth
|
|
82
|
+
scrolling.
|
|
82
83
|
- `dist/` is generated static output.
|
|
83
84
|
- GitHub Pages is the integrated publishing target today.
|
|
84
85
|
|
|
@@ -10,7 +10,8 @@ files are product documentation, which files are examples, and which files are
|
|
|
10
10
|
test fixtures.
|
|
11
11
|
|
|
12
12
|
The repository grew from one local demo, one starter, and a set of tests. The
|
|
13
|
-
current structure keeps those roles
|
|
13
|
+
current structure keeps those roles distinct while allowing runnable examples
|
|
14
|
+
to serve as documentation and realistic integration tests.
|
|
14
15
|
|
|
15
16
|
## Terms
|
|
16
17
|
|
|
@@ -26,8 +27,8 @@ site repository. It should not be a showcase for every feature.
|
|
|
26
27
|
An example site is a runnable site that demonstrates one or more features.
|
|
27
28
|
|
|
28
29
|
Examples can be richer than the starter. They may show routes, navigation,
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
complete theme presets, image stacks, image carousels, cards, notes, surfaces,
|
|
31
|
+
and site-specific configuration choices.
|
|
31
32
|
|
|
32
33
|
### Documentation Site
|
|
33
34
|
|
|
@@ -54,26 +55,40 @@ A fixture is test data.
|
|
|
54
55
|
It should be minimal, stable, and optimized for regression tests rather than
|
|
55
56
|
for human reading or visual appeal.
|
|
56
57
|
|
|
57
|
-
##
|
|
58
|
+
## Repository Structure
|
|
58
59
|
|
|
59
60
|
Runnable site examples are collected under `examples/`:
|
|
60
61
|
|
|
61
62
|
```text
|
|
62
63
|
examples/
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
complete-sites/
|
|
65
|
+
dog-shelter-single-page/
|
|
66
|
+
dog-shelter-multi-page/
|
|
67
|
+
feature-demos/
|
|
68
|
+
theme-presets/
|
|
69
|
+
media-and-surfaces/
|
|
70
|
+
sitewide-content/
|
|
66
71
|
```
|
|
67
72
|
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
`complete-sites/` contains coherent sites that show how Norna files work
|
|
74
|
+
together in a realistic project:
|
|
70
75
|
|
|
71
|
-
- `dog-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
76
|
+
- `dog-shelter-single-page/`: sections and managed images without routes.
|
|
77
|
+
- `dog-shelter-multi-page/`: ordered routes with route-local content and
|
|
78
|
+
images.
|
|
79
|
+
|
|
80
|
+
`feature-demos/` contains focused visual test benches:
|
|
81
|
+
|
|
82
|
+
- `theme-presets/`: one route per complete built-in theme preset, without
|
|
83
|
+
overrides.
|
|
84
|
+
- `media-and-surfaces/`: managed media blocks, notes, palettes and section
|
|
85
|
+
surfaces. This is also the broad demo-build and navigation-test target.
|
|
86
|
+
- `sitewide-content/`: convention-based identity, navigation, banner stacks,
|
|
87
|
+
dismissal and footer content shared across routes.
|
|
88
|
+
|
|
89
|
+
The repository Pages workflow builds all examples and publishes them
|
|
90
|
+
under `/norna/examples/`. The HTML documentation links to those rendered sites
|
|
91
|
+
from its Examples route.
|
|
77
92
|
|
|
78
93
|
The repository-local `site/` directory is reserved for the documentation site.
|
|
79
94
|
`docs/` should remain for reference documentation. It should link to the
|
|
@@ -82,8 +97,8 @@ documentation site when visual explanation is more useful than reference text.
|
|
|
82
97
|
`starters/basic/` stays separate from examples because it is copied by
|
|
83
98
|
`norna init`. It should stay small and conservative.
|
|
84
99
|
|
|
85
|
-
Fixtures
|
|
86
|
-
|
|
100
|
+
Fixtures stay under `fixtures/`. They are intentionally smaller and more stable
|
|
101
|
+
than examples and should not be confused with user-facing sites.
|
|
87
102
|
|
|
88
103
|
## Constraints
|
|
89
104
|
|
|
@@ -91,11 +106,10 @@ area later. They should not be confused with examples.
|
|
|
91
106
|
- Do not make the documentation site the only documentation.
|
|
92
107
|
- Do not let examples become required input for production site repositories.
|
|
93
108
|
- Keep `norna init` deterministic and easy to test.
|
|
94
|
-
-
|
|
95
|
-
|
|
96
|
-
|
|
109
|
+
- Use examples for build, navigation and visual integration tests where the
|
|
110
|
+
user-facing site is the behavior being protected.
|
|
111
|
+
- Use fixtures for isolated edge cases, invalid input and narrowly scoped
|
|
112
|
+
engine regressions.
|
|
97
113
|
|
|
98
|
-
-
|
|
99
|
-
|
|
100
|
-
- How local example selection should work when there are multiple runnable
|
|
101
|
-
examples.
|
|
114
|
+
The repository-local `site/` remains the product documentation site and is not
|
|
115
|
+
an example or fixture.
|
|
@@ -7,7 +7,8 @@ This document is for work on the reusable `norna` package itself.
|
|
|
7
7
|
- `bin/norna.mjs`: public CLI launcher and local-version resolver.
|
|
8
8
|
- `bin/norna-cli.mjs`: public CLI command dispatcher.
|
|
9
9
|
- `scripts/lib/site-paths.mjs`: engine/site path resolution.
|
|
10
|
-
- `scripts/lib/project-config.mjs`: `site/config.
|
|
10
|
+
- `scripts/lib/project-config.mjs`: frontmatter-only `site/config.md`
|
|
11
|
+
validation, defaults and derived URL path.
|
|
11
12
|
- `scripts/sync-content-sections.mjs`: content validation and sync behavior.
|
|
12
13
|
- `scripts/generate-images.mjs`: managed image pipeline and manifest.
|
|
13
14
|
- `scripts/sync-site-public.mjs`: static public file sync.
|
|
@@ -19,8 +20,8 @@ This document is for work on the reusable `norna` package itself.
|
|
|
19
20
|
- `tests/`: Playwright navigation diagnostics.
|
|
20
21
|
- `fixtures/basic/site/`: minimal site used for engine checks.
|
|
21
22
|
- `starters/basic/`: copyable site starter.
|
|
22
|
-
- `examples/
|
|
23
|
-
navigation diagnostics.
|
|
23
|
+
- `examples/feature-demos/media-and-surfaces/site/`: broad visual example used
|
|
24
|
+
by demo builds and navigation diagnostics.
|
|
24
25
|
|
|
25
26
|
The repository-local `site/` directory is reserved for a local documentation
|
|
26
27
|
site. It is useful for dogfooding `norna` documentation, but it is not the
|
|
@@ -33,12 +34,25 @@ Run focused checks while developing:
|
|
|
33
34
|
```sh
|
|
34
35
|
npm run test:content-check
|
|
35
36
|
npm run test:site-public
|
|
37
|
+
npm run test:documentation
|
|
36
38
|
npm run test:fixture:build
|
|
39
|
+
npm run test:examples
|
|
37
40
|
npm run demo:build
|
|
38
41
|
npm run package:check
|
|
39
42
|
```
|
|
40
43
|
|
|
41
|
-
`npm run test`
|
|
44
|
+
`npm run test:examples` builds every complete site and feature demo under
|
|
45
|
+
`examples/`. `npm run test` includes those builds in the standard check
|
|
46
|
+
sequence.
|
|
47
|
+
|
|
48
|
+
`npm run test:documentation` extracts the file examples from the five-minute
|
|
49
|
+
tutorial, applies them to a freshly initialized temporary site, runs the
|
|
50
|
+
configuration and content checks, builds the result, and checks local Markdown
|
|
51
|
+
links plus the `llms.txt` source targets.
|
|
52
|
+
|
|
53
|
+
`npm run build:pages` is specific to this repository. It builds the
|
|
54
|
+
documentation site and assembles rendered examples under `dist/examples/` for
|
|
55
|
+
the shared GitHub Pages artifact. It is not a generic Norna site command.
|
|
42
56
|
|
|
43
57
|
The root `site/` directory is the documentation site. Use the ordinary local
|
|
44
58
|
commands for it:
|
|
@@ -48,12 +62,11 @@ npm run dev:local
|
|
|
48
62
|
npm run build
|
|
49
63
|
```
|
|
50
64
|
|
|
51
|
-
The
|
|
65
|
+
The media-and-surfaces feature demo is the broad visual and navigation
|
|
66
|
+
diagnostic target:
|
|
52
67
|
|
|
53
68
|
```sh
|
|
54
|
-
|
|
55
|
-
node ../../../bin/norna.mjs dev:local
|
|
56
|
-
cd ../../..
|
|
69
|
+
node bin/norna.mjs --site-dir examples/feature-demos/media-and-surfaces/site dev:local
|
|
57
70
|
npm run demo:build
|
|
58
71
|
```
|
|
59
72
|
|
|
@@ -182,11 +195,11 @@ history, back/forward moves between hash entries, and returning to the same page
|
|
|
182
195
|
without a hash restores the first section as active. The enhancement does not
|
|
183
196
|
derive active section state from free manual scrolling.
|
|
184
197
|
|
|
185
|
-
The sticky navigation updates root scroll
|
|
186
|
-
and clicked links
|
|
187
|
-
|
|
188
|
-
|
|
198
|
+
The sticky navigation updates a root scroll-offset variable so direct hash
|
|
199
|
+
links and clicked links remain visible below the fixed header. The browser owns
|
|
200
|
+
anchor movement; Norna does not run a separate scroll animation or retry anchor
|
|
201
|
+
positions after later layout shifts.
|
|
189
202
|
|
|
190
|
-
The shared layout
|
|
191
|
-
`
|
|
192
|
-
labels in
|
|
203
|
+
The shared layout selects Norna's built-in UI labels from the optional
|
|
204
|
+
`language` in `site/config.md`. Keep editorial content in page Markdown and
|
|
205
|
+
non-editorial engine UI labels in the engine language packs.
|