@janga/norna 0.7.17 → 0.7.22
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 +32 -13
- package/astro.config.mjs +22 -0
- package/bin/norna-cli.mjs +7 -1
- package/package.json +46 -12
- package/schemas/category.schema.json +20 -0
- package/schemas/config.schema.json +55 -4
- package/schemas/content-frontmatter.schema.json +5 -5
- package/schemas/manifest.json +4 -2
- package/schemas/page-theme.schema.json +192 -0
- package/schemas/sitewide-content.schema.json +18 -18
- package/schemas/theme.schema.json +364 -226
- package/scripts/add-site-node.mjs +251 -0
- package/scripts/check-config.mjs +12 -3
- package/scripts/deploy-site.mjs +6 -9
- package/scripts/generate-images.mjs +18 -29
- package/scripts/generate-schemas.mjs +7 -1
- package/scripts/init-site.mjs +35 -0
- package/scripts/lib/astro-command.mjs +14 -9
- package/scripts/lib/editor-language-service.mjs +28 -191
- package/scripts/lib/heading-ids.mjs +3 -1
- package/scripts/lib/navigation-model.mjs +23 -17
- package/scripts/lib/norna-markdown-blocks.mjs +64 -145
- package/scripts/lib/norna-markdown-render-plugin.mjs +37 -0
- package/scripts/lib/object.mjs +28 -0
- package/scripts/lib/page-markdown.mjs +282 -0
- package/scripts/lib/page-model.mjs +26 -7
- package/scripts/lib/presentation-contract.mjs +266 -0
- package/scripts/lib/presentation-palette-metadata.mjs +51 -0
- package/scripts/lib/presentation.mjs +548 -93
- package/scripts/lib/project-config.mjs +73 -16
- package/scripts/lib/schema-definitions.mjs +89 -21
- package/scripts/lib/schema-editor-metadata.mjs +166 -33
- package/scripts/lib/schema-value-definitions.mjs +32 -4
- package/scripts/lib/site-content.mjs +33 -223
- package/scripts/lib/site-conventions.mjs +1 -0
- package/scripts/lib/site-paths.mjs +11 -6
- package/scripts/lib/site-structure.mjs +189 -0
- package/scripts/lib/theme-config.mjs +3 -2
- package/scripts/lib/theme-presets.mjs +105 -101
- package/scripts/lib/theme-profiles.mjs +221 -0
- package/scripts/lib/typography.mjs +220 -35
- package/scripts/lib/yaml-config.mjs +46 -6
- package/scripts/lib/yaml-indentation.mjs +86 -0
- package/scripts/show-typography.mjs +3 -36
- package/scripts/sync-content-sections.mjs +88 -79
- package/src/components/DisplaySettings.astro +107 -0
- package/src/components/ImageCarousel.astro +34 -13
- package/src/components/NavigationPageTree.astro +154 -34
- package/src/components/PageContentsLinks.astro +40 -0
- package/src/components/SectionNavigationScript.astro +68 -7
- package/src/components/SiteBreadcrumbs.astro +24 -18
- package/src/components/SiteNavigation.astro +130 -46
- package/src/components/SitePage.astro +65 -55
- package/src/components/SiteSection.astro +37 -198
- package/src/components/SiteTreeNavigation.astro +36 -0
- package/src/components/TreeNavigationScript.astro +83 -0
- package/src/content.config.ts +2 -8
- package/src/layouts/BaseLayout.astro +52 -2
- package/src/lib/generatedImages.ts +0 -7
- package/src/lib/pageThemes.ts +11 -9
- package/src/lib/readerPreferencesScript.mjs +141 -0
- package/src/lib/sectionContent.ts +120 -206
- package/src/lib/siteNavigation.ts +38 -19
- package/src/lib/sitePages.ts +115 -33
- package/src/pages/[...slug].astro +2 -2
- package/src/pages/index.astro +2 -1
- package/src/styles/global.css +1110 -279
- package/starters/basic/README.md +8 -8
- package/starters/basic/site/theme.yaml +1 -105
- package/docs/README.md +0 -135
- package/docs/assets/norna-dog-shelter.jpg +0 -0
- package/docs/commands.md +0 -189
- package/docs/configuration.md +0 -119
- package/docs/content.md +0 -342
- package/docs/design/command-organization.md +0 -414
- package/docs/design/navigation-and-theme-plan.md +0 -115
- package/docs/design/norna-diagram-design.md +0 -159
- package/docs/design/site-examples-structure.md +0 -115
- package/docs/engine-development.md +0 -218
- package/docs/getting-started.md +0 -206
- package/docs/how-to/embedded-site.md +0 -35
- package/docs/images-and-metadata.md +0 -186
- package/docs/local-development.md +0 -82
- package/docs/pages.md +0 -134
- package/docs/public-files.md +0 -118
- package/docs/publishing.md +0 -117
- package/docs/requirements.md +0 -54
- package/docs/site-files.md +0 -145
- package/docs/sitewide-content.md +0 -73
- package/docs/theme.md +0 -271
- package/docs/typography.md +0 -180
- package/examples/README.md +0 -43
- package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/site.schema.json +0 -35
- package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/sitewide.schema.json +0 -97
- package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/theme.schema.json +0 -852
- package/examples/complete-sites/dog-shelter-multi-page/.astro/content-assets.mjs +0 -4
- package/examples/complete-sites/dog-shelter-multi-page/.astro/content-modules.mjs +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/.astro/content.d.ts +0 -183
- package/examples/complete-sites/dog-shelter-multi-page/.astro/data-store.json +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev-local.json +0 -8
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.json +0 -13
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.log +0 -36
- package/examples/complete-sites/dog-shelter-multi-page/.astro/settings.json +0 -5
- package/examples/complete-sites/dog-shelter-multi-page/.astro/types.d.ts +0 -2
- package/examples/complete-sites/dog-shelter-multi-page/README.md +0 -24
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/_metadata.json +0 -74
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-B3JHJyiv.js +0 -434
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro-B3JHJyiv.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-C3SVr7dT.js +0 -1534
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/audit-C3SVr7dT.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-BLtvqtzO.js +0 -48
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-C92i61-2.js +0 -42
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/icons-C92i61-2.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/package.json +0 -3
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-v5GgKks_.js +0 -190
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/settings-v5GgKks_.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-BFvJVp26.js +0 -458
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js +0 -1016
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-vo3A6TMn.js +0 -32
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/window-vo3A6TMn.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-DwhzGckb.js +0 -111
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/xray-DwhzGckb.js.map +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/site/.norna/generated-images.json +0 -98
- package/examples/complete-sites/dog-shelter-multi-page/site/config.yaml +0 -1
- package/examples/complete-sites/dog-shelter-multi-page/site/content.md +0 -23
- package/examples/complete-sites/dog-shelter-multi-page/site/images/shelter-dog.jpg +0 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/pages/010-dogs/content.md +0 -21
- package/examples/complete-sites/dog-shelter-multi-page/site/pages/010-dogs/images/rex.jpg +0 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/pages/010-dogs/images/rover.jpg +0 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/pages/020-adopt/content.md +0 -22
- package/examples/complete-sites/dog-shelter-multi-page/site/pages/020-adopt/images/adoption-dog.jpg +0 -0
- package/examples/complete-sites/dog-shelter-multi-page/site/public/favicon.svg +0 -10
- package/examples/complete-sites/dog-shelter-multi-page/site/public/logo.svg +0 -9
- package/examples/complete-sites/dog-shelter-multi-page/site/public/robots.txt +0 -2
- package/examples/complete-sites/dog-shelter-multi-page/site/sitewide-content.yaml +0 -4
- package/examples/complete-sites/dog-shelter-multi-page/site/theme.yaml +0 -1
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/site.schema.json +0 -35
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/sitewide.schema.json +0 -97
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/theme.schema.json +0 -852
- package/examples/complete-sites/dog-shelter-single-page/.astro/content-assets.mjs +0 -4
- package/examples/complete-sites/dog-shelter-single-page/.astro/content-modules.mjs +0 -1
- package/examples/complete-sites/dog-shelter-single-page/.astro/content.d.ts +0 -183
- package/examples/complete-sites/dog-shelter-single-page/.astro/data-store.json +0 -1
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev-local.json +0 -8
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev.json +0 -13
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev.log +0 -18
- package/examples/complete-sites/dog-shelter-single-page/.astro/settings.json +0 -5
- package/examples/complete-sites/dog-shelter-single-page/.astro/types.d.ts +0 -2
- package/examples/complete-sites/dog-shelter-single-page/README.md +0 -24
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/_metadata.json +0 -74
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro-B3JHJyiv.js +0 -434
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro-B3JHJyiv.js.map +0 -1
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/audit-C3SVr7dT.js +0 -1534
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/audit-C3SVr7dT.js.map +0 -1
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/highlight-BLtvqtzO.js +0 -48
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +0 -1
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/icons-C92i61-2.js +0 -42
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/icons-C92i61-2.js.map +0 -1
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/package.json +0 -3
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/settings-v5GgKks_.js +0 -190
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/settings-v5GgKks_.js.map +0 -1
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/toolbar-BFvJVp26.js +0 -458
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +0 -1
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js +0 -1016
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +0 -1
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/window-vo3A6TMn.js +0 -32
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/window-vo3A6TMn.js.map +0 -1
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/xray-DwhzGckb.js +0 -111
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/xray-DwhzGckb.js.map +0 -1
- package/examples/complete-sites/dog-shelter-single-page/site/.norna/generated-images.json +0 -50
- package/examples/complete-sites/dog-shelter-single-page/site/config.yaml +0 -1
- package/examples/complete-sites/dog-shelter-single-page/site/content.md +0 -37
- package/examples/complete-sites/dog-shelter-single-page/site/images/foster-dog.jpg +0 -0
- package/examples/complete-sites/dog-shelter-single-page/site/images/rescue-dog.jpg +0 -0
- package/examples/complete-sites/dog-shelter-single-page/site/public/favicon.svg +0 -10
- package/examples/complete-sites/dog-shelter-single-page/site/public/logo.svg +0 -9
- package/examples/complete-sites/dog-shelter-single-page/site/public/robots.txt +0 -2
- package/examples/complete-sites/dog-shelter-single-page/site/sitewide-content.yaml +0 -4
- package/examples/complete-sites/dog-shelter-single-page/site/theme.yaml +0 -1
- package/examples/feature-demos/media-and-surfaces/.astro/collections/site.schema.json +0 -35
- package/examples/feature-demos/media-and-surfaces/.astro/collections/sitewide.schema.json +0 -97
- package/examples/feature-demos/media-and-surfaces/.astro/collections/theme.schema.json +0 -852
- package/examples/feature-demos/media-and-surfaces/.astro/content-assets.mjs +0 -4
- package/examples/feature-demos/media-and-surfaces/.astro/content-modules.mjs +0 -1
- package/examples/feature-demos/media-and-surfaces/.astro/content.d.ts +0 -183
- package/examples/feature-demos/media-and-surfaces/.astro/data-store.json +0 -1
- package/examples/feature-demos/media-and-surfaces/.astro/dev.log +0 -14
- package/examples/feature-demos/media-and-surfaces/.astro/settings.json +0 -5
- package/examples/feature-demos/media-and-surfaces/.astro/types.d.ts +0 -2
- package/examples/feature-demos/media-and-surfaces/README.md +0 -21
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/_metadata.json +0 -80
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro-B3JHJyiv.js +0 -434
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro-B3JHJyiv.js.map +0 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/audit-C3SVr7dT.js +0 -1534
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/audit-C3SVr7dT.js.map +0 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/embla-carousel.js +0 -1389
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/embla-carousel.js.map +0 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/highlight-BLtvqtzO.js +0 -48
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +0 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/icons-C92i61-2.js +0 -42
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/icons-C92i61-2.js.map +0 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/package.json +0 -3
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/settings-v5GgKks_.js +0 -190
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/settings-v5GgKks_.js.map +0 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/toolbar-BFvJVp26.js +0 -458
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +0 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/ui-library-Cd35oAvo.js +0 -1016
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +0 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/window-vo3A6TMn.js +0 -32
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/window-vo3A6TMn.js.map +0 -1
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/xray-DwhzGckb.js +0 -111
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/xray-DwhzGckb.js.map +0 -1
- package/examples/feature-demos/media-and-surfaces/site/.norna/generated-images.json +0 -66
- package/examples/feature-demos/media-and-surfaces/site/config.yaml +0 -1
- package/examples/feature-demos/media-and-surfaces/site/content.md +0 -15
- package/examples/feature-demos/media-and-surfaces/site/pages/010-media/content.md +0 -71
- package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/card-carousel.svg +0 -11
- package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/card-stack.svg +0 -9
- package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/card-surfaces.svg +0 -8
- package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/carousel-one.svg +0 -8
- package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/carousel-three.svg +0 -13
- package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/carousel-two.svg +0 -8
- package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/stack-one.svg +0 -8
- package/examples/feature-demos/media-and-surfaces/site/pages/010-media/images/stack-two.svg +0 -9
- package/examples/feature-demos/media-and-surfaces/site/pages/020-surfaces/content.md +0 -41
- package/examples/feature-demos/media-and-surfaces/site/pages/020-surfaces/theme.yaml +0 -3
- package/examples/feature-demos/media-and-surfaces/site/public/robots.txt +0 -2
- package/examples/feature-demos/media-and-surfaces/site/sitewide-content.yaml +0 -2
- package/examples/feature-demos/media-and-surfaces/site/theme.yaml +0 -1
- package/examples/feature-demos/sitewide-content/.astro/collections/site.schema.json +0 -59
- package/examples/feature-demos/sitewide-content/.astro/collections/sitewide.schema.json +0 -138
- package/examples/feature-demos/sitewide-content/.astro/collections/theme.schema.json +0 -755
- package/examples/feature-demos/sitewide-content/.astro/content-assets.mjs +0 -1
- package/examples/feature-demos/sitewide-content/.astro/content-modules.mjs +0 -1
- package/examples/feature-demos/sitewide-content/.astro/content.d.ts +0 -183
- package/examples/feature-demos/sitewide-content/.astro/data-store.json +0 -1
- package/examples/feature-demos/sitewide-content/.astro/dev.json +0 -13
- package/examples/feature-demos/sitewide-content/.astro/dev.log +0 -18
- package/examples/feature-demos/sitewide-content/.astro/settings.json +0 -5
- package/examples/feature-demos/sitewide-content/.astro/types.d.ts +0 -2
- package/examples/feature-demos/sitewide-content/README.md +0 -26
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/_metadata.json +0 -74
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro-B3JHJyiv.js +0 -434
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro-B3JHJyiv.js.map +0 -1
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/audit-C3SVr7dT.js +0 -1534
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/audit-C3SVr7dT.js.map +0 -1
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/highlight-BLtvqtzO.js +0 -48
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/highlight-BLtvqtzO.js.map +0 -1
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/icons-C92i61-2.js +0 -42
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/icons-C92i61-2.js.map +0 -1
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/package.json +0 -3
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/settings-v5GgKks_.js +0 -190
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/settings-v5GgKks_.js.map +0 -1
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/toolbar-BFvJVp26.js +0 -458
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/toolbar-BFvJVp26.js.map +0 -1
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/ui-library-Cd35oAvo.js +0 -1016
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/ui-library-Cd35oAvo.js.map +0 -1
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/window-vo3A6TMn.js +0 -32
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/window-vo3A6TMn.js.map +0 -1
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/xray-DwhzGckb.js +0 -111
- package/examples/feature-demos/sitewide-content/node_modules/.vite/deps/xray-DwhzGckb.js.map +0 -1
- package/examples/feature-demos/sitewide-content/site/.norna/generated-images.json +0 -1
- package/examples/feature-demos/sitewide-content/site/config.yaml +0 -1
- package/examples/feature-demos/sitewide-content/site/content.md +0 -17
- package/examples/feature-demos/sitewide-content/site/pages/010-logo-and-navigation/content.md +0 -17
- package/examples/feature-demos/sitewide-content/site/pages/020-notices/content.md +0 -23
- package/examples/feature-demos/sitewide-content/site/pages/030-footer/content.md +0 -18
- package/examples/feature-demos/sitewide-content/site/public/logo.svg +0 -6
- package/examples/feature-demos/sitewide-content/site/public/robots.txt +0 -2
- package/examples/feature-demos/sitewide-content/site/sitewide-content.yaml +0 -14
- package/examples/feature-demos/sitewide-content/site/theme.yaml +0 -1
- package/examples/feature-demos/theme-presets/.astro/collections/routeTheme.schema.json +0 -746
- package/examples/feature-demos/theme-presets/.astro/collections/site.schema.json +0 -59
- package/examples/feature-demos/theme-presets/.astro/collections/sitewide.schema.json +0 -138
- package/examples/feature-demos/theme-presets/.astro/collections/theme.schema.json +0 -755
- package/examples/feature-demos/theme-presets/.astro/content-assets.mjs +0 -4
- package/examples/feature-demos/theme-presets/.astro/content-modules.mjs +0 -1
- package/examples/feature-demos/theme-presets/.astro/content.d.ts +0 -183
- package/examples/feature-demos/theme-presets/.astro/data-store.json +0 -1
- package/examples/feature-demos/theme-presets/.astro/dev-local.json +0 -8
- package/examples/feature-demos/theme-presets/.astro/dev.json +0 -15
- package/examples/feature-demos/theme-presets/.astro/dev.log +0 -164
- package/examples/feature-demos/theme-presets/.astro/settings.json +0 -5
- package/examples/feature-demos/theme-presets/.astro/types.d.ts +0 -2
- package/examples/feature-demos/theme-presets/README.md +0 -18
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/_metadata.json +0 -80
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro-D_GIpJIE.js +0 -434
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -1
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/audit-DM9Hkl5B.js +0 -1534
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -1
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/embla-carousel.js +0 -1389
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/embla-carousel.js.map +0 -1
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/highlight-DnZ1ULOL.js +0 -48
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -1
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/icons-RyebKi45.js +0 -42
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -1
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/package.json +0 -3
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/settings-DaU-gNnK.js +0 -190
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -1
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/toolbar-63PA619H.js +0 -458
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -1
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/ui-library--bkcNSYz.js +0 -1016
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -1
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/window-jPkpKVcy.js +0 -32
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -1
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/xray-BXCHpEJP.js +0 -111
- package/examples/feature-demos/theme-presets/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -1
- package/examples/feature-demos/theme-presets/site/.norna/generated-images.json +0 -290
- package/examples/feature-demos/theme-presets/site/config.yaml +0 -1
- package/examples/feature-demos/theme-presets/site/content.md +0 -14
- package/examples/feature-demos/theme-presets/site/pages/010-portfolio/content.md +0 -31
- package/examples/feature-demos/theme-presets/site/pages/010-portfolio/images/puppy-portrait.jpg +0 -0
- package/examples/feature-demos/theme-presets/site/pages/010-portfolio/images/shepherd-portrait.jpg +0 -0
- package/examples/feature-demos/theme-presets/site/pages/010-portfolio/images/white-puppy.jpg +0 -0
- package/examples/feature-demos/theme-presets/site/pages/010-portfolio/theme.yaml +0 -1
- package/examples/feature-demos/theme-presets/site/pages/020-documentation/content.md +0 -30
- package/examples/feature-demos/theme-presets/site/pages/020-documentation/images/black-schnauzer.jpg +0 -0
- package/examples/feature-demos/theme-presets/site/pages/020-documentation/images/retriever-portrait.jpg +0 -0
- package/examples/feature-demos/theme-presets/site/pages/020-documentation/images/schnauzer-portrait.jpg +0 -0
- package/examples/feature-demos/theme-presets/site/pages/020-documentation/theme.yaml +0 -1
- package/examples/feature-demos/theme-presets/site/pages/030-project/content.md +0 -31
- package/examples/feature-demos/theme-presets/site/pages/030-project/images/boxer-portrait.jpg +0 -0
- package/examples/feature-demos/theme-presets/site/pages/030-project/images/grass-puppy.jpg +0 -0
- package/examples/feature-demos/theme-presets/site/pages/030-project/images/grey-street-dog.jpg +0 -0
- package/examples/feature-demos/theme-presets/site/pages/030-project/theme.yaml +0 -1
- package/examples/feature-demos/theme-presets/site/pages/040-statement/content.md +0 -31
- package/examples/feature-demos/theme-presets/site/pages/040-statement/images/black-pedigree.jpg +0 -0
- package/examples/feature-demos/theme-presets/site/pages/040-statement/images/sheepdog-grass.jpg +0 -0
- package/examples/feature-demos/theme-presets/site/pages/040-statement/images/sheepdog-wide.jpg +0 -0
- package/examples/feature-demos/theme-presets/site/pages/040-statement/theme.yaml +0 -1
- package/examples/feature-demos/theme-presets/site/public/robots.txt +0 -2
- package/examples/feature-demos/theme-presets/site/sitewide-content.yaml +0 -3
- package/examples/feature-demos/theme-presets/site/theme.yaml +0 -1
- package/fixtures/basic/site/.norna/generated-images.json +0 -1
- package/fixtures/basic/site/config.yaml +0 -1
- package/fixtures/basic/site/content.md +0 -14
- package/fixtures/basic/site/public/robots.txt +0 -2
- package/fixtures/basic/site/sitewide-content.yaml +0 -3
- package/fixtures/basic/site/theme.yaml +0 -8
- package/fixtures/content-model-v2/.astro/collections/site.schema.json +0 -776
- package/fixtures/content-model-v2/.astro/collections/theme.schema.json +0 -668
- package/fixtures/content-model-v2/.astro/content-assets.mjs +0 -4
- package/fixtures/content-model-v2/.astro/content-modules.mjs +0 -1
- package/fixtures/content-model-v2/.astro/content.d.ts +0 -175
- package/fixtures/content-model-v2/.astro/data-store.json +0 -1
- package/fixtures/content-model-v2/.astro/dev-local.json +0 -8
- package/fixtures/content-model-v2/.astro/dev.json +0 -13
- package/fixtures/content-model-v2/.astro/dev.log +0 -231
- package/fixtures/content-model-v2/.astro/settings.json +0 -5
- package/fixtures/content-model-v2/.astro/types.d.ts +0 -2
- package/fixtures/content-model-v2/dist/_astro/GalleryGrid.astro_astro_type_script_index_0_lang.B0kxDyGz.js +0 -1
- package/fixtures/content-model-v2/dist/_astro/SitePage.BbfZub4g.css +0 -1
- package/fixtures/content-model-v2/dist/guide/index.html +0 -3
- package/fixtures/content-model-v2/dist/images/generated/intro/detail-27930b14-480.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/intro/detail-27930b14-768.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/intro/detail-27930b14-971.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/intro/duplicate-49c98f6c-480.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/intro/duplicate-49c98f6c-768.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/intro/duplicate-49c98f6c-971.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/intro/hero-6d588a83-480.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/intro/hero-6d588a83-768.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/intro/hero-6d588a83-971.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-1080.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-1440.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-1600.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-480.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/plain/image-3770d763-768.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/routes/010-guide/images/intro/duplicate-5cf614d2-480.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/routes/010-guide/images/intro/duplicate-5cf614d2-768.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/routes/010-guide/images/intro/duplicate-5cf614d2-960.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-1080.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-1440.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-1600.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-480.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-one-3770d763-768.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-1080.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-1440.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-1600.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-480.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-three-5bdec65e-768.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-1080.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-1440.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-1600.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-480.webp +0 -0
- package/fixtures/content-model-v2/dist/images/generated/timed/slide-two-26c08aee-768.webp +0 -0
- package/fixtures/content-model-v2/dist/index.html +0 -8
- package/fixtures/content-model-v2/node_modules/.vite/deps/_metadata.json +0 -80
- package/fixtures/content-model-v2/node_modules/.vite/deps/astro-D_GIpJIE.js +0 -434
- package/fixtures/content-model-v2/node_modules/.vite/deps/astro-D_GIpJIE.js.map +0 -1
- package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_aria-query.js +0 -6390
- package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_aria-query.js.map +0 -1
- package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_axobject-query.js +0 -2702
- package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_axobject-query.js.map +0 -1
- package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_html-escaper.js +0 -65
- package/fixtures/content-model-v2/node_modules/.vite/deps/astro_n_html-escaper.js.map +0 -1
- package/fixtures/content-model-v2/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +0 -455
- package/fixtures/content-model-v2/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +0 -1
- package/fixtures/content-model-v2/node_modules/.vite/deps/audit-DM9Hkl5B.js +0 -1534
- package/fixtures/content-model-v2/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +0 -1
- package/fixtures/content-model-v2/node_modules/.vite/deps/embla-carousel.js +0 -1389
- package/fixtures/content-model-v2/node_modules/.vite/deps/embla-carousel.js.map +0 -1
- package/fixtures/content-model-v2/node_modules/.vite/deps/highlight-DnZ1ULOL.js +0 -48
- package/fixtures/content-model-v2/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +0 -1
- package/fixtures/content-model-v2/node_modules/.vite/deps/icons-RyebKi45.js +0 -42
- package/fixtures/content-model-v2/node_modules/.vite/deps/icons-RyebKi45.js.map +0 -1
- package/fixtures/content-model-v2/node_modules/.vite/deps/package.json +0 -3
- package/fixtures/content-model-v2/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +0 -4
- package/fixtures/content-model-v2/node_modules/.vite/deps/settings-DaU-gNnK.js +0 -190
- package/fixtures/content-model-v2/node_modules/.vite/deps/settings-DaU-gNnK.js.map +0 -1
- package/fixtures/content-model-v2/node_modules/.vite/deps/toolbar-63PA619H.js +0 -458
- package/fixtures/content-model-v2/node_modules/.vite/deps/toolbar-63PA619H.js.map +0 -1
- package/fixtures/content-model-v2/node_modules/.vite/deps/ui-library--bkcNSYz.js +0 -1016
- package/fixtures/content-model-v2/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +0 -1
- package/fixtures/content-model-v2/node_modules/.vite/deps/window-jPkpKVcy.js +0 -32
- package/fixtures/content-model-v2/node_modules/.vite/deps/window-jPkpKVcy.js.map +0 -1
- package/fixtures/content-model-v2/node_modules/.vite/deps/xray-BXCHpEJP.js +0 -111
- package/fixtures/content-model-v2/node_modules/.vite/deps/xray-BXCHpEJP.js.map +0 -1
- package/fixtures/content-model-v2/site/.norna/generated-images.json +0 -210
- package/fixtures/content-model-v2/site/config.yaml +0 -1
- package/fixtures/content-model-v2/site/content.md +0 -79
- package/fixtures/content-model-v2/site/images/adopt.svg +0 -9
- package/fixtures/content-model-v2/site/images/detail.jpg +0 -0
- package/fixtures/content-model-v2/site/images/duplicate.jpg +0 -0
- package/fixtures/content-model-v2/site/images/foster.svg +0 -12
- package/fixtures/content-model-v2/site/images/hero.jpg +0 -0
- package/fixtures/content-model-v2/site/images/image.jpg +0 -0
- package/fixtures/content-model-v2/site/images/slide-one.jpg +0 -0
- package/fixtures/content-model-v2/site/images/slide-three.jpg +0 -0
- package/fixtures/content-model-v2/site/images/slide-two.jpg +0 -0
- package/fixtures/content-model-v2/site/pages/010-guide/content.md +0 -18
- package/fixtures/content-model-v2/site/pages/010-guide/images/duplicate.jpg +0 -0
- package/fixtures/content-model-v2/site/theme.yaml +0 -4
- package/fixtures/nested-pages/site/.norna/generated-images.json +0 -10
- package/fixtures/nested-pages/site/config.yaml +0 -1
- package/fixtures/nested-pages/site/content.md +0 -15
- package/fixtures/nested-pages/site/pages/010-guides/content.md +0 -15
- package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/content.md +0 -21
- package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/images/diagram.svg +0 -21
- package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/pages/010-macos/content.md +0 -14
- package/fixtures/nested-pages/site/pages/010-guides/pages/020-workflows/content.md +0 -11
- package/fixtures/nested-pages/site/pages/010-guides/theme.yaml +0 -3
- package/fixtures/nested-pages/site/pages/020-reference/content.md +0 -10
- package/fixtures/nested-pages/site/pages/020-reference/pages/010-installation/content.md +0 -11
- package/fixtures/nested-pages/site/theme.yaml +0 -3
- package/scripts/build-pages.mjs +0 -69
- package/scripts/lib/example-sites.mjs +0 -37
- package/scripts/lib/frontmatter-yaml.mjs +0 -113
- package/scripts/lib/git-status.mjs +0 -7
- package/scripts/release.mjs +0 -153
- package/scripts/test-banner-visibility.mjs +0 -80
- package/scripts/test-ci-lockfile.mjs +0 -65
- package/scripts/test-cli-discovery.mjs +0 -124
- package/scripts/test-client-javascript.mjs +0 -218
- package/scripts/test-content-check.mjs +0 -621
- package/scripts/test-content-model-v2.mjs +0 -1629
- package/scripts/test-documentation.mjs +0 -187
- package/scripts/test-editor-language-service.mjs +0 -302
- package/scripts/test-engine-commands.mjs +0 -204
- package/scripts/test-examples.mjs +0 -24
- package/scripts/test-heading-ids.mjs +0 -68
- package/scripts/test-navigation-model.mjs +0 -63
- package/scripts/test-navigation-preview.mjs +0 -108
- package/scripts/test-navigation.mjs +0 -148
- package/scripts/test-nested-pages.mjs +0 -110
- package/scripts/test-package-check.mjs +0 -531
- package/scripts/test-page-model.mjs +0 -80
- package/scripts/test-project-config.mjs +0 -144
- package/scripts/test-schemas.mjs +0 -154
- package/scripts/test-site-public.mjs +0 -85
- package/scripts/test-theme-presets.mjs +0 -182
- package/src/components/SiteNotesScript.astro +0 -43
- package/starters/basic/site/images/.gitkeep +0 -1
- package/starters/project/.github/workflows/deploy.yml +0 -64
- package/starters/project/README.md +0 -84
- package/starters/project/package-lock.json +0 -4296
- package/starters/project/package.json +0 -37
- package/starters/project/site/config.yaml +0 -1
- package/starters/project/site/content.md +0 -119
- package/starters/project/site/pages/010-guide/content.md +0 -80
- package/starters/project/site/public/robots.txt +0 -2
- package/starters/project/site/sitewide-content.yaml +0 -3
- package/starters/project/site/theme.yaml +0 -31
- package/tsconfig.json +0 -5
- /package/starters/basic/site/{content.md → pages/000-home/content.md} +0 -0
- /package/{fixtures/basic/site → starters/basic/site/pages/000-home}/images/.gitkeep +0 -0
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
# Site Examples Structure
|
|
2
|
-
|
|
3
|
-
This document defines the repository vocabulary for starter files, example
|
|
4
|
-
sites, fixtures, and documentation sites.
|
|
5
|
-
|
|
6
|
-
## Goal
|
|
7
|
-
|
|
8
|
-
`norna` should make it easy to find runnable examples and understand which
|
|
9
|
-
files are product documentation, which files are examples, and which files are
|
|
10
|
-
test fixtures.
|
|
11
|
-
|
|
12
|
-
The repository grew from one local demo, one starter, and a set of tests. The
|
|
13
|
-
current structure keeps those roles distinct while allowing runnable examples
|
|
14
|
-
to serve as documentation and realistic integration tests.
|
|
15
|
-
|
|
16
|
-
## Terms
|
|
17
|
-
|
|
18
|
-
### Starter
|
|
19
|
-
|
|
20
|
-
A starter is a template copied by `norna init`.
|
|
21
|
-
|
|
22
|
-
It should be small, conservative, and suitable as the first commit in a real
|
|
23
|
-
site repository. It should not be a showcase for every feature.
|
|
24
|
-
|
|
25
|
-
### Example Site
|
|
26
|
-
|
|
27
|
-
An example site is a runnable site that demonstrates one or more features.
|
|
28
|
-
|
|
29
|
-
Examples can be richer than the starter. They may show pages, navigation,
|
|
30
|
-
complete theme presets, image stacks, image carousels, cards, notes, surfaces,
|
|
31
|
-
and site-specific configuration choices.
|
|
32
|
-
|
|
33
|
-
### Documentation Site
|
|
34
|
-
|
|
35
|
-
A documentation site is a runnable `norna` site that explains the product
|
|
36
|
-
visually.
|
|
37
|
-
|
|
38
|
-
It can use images, diagrams, screenshots, and additional pages to explain concepts
|
|
39
|
-
such as file structure, presentation inheritance, site navigation, and image
|
|
40
|
-
handling.
|
|
41
|
-
|
|
42
|
-
### Reference Documentation
|
|
43
|
-
|
|
44
|
-
Reference documentation is GitHub-readable Markdown for exact interfaces and
|
|
45
|
-
workflows.
|
|
46
|
-
|
|
47
|
-
It belongs in `docs/` and should remain useful without building a site. It is
|
|
48
|
-
the right home for command reference, configuration reference, content schema,
|
|
49
|
-
publishing workflows, and engine development notes.
|
|
50
|
-
|
|
51
|
-
### Fixture
|
|
52
|
-
|
|
53
|
-
A fixture is test data.
|
|
54
|
-
|
|
55
|
-
It should be minimal, stable, and optimized for regression tests rather than
|
|
56
|
-
for human reading or visual appeal.
|
|
57
|
-
|
|
58
|
-
## Repository Structure
|
|
59
|
-
|
|
60
|
-
Runnable site examples are collected under `examples/`:
|
|
61
|
-
|
|
62
|
-
```text
|
|
63
|
-
examples/
|
|
64
|
-
complete-sites/
|
|
65
|
-
dog-shelter-single-page/
|
|
66
|
-
dog-shelter-multi-page/
|
|
67
|
-
feature-demos/
|
|
68
|
-
theme-presets/
|
|
69
|
-
media-and-surfaces/
|
|
70
|
-
sitewide-content/
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
`complete-sites/` contains coherent sites that show how Norna files work
|
|
74
|
-
together in a realistic project:
|
|
75
|
-
|
|
76
|
-
- `dog-shelter-single-page/`: sections and managed images without additional pages.
|
|
77
|
-
- `dog-shelter-multi-page/`: ordered pages with page-local content and
|
|
78
|
-
images.
|
|
79
|
-
|
|
80
|
-
`feature-demos/` contains focused visual test benches:
|
|
81
|
-
|
|
82
|
-
- `theme-presets/`: one page per complete built-in theme preset, without
|
|
83
|
-
overrides.
|
|
84
|
-
- `media-and-surfaces/`: image and card blocks, notes, palettes and section
|
|
85
|
-
surfaces. This is also the broad demo-build and navigation-test target.
|
|
86
|
-
- `sitewide-content/`: convention-based logo handling, navigation, banner stacks,
|
|
87
|
-
dismissal and footer content shared across pages.
|
|
88
|
-
|
|
89
|
-
The repository Pages workflow builds all examples and publishes them
|
|
90
|
-
under `/norna/examples/`. The HTML documentation links to those rendered sites
|
|
91
|
-
from its Examples page.
|
|
92
|
-
|
|
93
|
-
The repository-local `site/` directory is reserved for the documentation site.
|
|
94
|
-
`docs/` should remain for reference documentation. It should link to the
|
|
95
|
-
documentation site when visual explanation is more useful than reference text.
|
|
96
|
-
|
|
97
|
-
`starters/basic/` stays separate from examples because it is copied by
|
|
98
|
-
`norna init`. It should stay small and conservative.
|
|
99
|
-
|
|
100
|
-
Fixtures stay under `fixtures/`. They are intentionally smaller and more stable
|
|
101
|
-
than examples and should not be confused with user-facing sites.
|
|
102
|
-
|
|
103
|
-
## Constraints
|
|
104
|
-
|
|
105
|
-
- Do not remove the starter concept; it has a different purpose from examples.
|
|
106
|
-
- Do not make the documentation site the only documentation.
|
|
107
|
-
- Do not let examples become required input for production site repositories.
|
|
108
|
-
- Keep `norna init` deterministic and easy to test.
|
|
109
|
-
- Use examples for build, navigation and visual integration tests where the
|
|
110
|
-
user-facing site is the behavior being protected.
|
|
111
|
-
- Use fixtures for isolated edge cases, invalid input and narrowly scoped
|
|
112
|
-
engine regressions.
|
|
113
|
-
|
|
114
|
-
The repository-local `site/` remains the product documentation site and is not
|
|
115
|
-
an example or fixture.
|
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
# Engine Development
|
|
2
|
-
|
|
3
|
-
This document is for work on the reusable `norna` package itself.
|
|
4
|
-
|
|
5
|
-
## Main Areas
|
|
6
|
-
|
|
7
|
-
- `bin/norna.mjs`: public CLI launcher and local-version resolver.
|
|
8
|
-
- `bin/norna-cli.mjs`: public CLI command dispatcher.
|
|
9
|
-
- `scripts/lib/site-paths.mjs`: engine/site path resolution.
|
|
10
|
-
- `scripts/lib/project-config.mjs`: plain YAML `site/config.yaml`
|
|
11
|
-
validation, defaults and derived URL path.
|
|
12
|
-
- `scripts/sync-content-sections.mjs`: content validation and sync behavior.
|
|
13
|
-
- `scripts/generate-images.mjs`: managed image pipeline and manifest.
|
|
14
|
-
- `scripts/sync-site-public.mjs`: static public file sync.
|
|
15
|
-
- `scripts/deploy-site.mjs`: deploy and deploy:commit behavior.
|
|
16
|
-
- `scripts/watch-pages-deploy.mjs`: GitHub Pages workflow monitor.
|
|
17
|
-
- `src/content.config.ts`: Astro content schema.
|
|
18
|
-
- `src/components/` and `src/layouts/`: rendered page, navigation, image
|
|
19
|
-
blocks, and layout.
|
|
20
|
-
- `tests/`: Playwright navigation diagnostics.
|
|
21
|
-
- `fixtures/basic/site/`: minimal site used for engine checks.
|
|
22
|
-
- `starters/basic/`: copyable site starter.
|
|
23
|
-
- `examples/feature-demos/media-and-surfaces/site/`: broad visual example used
|
|
24
|
-
by demo builds and navigation diagnostics.
|
|
25
|
-
|
|
26
|
-
The repository-local `site/` directory is reserved for a local documentation
|
|
27
|
-
site. It is useful for dogfooding `norna` documentation, but it is not the
|
|
28
|
-
primary visual regression demo.
|
|
29
|
-
|
|
30
|
-
## Common Checks
|
|
31
|
-
|
|
32
|
-
Run focused checks while developing:
|
|
33
|
-
|
|
34
|
-
```sh
|
|
35
|
-
npm run test:content-check
|
|
36
|
-
npm run test:site-public
|
|
37
|
-
npm run test:documentation
|
|
38
|
-
npm run test:fixture:build
|
|
39
|
-
npm run test:examples
|
|
40
|
-
npm run demo:build
|
|
41
|
-
npm run package:check
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
`npm run test:examples` builds every complete site and feature demo under
|
|
45
|
-
`examples/`. `npm run test` includes those builds in the standard check
|
|
46
|
-
sequence.
|
|
47
|
-
|
|
48
|
-
`npm run test:documentation` extracts the file examples from the five-minute
|
|
49
|
-
tutorial, applies them to a freshly initialized temporary site, runs the
|
|
50
|
-
configuration and content checks, builds the result, and checks local Markdown
|
|
51
|
-
links plus the `llms.txt` source targets.
|
|
52
|
-
|
|
53
|
-
`npm run build:pages` is specific to this repository. It builds the
|
|
54
|
-
documentation site and assembles rendered examples under `dist/examples/` for
|
|
55
|
-
the shared GitHub Pages artifact. It is not a generic Norna site command.
|
|
56
|
-
|
|
57
|
-
The root `site/` directory is the documentation site. Use the ordinary local
|
|
58
|
-
commands for it:
|
|
59
|
-
|
|
60
|
-
```sh
|
|
61
|
-
npm run dev:local
|
|
62
|
-
npm run build
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
Inside the engine repository, use npm scripts or explicitly run
|
|
66
|
-
`node bin/norna.mjs ...`. Do not rely on a bare `norna ...` command there: a
|
|
67
|
-
globally installed launcher deliberately does not delegate to another package
|
|
68
|
-
whose own name is `@janga/norna`, so it may continue with the published global
|
|
69
|
-
implementation instead of the working tree.
|
|
70
|
-
|
|
71
|
-
The media-and-surfaces feature demo is the broad visual and navigation
|
|
72
|
-
diagnostic target:
|
|
73
|
-
|
|
74
|
-
```sh
|
|
75
|
-
node bin/norna.mjs --site-dir examples/feature-demos/media-and-surfaces/site dev:local
|
|
76
|
-
npm run demo:build
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Navigation diagnostics are separate because they use Playwright:
|
|
80
|
-
|
|
81
|
-
```sh
|
|
82
|
-
npm run test:navigation
|
|
83
|
-
npm run test:navigation:stress
|
|
84
|
-
npm run test:navigation:preview
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
If Chromium is missing:
|
|
88
|
-
|
|
89
|
-
```sh
|
|
90
|
-
npx playwright install chromium
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## Package Check
|
|
94
|
-
|
|
95
|
-
`npm run package:check` packs this repository, extracts the package, copies the
|
|
96
|
-
packaged starter into a temporary site project, installs dependencies, runs
|
|
97
|
-
`norna doctor` from a site subdirectory, runs config/content checks,
|
|
98
|
-
builds the installed site, and verifies selected rendered output and validation
|
|
99
|
-
failures.
|
|
100
|
-
|
|
101
|
-
It needs network access when npm dependencies are not already cached.
|
|
102
|
-
The check uses a reusable npm cache at
|
|
103
|
-
`node_modules/.cache/norna-package-check-npm` and runs npm with
|
|
104
|
-
`--prefer-offline` so repeat runs do not redownload dependencies. Set
|
|
105
|
-
`NORNA_PACKAGE_CHECK_CACHE=/path/to/cache` to use another cache.
|
|
106
|
-
|
|
107
|
-
## CI Lockfiles
|
|
108
|
-
|
|
109
|
-
Site repositories are developed on different operating systems but deployed on
|
|
110
|
-
GitHub Actions Linux. `engine:update` therefore normalizes `package-lock.json`
|
|
111
|
-
with npm 11.16.0 for Linux x64 glibc and verifies a clean install before it runs
|
|
112
|
-
the site checks. The starter workflow pins Node 24.18.0, which provides the
|
|
113
|
-
same npm version.
|
|
114
|
-
|
|
115
|
-
`npm run test:ci-lockfile` recreates and repairs the optional npm peer-dependency
|
|
116
|
-
case that previously caused GitHub Actions `npm ci` failures.
|
|
117
|
-
|
|
118
|
-
## Test The Package In A Site Repository
|
|
119
|
-
|
|
120
|
-
> **Warning:** `npm link` is not supported for `norna`. Astro resolves
|
|
121
|
-
> renderer modules and runtime dependencies differently when the package is a
|
|
122
|
-
> symlink, so a linked site can fail to start even though the published package
|
|
123
|
-
> works. Do not use `npm link @janga/norna` to test a site.
|
|
124
|
-
|
|
125
|
-
Use `npm run package:check` to test the package before release. To test a
|
|
126
|
-
specific published engine version in a real site, update it with:
|
|
127
|
-
|
|
128
|
-
```sh
|
|
129
|
-
npm run norna:engine:update -- <version>
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
Commit the resulting `package.json` and `package-lock.json` changes in the
|
|
133
|
-
site repository after the site's normal checks pass.
|
|
134
|
-
|
|
135
|
-
The installed `norna` command is created from the package `bin` field. The
|
|
136
|
-
launcher first looks for the nearest project `package.json`. If that project
|
|
137
|
-
declares `@janga/norna` and Node can resolve an installed copy from that project
|
|
138
|
-
root, the launcher delegates to that local entrypoint. The engine repository
|
|
139
|
-
itself is excluded from delegation to prevent recursion; its working tree is
|
|
140
|
-
selected explicitly through npm scripts or `node bin/norna.mjs`.
|
|
141
|
-
|
|
142
|
-
## npm Release
|
|
143
|
-
|
|
144
|
-
The npm package is published under the `@janga` scope. Choose the release type
|
|
145
|
-
when starting a release; the command requires a clean working tree, verifies npm
|
|
146
|
-
registry authentication for the same registry/cache used by the publish step,
|
|
147
|
-
updates `package.json` and `package-lock.json` without creating a commit, and
|
|
148
|
-
regenerates schemas with documentation links pinned to the new `v<version>` Git
|
|
149
|
-
tag. It then runs `npm test`, verifies that only release files changed, creates
|
|
150
|
-
the release commit and Git tag, publishes to npm, and pushes the commit and tag.
|
|
151
|
-
|
|
152
|
-
```sh
|
|
153
|
-
npm run release:patch
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
Use `patch` for backwards-compatible fixes and maintenance changes. Use `minor`
|
|
157
|
-
for backwards-compatible features and `major` for incompatible changes:
|
|
158
|
-
|
|
159
|
-
```sh
|
|
160
|
-
npm run release:minor
|
|
161
|
-
npm run release:major
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
The release command deliberately does not run GitHub Pages deployment monitoring.
|
|
165
|
-
If version preparation, schema generation, or testing fails before the release
|
|
166
|
-
commit, the script restores the previous package version and generated schemas.
|
|
167
|
-
|
|
168
|
-
If npm publication fails, it stops before pushing; the local version commit and
|
|
169
|
-
tag remain available for inspection or recovery. Retry publication with
|
|
170
|
-
`npm run release:publish`, then push the existing commit and tag with
|
|
171
|
-
`git push --follow-tags`. Do not start a new version bump merely to retry these
|
|
172
|
-
steps.
|
|
173
|
-
|
|
174
|
-
If the npm authentication preflight fails, no version commit or tag has been
|
|
175
|
-
created yet. Run the printed login command:
|
|
176
|
-
|
|
177
|
-
```sh
|
|
178
|
-
npm login --registry=https://registry.npmjs.org/ --auth-type=web --cache /private/tmp/norna-npm-cache
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
Then start the release command again.
|
|
182
|
-
|
|
183
|
-
After publication, update site repositories to the exact published npm version
|
|
184
|
-
and commit their updated `package-lock.json`.
|
|
185
|
-
|
|
186
|
-
## Rendering Notes
|
|
187
|
-
|
|
188
|
-
The renderer builds the homepage at `/` and optional first-level pages from
|
|
189
|
-
`site/pages/<NNN-page-id>/content.md`.
|
|
190
|
-
|
|
191
|
-
Navigation has two separate levels:
|
|
192
|
-
|
|
193
|
-
- Site navigation moves between the homepage and additional pages. It uses
|
|
194
|
-
normal page URLs and browser history.
|
|
195
|
-
- Section navigation moves between sections on the current page. It uses real
|
|
196
|
-
`href="#section-id"` links so anchors work without JavaScript.
|
|
197
|
-
|
|
198
|
-
The current navigation model is deliberately scoped to single-page and small
|
|
199
|
-
multi-page sites. That scope may change as navigation support matures. For now,
|
|
200
|
-
single-page sites should rely on section navigation only; small multi-page sites
|
|
201
|
-
may combine site navigation and section navigation; larger information
|
|
202
|
-
architectures should not be forced into the sticky-navigation model without a
|
|
203
|
-
separate design decision.
|
|
204
|
-
|
|
205
|
-
The JavaScript enhancement keeps the URL hash as the source of truth for active
|
|
206
|
-
section-navigation state. A section-link click pushes one hash entry into browser
|
|
207
|
-
history, back/forward moves between hash entries, and returning to the same page
|
|
208
|
-
without a hash restores the first section as active. The enhancement does not
|
|
209
|
-
derive active section state from free manual scrolling.
|
|
210
|
-
|
|
211
|
-
The sticky navigation updates a root scroll-offset variable so direct hash
|
|
212
|
-
links and clicked links remain visible below the fixed header. The browser owns
|
|
213
|
-
anchor movement; Norna does not run a separate scroll animation or retry anchor
|
|
214
|
-
positions after later layout shifts.
|
|
215
|
-
|
|
216
|
-
The shared layout selects Norna's built-in UI labels from the optional
|
|
217
|
-
`language` in `site/config.yaml`. Keep editorial content in page Markdown and
|
|
218
|
-
non-editorial engine UI labels in the engine language packs.
|
package/docs/getting-started.md
DELETED
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
# Build Your First Norna Site
|
|
2
|
-
|
|
3
|
-
This tutorial takes the shortest path from an empty directory to a running,
|
|
4
|
-
edited, and verified Norna site. Follow the steps in order. Installation time
|
|
5
|
-
depends on your npm connection, but the site work itself should take about five
|
|
6
|
-
minutes.
|
|
7
|
-
|
|
8
|
-
At the end you will have:
|
|
9
|
-
|
|
10
|
-
- a standalone site project with a pinned Norna version,
|
|
11
|
-
- a homepage with your own content and navigation,
|
|
12
|
-
- a complete visual preset,
|
|
13
|
-
- validated source files and a static build in `dist/`.
|
|
14
|
-
|
|
15
|
-
## Before You Start
|
|
16
|
-
|
|
17
|
-
You need:
|
|
18
|
-
|
|
19
|
-
- Node.js `22.12` or later,
|
|
20
|
-
- npm, which is included with Node.js,
|
|
21
|
-
- a terminal and a text editor.
|
|
22
|
-
|
|
23
|
-
ImageMagick is needed when you add raster images that Norna should process. It
|
|
24
|
-
is not needed to make the text-only first edit in this tutorial. GitHub CLI and
|
|
25
|
-
Playwright are not required.
|
|
26
|
-
|
|
27
|
-
See [Requirements and limitations](requirements.md) for platform details and
|
|
28
|
-
the current product boundaries.
|
|
29
|
-
|
|
30
|
-
## 1. Create And Run The Site
|
|
31
|
-
|
|
32
|
-
Run these commands from the directory where you keep projects:
|
|
33
|
-
|
|
34
|
-
```sh
|
|
35
|
-
npx @janga/norna@latest init my-site
|
|
36
|
-
cd my-site
|
|
37
|
-
npm install
|
|
38
|
-
npm run norna:dev
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
`init` creates the project before `npm install` runs. The generated
|
|
42
|
-
`package.json` pins the Norna engine version so this project keeps using the
|
|
43
|
-
same version until you update it deliberately.
|
|
44
|
-
|
|
45
|
-
The tutorial uses the `norna:*` npm scripts because they work in both
|
|
46
|
-
standalone and embedded projects. A standalone project also includes the
|
|
47
|
-
shorter `npm run dev` and `npm run build` aliases.
|
|
48
|
-
|
|
49
|
-
### Optional: Shorter CLI Commands
|
|
50
|
-
|
|
51
|
-
Install the Norna launcher globally when you prefer direct commands:
|
|
52
|
-
|
|
53
|
-
```sh
|
|
54
|
-
npm install --global @janga/norna@latest
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
You can then run `norna dev`, `norna check`, and `norna build`. Inside a
|
|
58
|
-
project, the launcher automatically delegates to that project's locally
|
|
59
|
-
installed and pinned Norna version. The global installation is only the
|
|
60
|
-
launcher; keep the local dependency and lockfile.
|
|
61
|
-
|
|
62
|
-
### Checkpoint: The Starter Is Visible
|
|
63
|
-
|
|
64
|
-
Open the URL printed by the development server. It is normally
|
|
65
|
-
`http://localhost:4321/`, but Norna uses another available port when necessary.
|
|
66
|
-
You should see the starter homepage and its section navigation.
|
|
67
|
-
|
|
68
|
-
Leave the development server running while you complete the next steps.
|
|
69
|
-
|
|
70
|
-
## 2. Replace The Homepage Content
|
|
71
|
-
|
|
72
|
-
Replace `site/content.md` with:
|
|
73
|
-
|
|
74
|
-
```md
|
|
75
|
-
---
|
|
76
|
-
page:
|
|
77
|
-
description: A website built from plain files.
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
# My first Norna site
|
|
81
|
-
|
|
82
|
-
This page is written in Markdown. Norna provides its layout and navigation.
|
|
83
|
-
|
|
84
|
-
## Welcome {#welcome}
|
|
85
|
-
|
|
86
|
-
This is the first section.
|
|
87
|
-
|
|
88
|
-
## Next {#next}
|
|
89
|
-
|
|
90
|
-
Edit this file while the development server is running and the browser updates.
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
The single `#` heading is the page title. Each `##` heading is a page section.
|
|
94
|
-
Its explicit `{#section-id}` gives the section a stable identity and is
|
|
95
|
-
required by Norna.
|
|
96
|
-
|
|
97
|
-
### Checkpoint: Content And Navigation Update
|
|
98
|
-
|
|
99
|
-
Return to the browser. The page should now contain `Welcome` and `Next`, and
|
|
100
|
-
the section navigation should link to those two sections. You should not
|
|
101
|
-
need to restart the server.
|
|
102
|
-
|
|
103
|
-
## 3. Set Shared Content
|
|
104
|
-
|
|
105
|
-
Replace `site/sitewide-content.yaml` with:
|
|
106
|
-
|
|
107
|
-
```yaml
|
|
108
|
-
footer:
|
|
109
|
-
copyrightMessage: My first Norna site.
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
The footer is site-wide content rather than a page section. If you add pages
|
|
113
|
-
later, they share it. The homepage H1 you set in the previous step already
|
|
114
|
-
names the homepage in navigation and becomes the alternative text if you add a
|
|
115
|
-
conventional navigation logo.
|
|
116
|
-
|
|
117
|
-
### Checkpoint: The Footer Is Shared
|
|
118
|
-
|
|
119
|
-
The navigation should use `My first Norna site` from `content.md`. The footer
|
|
120
|
-
should show the new message.
|
|
121
|
-
|
|
122
|
-
## 4. Choose A Complete Theme
|
|
123
|
-
|
|
124
|
-
Replace `site/theme.yaml` with:
|
|
125
|
-
|
|
126
|
-
```yaml
|
|
127
|
-
preset: project
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
The preset supplies coordinated layout, typography, spacing, image sizing,
|
|
131
|
-
palette, and section surfaces. Add overrides only when a real site needs to
|
|
132
|
-
differ from the preset.
|
|
133
|
-
|
|
134
|
-
### Checkpoint: The Preset Is Active
|
|
135
|
-
|
|
136
|
-
The browser should refresh with the `project` presentation. Your content files
|
|
137
|
-
remain unchanged because presentation belongs in `theme.yaml`.
|
|
138
|
-
|
|
139
|
-
## 5. Check And Build
|
|
140
|
-
|
|
141
|
-
Open another terminal in `my-site` and run:
|
|
142
|
-
|
|
143
|
-
```sh
|
|
144
|
-
npm run norna:check
|
|
145
|
-
npm run norna:build
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
The check should complete without errors. The build should create:
|
|
149
|
-
|
|
150
|
-
```text
|
|
151
|
-
dist/
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
`dist/` is generated output. Continue editing the files under `site/`; do not
|
|
155
|
-
edit the built HTML as the source of the website.
|
|
156
|
-
|
|
157
|
-
### Checkpoint: The Source Produces A Clean Build
|
|
158
|
-
|
|
159
|
-
Confirm that both commands exit successfully and that `dist/index.html`
|
|
160
|
-
exists. You now have a complete local Norna workflow: edit, preview, check, and
|
|
161
|
-
build.
|
|
162
|
-
|
|
163
|
-
## What To Do Next
|
|
164
|
-
|
|
165
|
-
- [Add and manage images](content.md#norna-blocks)
|
|
166
|
-
- [Add another page](pages.md)
|
|
167
|
-
- [Inspect and adjust the theme](theme.md)
|
|
168
|
-
- [Configure the public URL](configuration.md)
|
|
169
|
-
- [Publish with GitHub Pages](publishing.md)
|
|
170
|
-
- [Browse complete and focused examples](../examples/README.md)
|
|
171
|
-
|
|
172
|
-
To add Norna inside an existing Node project instead of creating a standalone
|
|
173
|
-
site, see [Add an embedded site](how-to/embedded-site.md).
|
|
174
|
-
|
|
175
|
-
The [documentation map](README.md) separates task guides, explanation, and
|
|
176
|
-
reference so you can continue from the kind of question you have.
|
|
177
|
-
|
|
178
|
-
## Common First Problems
|
|
179
|
-
|
|
180
|
-
### The Default Port Is Occupied
|
|
181
|
-
|
|
182
|
-
Start the development server with:
|
|
183
|
-
|
|
184
|
-
```sh
|
|
185
|
-
npm run norna:dev -- --kill
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
This tells Norna to stop the process occupying its standard port before
|
|
189
|
-
starting. The separator `--` is required so npm forwards `--kill` to Norna.
|
|
190
|
-
|
|
191
|
-
### Images Fail During Checking Or Building
|
|
192
|
-
|
|
193
|
-
Install ImageMagick and confirm that either `magick` or the older `identify`
|
|
194
|
-
and `convert` commands are available. Then rerun the failed command.
|
|
195
|
-
|
|
196
|
-
### The Page Reports Invalid Content
|
|
197
|
-
|
|
198
|
-
Run:
|
|
199
|
-
|
|
200
|
-
```sh
|
|
201
|
-
npm run norna:content:check
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
Read all reported issues before editing. Norna reports file and line context
|
|
205
|
-
for invalid sections and managed content blocks. See [Content](content.md) for
|
|
206
|
-
the accepted Markdown forms.
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# Add Norna To An Existing Project
|
|
2
|
-
|
|
3
|
-
Use embedded setup when the website should live inside an existing Node
|
|
4
|
-
project rather than in its own repository.
|
|
5
|
-
|
|
6
|
-
From the existing project root, run:
|
|
7
|
-
|
|
8
|
-
```sh
|
|
9
|
-
npx @janga/norna@latest init . --type embedded --site-dir presentation
|
|
10
|
-
npm install
|
|
11
|
-
npm run norna:dev
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
The arguments are intentionally different from standalone setup:
|
|
15
|
-
|
|
16
|
-
- `.` means that Norna should update the current project instead of creating a
|
|
17
|
-
new project directory.
|
|
18
|
-
- `--type embedded` preserves the surrounding project's role and scripts.
|
|
19
|
-
- `--site-dir presentation` puts the site source in `presentation/` instead of
|
|
20
|
-
the default `site/` directory.
|
|
21
|
-
|
|
22
|
-
Embedded setup adds `@janga/norna` as a project dependency and adds namespaced
|
|
23
|
-
`norna:*` npm scripts. It refuses to overwrite conflicting scripts or a
|
|
24
|
-
non-empty target site directory.
|
|
25
|
-
|
|
26
|
-
The surrounding project keeps its normal `build`, `test`, and deploy commands.
|
|
27
|
-
Use the added commands for the embedded site:
|
|
28
|
-
|
|
29
|
-
```sh
|
|
30
|
-
npm run norna:check
|
|
31
|
-
npm run norna:build
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
See [Commands](../commands.md) for the complete script list and
|
|
35
|
-
[Site Files](../site-files.md) for source and generated files.
|