@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/starters/basic/README.md
CHANGED
|
@@ -15,14 +15,12 @@ If the standard local port is blocked, start with:
|
|
|
15
15
|
npm run norna:dev -- --kill
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
Edit
|
|
18
|
+
Edit shared logo settings, banners, and footer in
|
|
19
19
|
`site/sitewide-content.yaml`,
|
|
20
20
|
site-wide visual defaults in `site/theme.yaml`, homepage content and section
|
|
21
|
-
metadata in `site/content.md`, and technical settings such as URL
|
|
22
|
-
in `site/config.yaml`. Keep source images under
|
|
23
|
-
and static public files under `site/public/`.
|
|
24
|
-
match the section id in Markdown, for example `## Work {#work}` uses
|
|
25
|
-
`site/images/work/`.
|
|
21
|
+
metadata in `site/pages/000-home/content.md`, and technical settings such as URL
|
|
22
|
+
and locale in `site/config.yaml`. Keep managed homepage source images under
|
|
23
|
+
`site/pages/000-home/images/` and static public files under `site/public/`.
|
|
26
24
|
|
|
27
25
|
For a GitHub Pages project site without a custom domain, include the repository
|
|
28
26
|
path in the public URL:
|
|
@@ -36,10 +34,10 @@ Norna derives `/repository-name/` as the base path. Use a root URL such as
|
|
|
36
34
|
|
|
37
35
|
In GitHub repository settings, configure Pages to build from GitHub Actions.
|
|
38
36
|
|
|
39
|
-
Page width, side gutters,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
Page width, side gutters, content spacing, image sizing, palette, shape, and
|
|
38
|
+
site-wide typography are configured in `site/theme.yaml`. A page may use a
|
|
39
|
+
limited `theme.yaml` for local text width, content spacing, managed-image
|
|
40
|
+
sizing, and section background pattern.
|
|
43
41
|
|
|
44
42
|
Commit `package-lock.json` after the first install so GitHub Actions can use
|
|
45
43
|
`npm ci`.
|
|
@@ -73,7 +71,7 @@ Generic documentation lives in the `norna` repository:
|
|
|
73
71
|
- `docs/content.md`
|
|
74
72
|
- `docs/theme.md`
|
|
75
73
|
- `docs/typography.md`
|
|
76
|
-
- `docs/
|
|
74
|
+
- `docs/pages.md`
|
|
77
75
|
- `docs/configuration.md`
|
|
78
76
|
- `docs/commands.md`
|
|
79
77
|
- `docs/images-and-metadata.md`
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
description: Minimal norna starter site.
|
|
2
|
+
page:
|
|
3
|
+
description: Minimal norna starter site.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
# Example Site
|
|
7
|
+
|
|
8
|
+
|
|
6
9
|
## Intro {#intro}
|
|
7
10
|
This is a minimal starter site for norna. Since this site doesn't have any
|
|
8
|
-
|
|
11
|
+
pages defined, the navigation menu will be a sticky bar with anchor links for
|
|
9
12
|
ease of use on phones etc. **Highlighted inline text** when a short
|
|
10
13
|
phrase needs emphasis
|
|
11
14
|
## Work {#work}
|
|
12
15
|
Add Norna image blocks in Markdown where the images should appear. Put
|
|
13
|
-
matching source images under `images
|
|
16
|
+
matching source images directly under `images/`.
|
|
14
17
|
|
|
15
18
|
````
|
|
16
19
|
```norna-image-stack
|
|
@@ -1,105 +1 @@
|
|
|
1
|
-
|
|
2
|
-
# Site-wide visual defaults. Remove a value to use the engine default.
|
|
3
|
-
# Active values below are ordinary YAML; this marked comment block is only help text.
|
|
4
|
-
#
|
|
5
|
-
# Available structure:
|
|
6
|
-
# layout:
|
|
7
|
-
# density: compact | normal | airy
|
|
8
|
-
# pageWidth: CSS length, e.g. 1180px
|
|
9
|
-
# gutter:
|
|
10
|
-
# desktop: CSS length or clamp(), e.g. clamp(1.25rem, 4vw, 3rem)
|
|
11
|
-
# mobile: CSS length, e.g. 1rem
|
|
12
|
-
# spacing:
|
|
13
|
-
# firstSectionTop:
|
|
14
|
-
# desktop: CSS length or clamp(), e.g. clamp(1.875rem, 3vw, 2.75rem)
|
|
15
|
-
# mobile: CSS length, e.g. 1.375rem
|
|
16
|
-
# sectionGap:
|
|
17
|
-
# desktop: CSS length or clamp(), e.g. clamp(1.4rem, 3vw, 2.75rem)
|
|
18
|
-
# mobile: CSS length, e.g. 1.5rem
|
|
19
|
-
# finalSectionBottom:
|
|
20
|
-
# desktop: CSS length or clamp(), e.g. clamp(1.4rem, 3vw, 2.75rem)
|
|
21
|
-
# mobile: CSS length, e.g. 1.5rem
|
|
22
|
-
# headingToBlock:
|
|
23
|
-
# desktop: CSS length, e.g. 0.75em
|
|
24
|
-
# mobile: CSS length, e.g. 0.7em
|
|
25
|
-
# blockGap:
|
|
26
|
-
# desktop: CSS length, e.g. 1.5em
|
|
27
|
-
# mobile: CSS length, e.g. 1.25em
|
|
28
|
-
# imageGap:
|
|
29
|
-
# desktop: CSS length or clamp(), e.g. clamp(1.25rem, 2.8vw, 2rem)
|
|
30
|
-
# mobile: CSS length, e.g. 1.5rem
|
|
31
|
-
# images:
|
|
32
|
-
# width: CSS length, e.g. 900px
|
|
33
|
-
# maxAvailableWidthPercent:
|
|
34
|
-
# desktop: number from 1 through 100
|
|
35
|
-
# mobile: number from 1 through 100
|
|
36
|
-
# maxAvailableHeightPercent:
|
|
37
|
-
# desktop: number from 1 through 100
|
|
38
|
-
# mobile: number from 1 through 100
|
|
39
|
-
# typography:
|
|
40
|
-
# fontFamily: CSS font-family stack
|
|
41
|
-
# profile: restrained | dense | reading | statement
|
|
42
|
-
# rhythm: compact | normal | airy
|
|
43
|
-
# overrides:
|
|
44
|
-
# headings:
|
|
45
|
-
# h2:
|
|
46
|
-
# align:
|
|
47
|
-
# desktop: left | center | right
|
|
48
|
-
# mobile: left | center | right
|
|
49
|
-
# size: small | medium | large | xlarge
|
|
50
|
-
# lineHeight: number from 1 through 3
|
|
51
|
-
# spacingBefore: CSS length, e.g. 0
|
|
52
|
-
# spacingAfter: CSS length, e.g. 0.55em
|
|
53
|
-
# h3:
|
|
54
|
-
# align:
|
|
55
|
-
# desktop: left | center | right
|
|
56
|
-
# mobile: left | center | right
|
|
57
|
-
# size: small | medium | large | xlarge
|
|
58
|
-
# lineHeight: number from 1 through 3
|
|
59
|
-
# spacingBefore: CSS length, e.g. 1.5em
|
|
60
|
-
# spacingAfter: CSS length, e.g. 0.5em
|
|
61
|
-
# h4:
|
|
62
|
-
# align:
|
|
63
|
-
# desktop: left | center | right
|
|
64
|
-
# mobile: left | center | right
|
|
65
|
-
# size: small | medium | large | xlarge
|
|
66
|
-
# lineHeight: number from 1 through 3
|
|
67
|
-
# spacingBefore: CSS length, e.g. 1.1em
|
|
68
|
-
# spacingAfter: CSS length, e.g. 0.4em
|
|
69
|
-
# body:
|
|
70
|
-
# align:
|
|
71
|
-
# desktop: left | center | right
|
|
72
|
-
# mobile: left | center | right
|
|
73
|
-
# size: small | medium | large | xlarge
|
|
74
|
-
# lineHeight: number from 1 through 3
|
|
75
|
-
# paragraphSpacing: CSS length, e.g. 0.85em
|
|
76
|
-
# caption:
|
|
77
|
-
# align:
|
|
78
|
-
# desktop: left | center | right
|
|
79
|
-
# mobile: left | center | right
|
|
80
|
-
# size: small | medium | large | xlarge
|
|
81
|
-
# lineHeight: number from 1 through 3
|
|
82
|
-
# spacingBefore: CSS length, e.g. 0.5em
|
|
83
|
-
# palette: dark # Alternatives: light, paper
|
|
84
|
-
# sectionSurfaces: [base, soft, emphasis]
|
|
85
|
-
# norna:end theme-help
|
|
86
|
-
layout:
|
|
87
|
-
density: normal
|
|
88
|
-
pageWidth: 1180px
|
|
89
|
-
gutter:
|
|
90
|
-
desktop: clamp(1.25rem, 4vw, 3rem)
|
|
91
|
-
mobile: 1rem
|
|
92
|
-
images:
|
|
93
|
-
width: 900px
|
|
94
|
-
maxAvailableWidthPercent:
|
|
95
|
-
desktop: 100
|
|
96
|
-
mobile: 100
|
|
97
|
-
maxAvailableHeightPercent:
|
|
98
|
-
desktop: 74
|
|
99
|
-
mobile: 68
|
|
100
|
-
typography:
|
|
101
|
-
fontFamily: "Arial, 'Helvetica Neue', Helvetica, sans-serif"
|
|
102
|
-
profile: restrained
|
|
103
|
-
rhythm: normal
|
|
104
|
-
palette: dark # Alternatives: light, paper
|
|
105
|
-
sectionSurfaces: [base, soft, emphasis]
|
|
1
|
+
preset: project
|
|
@@ -19,13 +19,13 @@ npm run norna:dev -- --kill
|
|
|
19
19
|
## Files
|
|
20
20
|
|
|
21
21
|
- `site/config.yaml`: public URL and optional language and smooth scrolling.
|
|
22
|
-
- `site/sitewide-content.yaml`: shared
|
|
23
|
-
- `site/theme.yaml`: site-wide visual
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
- `site/sitewide-content.yaml`: shared logo display settings, banners, and footer.
|
|
23
|
+
- `site/theme.yaml`: the site-wide visual preset and any focused overrides.
|
|
24
|
+
- `site/pages/000-home/content.md`: homepage title, sections, placeholders,
|
|
25
|
+
project summary,
|
|
26
26
|
links, install command, example usage, benefits, next steps, Norna blocks,
|
|
27
27
|
and license.
|
|
28
|
-
- `site/
|
|
28
|
+
- `site/pages/010-guide/content.md`: short secondary page with realistic
|
|
29
29
|
project guide content.
|
|
30
30
|
- `site/public/robots.txt`: static public file copied into the built site.
|
|
31
31
|
|
|
@@ -36,15 +36,15 @@ GitHub Pages workflow uses `npm ci`.
|
|
|
36
36
|
## Adapt The Starter
|
|
37
37
|
|
|
38
38
|
1. Replace the project name, tagline, links, install command, example usage,
|
|
39
|
-
benefits, use cases, and license in `site/content.md`.
|
|
40
|
-
2. Replace the guide examples in `site/
|
|
41
|
-
delete the
|
|
42
|
-
3. Edit `site/sitewide-content.yaml` for
|
|
39
|
+
benefits, use cases, and license in `site/pages/000-home/content.md`.
|
|
40
|
+
2. Replace the guide examples in `site/pages/010-guide/content.md`, or
|
|
41
|
+
delete the page if the homepage is enough.
|
|
42
|
+
3. Edit `site/sitewide-content.yaml` for logo display settings,
|
|
43
43
|
banners, and footer.
|
|
44
|
-
4.
|
|
45
|
-
|
|
46
|
-
5. Put
|
|
47
|
-
|
|
44
|
+
4. Select a preset in `site/theme.yaml`. Add focused overrides only when the
|
|
45
|
+
project needs them.
|
|
46
|
+
5. Put managed homepage source images in `site/pages/000-home/images/`. Images
|
|
47
|
+
for another page belong directly in that page's `images/` directory.
|
|
48
48
|
6. Edit `site/config.yaml` for the public URL and, when needed, language or smooth
|
|
49
49
|
scrolling. Deploy commands discover the GitHub repository and default branch.
|
|
50
50
|
7. Update `package.json` with the site's package name and keep
|
|
@@ -79,6 +79,6 @@ Generic Norna documentation lives in the Norna repository:
|
|
|
79
79
|
- `docs/content.md`
|
|
80
80
|
- `docs/theme.md`
|
|
81
81
|
- `docs/typography.md`
|
|
82
|
-
- `docs/
|
|
82
|
+
- `docs/pages.md`
|
|
83
83
|
- `docs/configuration.md`
|
|
84
84
|
- `docs/commands.md`
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
description: A compact project site starter for an open source developer tool.
|
|
4
|
-
navigation:
|
|
5
|
-
label: Home
|
|
2
|
+
page:
|
|
3
|
+
description: A compact project site starter for an open source developer tool.
|
|
6
4
|
---
|
|
7
5
|
|
|
6
|
+
# Your project
|
|
7
|
+
|
|
8
|
+
|
|
8
9
|
## `<Your project> - <short value proposition>` {#intro}
|
|
9
10
|
|
|
10
11
|
Describe the project in one short, concrete phrase. Focus on what it helps the
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
description: Adapt this compact guide for normal project use.
|
|
4
|
-
navigation:
|
|
5
|
-
label: Guide
|
|
2
|
+
page:
|
|
3
|
+
description: Adapt this compact guide for normal project use.
|
|
6
4
|
---
|
|
7
5
|
|
|
6
|
+
# Guide
|
|
7
|
+
|
|
8
|
+
|
|
8
9
|
## Quickstart {#quickstart}
|
|
9
10
|
|
|
10
11
|
Show the shortest path from installation to a useful result.
|
|
@@ -1,31 +1 @@
|
|
|
1
|
-
|
|
2
|
-
layout:
|
|
3
|
-
density: compact
|
|
4
|
-
pageWidth: 1120px
|
|
5
|
-
gutter:
|
|
6
|
-
desktop: clamp(1.25rem, 4vw, 3rem)
|
|
7
|
-
mobile: 1rem
|
|
8
|
-
spacing:
|
|
9
|
-
firstSectionTop:
|
|
10
|
-
desktop: clamp(0.9rem, 1.6vw, 1.5rem)
|
|
11
|
-
mobile: 0.9rem
|
|
12
|
-
sectionGap:
|
|
13
|
-
desktop: clamp(0.8rem, 1.6vw, 1.5rem)
|
|
14
|
-
mobile: 1rem
|
|
15
|
-
finalSectionBottom:
|
|
16
|
-
desktop: clamp(1rem, 2vw, 1.75rem)
|
|
17
|
-
mobile: 1rem
|
|
18
|
-
images:
|
|
19
|
-
width: 840px
|
|
20
|
-
maxAvailableWidthPercent:
|
|
21
|
-
desktop: 100
|
|
22
|
-
mobile: 100
|
|
23
|
-
maxAvailableHeightPercent:
|
|
24
|
-
desktop: 70
|
|
25
|
-
mobile: 62
|
|
26
|
-
typography:
|
|
27
|
-
fontFamily: "Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
|
|
28
|
-
profile: reading
|
|
29
|
-
rhythm: compact
|
|
30
|
-
palette: dark # Alternatives: light, paper
|
|
31
|
-
sectionSurfaces: [base, soft]
|
|
1
|
+
preset: project
|
package/docs/routes.md
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
# Routes
|
|
2
|
-
|
|
3
|
-
`site/content.md` is the homepage and builds to `/`. Optional route pages live
|
|
4
|
-
under `site/routes/<NNN-route-id>/content.md` and build to first-level
|
|
5
|
-
URLs.
|
|
6
|
-
|
|
7
|
-
Routes use the same page frontmatter, optional section metadata, Norna-managed
|
|
8
|
-
Norna blocks, and Markdown section model as the homepage. See [Content](content.md)
|
|
9
|
-
for the page and section model.
|
|
10
|
-
|
|
11
|
-
Route directories can contain route content, route-local images, and
|
|
12
|
-
an optional route-local `theme.yaml`. The route theme replaces the root visual
|
|
13
|
-
theme for that route and can select any complete top-level theme preset. Route
|
|
14
|
-
directories cannot contain `config.yaml` or `sitewide-content.yaml`; technical
|
|
15
|
-
configuration and shared identity remain at the selected site's top level.
|
|
16
|
-
|
|
17
|
-
## Route Directory Format
|
|
18
|
-
|
|
19
|
-
Route directories must use:
|
|
20
|
-
|
|
21
|
-
```text
|
|
22
|
-
NNN-route-id
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
`NNN` is a three-digit presentation order from `001` through `999`.
|
|
26
|
-
`route-id` becomes the route identity and URL segment.
|
|
27
|
-
|
|
28
|
-
Valid examples:
|
|
29
|
-
|
|
30
|
-
```text
|
|
31
|
-
010-getting-started
|
|
32
|
-
020-concepts
|
|
33
|
-
120-api-reference
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Invalid examples:
|
|
37
|
-
|
|
38
|
-
```text
|
|
39
|
-
10-about
|
|
40
|
-
000-home
|
|
41
|
-
010_About
|
|
42
|
-
010-About
|
|
43
|
-
010-about-
|
|
44
|
-
010-about--team
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
The route id may contain only lowercase `a-z`, numbers, and single hyphens
|
|
48
|
-
between alphanumeric groups. The numeric prefix is not part of the route id or
|
|
49
|
-
URL.
|
|
50
|
-
|
|
51
|
-
Renaming `030-contact/` to `015-contact/` changes navigation order but keeps
|
|
52
|
-
the route id `contact` and URL `/contact/`.
|
|
53
|
-
|
|
54
|
-
## Route File
|
|
55
|
-
|
|
56
|
-
Add a first-level route by creating:
|
|
57
|
-
|
|
58
|
-
```text
|
|
59
|
-
site/routes/010-about/content.md
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Minimal route page:
|
|
63
|
-
|
|
64
|
-
```md
|
|
65
|
-
---
|
|
66
|
-
title: About
|
|
67
|
-
description: About this site.
|
|
68
|
-
navigation:
|
|
69
|
-
label: About
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
## Intro {#intro}
|
|
73
|
-
|
|
74
|
-
Text...
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
The example above builds to `/about/`.
|
|
78
|
-
|
|
79
|
-
## Navigation
|
|
80
|
-
|
|
81
|
-
`navigation` may contain:
|
|
82
|
-
|
|
83
|
-
- `include`: optional boolean. Defaults to `true`.
|
|
84
|
-
- `label`: optional string. Defaults to `title`.
|
|
85
|
-
|
|
86
|
-
Route order comes from the directory prefix. The homepage is always first.
|
|
87
|
-
|
|
88
|
-
Current route navigation is intended for small sites. This guidance may change
|
|
89
|
-
as route support matures, but the present model is:
|
|
90
|
-
|
|
91
|
-
- A single-page site should normally use only page navigation between sections.
|
|
92
|
-
- A small multi-page site may use site navigation between routes plus page
|
|
93
|
-
navigation between sections on the current page.
|
|
94
|
-
- If a site needs many routes, deeply nested routes, or several navigation
|
|
95
|
-
levels, it has probably outgrown the current sticky-navigation model and may
|
|
96
|
-
need a different site structure or navigation system.
|
|
97
|
-
|
|
98
|
-
## Route Images
|
|
99
|
-
|
|
100
|
-
Route images live under the physical route directory:
|
|
101
|
-
|
|
102
|
-
```text
|
|
103
|
-
site/routes/010-about/images/intro/image.jpg
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
Image references in route content still use only the filename:
|
|
107
|
-
|
|
108
|
-
````md
|
|
109
|
-
```norna-image-stack
|
|
110
|
-
- image: image.jpg
|
|
111
|
-
alt: Intro image.
|
|
112
|
-
```
|
|
113
|
-
````
|
|
114
|
-
|
|
115
|
-
The image directory segment after `images/` should match the section id.
|
|
116
|
-
If the section id or route folder changes, run `norna content:check` to find
|
|
117
|
-
misplaced images and `norna content:sync` to move unambiguous files into the
|
|
118
|
-
expected section folder. `content:sync` can move images between route image
|
|
119
|
-
roots when the filename is unambiguous across the site and the move will not
|
|
120
|
-
break another reference; these cross-route writes require a clean Git working
|
|
121
|
-
tree.
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Sitewide Content
|
|
3
|
-
description: See how Norna keeps shared identity, notices and footer content consistent across routes.
|
|
4
|
-
navigation:
|
|
5
|
-
label: Home
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Shared across the site {#intro}
|
|
9
|
-
|
|
10
|
-
This demo separates page content from elements that belong to the site as a
|
|
11
|
-
whole. The logo, navigation identity, banners and footer come from shared files
|
|
12
|
-
and remain consistent as you move between routes.
|
|
13
|
-
|
|
14
|
-
Visit [Identity](/identity/) to inspect the logo and navigation model,
|
|
15
|
-
[Notices](/notices/) to inspect the banner stack and dismissal behaviour, and
|
|
16
|
-
[Footer](/footer/) to inspect persistent footer content and build information.
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Identity
|
|
3
|
-
description: See how a convention-based logo and shared identity work across a Norna site.
|
|
4
|
-
navigation:
|
|
5
|
-
label: Identity
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## One identity across routes {#identity}
|
|
9
|
-
|
|
10
|
-
The logo in the navigation is discovered from `public/logo.svg`. Its alt text
|
|
11
|
-
and display height belong to `sitewide-content.yaml`, because the identity is
|
|
12
|
-
shared by every route.
|
|
13
|
-
|
|
14
|
-
If a site has no logo file, Norna shows the navigation label as text instead. A
|
|
15
|
-
route cannot replace the shared navigation identity.
|
|
16
|
-
|
|
17
|
-
## Navigation context {#navigation}
|
|
18
|
-
|
|
19
|
-
The route links come from the site's page structure. The shared logo returns to
|
|
20
|
-
Home, while the active route is indicated in the same navigation row.
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# Themes
|
|
2
|
-
|
|
3
|
-
This feature demo compares Norna's complete built-in theme presets. Every route
|
|
4
|
-
uses one preset without overrides, so differences in layout, typography,
|
|
5
|
-
palette, surfaces and image presentation come from the preset itself.
|
|
6
|
-
|
|
7
|
-
[Live demo](https://janga.github.io/norna/examples/feature-demos/theme-presets/)
|
|
8
|
-
|
|
|
9
|
-
[View source](https://github.com/janga/norna/tree/main/examples/feature-demos/theme-presets)
|
|
10
|
-
|
|
11
|
-
Run it from the repository root:
|
|
12
|
-
|
|
13
|
-
```sh
|
|
14
|
-
node bin/norna.mjs --site-dir examples/feature-demos/theme-presets/site dev:local
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
The dog photos are CC0 images by Bicanski, sourced from Pixnio. Attribution is
|
|
18
|
-
included in the image captions even though the licence does not require it.
|