@janga/norna 0.7.11 → 0.7.13
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 -108
- package/bin/norna-cli.mjs +1 -1
- package/docs/README.md +107 -75
- package/docs/assets/norna-dog-shelter.jpg +0 -0
- package/docs/commands.md +7 -4
- package/docs/configuration.md +86 -185
- package/docs/design/command-organization.md +1 -1
- package/docs/design/norna-diagram-design.md +2 -1
- package/docs/design/site-examples-structure.md +4 -1
- package/docs/engine-development.md +15 -8
- package/docs/getting-started.md +126 -144
- 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 +1 -1
- package/docs/site-structure.md +4 -4
- package/docs/sitewide-content.md +2 -1
- package/docs/theme.md +18 -0
- package/examples/README.md +26 -24
- package/examples/complete-sites/dog-shelter-multi-page/.astro/content-assets.mjs +4 -1
- package/examples/complete-sites/dog-shelter-multi-page/.astro/content.d.ts +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/.astro/data-store.json +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.json +6 -8
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.log +26 -53
- package/examples/complete-sites/dog-shelter-multi-page/README.md +7 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/_metadata.json +29 -35
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{astro-D_GIpJIE.js → 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/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 -1
- package/examples/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 -1
- package/examples/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 -1
- package/examples/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 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{audit-DM9Hkl5B.js → 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/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{highlight-DnZ1ULOL.js → 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/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{icons-RyebKi45.js → 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/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{settings-DaU-gNnK.js → 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/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{toolbar-63PA619H.js → 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/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{ui-library--bkcNSYz.js → 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/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{window-jPkpKVcy.js → 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/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/{xray-BXCHpEJP.js → 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 +92 -12
- package/examples/complete-sites/dog-shelter-multi-page/site/config.md +3 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/content.md +12 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/images/intro/shelter-dog.jpg +0 -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/images/dogs/rex.jpg +0 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rover.jpg +0 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/route-content.md +11 -19
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/020-adopt/images/adopt/adoption-dog.jpg +0 -0
- package/examples/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 +12 -2
- package/examples/complete-sites/dog-shelter-multi-page/site/theme.md +1 -23
- 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/complete-sites/dog-shelter-single-page/.astro/collections/theme.schema.json +755 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/content-assets.mjs +4 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/content-modules.mjs +1 -0
- 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/.astro/types.d.ts +2 -0
- package/examples/complete-sites/dog-shelter-single-page/README.md +7 -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/package.json +3 -0
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -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 +44 -12
- package/examples/complete-sites/dog-shelter-single-page/site/config.md +3 -0
- package/examples/complete-sites/dog-shelter-single-page/site/content.md +20 -24
- package/examples/complete-sites/dog-shelter-single-page/site/images/what-we-do/rescue-dog.jpg +0 -0
- package/examples/complete-sites/dog-shelter-single-page/site/images/you-can-help/foster-dog.jpg +0 -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 +12 -2
- package/examples/complete-sites/dog-shelter-single-page/site/theme.md +1 -23
- package/examples/feature-demos/media-and-surfaces/.astro/data-store.json +1 -1
- package/examples/feature-demos/media-and-surfaces/.astro/dev.log +15 -2
- package/examples/feature-demos/media-and-surfaces/README.md +7 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/_metadata.json +7 -1
- package/examples/{complete-sites/dog-shelter-multi-page → feature-demos/media-and-surfaces}/node_modules/.vite/deps/embla-carousel.js +1 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/embla-carousel.js.map +1 -0
- package/examples/feature-demos/media-and-surfaces/site/config.md +3 -0
- package/examples/feature-demos/media-and-surfaces/site/content.md +5 -51
- package/examples/feature-demos/media-and-surfaces/site/routes/010-media/route-content.md +10 -25
- package/examples/feature-demos/media-and-surfaces/site/routes/020-surfaces/route-content.md +1 -1
- 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/public/robots.txt +2 -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/dev.log +37 -0
- package/examples/feature-demos/theme-presets/README.md +5 -1
- package/examples/feature-demos/theme-presets/site/config.md +3 -0
- package/fixtures/basic/site/config.md +3 -0
- package/fixtures/content-model-v2/site/config.md +3 -0
- package/package.json +12 -7
- package/scripts/build-pages.mjs +4 -6
- package/scripts/check-config.mjs +1 -10
- package/scripts/deploy-site.mjs +12 -8
- package/scripts/lib/example-sites.mjs +3 -0
- package/scripts/lib/github-repository.mjs +44 -0
- package/scripts/lib/norna-markdown-blocks.mjs +97 -10
- package/scripts/lib/project-config.mjs +112 -123
- package/scripts/lib/site-content.mjs +7 -0
- package/scripts/lib/site-paths.mjs +6 -2
- package/scripts/test-client-javascript.mjs +221 -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 +12 -3
- package/scripts/test-examples.mjs +9 -0
- package/scripts/test-package-check.mjs +17 -9
- package/scripts/test-project-config.mjs +125 -0
- package/scripts/test-temporary-visibility.mjs +3 -10
- package/scripts/test-theme-presets.mjs +3 -8
- 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/SiteNavigation.astro +54 -341
- package/src/components/SiteNotesScript.astro +43 -0
- package/src/components/SitePage.astro +4 -1
- package/src/components/SiteSection.astro +4 -47
- package/src/layouts/BaseLayout.astro +1 -1
- package/src/lib/galleryImages.ts +53 -0
- package/src/styles/global.css +81 -1
- package/starters/basic/.github/workflows/deploy.yml +1 -2
- package/starters/basic/README.md +10 -8
- 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/site/config.md +3 -0
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/embla-carousel.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/site/config.mjs +0 -30
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rex.svg +0 -19
- package/examples/complete-sites/dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rover.svg +0 -19
- package/examples/complete-sites/dog-shelter-single-page/site/config.mjs +0 -30
- package/examples/complete-sites/dog-shelter-single-page/site/images/what-we-do/dog-house.svg +0 -25
- package/examples/complete-sites/dog-shelter-single-page/site/images/you-can-help/heart.svg +0 -13
- package/examples/feature-demos/media-and-surfaces/site/config.mjs +0 -30
- package/examples/feature-demos/media-and-surfaces/site/routes/010-media/theme.md +0 -3
- package/examples/feature-demos/theme-presets/site/config.mjs +0 -30
- 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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default new Map();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default new Map();
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
declare module 'astro:content' {
|
|
2
|
+
export interface RenderResult {
|
|
3
|
+
Content: import('astro/runtime/server/index.js').AstroComponentFactory;
|
|
4
|
+
headings: import('astro').MarkdownHeading[];
|
|
5
|
+
remarkPluginFrontmatter: Record<string, any>;
|
|
6
|
+
}
|
|
7
|
+
interface Render {
|
|
8
|
+
'.md': Promise<RenderResult>;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface RenderedContent {
|
|
12
|
+
html: string;
|
|
13
|
+
metadata?: {
|
|
14
|
+
imagePaths: Array<string>;
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type Flatten<T> = T extends { [K: string]: infer U } ? U : never;
|
|
20
|
+
|
|
21
|
+
export type CollectionKey = keyof DataEntryMap;
|
|
22
|
+
export type CollectionEntry<C extends CollectionKey> = Flatten<DataEntryMap[C]>;
|
|
23
|
+
|
|
24
|
+
type AllValuesOf<T> = T extends any ? T[keyof T] : never;
|
|
25
|
+
|
|
26
|
+
export type ReferenceDataEntry<
|
|
27
|
+
C extends CollectionKey,
|
|
28
|
+
E extends keyof DataEntryMap[C] = string,
|
|
29
|
+
> = {
|
|
30
|
+
collection: C;
|
|
31
|
+
id: E;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export type ReferenceLiveEntry<C extends keyof LiveContentConfig['collections']> = {
|
|
35
|
+
collection: C;
|
|
36
|
+
id: string;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export function getCollection<C extends keyof DataEntryMap, E extends CollectionEntry<C>>(
|
|
40
|
+
collection: C,
|
|
41
|
+
filter?: (entry: CollectionEntry<C>) => entry is E,
|
|
42
|
+
): Promise<E[]>;
|
|
43
|
+
export function getCollection<C extends keyof DataEntryMap>(
|
|
44
|
+
collection: C,
|
|
45
|
+
filter?: (entry: CollectionEntry<C>) => unknown,
|
|
46
|
+
): Promise<CollectionEntry<C>[]>;
|
|
47
|
+
|
|
48
|
+
export function getLiveCollection<C extends keyof LiveContentConfig['collections']>(
|
|
49
|
+
collection: C,
|
|
50
|
+
filter?: LiveLoaderCollectionFilterType<C>,
|
|
51
|
+
): Promise<
|
|
52
|
+
import('astro').LiveDataCollectionResult<LiveLoaderDataType<C>, LiveLoaderErrorType<C>>
|
|
53
|
+
>;
|
|
54
|
+
|
|
55
|
+
export function getEntry<
|
|
56
|
+
C extends keyof DataEntryMap,
|
|
57
|
+
E extends keyof DataEntryMap[C] | (string & {}),
|
|
58
|
+
>(
|
|
59
|
+
entry: ReferenceDataEntry<C, E>,
|
|
60
|
+
): E extends keyof DataEntryMap[C]
|
|
61
|
+
? Promise<DataEntryMap[C][E]>
|
|
62
|
+
: Promise<CollectionEntry<C> | undefined>;
|
|
63
|
+
export function getEntry<
|
|
64
|
+
C extends keyof DataEntryMap,
|
|
65
|
+
E extends keyof DataEntryMap[C] | (string & {}),
|
|
66
|
+
>(
|
|
67
|
+
collection: C,
|
|
68
|
+
id: E,
|
|
69
|
+
): E extends keyof DataEntryMap[C]
|
|
70
|
+
? string extends keyof DataEntryMap[C]
|
|
71
|
+
? Promise<DataEntryMap[C][E]> | undefined
|
|
72
|
+
: Promise<DataEntryMap[C][E]>
|
|
73
|
+
: Promise<CollectionEntry<C> | undefined>;
|
|
74
|
+
export function getLiveEntry<C extends keyof LiveContentConfig['collections']>(
|
|
75
|
+
collection: C,
|
|
76
|
+
filter: string | LiveLoaderEntryFilterType<C>,
|
|
77
|
+
): Promise<import('astro').LiveDataEntryResult<LiveLoaderDataType<C>, LiveLoaderErrorType<C>>>;
|
|
78
|
+
|
|
79
|
+
/** Resolve an array of entry references from the same collection */
|
|
80
|
+
export function getEntries<C extends keyof DataEntryMap>(
|
|
81
|
+
entries: ReferenceDataEntry<C, keyof DataEntryMap[C]>[],
|
|
82
|
+
): Promise<CollectionEntry<C>[]>;
|
|
83
|
+
|
|
84
|
+
export function render<C extends keyof DataEntryMap>(
|
|
85
|
+
entry: DataEntryMap[C][string],
|
|
86
|
+
): Promise<RenderResult>;
|
|
87
|
+
|
|
88
|
+
export function render<C extends keyof LiveContentConfig['collections']>(
|
|
89
|
+
entry: import('astro').LiveDataEntry<LiveLoaderDataType<C>>,
|
|
90
|
+
): Promise<RenderResult>;
|
|
91
|
+
|
|
92
|
+
export function reference<
|
|
93
|
+
C extends
|
|
94
|
+
| keyof DataEntryMap
|
|
95
|
+
// Allow generic `string` to avoid excessive type errors in the config
|
|
96
|
+
// if `dev` is not running to update as you edit.
|
|
97
|
+
// Invalid collection names will be caught at build time.
|
|
98
|
+
| (string & {}),
|
|
99
|
+
>(
|
|
100
|
+
collection: C,
|
|
101
|
+
): import('astro/zod').ZodPipe<
|
|
102
|
+
import('astro/zod').ZodString,
|
|
103
|
+
import('astro/zod').ZodTransform<
|
|
104
|
+
C extends keyof DataEntryMap
|
|
105
|
+
? {
|
|
106
|
+
collection: C;
|
|
107
|
+
id: string;
|
|
108
|
+
}
|
|
109
|
+
: never,
|
|
110
|
+
string
|
|
111
|
+
>
|
|
112
|
+
>;
|
|
113
|
+
|
|
114
|
+
type ReturnTypeOrOriginal<T> = T extends (...args: any[]) => infer R ? R : T;
|
|
115
|
+
type InferEntrySchema<C extends keyof DataEntryMap> = import('astro/zod').infer<
|
|
116
|
+
ReturnTypeOrOriginal<Required<ContentConfig['collections'][C]>['schema']>
|
|
117
|
+
>;
|
|
118
|
+
type ExtractLoaderConfig<T> = T extends { loader: infer L } ? L : never;
|
|
119
|
+
type InferLoaderSchema<
|
|
120
|
+
C extends keyof DataEntryMap,
|
|
121
|
+
L = ExtractLoaderConfig<ContentConfig['collections'][C]>,
|
|
122
|
+
> = L extends { schema: import('astro/zod').ZodSchema }
|
|
123
|
+
? import('astro/zod').infer<L['schema']>
|
|
124
|
+
: any;
|
|
125
|
+
|
|
126
|
+
type DataEntryMap = {
|
|
127
|
+
"site": Record<string, {
|
|
128
|
+
id: string;
|
|
129
|
+
body?: string;
|
|
130
|
+
collection: "site";
|
|
131
|
+
data: InferEntrySchema<"site">;
|
|
132
|
+
rendered?: RenderedContent;
|
|
133
|
+
filePath?: string;
|
|
134
|
+
}>;
|
|
135
|
+
"sitewide": Record<string, {
|
|
136
|
+
id: string;
|
|
137
|
+
body?: string;
|
|
138
|
+
collection: "sitewide";
|
|
139
|
+
data: InferEntrySchema<"sitewide">;
|
|
140
|
+
rendered?: RenderedContent;
|
|
141
|
+
filePath?: string;
|
|
142
|
+
}>;
|
|
143
|
+
"theme": Record<string, {
|
|
144
|
+
id: string;
|
|
145
|
+
body?: string;
|
|
146
|
+
collection: "theme";
|
|
147
|
+
data: InferEntrySchema<"theme">;
|
|
148
|
+
rendered?: RenderedContent;
|
|
149
|
+
filePath?: string;
|
|
150
|
+
}>;
|
|
151
|
+
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
type ExtractLoaderTypes<T> = T extends import('astro/loaders').LiveLoader<
|
|
155
|
+
infer TData,
|
|
156
|
+
infer TEntryFilter,
|
|
157
|
+
infer TCollectionFilter,
|
|
158
|
+
infer TError
|
|
159
|
+
>
|
|
160
|
+
? { data: TData; entryFilter: TEntryFilter; collectionFilter: TCollectionFilter; error: TError }
|
|
161
|
+
: { data: never; entryFilter: never; collectionFilter: never; error: never };
|
|
162
|
+
type ExtractEntryFilterType<T> = ExtractLoaderTypes<T>['entryFilter'];
|
|
163
|
+
type ExtractCollectionFilterType<T> = ExtractLoaderTypes<T>['collectionFilter'];
|
|
164
|
+
type ExtractErrorType<T> = ExtractLoaderTypes<T>['error'];
|
|
165
|
+
type ExtractDataType<T> = ExtractLoaderTypes<T>['data'];
|
|
166
|
+
|
|
167
|
+
type LiveLoaderDataType<C extends keyof LiveContentConfig['collections']> =
|
|
168
|
+
LiveContentConfig['collections'][C]['schema'] extends undefined
|
|
169
|
+
? ExtractDataType<LiveContentConfig['collections'][C]['loader']>
|
|
170
|
+
: import('astro/zod').infer<
|
|
171
|
+
Exclude<LiveContentConfig['collections'][C]['schema'], undefined>
|
|
172
|
+
>;
|
|
173
|
+
type LiveLoaderEntryFilterType<C extends keyof LiveContentConfig['collections']> =
|
|
174
|
+
ExtractEntryFilterType<LiveContentConfig['collections'][C]['loader']>;
|
|
175
|
+
type LiveLoaderCollectionFilterType<C extends keyof LiveContentConfig['collections']> =
|
|
176
|
+
ExtractCollectionFilterType<LiveContentConfig['collections'][C]['loader']>;
|
|
177
|
+
type LiveLoaderErrorType<C extends keyof LiveContentConfig['collections']> = ExtractErrorType<
|
|
178
|
+
LiveContentConfig['collections'][C]['loader']
|
|
179
|
+
>;
|
|
180
|
+
|
|
181
|
+
export type ContentConfig = typeof import("../../../../src/content.config.js");
|
|
182
|
+
export type LiveContentConfig = never;
|
|
183
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[["Map",1,2,9,10,113,114,161,162],"meta::meta",["Map",3,4,5,6,7,8],"astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"compressHTML\":\"jsx\",\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":\"127.0.0.1\",\"port\":4413,\"allowedHosts\":[\"127.0.0.1\",\"127.0.0.1\",\"127.0.0.1\",\"127.0.0.1\"]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"dangerouslyProcessSVG\":false,\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":{\"type\":\"shiki\",\"excludeLangs\":[\"math\"]},\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"processor\":{\"name\":\"satteri\",\"options\":{\"mdastPlugins\":[],\"hastPlugins\":[],\"features\":{}}}},\"security\":{\"checkOrigin\":true,\"allowedDomains\":[],\"csp\":false,\"actionBodySizeLimit\":1048576,\"serverIslandBodySizeLimit\":1048576},\"env\":{\"schema\":{},\"validateSecrets\":false},\"prerenderConflictBehavior\":\"warn\",\"fetchFile\":\"fetch\",\"logger\":{\"entrypoint\":\"astro/logger/json\"},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"chromeDevtoolsWorkspace\":false,\"collectionStorage\":\"single-file\"},\"legacy\":{\"collectionsBackwardsCompat\":false}}","astro-version","7.1.3","content-config-digest","ef24ddbc7d731e37","site",["Map",11,12,35,36,60,61,88,89],"site-content",{"id":11,"data":13,"body":19,"filePath":20,"digest":21,"rendered":22},{"title":14,"description":15,"navigation":16,"sections":18},"Sitewide Content","See how Norna keeps shared identity, notices and footer content consistent across routes.",{"label":17},"Home",{},"## Shared across the site {#intro}\n\nThis demo separates page content from elements that belong to the site as a\nwhole. The logo, navigation identity, banners and footer come from shared files\nand remain consistent as you move between routes.\n\nVisit [Identity](/identity/) to inspect the logo and navigation model,\n[Notices](/notices/) to inspect the banner stack and dismissal behaviour, and\n[Footer](/footer/) to inspect persistent footer content and build information.","site/content.md","a7bb54f098b38a1e",{"html":23,"metadata":24},"\u003Ch2 id=\"shared-across-the-site-intro\">Shared across the site {#intro}\u003C/h2>\n\u003Cp>This demo separates page content from elements that belong to the site as a\nwhole. The logo, navigation identity, banners and footer come from shared files\nand remain consistent as you move between routes.\u003C/p>\n\u003Cp>Visit \u003Ca href=\"/identity/\">Identity\u003C/a> to inspect the logo and navigation model,\n\u003Ca href=\"/notices/\">Notices\u003C/a> to inspect the banner stack and dismissal behaviour, and\n\u003Ca href=\"/footer/\">Footer\u003C/a> to inspect persistent footer content and build information.\u003C/p>\n",{"headings":25,"localImagePaths":30,"remoteImagePaths":31,"frontmatter":32,"imagePaths":34},[26],{"depth":27,"slug":28,"text":29},2,"shared-across-the-site-intro","Shared across the site {#intro}",[],[],{"title":14,"description":15,"navigation":33},{"label":17},[],"site-route-010-identity",{"id":35,"data":37,"body":42,"filePath":43,"digest":44,"rendered":45},{"title":38,"description":39,"navigation":40,"sections":41},"Identity","See how a convention-based logo and shared identity work across a Norna site.",{"label":38},{},"## One identity across routes {#identity}\n\nThe logo in the navigation is discovered from `public/logo.svg`. Its alt text\nand display height belong to `sitewide-content.md`, because the identity is\nshared by every route.\n\nIf a site has no logo file, Norna can use a text brand instead. A route cannot\nreplace the site identity with its own logo or brand.\n\n## Navigation context {#navigation}\n\nThe route links come from the site's page structure. The shared logo returns to\nHome, while the active route is indicated in the same navigation row.","site/routes/010-identity/route-content.md","182ab038f5a2f4c8",{"html":46,"metadata":47},"\u003Ch2 id=\"one-identity-across-routes-identity\">One identity across routes {#identity}\u003C/h2>\n\u003Cp>The logo in the navigation is discovered from \u003Ccode>public/logo.svg\u003C/code>. Its alt text\nand display height belong to \u003Ccode>sitewide-content.md\u003C/code>, because the identity is\nshared by every route.\u003C/p>\n\u003Cp>If a site has no logo file, Norna can use a text brand instead. A route cannot\nreplace the site identity with its own logo or brand.\u003C/p>\n\u003Ch2 id=\"navigation-context-navigation\">Navigation context {#navigation}\u003C/h2>\n\u003Cp>The route links come from the site’s page structure. The shared logo returns to\nHome, while the active route is indicated in the same navigation row.\u003C/p>\n",{"headings":48,"localImagePaths":55,"remoteImagePaths":56,"frontmatter":57,"imagePaths":59},[49,52],{"depth":27,"slug":50,"text":51},"one-identity-across-routes-identity","One identity across routes {#identity}",{"depth":27,"slug":53,"text":54},"navigation-context-navigation","Navigation context {#navigation}",[],[],{"title":38,"description":39,"navigation":58},{"label":38},[],"site-route-020-notices",{"id":60,"data":62,"body":67,"filePath":68,"digest":69,"rendered":70},{"title":63,"description":64,"navigation":65,"sections":66},"Notices","Inspect Norna's shared banner stack, visibility and dismissal behaviour.",{"label":63},{},"## Banner stack {#banner-stack}\n\nThe two notices above the page content are defined in `sitewide-content.md`.\nList order controls their order, and each notice keeps its own identity.\n\n## Dismissal {#dismissal}\n\nUse the close button to dismiss either banner. The choice is stored locally in\nthe browser and applies on every route. Changing a banner's content gives it a\nnew dismissal key, allowing an updated notice to appear again.\n\n## Visibility {#visibility}\n\nA banner can optionally have `from` and `until` dates. Norna filters the stack\nbefore rendering, using the same date-window rules as temporary sections.","site/routes/020-notices/route-content.md","126237552f83926b",{"html":71,"metadata":72},"\u003Ch2 id=\"banner-stack-banner-stack\">Banner stack {#banner-stack}\u003C/h2>\n\u003Cp>The two notices above the page content are defined in \u003Ccode>sitewide-content.md\u003C/code>.\nList order controls their order, and each notice keeps its own identity.\u003C/p>\n\u003Ch2 id=\"dismissal-dismissal\">Dismissal {#dismissal}\u003C/h2>\n\u003Cp>Use the close button to dismiss either banner. The choice is stored locally in\nthe browser and applies on every route. Changing a banner’s content gives it a\nnew dismissal key, allowing an updated notice to appear again.\u003C/p>\n\u003Ch2 id=\"visibility-visibility\">Visibility {#visibility}\u003C/h2>\n\u003Cp>A banner can optionally have \u003Ccode>from\u003C/code> and \u003Ccode>until\u003C/code> dates. Norna filters the stack\nbefore rendering, using the same date-window rules as temporary sections.\u003C/p>\n",{"headings":73,"localImagePaths":83,"remoteImagePaths":84,"frontmatter":85,"imagePaths":87},[74,77,80],{"depth":27,"slug":75,"text":76},"banner-stack-banner-stack","Banner stack {#banner-stack}",{"depth":27,"slug":78,"text":79},"dismissal-dismissal","Dismissal {#dismissal}",{"depth":27,"slug":81,"text":82},"visibility-visibility","Visibility {#visibility}",[],[],{"title":63,"description":64,"navigation":86},{"label":63},[],"site-route-030-footer",{"id":88,"data":90,"body":95,"filePath":96,"digest":97,"rendered":98},{"title":91,"description":92,"navigation":93,"sections":94},"Footer","Inspect content and build information shared in the Norna site footer.",{"label":91},{},"## Persistent footer content {#footer-content}\n\nThe footer below this page is defined once in `sitewide-content.md`. Its\ncopyright message remains the same across routes.\n\n## Build information {#build-information}\n\nThis demo also enables generated build information. Norna adds the build time\nusing the configured locale and time zone, keeping generated publication data\nseparate from editorial page content.","site/routes/030-footer/route-content.md","ec01a194a54fb9c4",{"html":99,"metadata":100},"\u003Ch2 id=\"persistent-footer-content-footer-content\">Persistent footer content {#footer-content}\u003C/h2>\n\u003Cp>The footer below this page is defined once in \u003Ccode>sitewide-content.md\u003C/code>. Its\ncopyright message remains the same across routes.\u003C/p>\n\u003Ch2 id=\"build-information-build-information\">Build information {#build-information}\u003C/h2>\n\u003Cp>This demo also enables generated build information. Norna adds the build time\nusing the configured locale and time zone, keeping generated publication data\nseparate from editorial page content.\u003C/p>\n",{"headings":101,"localImagePaths":108,"remoteImagePaths":109,"frontmatter":110,"imagePaths":112},[102,105],{"depth":27,"slug":103,"text":104},"persistent-footer-content-footer-content","Persistent footer content {#footer-content}",{"depth":27,"slug":106,"text":107},"build-information-build-information","Build information {#build-information}",[],[],{"title":91,"description":92,"navigation":111},{"label":91},[],"sitewide",["Map",115,116],"site-sitewide",{"id":115,"data":117,"body":142,"filePath":143,"digest":144,"rendered":145},{"navigation":118,"banners":122,"footer":132},{"logo":119},{"alt":120,"height":121},"Shared Frame","2.8rem",[123,128],{"id":124,"tone":125,"title":126,"text":127},"preview-environment","warning","Preview environment","This sitewide notice appears on every route in the demo.",{"id":129,"tone":125,"title":130,"text":131},"content-review","Content review","Dismiss each notice independently with its close button.",{"copyrightMessage":133,"buildInfo":134},"Shared Frame sitewide-content example.",{"enabled":135,"text":136,"dateTimeFormat":137},true,"Built",{"locale":138,"timeZone":139,"dateStyle":140,"timeStyle":141},"en-GB","UTC","medium","short","\u003C!-- norna-image-provenance:\nimage: logo.svg\nsource: AI-assisted, hand-authored SVG\nprompt: Create a compact horizontal logo named Shared Frame. Use a simple\noverlapping-frame symbol, dark text, one muted red accent, a transparent\nbackground and no external assets.\n-->","site/sitewide-content.md","16c1330be803c3f6",{"html":146,"metadata":147},"\u003C!-- norna-image-provenance:\nimage: logo.svg\nsource: AI-assisted, hand-authored SVG\nprompt: Create a compact horizontal logo named Shared Frame. Use a simple\noverlapping-frame symbol, dark text, one muted red accent, a transparent\nbackground and no external assets.\n-->\n",{"headings":148,"localImagePaths":149,"remoteImagePaths":150,"frontmatter":151,"imagePaths":160},[],[],[],{"navigation":152,"banners":154,"footer":157},{"logo":153},{"alt":120,"height":121},[155,156],{"id":124,"tone":125,"title":126,"text":127},{"id":129,"tone":125,"title":130,"text":131},{"copyrightMessage":133,"buildInfo":158},{"enabled":135,"text":136,"dateTimeFormat":159},{"locale":138,"timeZone":139,"dateStyle":140,"timeStyle":141},[],"theme",["Map",163,164],"theme.md",{"id":163,"data":165,"filePath":167,"digest":168,"rendered":169},{"preset":166},"project","site/theme.md","d19ab283a10fb060",{"html":170,"metadata":171},"",{"headings":172,"localImagePaths":173,"remoteImagePaths":174,"frontmatter":175,"imagePaths":176},[],[],[],{"preset":166},[]]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{"message":"connected.","label":"vite","level":"info"}
|
|
2
|
+
{"message":"Generated 1ms","label":"types","level":"info"}
|
|
3
|
+
{"message":"connected.","label":"vite","level":"info"}
|
|
4
|
+
{"message":"\n update ▶ New version of Astro available: 7.2.4\n Run npx @astrojs/upgrade to update\n","label":"SKIP_FORMAT","level":"warn"}
|
|
5
|
+
{"message":"Syncing content","label":"content","level":"info"}
|
|
6
|
+
{"message":"Synced content","label":"content","level":"info"}
|
|
7
|
+
{"message":" astro v7.1.3 ready in 1150 ms\n┃ Local http://127.0.0.1:4413/","label":"SKIP_FORMAT","level":"info"}
|
|
8
|
+
{"message":"watching for file changes...","label":null,"level":"info"}
|
|
9
|
+
{"message":"[200] / 56ms","label":null,"level":"info"}
|
|
10
|
+
{"message":"[200] / 6ms","label":null,"level":"info"}
|
|
11
|
+
{"message":"[200] /identity/ 13ms","label":null,"level":"info"}
|
|
12
|
+
{"message":"[200] /notices/ 7ms","label":null,"level":"info"}
|
|
13
|
+
{"message":"[200] / 11ms","label":null,"level":"info"}
|
|
14
|
+
{"message":"A `getStaticPaths()` route pattern was matched, but no matching static path was found for requested path `/favicon.ico`.\n\nPossible dynamic routes being matched: ../../../src/pages/[slug].astro.","label":"router","level":"warn"}
|
|
15
|
+
{"message":"[200] / 7ms","label":null,"level":"info"}
|
|
16
|
+
{"message":"[200] /identity/ 9ms","label":null,"level":"info"}
|
|
17
|
+
{"message":"[200] /notices/ 10ms","label":null,"level":"info"}
|
|
18
|
+
{"message":"[200] /footer/ 12ms","label":null,"level":"info"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Sitewide content
|
|
2
|
+
|
|
3
|
+
This feature demo shows content and identity shared by every page: a
|
|
4
|
+
convention-based logo, route navigation, dismissible banners and a footer with
|
|
5
|
+
build information.
|
|
6
|
+
|
|
7
|
+
[Live demo](https://janga.github.io/norna/examples/feature-demos/sitewide-content/)
|
|
8
|
+
|
|
|
9
|
+
[View source](https://github.com/janga/norna/tree/main/examples/feature-demos/sitewide-content)
|
|
10
|
+
|
|
11
|
+
Run it from the repository root with:
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
node bin/norna.mjs --site-dir examples/feature-demos/sitewide-content/site dev:local
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Move between the routes to verify that the same sitewide elements remain in
|
|
18
|
+
place. Banner dismissals are stored locally in the browser.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hash": "597df743",
|
|
3
|
+
"configHash": "8eb7da76",
|
|
4
|
+
"lockfileHash": "808f2e8e",
|
|
5
|
+
"browserHash": "9dfc959a",
|
|
6
|
+
"optimized": {
|
|
7
|
+
"astro > aria-query": {
|
|
8
|
+
"src": "../../../../../../node_modules/aria-query/lib/index.js",
|
|
9
|
+
"file": "astro_n_aria-query.js",
|
|
10
|
+
"fileHash": "846de751",
|
|
11
|
+
"needsInterop": true
|
|
12
|
+
},
|
|
13
|
+
"astro > axobject-query": {
|
|
14
|
+
"src": "../../../../../../node_modules/axobject-query/lib/index.js",
|
|
15
|
+
"file": "astro_n_axobject-query.js",
|
|
16
|
+
"fileHash": "51efbaaf",
|
|
17
|
+
"needsInterop": true
|
|
18
|
+
},
|
|
19
|
+
"astro > html-escaper": {
|
|
20
|
+
"src": "../../../../../../node_modules/html-escaper/esm/index.js",
|
|
21
|
+
"file": "astro_n_html-escaper.js",
|
|
22
|
+
"fileHash": "dcf5dc0b",
|
|
23
|
+
"needsInterop": false
|
|
24
|
+
},
|
|
25
|
+
"astro/runtime/client/dev-toolbar/entrypoint.js": {
|
|
26
|
+
"src": "../../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/entrypoint.js",
|
|
27
|
+
"file": "astro_runtime_client_dev-toolbar_entrypoint__js.js",
|
|
28
|
+
"fileHash": "4b65d3a4",
|
|
29
|
+
"needsInterop": false
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"chunks": {
|
|
33
|
+
"astro-B3JHJyiv": {
|
|
34
|
+
"file": "astro-B3JHJyiv.js",
|
|
35
|
+
"isDynamicEntry": true
|
|
36
|
+
},
|
|
37
|
+
"audit-C3SVr7dT": {
|
|
38
|
+
"file": "audit-C3SVr7dT.js",
|
|
39
|
+
"isDynamicEntry": true
|
|
40
|
+
},
|
|
41
|
+
"highlight-BLtvqtzO": {
|
|
42
|
+
"file": "highlight-BLtvqtzO.js",
|
|
43
|
+
"isDynamicEntry": false
|
|
44
|
+
},
|
|
45
|
+
"icons-C92i61-2": {
|
|
46
|
+
"file": "icons-C92i61-2.js",
|
|
47
|
+
"isDynamicEntry": false
|
|
48
|
+
},
|
|
49
|
+
"rolldown-runtime-BvCyGRYZ": {
|
|
50
|
+
"file": "rolldown-runtime-BvCyGRYZ.js",
|
|
51
|
+
"isDynamicEntry": false
|
|
52
|
+
},
|
|
53
|
+
"settings-v5GgKks_": {
|
|
54
|
+
"file": "settings-v5GgKks_.js",
|
|
55
|
+
"isDynamicEntry": true
|
|
56
|
+
},
|
|
57
|
+
"toolbar-BFvJVp26": {
|
|
58
|
+
"file": "toolbar-BFvJVp26.js",
|
|
59
|
+
"isDynamicEntry": true
|
|
60
|
+
},
|
|
61
|
+
"ui-library-Cd35oAvo": {
|
|
62
|
+
"file": "ui-library-Cd35oAvo.js",
|
|
63
|
+
"isDynamicEntry": true
|
|
64
|
+
},
|
|
65
|
+
"window-vo3A6TMn": {
|
|
66
|
+
"file": "window-vo3A6TMn.js",
|
|
67
|
+
"isDynamicEntry": false
|
|
68
|
+
},
|
|
69
|
+
"xray-DwhzGckb": {
|
|
70
|
+
"file": "xray-DwhzGckb.js",
|
|
71
|
+
"isDynamicEntry": true
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|