@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,186 +0,0 @@
|
|
|
1
|
-
# Images And Metadata
|
|
2
|
-
|
|
3
|
-
This document describes Norna's image pipeline. Site repositories own their
|
|
4
|
-
source images and any copyright or licensing policy for those images.
|
|
5
|
-
|
|
6
|
-
## Managed Source Images
|
|
7
|
-
|
|
8
|
-
Norna-managed local images are referenced from Markdown with
|
|
9
|
-
`norna-image-stack`, `norna-image-carousel`, or `norna-card-list` blocks. See
|
|
10
|
-
[Content](content.md#norna-blocks) for the block syntax.
|
|
11
|
-
|
|
12
|
-
Homepage source images live under:
|
|
13
|
-
|
|
14
|
-
```text
|
|
15
|
-
site/images/
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Page source images live under:
|
|
19
|
-
|
|
20
|
-
```text
|
|
21
|
-
site/pages/<NNN-page-id>/images/
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Supported source extensions:
|
|
25
|
-
|
|
26
|
-
- `.jpg`
|
|
27
|
-
- `.jpeg`
|
|
28
|
-
- `.png`
|
|
29
|
-
- `.svg`
|
|
30
|
-
|
|
31
|
-
Managed image block references use only the filename:
|
|
32
|
-
|
|
33
|
-
````md
|
|
34
|
-
```norna-image-stack
|
|
35
|
-
- image: portrait.jpg
|
|
36
|
-
alt: Optional alt text.
|
|
37
|
-
caption: Optional caption.
|
|
38
|
-
```
|
|
39
|
-
````
|
|
40
|
-
|
|
41
|
-
`alt` and `caption` are optional. If `alt` is omitted, Norna renders an empty
|
|
42
|
-
alt attribute.
|
|
43
|
-
|
|
44
|
-
For generated or edited images, keep provenance near the image in a source-only
|
|
45
|
-
comment. Norna removes these comments from rendered HTML:
|
|
46
|
-
|
|
47
|
-
```md
|
|
48
|
-
<!-- norna-image-provenance:
|
|
49
|
-
image: portrait.jpg
|
|
50
|
-
source: generated
|
|
51
|
-
prompt: Short prompt or editing note.
|
|
52
|
-
-->
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Each filename identifies one managed source image within its page. The same
|
|
56
|
-
filename may be used by another page. Automatic sync only moves misplaced
|
|
57
|
-
files when the filename identifies exactly one source candidate across all
|
|
58
|
-
page image roots, and when the move will not break another reference. If the
|
|
59
|
-
move crosses page image roots, `content:sync` requires a clean Git working tree
|
|
60
|
-
before writing.
|
|
61
|
-
|
|
62
|
-
## Markdown Images
|
|
63
|
-
|
|
64
|
-
Use ordinary Markdown images for external images or static public assets:
|
|
65
|
-
|
|
66
|
-
```md
|
|
67
|
-

|
|
68
|
-

|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
Relative local Markdown images such as `` are not
|
|
72
|
-
managed by Norna. `content:check` warns about them because Norna cannot
|
|
73
|
-
validate, process, or sync those files through the image pipeline.
|
|
74
|
-
|
|
75
|
-
## Generated Variants And Static SVG
|
|
76
|
-
|
|
77
|
-
For raster images, `npm run norna:images` and `npm run norna:build` generate
|
|
78
|
-
WebP files in:
|
|
79
|
-
|
|
80
|
-
```text
|
|
81
|
-
site/.norna/public/images/generated/
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
The normal display widths are:
|
|
85
|
-
|
|
86
|
-
```text
|
|
87
|
-
480, 768, 1080, 1440, 1920
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Widths larger than the source image are skipped. If the source image is wider
|
|
91
|
-
than all normal display widths, the pipeline also creates one variant at the
|
|
92
|
-
source width.
|
|
93
|
-
|
|
94
|
-
Generated filenames include the first eight characters of the source SHA-256
|
|
95
|
-
hash:
|
|
96
|
-
|
|
97
|
-
```text
|
|
98
|
-
example-work-1a2b3c4d-1440.webp
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
When a source image changes, the generated URL changes too. This avoids stale
|
|
102
|
-
browser, CDN, and GitHub Actions cache entries at the old URL.
|
|
103
|
-
|
|
104
|
-
SVG files are managed by the same Markdown image blocks, validation and sync
|
|
105
|
-
model, but they are not rasterized and do not get WebP variants. Norna copies
|
|
106
|
-
the SVG source to:
|
|
107
|
-
|
|
108
|
-
```text
|
|
109
|
-
site/.norna/public/images/original/
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
The copied SVG filename includes the source hash. If the SVG has a `viewBox` or
|
|
113
|
-
numeric `width` and `height`, Norna stores that ratio in the image manifest so
|
|
114
|
-
the existing image layout can size it like other images. If no intrinsic aspect
|
|
115
|
-
ratio can be read, the SVG is still rendered directly.
|
|
116
|
-
|
|
117
|
-
## Manifest
|
|
118
|
-
|
|
119
|
-
The generated image manifest is:
|
|
120
|
-
|
|
121
|
-
```text
|
|
122
|
-
site/.norna/generated-images.json
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
It is versioned site state. For raster images, it stores source hashes,
|
|
126
|
-
original dimensions, output version, and generated variant paths. For static
|
|
127
|
-
SVG images, it stores the source hash, copied public path, output version, and
|
|
128
|
-
intrinsic dimensions when they can be read. The image pipeline reuses generated
|
|
129
|
-
or copied files only when the manifest entry matches the current source hash
|
|
130
|
-
and output version, and all expected output files exist.
|
|
131
|
-
|
|
132
|
-
Generated files under `site/.norna/public/` are build-preparation output and
|
|
133
|
-
should not be versioned.
|
|
134
|
-
|
|
135
|
-
## Metadata Behavior
|
|
136
|
-
|
|
137
|
-
The current engine does not inspect, require, warn about, or write source image
|
|
138
|
-
copyright metadata.
|
|
139
|
-
|
|
140
|
-
Generated WebP files are created with ImageMagick using `-strip`, so embedded
|
|
141
|
-
metadata is not a publication mechanism for generated variants. Keep licensing,
|
|
142
|
-
credits, copyright notices, alt text, and captions in site-owned files such as
|
|
143
|
-
`site/content.md`, page content files, `COPYRIGHT.md`, or other site
|
|
144
|
-
documentation.
|
|
145
|
-
|
|
146
|
-
If a site wants embedded metadata in original source files, that process is
|
|
147
|
-
outside the current Norna command surface.
|
|
148
|
-
|
|
149
|
-
## AI-Generated Images
|
|
150
|
-
|
|
151
|
-
For AI-generated images, keep provenance and the generation prompt in a
|
|
152
|
-
Markdown comment near the image block. This makes the image maintainable as
|
|
153
|
-
content: future editors can understand where it came from and regenerate or
|
|
154
|
-
revise it without reverse-engineering the asset.
|
|
155
|
-
|
|
156
|
-
````md
|
|
157
|
-
<!--
|
|
158
|
-
AI image prompt for workflow.png:
|
|
159
|
-
A clean editorial illustration of ordinary project files becoming a small
|
|
160
|
-
static website, restrained colors, readable composition, no text in the image.
|
|
161
|
-
-->
|
|
162
|
-
|
|
163
|
-
```norna-image-stack
|
|
164
|
-
- image: workflow.png
|
|
165
|
-
alt: Abstract illustration of project files becoming a website.
|
|
166
|
-
caption: Generated illustration.
|
|
167
|
-
```
|
|
168
|
-
````
|
|
169
|
-
|
|
170
|
-
The same provenance comment style can be used next to a `norna-image-carousel`
|
|
171
|
-
or `norna-card-list` block when generated images are referenced there.
|
|
172
|
-
|
|
173
|
-
This is a maintenance rule for real editorial images. It is not necessary for
|
|
174
|
-
throwaway test fixtures or examples where the prompt has no practical value.
|
|
175
|
-
|
|
176
|
-
## GitHub Actions Cache
|
|
177
|
-
|
|
178
|
-
The starter workflow caches:
|
|
179
|
-
|
|
180
|
-
```text
|
|
181
|
-
site/.norna/public/images/generated
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
The cache key should include `site/.norna/generated-images.json` so unchanged
|
|
185
|
-
generated variants can be restored during deploy. With a cache miss or a
|
|
186
|
-
changed source hash, variants are rebuilt from source images.
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
# Local Development
|
|
2
|
-
|
|
3
|
-
Use the local preview commands when editing a site or the engine demo.
|
|
4
|
-
|
|
5
|
-
## Start Preview
|
|
6
|
-
|
|
7
|
-
```sh
|
|
8
|
-
npm run norna:dev
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
The wrapper:
|
|
12
|
-
|
|
13
|
-
1. syncs `site/public/` into `site/.norna/public/`,
|
|
14
|
-
2. starts Astro in background mode,
|
|
15
|
-
3. waits until the site responds,
|
|
16
|
-
4. opens `http://localhost:4321/` unless `WALDE_NO_OPEN=1` is set.
|
|
17
|
-
|
|
18
|
-
The host and port are currently fixed in the script:
|
|
19
|
-
|
|
20
|
-
```text
|
|
21
|
-
localhost:4321
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
If the port is already in use, the command fails and asks you to stop the
|
|
25
|
-
process using it.
|
|
26
|
-
|
|
27
|
-
To stop any process that is blocking the standard port before starting, pass
|
|
28
|
-
`--kill`:
|
|
29
|
-
|
|
30
|
-
```sh
|
|
31
|
-
npm run norna:dev -- --kill
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
The standalone starter also provides this shorter alias:
|
|
35
|
-
|
|
36
|
-
```sh
|
|
37
|
-
npm run dev -- --kill
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
With the optional global launcher installed, the direct form is:
|
|
41
|
-
|
|
42
|
-
```sh
|
|
43
|
-
norna dev --kill
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
The launcher selects the current project's locally installed Norna version.
|
|
47
|
-
|
|
48
|
-
## Test On A Phone
|
|
49
|
-
|
|
50
|
-
To make the local dev server available to devices on the same Wi-Fi network:
|
|
51
|
-
|
|
52
|
-
```sh
|
|
53
|
-
npm run norna:dev:lan
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
The command prints one or more local IPv4 URLs. Open one of them on the phone.
|
|
57
|
-
The phone and computer must use the same network, and macOS may ask to allow
|
|
58
|
-
incoming connections for Node. Stop the server after testing with
|
|
59
|
-
`npm run norna:dev:stop` because it is accessible from the local network.
|
|
60
|
-
|
|
61
|
-
## Manage Preview
|
|
62
|
-
|
|
63
|
-
```sh
|
|
64
|
-
npm run norna:dev:status
|
|
65
|
-
npm run norna:dev:logs
|
|
66
|
-
npm run norna:dev:logs -- --follow
|
|
67
|
-
npm run norna:dev:restart
|
|
68
|
-
npm run norna:dev:stop
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
The local server state and logs live under `.astro/`.
|
|
72
|
-
|
|
73
|
-
## Rebuild Stale Preview
|
|
74
|
-
|
|
75
|
-
Use this when generated content or image state looks stale:
|
|
76
|
-
|
|
77
|
-
```sh
|
|
78
|
-
npm run norna:build:local
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
It runs the full build and restarts the local dev server without opening a new
|
|
82
|
-
browser window.
|
package/docs/pages.md
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
# Pages
|
|
2
|
-
|
|
3
|
-
`site/content.md` is the homepage and builds to `/`. Optional additional pages live
|
|
4
|
-
under `site/pages/<NNN-page-id>/content.md` and build to first-level
|
|
5
|
-
URLs.
|
|
6
|
-
|
|
7
|
-
Pages use the same H1 title, optional frontmatter, Norna-managed blocks, and
|
|
8
|
-
Markdown section model as the homepage. See [Content](content.md) for the page
|
|
9
|
-
and section model.
|
|
10
|
-
|
|
11
|
-
Page directories can contain page content, page-local images, and
|
|
12
|
-
an optional page-local `theme.yaml`. The page theme replaces the root visual
|
|
13
|
-
theme for that page and can select any complete top-level theme preset. Page
|
|
14
|
-
directories cannot contain `config.yaml` or `sitewide-content.yaml`; technical
|
|
15
|
-
configuration and shared logo, banner, and footer settings remain at the
|
|
16
|
-
selected site's top level.
|
|
17
|
-
|
|
18
|
-
## Page Directory Format
|
|
19
|
-
|
|
20
|
-
Page directories must use:
|
|
21
|
-
|
|
22
|
-
```text
|
|
23
|
-
NNN-page-id
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
`NNN` is a three-digit presentation order from `001` through `999`.
|
|
27
|
-
`page-id` becomes the page id and URL segment.
|
|
28
|
-
|
|
29
|
-
Valid examples:
|
|
30
|
-
|
|
31
|
-
```text
|
|
32
|
-
010-getting-started
|
|
33
|
-
020-concepts
|
|
34
|
-
120-api-reference
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Invalid examples:
|
|
38
|
-
|
|
39
|
-
```text
|
|
40
|
-
10-about
|
|
41
|
-
000-home
|
|
42
|
-
010_About
|
|
43
|
-
010-About
|
|
44
|
-
010-about-
|
|
45
|
-
010-about--team
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
The page id may contain only lowercase `a-z`, numbers, and single hyphens
|
|
49
|
-
between alphanumeric groups. The numeric prefix is not part of the page id or
|
|
50
|
-
URL.
|
|
51
|
-
|
|
52
|
-
Renaming `030-contact/` to `015-contact/` changes navigation order but keeps
|
|
53
|
-
the page id `contact` and URL `/contact/`.
|
|
54
|
-
|
|
55
|
-
## Page File
|
|
56
|
-
|
|
57
|
-
Add a first-level page by creating:
|
|
58
|
-
|
|
59
|
-
```text
|
|
60
|
-
site/pages/010-about/content.md
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
Minimal additional page:
|
|
64
|
-
|
|
65
|
-
```md
|
|
66
|
-
---
|
|
67
|
-
page:
|
|
68
|
-
description: About this site.
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
# About
|
|
72
|
-
|
|
73
|
-
Introductory text.
|
|
74
|
-
|
|
75
|
-
## Team {#team}
|
|
76
|
-
|
|
77
|
-
Text...
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
The example above builds to `/about/`.
|
|
81
|
-
|
|
82
|
-
## Navigation
|
|
83
|
-
|
|
84
|
-
Site navigation uses each page's Markdown H1 as its visible label and the
|
|
85
|
-
page-directory prefix as its order. In a multi-page site, the homepage is the
|
|
86
|
-
first navigation item and uses its own H1. An optional logo is a separate home
|
|
87
|
-
link; it does not replace the homepage item or own a section menu.
|
|
88
|
-
|
|
89
|
-
`navigation` has one optional field:
|
|
90
|
-
|
|
91
|
-
- `listed`: boolean. Defaults to `true`. Set it to `false` to keep the page
|
|
92
|
-
public while excluding it from site navigation.
|
|
93
|
-
|
|
94
|
-
```yaml
|
|
95
|
-
navigation:
|
|
96
|
-
listed: false
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
Page order comes from the directory prefix.
|
|
100
|
-
The homepage is always listed before additional pages.
|
|
101
|
-
|
|
102
|
-
Current site navigation is intended for small sites. This guidance may change
|
|
103
|
-
as navigation support matures, but the present model is:
|
|
104
|
-
|
|
105
|
-
- A single-page site should normally use only section navigation.
|
|
106
|
-
- A small multi-page site may use site navigation between pages plus section
|
|
107
|
-
navigation on the current page.
|
|
108
|
-
- If a site needs many pages, deeply nested pages, or several navigation
|
|
109
|
-
levels, it has probably outgrown the current sticky-navigation model and may
|
|
110
|
-
need a different site structure or navigation system.
|
|
111
|
-
|
|
112
|
-
## Page Images
|
|
113
|
-
|
|
114
|
-
Page images live under the physical page directory:
|
|
115
|
-
|
|
116
|
-
```text
|
|
117
|
-
site/pages/010-about/images/image.jpg
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
Image references in page content still use only the filename:
|
|
121
|
-
|
|
122
|
-
````md
|
|
123
|
-
```norna-image-stack
|
|
124
|
-
- image: image.jpg
|
|
125
|
-
alt: Intro image.
|
|
126
|
-
```
|
|
127
|
-
````
|
|
128
|
-
|
|
129
|
-
All managed images used by the page share this one `images/` directory. Run
|
|
130
|
-
`norna content:check` to find missing or misplaced images and
|
|
131
|
-
`norna content:sync` to move unambiguous files into the expected page image
|
|
132
|
-
root. `content:sync` can move images between page image roots when the filename
|
|
133
|
-
is unambiguous across the site and the move will not break another reference;
|
|
134
|
-
these cross-page writes require a clean Git working tree.
|
package/docs/public-files.md
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
# Public Files
|
|
2
|
-
|
|
3
|
-
`site/public/` contains static files that Norna copies into the published site
|
|
4
|
-
without managed-image processing. Use it for browser icons, verification files,
|
|
5
|
-
`robots.txt`, a custom-domain `CNAME`, downloadable files, and other assets that
|
|
6
|
-
must keep their original format.
|
|
7
|
-
|
|
8
|
-
Most files and subdirectories under `public/` are site-owned. Logos and browser
|
|
9
|
-
icons are exceptions: Norna discovers a small set of exact filenames by
|
|
10
|
-
convention.
|
|
11
|
-
|
|
12
|
-
## Navigation Logo
|
|
13
|
-
|
|
14
|
-
To add a navigation logo, place exactly one supported logo file directly in
|
|
15
|
-
`site/public/`:
|
|
16
|
-
|
|
17
|
-
- `logo.svg`
|
|
18
|
-
- `logo.png`
|
|
19
|
-
- `logo.jpg`
|
|
20
|
-
- `logo.jpeg`
|
|
21
|
-
|
|
22
|
-
Norna discovers the logo from its filename, so you do not configure a path or
|
|
23
|
-
enable it separately. Use the exact lowercase filename to keep the site
|
|
24
|
-
portable between case-sensitive and case-insensitive file systems.
|
|
25
|
-
|
|
26
|
-
The logo links to the homepage. Its alternative text comes from the homepage
|
|
27
|
-
Markdown H1 in `site/content.md`; no separate site name or logo alt text is
|
|
28
|
-
configured.
|
|
29
|
-
|
|
30
|
-
Configure top-level `logo` in `site/sitewide-content.yaml` only when you need
|
|
31
|
-
to override the displayed height:
|
|
32
|
-
|
|
33
|
-
```yaml
|
|
34
|
-
logo:
|
|
35
|
-
height: 2rem
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
The width follows the image's intrinsic aspect ratio. `logo` does
|
|
39
|
-
not enable the logo or select a file.
|
|
40
|
-
|
|
41
|
-
`norna config:check` fails when it finds multiple supported logo files, or when
|
|
42
|
-
`logo` is configured but no logo file exists. A site without a logo uses its
|
|
43
|
-
ordinary page-title navigation; the check reports the missing logo as a
|
|
44
|
-
warning.
|
|
45
|
-
|
|
46
|
-
## Browser Icons
|
|
47
|
-
|
|
48
|
-
To add browser icons, place one or more supported files directly in
|
|
49
|
-
`site/public/`:
|
|
50
|
-
|
|
51
|
-
- `favicon.svg`
|
|
52
|
-
- `favicon.ico`
|
|
53
|
-
- `favicon.png`
|
|
54
|
-
- `apple-touch-icon.png`
|
|
55
|
-
|
|
56
|
-
Norna discovers these files from their filenames, so you do not configure paths
|
|
57
|
-
or enable them separately. Use the exact lowercase filenames to keep the site
|
|
58
|
-
portable between case-sensitive and case-insensitive file systems.
|
|
59
|
-
|
|
60
|
-
You may include several supported browser-icon files. Norna links every file it
|
|
61
|
-
finds and lets the browser select the appropriate format.
|
|
62
|
-
|
|
63
|
-
Browser icons are separate from the navigation logo. The logo appears inside
|
|
64
|
-
the website, while browser icons identify it in tabs, bookmarks, and similar
|
|
65
|
-
browser interfaces.
|
|
66
|
-
|
|
67
|
-
## GitHub Pages Custom Domain
|
|
68
|
-
|
|
69
|
-
To use a custom domain with GitHub Pages, place a file named exactly `CNAME`
|
|
70
|
-
directly in `site/public/`. Write the domain name in the file without a protocol
|
|
71
|
-
or path:
|
|
72
|
-
|
|
73
|
-
```text
|
|
74
|
-
www.example.com
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Norna does not discover or interpret `CNAME`; it copies the file to the root of
|
|
78
|
-
the generated website. GitHub Pages gives the filename its meaning. The public
|
|
79
|
-
`url` in `site/config.yaml` should use the same domain.
|
|
80
|
-
|
|
81
|
-
## Other Static Files
|
|
82
|
-
|
|
83
|
-
Other names are not restricted. For example:
|
|
84
|
-
|
|
85
|
-
```text
|
|
86
|
-
site/public/
|
|
87
|
-
|-- robots.txt
|
|
88
|
-
|-- verification.html
|
|
89
|
-
`-- downloads/
|
|
90
|
-
`-- project-overview.pdf
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Except for the navigation logo and browser icons documented above, Norna does
|
|
94
|
-
not attach meaning to filenames or inspect their contents. It copies them
|
|
95
|
-
unchanged. Browsers, crawlers, hosting services, and verification providers may
|
|
96
|
-
still require their own exact filenames and locations.
|
|
97
|
-
|
|
98
|
-
Norna preserves subdirectories while copying these files. A source file such
|
|
99
|
-
as `site/public/downloads/project-overview.pdf` is published at
|
|
100
|
-
`/downloads/project-overview.pdf`, prefixed with the site's configured base path
|
|
101
|
-
when the site is published below a path such as `/repository-name/`.
|
|
102
|
-
|
|
103
|
-
Ordinary Markdown image syntax may reference a public asset with a root-relative
|
|
104
|
-
URL:
|
|
105
|
-
|
|
106
|
-
```md
|
|
107
|
-

|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
Use Norna image blocks instead for local editorial images that should be
|
|
111
|
-
validated, synced, processed, and captioned. See
|
|
112
|
-
[Images and Metadata](images-and-metadata.md).
|
|
113
|
-
|
|
114
|
-
## Generated Copy
|
|
115
|
-
|
|
116
|
-
`norna site:public` copies source files from `site/public/` to
|
|
117
|
-
`site/.norna/public/`. The latter directory is generated build-preparation
|
|
118
|
-
output and must not be edited or versioned.
|
package/docs/publishing.md
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
# Publishing
|
|
2
|
-
|
|
3
|
-
Norna includes a GitHub Pages workflow and deploy helpers. The public URL is
|
|
4
|
-
declared in `site/config.yaml`; repository and default branch are discovered from
|
|
5
|
-
GitHub when a deploy command runs.
|
|
6
|
-
|
|
7
|
-
Do not run deploy commands from the engine repository unless you deliberately
|
|
8
|
-
want to deploy the documentation site.
|
|
9
|
-
|
|
10
|
-
## GitHub Pages Workflow
|
|
11
|
-
|
|
12
|
-
`norna init` creates the GitHub Pages workflow at exactly:
|
|
13
|
-
|
|
14
|
-
```text
|
|
15
|
-
.github/workflows/deploy.yml
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
The file belongs to the site repository. GitHub Actions runs its contents, while
|
|
19
|
-
Norna's deploy helpers use the filename to find and monitor the workflow. Keep
|
|
20
|
-
the default filename when using `norna deploy`.
|
|
21
|
-
|
|
22
|
-
GitHub Actions itself permits other workflow filenames. If the file is renamed,
|
|
23
|
-
`norna deploy:watch` can monitor it with `--workflow <name-or-file>`, but the
|
|
24
|
-
normal `norna deploy` command still expects `deploy.yml`.
|
|
25
|
-
|
|
26
|
-
The starter workflow:
|
|
27
|
-
|
|
28
|
-
1. runs for the repository's default branch,
|
|
29
|
-
2. checks out the site repository,
|
|
30
|
-
3. sets up Node and image tools,
|
|
31
|
-
4. restores the generated image cache,
|
|
32
|
-
5. runs `npm ci` and `npm run norna:build`,
|
|
33
|
-
6. uploads `dist/`,
|
|
34
|
-
7. deploys the artifact to GitHub Pages.
|
|
35
|
-
|
|
36
|
-
In the GitHub repository settings, set Pages to build from GitHub Actions.
|
|
37
|
-
Site-specific public files such as `site/public/CNAME`, `robots.txt`, and
|
|
38
|
-
`sitemap.xml` belong in the site repository. Norna copies them, while GitHub
|
|
39
|
-
Pages, crawlers, and other external consumers give those filenames their
|
|
40
|
-
meaning. See [Public Files](public-files.md).
|
|
41
|
-
|
|
42
|
-
For a project site without a custom domain, include the repository path in
|
|
43
|
-
`site/config.yaml`:
|
|
44
|
-
|
|
45
|
-
```yaml
|
|
46
|
-
url: https://owner.github.io/repository-name/
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
For a custom domain or root-hosted site:
|
|
50
|
-
|
|
51
|
-
```yaml
|
|
52
|
-
url: https://example.com/
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Norna derives the base path from the URL pathname and applies it to generated
|
|
56
|
-
internal links, favicons, managed images and root-relative Markdown links.
|
|
57
|
-
|
|
58
|
-
## Deploy An Already Committed Branch
|
|
59
|
-
|
|
60
|
-
Use:
|
|
61
|
-
|
|
62
|
-
```sh
|
|
63
|
-
npm run norna:deploy
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
The command requires an authenticated GitHub CLI. It asks GitHub for the
|
|
67
|
-
current repository and its default branch, then:
|
|
68
|
-
|
|
69
|
-
- requires the current branch to be that default branch,
|
|
70
|
-
- requires a clean worktree before the build,
|
|
71
|
-
- fetches `origin`,
|
|
72
|
-
- refuses to proceed when the branch is behind or diverged,
|
|
73
|
-
- runs the full build,
|
|
74
|
-
- requires the build to leave the worktree clean,
|
|
75
|
-
- pushes only when local `HEAD` is ahead of the remote branch,
|
|
76
|
-
- checks the included `deploy.yml` GitHub Pages workflow.
|
|
77
|
-
|
|
78
|
-
It does not create commits or push uncommitted changes.
|
|
79
|
-
|
|
80
|
-
## Deploy With A Generated Commit
|
|
81
|
-
|
|
82
|
-
The older convenience flow remains available:
|
|
83
|
-
|
|
84
|
-
```sh
|
|
85
|
-
npm run norna:deploy:commit -- "Commit message"
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
It discovers the same repository/default branch, builds, stages only allowed
|
|
89
|
-
site changes, commits, pushes and checks Pages. The allowlist is implemented in
|
|
90
|
-
`scripts/deploy-site.mjs` and includes site content and configuration, expected
|
|
91
|
-
managed images and generated image state, public files, package files and
|
|
92
|
-
renderer source changes.
|
|
93
|
-
|
|
94
|
-
## Watch A Deploy
|
|
95
|
-
|
|
96
|
-
Use:
|
|
97
|
-
|
|
98
|
-
```sh
|
|
99
|
-
npm run norna:deploy:watch
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
By default it monitors `deploy.yml` for the current `HEAD` in the discovered
|
|
103
|
-
repository and default branch. Useful one-run overrides include:
|
|
104
|
-
|
|
105
|
-
```sh
|
|
106
|
-
npm run norna:deploy:watch -- --timeout 20m --interval 5s
|
|
107
|
-
npm run norna:deploy:watch -- --sha <commit-sha>
|
|
108
|
-
npm run norna:deploy:watch -- --repo owner/name --branch main
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
The default poll interval is 10 seconds, timeout is 15 minutes and recent-run
|
|
112
|
-
limit is 10. `--workflow`, `--site-url` and `--limit` provide further one-run
|
|
113
|
-
overrides; these operational values do not belong in `config.yaml`.
|
|
114
|
-
|
|
115
|
-
The monitor prints the run id, run URL, Actions URL, branch, commit SHA, status
|
|
116
|
-
and public site URL. On failures it fetches failed job details and a log
|
|
117
|
-
excerpt.
|
package/docs/requirements.md
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# Requirements And Limitations
|
|
2
|
-
|
|
3
|
-
This page separates requirements for ordinary site work from optional tooling
|
|
4
|
-
and current product boundaries.
|
|
5
|
-
|
|
6
|
-
## Required For Every Site
|
|
7
|
-
|
|
8
|
-
- Node.js `22.12.0` or later.
|
|
9
|
-
- npm or another package manager capable of installing the project-local
|
|
10
|
-
`@janga/norna` dependency. Generated standalone sites use npm scripts and a
|
|
11
|
-
committed `package-lock.json` by default.
|
|
12
|
-
- A terminal and a text editor.
|
|
13
|
-
|
|
14
|
-
## Required For Managed Raster Images
|
|
15
|
-
|
|
16
|
-
ImageMagick is required when Norna reads raster image dimensions or generates
|
|
17
|
-
responsive raster variants. Norna accepts either the current `magick` command
|
|
18
|
-
or the older `identify` and `convert` commands.
|
|
19
|
-
|
|
20
|
-
Static SVG images with an intrinsic aspect ratio are rendered directly and do
|
|
21
|
-
not need raster variants. See [Images and Metadata](images-and-metadata.md) for
|
|
22
|
-
the supported managed-image behavior.
|
|
23
|
-
|
|
24
|
-
## Optional Tools
|
|
25
|
-
|
|
26
|
-
- Git is strongly recommended for reviewing and restoring site changes. It is
|
|
27
|
-
used by the normal commit-and-push publishing workflow.
|
|
28
|
-
- GitHub CLI (`gh`) is needed only for Norna's deploy status and monitoring
|
|
29
|
-
helpers.
|
|
30
|
-
- Playwright Chromium is needed only for navigation diagnostics used while
|
|
31
|
-
developing the Norna engine.
|
|
32
|
-
|
|
33
|
-
Neither GitHub CLI nor Playwright is required to edit, preview, check, or build
|
|
34
|
-
an ordinary Norna site.
|
|
35
|
-
|
|
36
|
-
## Current Product Boundaries
|
|
37
|
-
|
|
38
|
-
- Norna builds generated static output into `dist/`.
|
|
39
|
-
- GitHub Pages is the only publishing provider with an included integration.
|
|
40
|
-
Other static hosts can serve the generated files, but Norna does not
|
|
41
|
-
currently configure or publish to them.
|
|
42
|
-
- Norna provides its own site model and presentation layer. A project does not
|
|
43
|
-
supply custom page templates, component trees, or rendering logic through
|
|
44
|
-
the normal site interface.
|
|
45
|
-
- Norna is intended for content-driven websites. Dynamic applications,
|
|
46
|
-
database-backed publishing, and visual CMS editing are outside its current
|
|
47
|
-
scope.
|
|
48
|
-
- Norna is pre-1.0. Breaking changes to files, configuration, and commands may
|
|
49
|
-
occur between releases and should be reviewed before updating a project.
|
|
50
|
-
|
|
51
|
-
These constraints are part of the product's current scope, not hidden setup
|
|
52
|
-
steps. Start with [the tutorial](getting-started.md), and use
|
|
53
|
-
[`norna engine:version`](commands.md#command-summary) to inspect the version
|
|
54
|
-
installed by an existing project.
|