@janga/norna 0.7.16 → 0.7.18
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 +18 -9
- package/astro.config.mjs +35 -3
- package/bin/norna-cli.mjs +1 -1
- package/docs/README.md +16 -14
- package/docs/commands.md +2 -2
- package/docs/configuration.md +25 -2
- package/docs/content.md +92 -103
- package/docs/design/navigation-and-theme-plan.md +186 -0
- package/docs/design/norna-diagram-design.md +9 -9
- package/docs/design/site-examples-structure.md +15 -11
- package/docs/engine-development.md +19 -22
- package/docs/getting-started.md +21 -16
- package/docs/images-and-metadata.md +12 -9
- package/docs/pages.md +190 -0
- package/docs/public-files.md +49 -36
- package/docs/publishing.md +19 -3
- package/docs/site-files.md +46 -38
- package/docs/sitewide-content.md +20 -36
- package/docs/theme.md +109 -143
- package/docs/typography.md +19 -31
- package/examples/README.md +10 -4
- package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/site.schema.json +17 -41
- package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/sitewide.schema.json +26 -67
- package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/theme.schema.json +185 -88
- package/examples/complete-sites/dog-shelter-multi-page/.astro/data-store.json +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev-local.json +4 -4
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.json +5 -5
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.log +33 -23
- package/examples/complete-sites/dog-shelter-multi-page/README.md +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/_metadata.json +8 -8
- package/examples/complete-sites/dog-shelter-multi-page/site/.norna/generated-images.json +20 -20
- package/examples/complete-sites/dog-shelter-multi-page/site/{content.md → pages/000-home/content.md} +3 -4
- package/examples/complete-sites/dog-shelter-multi-page/site/{routes → pages}/010-dogs/content.md +3 -4
- package/examples/complete-sites/dog-shelter-multi-page/site/{routes → pages}/020-adopt/content.md +3 -4
- package/examples/complete-sites/dog-shelter-multi-page/site/sitewide-content.yaml +2 -4
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/site.schema.json +17 -41
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/sitewide.schema.json +26 -67
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/theme.schema.json +185 -88
- package/examples/complete-sites/dog-shelter-single-page/.astro/data-store.json +1 -1
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev-local.json +8 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev.json +5 -5
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev.log +16 -12
- package/examples/complete-sites/dog-shelter-single-page/README.md +1 -1
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/_metadata.json +8 -8
- package/examples/complete-sites/dog-shelter-single-page/site/.norna/generated-images.json +12 -12
- package/examples/complete-sites/dog-shelter-single-page/site/{content.md → pages/000-home/content.md} +5 -2
- package/examples/complete-sites/dog-shelter-single-page/site/sitewide-content.yaml +2 -4
- package/examples/feature-demos/media-and-surfaces/.astro/collections/site.schema.json +17 -41
- package/examples/feature-demos/media-and-surfaces/.astro/collections/sitewide.schema.json +26 -67
- package/examples/feature-demos/media-and-surfaces/.astro/collections/theme.schema.json +180 -91
- package/examples/feature-demos/media-and-surfaces/.astro/data-store.json +1 -1
- package/examples/feature-demos/media-and-surfaces/.astro/dev.log +4 -14
- package/examples/feature-demos/media-and-surfaces/README.md +2 -2
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/_metadata.json +9 -9
- package/examples/feature-demos/media-and-surfaces/site/.norna/generated-images.json +16 -16
- package/examples/feature-demos/media-and-surfaces/site/{content.md → pages/000-home/content.md} +4 -7
- package/examples/feature-demos/media-and-surfaces/site/{routes → pages}/010-media/content.md +6 -5
- package/examples/feature-demos/media-and-surfaces/site/{routes → pages}/020-surfaces/content.md +9 -7
- package/examples/feature-demos/media-and-surfaces/site/pages/020-surfaces/theme.yaml +2 -0
- package/examples/feature-demos/media-and-surfaces/site/sitewide-content.yaml +0 -2
- package/examples/feature-demos/sitewide-content/README.md +3 -3
- package/examples/feature-demos/sitewide-content/site/pages/000-home/content.md +17 -0
- package/examples/feature-demos/sitewide-content/site/pages/010-logo-and-navigation/content.md +17 -0
- package/examples/feature-demos/sitewide-content/site/{routes → pages}/020-notices/content.md +7 -6
- package/examples/feature-demos/sitewide-content/site/{routes → pages}/030-footer/content.md +6 -5
- package/examples/feature-demos/sitewide-content/site/sitewide-content.yaml +4 -13
- package/examples/feature-demos/theme-preset-documentation/README.md +16 -0
- package/examples/feature-demos/theme-preset-documentation/site/.norna/generated-images.json +74 -0
- package/examples/feature-demos/{theme-presets/site/routes/020-documentation → theme-preset-documentation/site/pages/000-home}/content.md +4 -7
- package/examples/feature-demos/theme-preset-documentation/site/sitewide-content.yaml +3 -0
- package/examples/feature-demos/theme-preset-portfolio/README.md +16 -0
- package/examples/feature-demos/theme-preset-portfolio/site/.norna/generated-images.json +74 -0
- package/examples/feature-demos/theme-preset-portfolio/site/config.yaml +1 -0
- package/examples/feature-demos/{theme-presets/site/routes/010-portfolio → theme-preset-portfolio/site/pages/000-home}/content.md +4 -7
- package/examples/feature-demos/theme-preset-portfolio/site/public/robots.txt +2 -0
- package/examples/feature-demos/theme-preset-portfolio/site/sitewide-content.yaml +3 -0
- package/examples/feature-demos/theme-preset-project/README.md +16 -0
- package/examples/feature-demos/theme-preset-project/site/.norna/generated-images.json +74 -0
- package/examples/feature-demos/theme-preset-project/site/config.yaml +1 -0
- package/examples/feature-demos/{theme-presets/site/routes/030-project → theme-preset-project/site/pages/000-home}/content.md +4 -7
- package/examples/feature-demos/theme-preset-project/site/public/robots.txt +2 -0
- package/examples/feature-demos/theme-preset-project/site/sitewide-content.yaml +3 -0
- package/examples/feature-demos/theme-preset-statement/README.md +16 -0
- package/examples/feature-demos/theme-preset-statement/site/.norna/generated-images.json +74 -0
- package/examples/feature-demos/theme-preset-statement/site/config.yaml +1 -0
- package/examples/feature-demos/{theme-presets/site/routes/040-statement → theme-preset-statement/site/pages/000-home}/content.md +4 -7
- package/examples/feature-demos/theme-preset-statement/site/public/robots.txt +2 -0
- package/examples/feature-demos/theme-preset-statement/site/sitewide-content.yaml +3 -0
- package/fixtures/basic/site/{content.md → pages/000-home/content.md} +5 -6
- package/fixtures/basic/site/sitewide-content.yaml +1 -8
- package/fixtures/basic/site/theme.yaml +1 -8
- package/fixtures/content-model-v2/site/{content.md → pages/000-home/content.md} +11 -13
- package/fixtures/content-model-v2/site/pages/010-guide/content.md +18 -0
- package/fixtures/nested-pages/.astro/collections/site.schema.json +35 -0
- package/fixtures/nested-pages/.astro/collections/sitewide.schema.json +97 -0
- package/fixtures/nested-pages/.astro/collections/theme.schema.json +844 -0
- package/fixtures/nested-pages/.astro/content-assets.mjs +4 -0
- package/fixtures/nested-pages/.astro/content-modules.mjs +1 -0
- package/fixtures/nested-pages/.astro/content.d.ts +183 -0
- package/fixtures/nested-pages/.astro/data-store.json +1 -0
- package/fixtures/nested-pages/.astro/dev-local.json +8 -0
- package/fixtures/nested-pages/.astro/dev.log +1128 -0
- package/fixtures/nested-pages/.astro/settings.json +5 -0
- package/fixtures/nested-pages/.astro/types.d.ts +2 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/_metadata.json +74 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/astro-D_GIpJIE.js +434 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/astro-D_GIpJIE.js.map +1 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/audit-DM9Hkl5B.js +1534 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +1 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/highlight-DnZ1ULOL.js +48 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +1 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/icons-RyebKi45.js +42 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/icons-RyebKi45.js.map +1 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/package.json +3 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/settings-DaU-gNnK.js +190 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/settings-DaU-gNnK.js.map +1 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/toolbar-63PA619H.js +458 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/toolbar-63PA619H.js.map +1 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/ui-library--bkcNSYz.js +1016 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +1 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/window-jPkpKVcy.js +32 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/window-jPkpKVcy.js.map +1 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/xray-BXCHpEJP.js +111 -0
- package/fixtures/nested-pages/node_modules/.vite/deps/xray-BXCHpEJP.js.map +1 -0
- package/fixtures/nested-pages/site/.norna/generated-images.json +10 -0
- package/fixtures/nested-pages/site/config.yaml +3 -0
- package/fixtures/nested-pages/site/pages/000-home/content.md +15 -0
- package/fixtures/nested-pages/site/pages/010-guides/content.md +15 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/content.md +21 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/images/diagram.svg +21 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/pages/010-macos/content.md +18 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/theme.yaml +2 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/020-workflows/content.md +11 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/030-release-notes/content.md +9 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/040-configuration/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/050-content/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/060-themes/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/070-images/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/080-cards/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/090-notes/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/100-validation/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/110-synchronization/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/120-building/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/130-publishing/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/140-troubleshooting/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/150-migration/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/160-accessibility/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/170-performance/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/180-security/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/190-localization/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/200-upgrading/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/210-faq/content.md +3 -0
- package/fixtures/nested-pages/site/pages/010-guides/theme.yaml +7 -0
- package/fixtures/nested-pages/site/pages/020-reference/content.md +10 -0
- package/fixtures/nested-pages/site/pages/020-reference/pages/010-installation/content.md +11 -0
- package/fixtures/nested-pages/site/theme.yaml +1 -0
- package/package.json +8 -4
- package/schemas/config.schema.json +46 -5
- package/schemas/content-frontmatter.schema.json +28 -63
- package/schemas/manifest.json +4 -2
- package/schemas/page-theme.schema.json +192 -0
- package/schemas/sitewide-content.schema.json +58 -132
- package/schemas/theme.schema.json +434 -152
- package/scripts/check-config.mjs +8 -6
- package/scripts/deploy-site.mjs +6 -8
- package/scripts/doctor.mjs +2 -2
- package/scripts/generate-images.mjs +15 -29
- package/scripts/generate-schemas.mjs +7 -218
- package/scripts/lib/base-path-redirect.mjs +9 -0
- package/scripts/lib/editor-language-service.mjs +125 -79
- package/scripts/lib/example-sites.mjs +15 -3
- package/scripts/lib/heading-ids.mjs +161 -0
- package/scripts/lib/navigation-model.mjs +51 -0
- package/scripts/lib/norna-markdown-blocks.mjs +3 -4
- package/scripts/lib/page-model.mjs +102 -0
- package/scripts/lib/presentation.mjs +25 -17
- package/scripts/lib/project-config.mjs +46 -8
- package/scripts/lib/schema-definitions.mjs +78 -55
- package/scripts/lib/schema-editor-metadata.mjs +519 -0
- package/scripts/lib/schema-value-definitions.mjs +20 -6
- package/scripts/lib/site-content.mjs +159 -97
- package/scripts/lib/site-conventions.mjs +1 -0
- package/scripts/lib/site-paths.mjs +11 -5
- package/scripts/lib/theme-config.mjs +12 -18
- package/scripts/lib/theme-presets.mjs +55 -14
- package/scripts/release.mjs +1 -1
- package/scripts/show-typography.mjs +4 -30
- package/scripts/sync-content-sections.mjs +107 -68
- package/scripts/{test-temporary-visibility.mjs → test-banner-visibility.mjs} +8 -25
- package/scripts/test-client-javascript.mjs +50 -46
- package/scripts/test-content-check.mjs +153 -69
- package/scripts/test-content-model-v2.mjs +566 -285
- package/scripts/test-documentation.mjs +10 -3
- package/scripts/test-editor-language-service.mjs +172 -25
- package/scripts/test-engine-commands.mjs +6 -5
- package/scripts/test-examples.mjs +30 -1
- package/scripts/test-heading-ids.mjs +68 -0
- package/scripts/test-navigation-model.mjs +63 -0
- package/scripts/test-navigation.mjs +11 -2
- package/scripts/test-nested-pages.mjs +125 -0
- package/scripts/test-package-check.mjs +55 -95
- package/scripts/test-page-model.mjs +108 -0
- package/scripts/test-project-config.mjs +22 -3
- package/scripts/test-schemas.mjs +82 -15
- package/scripts/test-theme-presets.mjs +57 -42
- package/src/components/NavigationPageTree.astro +157 -0
- package/src/components/PageContentsLinks.astro +40 -0
- package/src/components/SectionNavigationScript.astro +117 -5
- package/src/components/SiteBreadcrumbs.astro +32 -0
- package/src/components/SiteNavigation.astro +97 -68
- package/src/components/SitePage.astro +93 -55
- package/src/components/SiteSection.astro +29 -27
- package/src/components/SiteTreeNavigation.astro +35 -0
- package/src/components/TreeNavigationScript.astro +83 -0
- package/src/content.config.ts +8 -10
- package/src/layouts/BaseLayout.astro +21 -20
- package/src/lib/pageThemes.ts +44 -0
- package/src/lib/sectionContent.ts +106 -107
- package/src/lib/siteNavigation.ts +49 -0
- package/src/lib/sitePages.ts +96 -38
- package/src/pages/{[slug].astro → [...slug].astro} +2 -2
- package/src/pages/index.astro +2 -1
- package/src/styles/global.css +743 -57
- package/starters/basic/README.md +9 -11
- package/starters/basic/site/{content.md → pages/000-home/content.md} +7 -4
- package/starters/basic/site/sitewide-content.yaml +1 -10
- package/starters/basic/site/theme.yaml +1 -105
- package/starters/project/README.md +14 -14
- package/starters/project/site/{content.md → pages/000-home/content.md} +5 -4
- package/starters/project/site/{routes → pages}/010-guide/content.md +5 -4
- package/starters/project/site/sitewide-content.yaml +1 -10
- package/starters/project/site/theme.yaml +1 -31
- package/docs/routes.md +0 -121
- package/examples/feature-demos/media-and-surfaces/site/routes/020-surfaces/theme.yaml +0 -3
- package/examples/feature-demos/sitewide-content/site/content.md +0 -16
- package/examples/feature-demos/sitewide-content/site/routes/010-identity/content.md +0 -20
- package/examples/feature-demos/theme-presets/README.md +0 -18
- package/examples/feature-demos/theme-presets/site/.norna/generated-images.json +0 -290
- package/examples/feature-demos/theme-presets/site/content.md +0 -17
- package/examples/feature-demos/theme-presets/site/sitewide-content.yaml +0 -12
- package/examples/feature-demos/theme-presets/site/theme.yaml +0 -1
- package/fixtures/content-model-v2/site/routes/010-guide/content.md +0 -17
- package/scripts/lib/route-model.mjs +0 -17
- package/scripts/test-route-model.mjs +0 -32
- package/src/lib/routeThemes.ts +0 -41
- /package/examples/complete-sites/dog-shelter-multi-page/site/{images/intro → pages/000-home/images}/shelter-dog.jpg +0 -0
- /package/examples/complete-sites/dog-shelter-multi-page/site/{routes/010-dogs/images/dogs → pages/010-dogs/images}/rex.jpg +0 -0
- /package/examples/complete-sites/dog-shelter-multi-page/site/{routes/010-dogs/images/dogs → pages/010-dogs/images}/rover.jpg +0 -0
- /package/examples/complete-sites/dog-shelter-multi-page/site/{routes/020-adopt/images/adopt → pages/020-adopt/images}/adoption-dog.jpg +0 -0
- /package/examples/complete-sites/dog-shelter-single-page/site/{images/you-can-help → pages/000-home/images}/foster-dog.jpg +0 -0
- /package/examples/complete-sites/dog-shelter-single-page/site/{images/what-we-do → pages/000-home/images}/rescue-dog.jpg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/cards → pages/010-media/images}/card-carousel.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/cards → pages/010-media/images}/card-stack.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/cards → pages/010-media/images}/card-surfaces.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/carousel → pages/010-media/images}/carousel-one.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/carousel → pages/010-media/images}/carousel-three.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/carousel → pages/010-media/images}/carousel-two.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/stack → pages/010-media/images}/stack-one.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/stack → pages/010-media/images}/stack-two.svg +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-documentation}/site/config.yaml +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/020-documentation/images/documentation → theme-preset-documentation/site/pages/000-home/images}/black-schnauzer.jpg +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/020-documentation/images/documentation → theme-preset-documentation/site/pages/000-home/images}/retriever-portrait.jpg +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/020-documentation/images/documentation → theme-preset-documentation/site/pages/000-home/images}/schnauzer-portrait.jpg +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-documentation}/site/public/robots.txt +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/020-documentation → theme-preset-documentation/site}/theme.yaml +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/010-portfolio/images/portfolio → theme-preset-portfolio/site/pages/000-home/images}/puppy-portrait.jpg +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/010-portfolio/images/portfolio → theme-preset-portfolio/site/pages/000-home/images}/shepherd-portrait.jpg +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/010-portfolio/images/portfolio → theme-preset-portfolio/site/pages/000-home/images}/white-puppy.jpg +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/010-portfolio → theme-preset-portfolio/site}/theme.yaml +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/routeTheme.schema.json +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/site.schema.json +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/sitewide.schema.json +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/collections/theme.schema.json +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/content-assets.mjs +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/content-modules.mjs +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/content.d.ts +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/data-store.json +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/dev-local.json +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/dev.json +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/dev.log +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/settings.json +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/.astro/types.d.ts +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/_metadata.json +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro-D_GIpJIE.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_aria-query.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_axobject-query.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_html-escaper.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/audit-DM9Hkl5B.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/embla-carousel.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/embla-carousel.js.map +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/highlight-DnZ1ULOL.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/icons-RyebKi45.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/package.json +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/settings-DaU-gNnK.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/toolbar-63PA619H.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/ui-library--bkcNSYz.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/window-jPkpKVcy.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/xray-BXCHpEJP.js +0 -0
- /package/examples/feature-demos/{theme-presets → theme-preset-project}/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/030-project/images/project → theme-preset-project/site/pages/000-home/images}/boxer-portrait.jpg +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/030-project/images/project → theme-preset-project/site/pages/000-home/images}/grass-puppy.jpg +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/030-project/images/project → theme-preset-project/site/pages/000-home/images}/grey-street-dog.jpg +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/030-project → theme-preset-project/site}/theme.yaml +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/040-statement/images/statement → theme-preset-statement/site/pages/000-home/images}/black-pedigree.jpg +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/040-statement/images/statement → theme-preset-statement/site/pages/000-home/images}/sheepdog-grass.jpg +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/040-statement/images/statement → theme-preset-statement/site/pages/000-home/images}/sheepdog-wide.jpg +0 -0
- /package/examples/feature-demos/{theme-presets/site/routes/040-statement → theme-preset-statement/site}/theme.yaml +0 -0
- /package/fixtures/basic/site/{images/work → pages/000-home/images}/.gitkeep +0 -0
- /package/fixtures/content-model-v2/site/{images/card-section → pages/000-home/images}/adopt.svg +0 -0
- /package/fixtures/content-model-v2/site/{images/intro → pages/000-home/images}/detail.jpg +0 -0
- /package/fixtures/content-model-v2/site/{images/intro → pages/000-home/images}/duplicate.jpg +0 -0
- /package/fixtures/content-model-v2/site/{images/card-section → pages/000-home/images}/foster.svg +0 -0
- /package/fixtures/content-model-v2/site/{images/intro → pages/000-home/images}/hero.jpg +0 -0
- /package/fixtures/content-model-v2/site/{images/plain → pages/000-home/images}/image.jpg +0 -0
- /package/fixtures/content-model-v2/site/{images/timed → pages/000-home/images}/slide-one.jpg +0 -0
- /package/fixtures/content-model-v2/site/{images/timed → pages/000-home/images}/slide-three.jpg +0 -0
- /package/fixtures/content-model-v2/site/{images/timed → pages/000-home/images}/slide-two.jpg +0 -0
- /package/fixtures/content-model-v2/site/{routes/010-guide/images/intro → pages/010-guide/images}/duplicate.jpg +0 -0
- /package/starters/basic/site/{images/work → pages/000-home/images}/.gitkeep +0 -0
package/docs/public-files.md
CHANGED
|
@@ -11,62 +11,72 @@ convention.
|
|
|
11
11
|
|
|
12
12
|
## Navigation Logo
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
To add a navigation logo, place exactly one supported logo file directly in
|
|
15
|
+
`site/public/`:
|
|
16
16
|
|
|
17
17
|
- `logo.svg`
|
|
18
18
|
- `logo.png`
|
|
19
19
|
- `logo.jpg`
|
|
20
20
|
- `logo.jpeg`
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
Norna discovers the logo from its filename, so you do not configure a path or
|
|
23
|
+
enable it separately. Use the exact lowercase filename to keep the site
|
|
24
|
+
portable between case-sensitive and case-insensitive file systems.
|
|
24
25
|
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
The logo links to the homepage. Its alternative text comes from the homepage
|
|
27
|
+
Markdown H1 in `site/pages/000-home/content.md`; no separate site name or logo alt text is
|
|
28
|
+
configured.
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
Configure top-level `logo` in `site/sitewide-content.yaml` only when you need
|
|
31
|
+
to override the displayed height:
|
|
29
32
|
|
|
30
33
|
```yaml
|
|
31
|
-
|
|
32
|
-
|
|
34
|
+
logo:
|
|
35
|
+
height: 2rem
|
|
33
36
|
```
|
|
34
37
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
Add the optional `logo` object only to override the displayed height:
|
|
39
|
-
|
|
40
|
-
```yaml
|
|
41
|
-
navigation:
|
|
42
|
-
label: Example Site
|
|
43
|
-
logo:
|
|
44
|
-
height: 2rem
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
The width follows the logo's intrinsic aspect ratio. `navigation.logo` does not
|
|
48
|
-
enable the logo or select a file.
|
|
38
|
+
The width follows the image's intrinsic aspect ratio. `logo` does
|
|
39
|
+
not enable the logo or select a file.
|
|
49
40
|
|
|
50
41
|
`norna config:check` fails when it finds multiple supported logo files, or when
|
|
51
|
-
`
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
## Logos And Favicons
|
|
42
|
+
`logo` is configured but no logo file exists. A site without a logo uses its
|
|
43
|
+
ordinary page-title navigation; the check reports the missing logo as a
|
|
44
|
+
warning.
|
|
55
45
|
|
|
56
|
-
|
|
57
|
-
in browser tabs, bookmarks, and similar browser UI. They are independent and
|
|
58
|
-
may coexist.
|
|
46
|
+
## Browser Icons
|
|
59
47
|
|
|
60
|
-
|
|
48
|
+
To add browser icons, place one or more supported files directly in
|
|
49
|
+
`site/public/`:
|
|
61
50
|
|
|
62
51
|
- `favicon.svg`
|
|
63
52
|
- `favicon.ico`
|
|
64
53
|
- `favicon.png`
|
|
65
54
|
- `apple-touch-icon.png`
|
|
66
55
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
56
|
+
Norna discovers these files from their filenames, so you do not configure paths
|
|
57
|
+
or enable them separately. Use the exact lowercase filenames to keep the site
|
|
58
|
+
portable between case-sensitive and case-insensitive file systems.
|
|
59
|
+
|
|
60
|
+
You may include several supported browser-icon files. Norna links every file it
|
|
61
|
+
finds and lets the browser select the appropriate format.
|
|
62
|
+
|
|
63
|
+
Browser icons are separate from the navigation logo. The logo appears inside
|
|
64
|
+
the website, while browser icons identify it in tabs, bookmarks, and similar
|
|
65
|
+
browser interfaces.
|
|
66
|
+
|
|
67
|
+
## GitHub Pages Custom Domain
|
|
68
|
+
|
|
69
|
+
To use a custom domain with GitHub Pages, place a file named exactly `CNAME`
|
|
70
|
+
directly in `site/public/`. Write the domain name in the file without a protocol
|
|
71
|
+
or path:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
www.example.com
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Norna does not discover or interpret `CNAME`; it copies the file to the root of
|
|
78
|
+
the generated website. GitHub Pages gives the filename its meaning. The public
|
|
79
|
+
`url` in `site/config.yaml` should use the same domain.
|
|
70
80
|
|
|
71
81
|
## Other Static Files
|
|
72
82
|
|
|
@@ -75,12 +85,16 @@ Other names are not restricted. For example:
|
|
|
75
85
|
```text
|
|
76
86
|
site/public/
|
|
77
87
|
|-- robots.txt
|
|
78
|
-
|-- CNAME
|
|
79
88
|
|-- verification.html
|
|
80
89
|
`-- downloads/
|
|
81
90
|
`-- project-overview.pdf
|
|
82
91
|
```
|
|
83
92
|
|
|
93
|
+
Except for the navigation logo and browser icons documented above, Norna does
|
|
94
|
+
not attach meaning to filenames or inspect their contents. It copies them
|
|
95
|
+
unchanged. Browsers, crawlers, hosting services, and verification providers may
|
|
96
|
+
still require their own exact filenames and locations.
|
|
97
|
+
|
|
84
98
|
Norna preserves subdirectories while copying these files. A source file such
|
|
85
99
|
as `site/public/downloads/project-overview.pdf` is published at
|
|
86
100
|
`/downloads/project-overview.pdf`, prefixed with the site's configured base path
|
|
@@ -102,4 +116,3 @@ validated, synced, processed, and captioned. See
|
|
|
102
116
|
`norna site:public` copies source files from `site/public/` to
|
|
103
117
|
`site/.norna/public/`. The latter directory is generated build-preparation
|
|
104
118
|
output and must not be edited or versioned.
|
|
105
|
-
|
package/docs/publishing.md
CHANGED
|
@@ -9,7 +9,21 @@ want to deploy the documentation site.
|
|
|
9
9
|
|
|
10
10
|
## GitHub Pages Workflow
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
`norna init` creates the GitHub Pages workflow at exactly:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
.github/workflows/deploy.yml
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
The file belongs to the site repository. GitHub Actions runs its contents, while
|
|
19
|
+
Norna's deploy helpers use the filename to find and monitor the workflow. Keep
|
|
20
|
+
the default filename when using `norna deploy`.
|
|
21
|
+
|
|
22
|
+
GitHub Actions itself permits other workflow filenames. If the file is renamed,
|
|
23
|
+
`norna deploy:watch` can monitor it with `--workflow <name-or-file>`, but the
|
|
24
|
+
normal `norna deploy` command still expects `deploy.yml`.
|
|
25
|
+
|
|
26
|
+
The starter workflow:
|
|
13
27
|
|
|
14
28
|
1. runs for the repository's default branch,
|
|
15
29
|
2. checks out the site repository,
|
|
@@ -20,8 +34,10 @@ Each site repository owns `.github/workflows/deploy.yml`. The starter workflow:
|
|
|
20
34
|
7. deploys the artifact to GitHub Pages.
|
|
21
35
|
|
|
22
36
|
In the GitHub repository settings, set Pages to build from GitHub Actions.
|
|
23
|
-
Site-specific public files such as `site/public/CNAME`, `robots.txt
|
|
24
|
-
`sitemap.xml` belong in the site repository.
|
|
37
|
+
Site-specific public files such as `site/public/CNAME`, `robots.txt`, and
|
|
38
|
+
`sitemap.xml` belong in the site repository. Norna copies them, while GitHub
|
|
39
|
+
Pages, crawlers, and other external consumers give those filenames their
|
|
40
|
+
meaning. See [Public Files](public-files.md).
|
|
25
41
|
|
|
26
42
|
For a project site without a custom domain, include the repository path in
|
|
27
43
|
`site/config.yaml`:
|
package/docs/site-files.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Norna expects a defined set of files and directories. Their names and locations
|
|
4
4
|
are part of the site model: following the structure lets Norna find content,
|
|
5
|
-
presentation, configuration,
|
|
5
|
+
presentation, configuration, pages, and assets without path configuration.
|
|
6
6
|
|
|
7
7
|
The selected site directory is `site/` by default:
|
|
8
8
|
|
|
@@ -11,15 +11,19 @@ site/
|
|
|
11
11
|
|-- config.yaml
|
|
12
12
|
|-- theme.yaml
|
|
13
13
|
|-- sitewide-content.yaml
|
|
14
|
-
|--
|
|
15
|
-
|--
|
|
16
|
-
|
|
|
17
|
-
|
|
18
|
-
| `--
|
|
14
|
+
|-- pages/
|
|
15
|
+
| |-- 000-home/
|
|
16
|
+
| | |-- content.md
|
|
17
|
+
| | `-- images/
|
|
18
|
+
| | `-- image.jpg
|
|
19
|
+
| `-- 010-guide/
|
|
19
20
|
| |-- content.md
|
|
20
21
|
| |-- theme.yaml
|
|
21
|
-
|
|
|
22
|
-
|
|
|
22
|
+
| |-- images/
|
|
23
|
+
| | `-- image.jpg
|
|
24
|
+
| `-- pages/
|
|
25
|
+
| `-- 010-installation/
|
|
26
|
+
| `-- content.md
|
|
23
27
|
|-- public/
|
|
24
28
|
`-- .norna/
|
|
25
29
|
|-- generated-images.json
|
|
@@ -36,8 +40,8 @@ case-insensitive file systems.
|
|
|
36
40
|
| --- | --- | --- |
|
|
37
41
|
| `config.yaml` | Yes | Public URL, language, and browser scroll behavior. |
|
|
38
42
|
| `theme.yaml` | Yes | Complete visual preset and optional focused overrides. |
|
|
39
|
-
| `sitewide-content.yaml` | No | Shared
|
|
40
|
-
| `
|
|
43
|
+
| `sitewide-content.yaml` | No | Shared logo display settings, banners, and footer. |
|
|
44
|
+
| `pages/` | Yes | Homepage, top-level pages, and nested page hierarchies. |
|
|
41
45
|
|
|
42
46
|
These responsibilities are deliberately separate:
|
|
43
47
|
|
|
@@ -47,43 +51,47 @@ These responsibilities are deliberately separate:
|
|
|
47
51
|
only a preset selection.
|
|
48
52
|
- [`sitewide-content.yaml`](sitewide-content.md) contains editorial material
|
|
49
53
|
shared by every page.
|
|
50
|
-
- [`content.md`](content.md) is the homepage
|
|
51
|
-
Markdown
|
|
54
|
+
- [`pages/000-home/content.md`](content.md) is the required homepage and remains
|
|
55
|
+
ordinary Markdown. YAML frontmatter is optional.
|
|
52
56
|
|
|
53
|
-
|
|
54
|
-
configuration and shared
|
|
57
|
+
Pages cannot provide `config.yaml` or `sitewide-content.yaml`. Technical
|
|
58
|
+
configuration and shared logo, banner, and footer settings have one site-wide
|
|
59
|
+
source.
|
|
55
60
|
|
|
56
|
-
##
|
|
61
|
+
## Pages
|
|
57
62
|
|
|
58
|
-
|
|
63
|
+
Every page is represented by a directory containing `content.md`. The homepage
|
|
64
|
+
is the one reserved page:
|
|
59
65
|
|
|
60
66
|
```text
|
|
61
|
-
site/
|
|
67
|
+
site/pages/000-home/content.md
|
|
62
68
|
```
|
|
63
69
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
generated variants, and syncing.
|
|
68
|
-
|
|
69
|
-
## Routes
|
|
70
|
-
|
|
71
|
-
Each first-level route is one directory under `routes/`:
|
|
70
|
+
It maps to `/`, cannot contain child pages, and appears first in global
|
|
71
|
+
navigation. Other directories directly under `site/pages/` are top-level page
|
|
72
|
+
roots:
|
|
72
73
|
|
|
73
74
|
```text
|
|
74
|
-
site/
|
|
75
|
+
site/pages/010-guide/
|
|
75
76
|
|-- content.md
|
|
76
77
|
|-- theme.yaml
|
|
77
|
-
|
|
78
|
-
|
|
78
|
+
|-- images/
|
|
79
|
+
| `-- image.jpg
|
|
80
|
+
`-- pages/
|
|
81
|
+
`-- 010-installation/
|
|
82
|
+
|-- content.md
|
|
83
|
+
`-- images/
|
|
84
|
+
`-- diagram.svg
|
|
79
85
|
```
|
|
80
86
|
|
|
81
|
-
`
|
|
82
|
-
|
|
83
|
-
`
|
|
87
|
+
Nested `pages/` directories create child pages and may continue to further
|
|
88
|
+
depths. Each page owns its optional `images/` directory. A page-local
|
|
89
|
+
`theme.yaml` may adjust a limited set of presentation properties and is inherited
|
|
90
|
+
by descendants; site colors, typography, shape, and navigation remain global.
|
|
84
91
|
|
|
85
|
-
The three-digit
|
|
86
|
-
URL. See [
|
|
92
|
+
The three-digit page prefix controls sibling navigation order and is not part
|
|
93
|
+
of the URL. See [Pages](pages.md) for hierarchy, URL, navigation, and page-theme
|
|
94
|
+
rules. See [Images and Metadata](images-and-metadata.md) for managed files.
|
|
87
95
|
|
|
88
96
|
## Public Files
|
|
89
97
|
|
|
@@ -91,8 +99,9 @@ URL. See [Routes](routes.md) for exact directory-name and route-id rules.
|
|
|
91
99
|
names are site-owned, but Norna recognizes a small set of exact conventional
|
|
92
100
|
filenames for the navigation logo and browser icons.
|
|
93
101
|
|
|
94
|
-
See [Public Files](public-files.md) for logo and
|
|
95
|
-
static files, root-relative links,
|
|
102
|
+
See [Public Files](public-files.md) for navigation-logo and browser-icon
|
|
103
|
+
filenames, GitHub Pages `CNAME`, arbitrary static files, root-relative links,
|
|
104
|
+
and publishing paths.
|
|
96
105
|
|
|
97
106
|
## Selecting The Site Directory
|
|
98
107
|
|
|
@@ -100,8 +109,8 @@ Use `NORNA_SITE_DIR` or `norna --site-dir <path>` to select a site directory
|
|
|
100
109
|
explicitly.
|
|
101
110
|
|
|
102
111
|
Without an explicit selection, Norna first accepts the current directory when
|
|
103
|
-
it contains
|
|
104
|
-
it finds a default `site/` directory containing those
|
|
112
|
+
it contains `config.yaml` and `pages/000-home/content.md`. Otherwise it walks
|
|
113
|
+
upward until it finds a default `site/` directory containing those markers.
|
|
105
114
|
|
|
106
115
|
## Versioned Files
|
|
107
116
|
|
|
@@ -141,4 +150,3 @@ site:
|
|
|
141
150
|
- `examples/`: complete sites and focused feature demonstrations;
|
|
142
151
|
- `fixtures/`: engine regression input;
|
|
143
152
|
- root `site/`: the Norna introduction and documentation site.
|
|
144
|
-
|
package/docs/sitewide-content.md
CHANGED
|
@@ -1,45 +1,37 @@
|
|
|
1
1
|
# `sitewide-content.yaml`
|
|
2
2
|
|
|
3
3
|
`site/sitewide-content.yaml` is optional. It contains editorial content and
|
|
4
|
-
|
|
4
|
+
optional logo display settings shared by every page: banners, footer, and an
|
|
5
|
+
optional navigation-logo height override.
|
|
5
6
|
|
|
6
7
|
The file contains plain YAML without Markdown frontmatter delimiters. Page
|
|
7
8
|
sections do not belong here; they remain in each page's `content.md`.
|
|
8
9
|
|
|
9
|
-
## Navigation
|
|
10
|
+
## Navigation Logo
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
A logo file is discovered from `site/public/`; no path or site name is
|
|
13
|
+
configured here. The logo links to the homepage, and its alternative text
|
|
14
|
+
comes from the homepage Markdown H1 in `site/pages/000-home/content.md`.
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
navigation:
|
|
16
|
-
label: Example Site
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
Without a navigation logo, `label` is shown in the home link. With a logo,
|
|
20
|
-
`label` becomes the image alternative text. If omitted, Norna uses the homepage
|
|
21
|
-
title from `site/content.md`.
|
|
22
|
-
|
|
23
|
-
A logo file is discovered from `site/public/`; no path is configured here. Add
|
|
24
|
-
`logo` only to override its displayed height:
|
|
16
|
+
Add `logo` only to override the discovered file's displayed height:
|
|
25
17
|
|
|
26
18
|
```yaml
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
logo:
|
|
30
|
-
height: 2.6rem
|
|
19
|
+
logo:
|
|
20
|
+
height: 2.6rem
|
|
31
21
|
```
|
|
32
22
|
|
|
33
23
|
The logo width follows the file's intrinsic aspect ratio. See
|
|
34
24
|
[Public Files: Navigation Logo](public-files.md#navigation-logo) for exact
|
|
35
25
|
filenames, placement, portability, and validation rules.
|
|
36
26
|
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
The logo is a separate home link and does not have a section menu. In a
|
|
28
|
+
multi-page site, the homepage remains the first ordinary navigation item, uses
|
|
29
|
+
its Markdown H1 as its label, and exposes its sections in the same way as
|
|
30
|
+
pages. Page content and page themes cannot replace the shared logo setting.
|
|
39
31
|
|
|
40
32
|
## Banners
|
|
41
33
|
|
|
42
|
-
Use `banners` for short notices shown above page content on every
|
|
34
|
+
Use `banners` for short notices shown above page content on every page. List
|
|
43
35
|
order controls presentation order. Each banner needs a unique lowercase `id`,
|
|
44
36
|
a title, and text:
|
|
45
37
|
|
|
@@ -54,9 +46,8 @@ banners:
|
|
|
54
46
|
text: Not for production use.
|
|
55
47
|
```
|
|
56
48
|
|
|
57
|
-
`tone` currently supports `warning`. `visible` is optional
|
|
58
|
-
|
|
59
|
-
exclusive.
|
|
49
|
+
`tone` currently supports `warning`. `visible` is optional. `from` is inclusive
|
|
50
|
+
and `until` is exclusive; both use `YYYY-MM-DD`, and either may be omitted.
|
|
60
51
|
|
|
61
52
|
Visitors can dismiss each active banner. Dismissal state is stored locally in
|
|
62
53
|
the browser and tied to the banner content, so an edited banner can appear
|
|
@@ -71,19 +62,12 @@ information:
|
|
|
71
62
|
```yaml
|
|
72
63
|
footer:
|
|
73
64
|
copyrightMessage: (c) Example Owner.
|
|
74
|
-
buildInfo:
|
|
75
|
-
enabled: true
|
|
76
|
-
text: Built
|
|
77
|
-
dateTimeFormat:
|
|
78
|
-
locale: en-GB
|
|
79
|
-
timeZone: UTC
|
|
80
|
-
dateStyle: short
|
|
81
|
-
timeStyle: short
|
|
65
|
+
buildInfo: true
|
|
82
66
|
```
|
|
83
67
|
|
|
84
|
-
`
|
|
85
|
-
|
|
86
|
-
absent, no footer is rendered.
|
|
68
|
+
Set `buildInfo` to `true` to show the generated build date and time. Norna uses
|
|
69
|
+
the site's configured language, a compact format, and UTC. If both copyright
|
|
70
|
+
text and build information are absent, no footer is rendered.
|
|
87
71
|
|
|
88
72
|
See [Site Files](site-files.md) for where this optional file belongs in the
|
|
89
73
|
complete site model.
|