@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
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ than a general-purpose site generator: you describe the site instead of
|
|
|
13
13
|
implementing a new presentation layer for every project.
|
|
14
14
|
|
|
15
15
|
[Documentation](https://janga.github.io/norna/) |
|
|
16
|
-
[
|
|
16
|
+
[Getting started](https://janga.github.io/norna/getting-started/install-norna/) |
|
|
17
17
|
[Live examples](https://janga.github.io/norna/examples/) |
|
|
18
18
|
[npm package](https://www.npmjs.com/package/@janga/norna)
|
|
19
19
|
|
|
@@ -37,8 +37,9 @@ Open the URL printed by the development server, then edit the files under
|
|
|
37
37
|
`site/`. The generated project pins its Norna version and includes the npm
|
|
38
38
|
scripts and GitHub Pages workflow needed to check, build, and publish it.
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
Continue with the illustrated
|
|
41
|
+
[Getting Started](https://janga.github.io/norna/getting-started/install-norna/) guide to see
|
|
42
|
+
how page content, files, navigation, and rendered output fit together.
|
|
42
43
|
|
|
43
44
|
For shorter commands, install the launcher globally with
|
|
44
45
|
`npm install --global @janga/norna@latest`. You can then use `norna dev`,
|
|
@@ -52,18 +53,31 @@ site/
|
|
|
52
53
|
|-- config.yaml
|
|
53
54
|
|-- theme.yaml
|
|
54
55
|
|-- sitewide-content.yaml
|
|
55
|
-
|-- content.md
|
|
56
|
-
|-- images/
|
|
57
56
|
|-- pages/
|
|
57
|
+
| |-- 000-home/
|
|
58
|
+
| | |-- content.md
|
|
59
|
+
| | `-- images/
|
|
60
|
+
| `-- 010-guides/
|
|
61
|
+
| |-- category.yaml
|
|
62
|
+
| `-- pages/
|
|
63
|
+
| `-- 010-installation/
|
|
64
|
+
| |-- content.md
|
|
65
|
+
| `-- images/
|
|
58
66
|
`-- public/
|
|
59
67
|
```
|
|
60
68
|
|
|
61
|
-
- `content.md`
|
|
62
|
-
-
|
|
63
|
-
|
|
69
|
+
- `pages/000-home/content.md` is the required homepage at `/`.
|
|
70
|
+
- Every other ordered directory under `pages/` contains either `content.md` for
|
|
71
|
+
a routable page or `category.yaml` for a navigation-only group.
|
|
72
|
+
- A page may contain local images. A page or category may contain limited
|
|
73
|
+
presentation settings and nested entries under its own `pages/` directory.
|
|
74
|
+
- Category ids remain in child URLs, but categories do not generate pages of
|
|
75
|
+
their own.
|
|
64
76
|
- `theme.yaml` normally selects one complete visual preset.
|
|
65
|
-
- `sitewide-content.yaml` holds shared logo display settings, banners, and
|
|
66
|
-
|
|
77
|
+
- `sitewide-content.yaml` holds shared logo display settings, banners, and
|
|
78
|
+
footer content.
|
|
79
|
+
- `config.yaml` holds the public URL and optional language, navigation model,
|
|
80
|
+
and scroll behavior.
|
|
67
81
|
- `public/` holds static files copied without processing.
|
|
68
82
|
|
|
69
83
|
Norna validates this structure, processes managed images when needed, and
|
|
@@ -87,9 +101,13 @@ documentation.
|
|
|
87
101
|
|
|
88
102
|
| Example | Live site | Source |
|
|
89
103
|
| --- | --- | --- |
|
|
104
|
+
| Theme explorer | [Combine presets and palettes](https://janga.github.io/norna/examples/theme-presets/) | See the four preset sources below |
|
|
90
105
|
| Dog shelter, single page | [Open demo](https://janga.github.io/norna/examples/complete-sites/dog-shelter-single-page/) | [View files](examples/complete-sites/dog-shelter-single-page/) |
|
|
91
106
|
| Dog shelter, multi-page | [Open demo](https://janga.github.io/norna/examples/complete-sites/dog-shelter-multi-page/) | [View files](examples/complete-sites/dog-shelter-multi-page/) |
|
|
92
|
-
|
|
|
107
|
+
| Portfolio preset | [Open demo](https://janga.github.io/norna/examples/feature-demos/theme-preset-portfolio/) | [View files](examples/feature-demos/theme-preset-portfolio/) |
|
|
108
|
+
| Documentation preset | [Open demo](https://janga.github.io/norna/examples/feature-demos/theme-preset-documentation/) | [View files](examples/feature-demos/theme-preset-documentation/) |
|
|
109
|
+
| Project preset | [Open demo](https://janga.github.io/norna/examples/feature-demos/theme-preset-project/) | [View files](examples/feature-demos/theme-preset-project/) |
|
|
110
|
+
| Statement preset | [Open demo](https://janga.github.io/norna/examples/feature-demos/theme-preset-statement/) | [View files](examples/feature-demos/theme-preset-statement/) |
|
|
93
111
|
| Media and surfaces | [Open demo](https://janga.github.io/norna/examples/feature-demos/media-and-surfaces/) | [View files](examples/feature-demos/media-and-surfaces/) |
|
|
94
112
|
| Sitewide content | [Open demo](https://janga.github.io/norna/examples/feature-demos/sitewide-content/) | [View files](examples/feature-demos/sitewide-content/) |
|
|
95
113
|
|
|
@@ -123,11 +141,12 @@ engine diagnostics, not for ordinary editing and local preview. See
|
|
|
123
141
|
|
|
124
142
|
## Documentation
|
|
125
143
|
|
|
126
|
-
- [
|
|
144
|
+
- [Getting Started](https://janga.github.io/norna/getting-started/install-norna/)
|
|
127
145
|
- [Site files](docs/site-files.md)
|
|
146
|
+
- [Upgrading an existing site](docs/upgrading.md)
|
|
128
147
|
- [Task-oriented documentation map](docs/README.md)
|
|
129
148
|
- [Common workflows](docs/README.md#common-workflows)
|
|
130
|
-
- [
|
|
149
|
+
- [Explanation and JavaScript boundaries](docs/README.md#explanation)
|
|
131
150
|
- [Command and platform reference](docs/README.md#command-and-platform-reference)
|
|
132
151
|
- [Troubleshooting](docs/README.md#troubleshooting)
|
|
133
152
|
- [AI-readable documentation index](https://janga.github.io/norna/llms.txt)
|
package/astro.config.mjs
CHANGED
|
@@ -3,7 +3,9 @@ import { execFile } from 'node:child_process';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { promisify } from 'node:util';
|
|
5
5
|
import { defineConfig } from 'astro/config';
|
|
6
|
+
import { satteri } from '@astrojs/markdown-satteri';
|
|
6
7
|
import { getBasePathRedirectLocation } from './scripts/lib/base-path-redirect.mjs';
|
|
8
|
+
import { nornaMarkdownRenderPlugin } from './scripts/lib/norna-markdown-render-plugin.mjs';
|
|
7
9
|
import {
|
|
8
10
|
astroCacheDir,
|
|
9
11
|
astroDistDir,
|
|
@@ -70,6 +72,7 @@ const nornaGeneratedImagesWatcher = () => ({
|
|
|
70
72
|
sitePagesDir,
|
|
71
73
|
].map((watchedPath) => path.resolve(watchedPath));
|
|
72
74
|
let refreshTimer;
|
|
75
|
+
let structureReloadTimer;
|
|
73
76
|
let refreshPromise = Promise.resolve();
|
|
74
77
|
|
|
75
78
|
const isRelevantSourcePath = (changedPath) => {
|
|
@@ -99,6 +102,17 @@ const nornaGeneratedImagesWatcher = () => ({
|
|
|
99
102
|
refreshTimer = setTimeout(refreshImages, 250);
|
|
100
103
|
};
|
|
101
104
|
|
|
105
|
+
const scheduleStructureReload = (changedPath) => {
|
|
106
|
+
if (!isRelevantSourcePath(changedPath)) return;
|
|
107
|
+
const filename = path.basename(changedPath);
|
|
108
|
+
if (filename !== 'category.yaml' && filename !== 'theme.yaml') return;
|
|
109
|
+
|
|
110
|
+
clearTimeout(structureReloadTimer);
|
|
111
|
+
structureReloadTimer = setTimeout(() => {
|
|
112
|
+
server.ws.send({ type: 'full-reload' });
|
|
113
|
+
}, 300);
|
|
114
|
+
};
|
|
115
|
+
|
|
102
116
|
server.watcher.add(manifestPath);
|
|
103
117
|
server.watcher.add(watchedSourcePaths);
|
|
104
118
|
server.watcher.on('change', (changedPath) => {
|
|
@@ -111,6 +125,9 @@ const nornaGeneratedImagesWatcher = () => ({
|
|
|
111
125
|
server.watcher.on('unlink', scheduleRefreshImages);
|
|
112
126
|
server.watcher.on('addDir', scheduleRefreshImages);
|
|
113
127
|
server.watcher.on('unlinkDir', scheduleRefreshImages);
|
|
128
|
+
server.watcher.on('add', scheduleStructureReload);
|
|
129
|
+
server.watcher.on('change', scheduleStructureReload);
|
|
130
|
+
server.watcher.on('unlink', scheduleStructureReload);
|
|
114
131
|
},
|
|
115
132
|
});
|
|
116
133
|
|
|
@@ -118,6 +135,11 @@ const nornaGeneratedImagesWatcher = () => ({
|
|
|
118
135
|
export default defineConfig({
|
|
119
136
|
base: projectConfig.site.basePath,
|
|
120
137
|
cacheDir: astroCacheDir,
|
|
138
|
+
markdown: {
|
|
139
|
+
processor: satteri({
|
|
140
|
+
mdastPlugins: [nornaMarkdownRenderPlugin],
|
|
141
|
+
}),
|
|
142
|
+
},
|
|
121
143
|
outDir: astroDistDir,
|
|
122
144
|
publicDir: astroPublicDir,
|
|
123
145
|
srcDir: path.join(engineRoot, 'src'),
|
package/bin/norna-cli.mjs
CHANGED
|
@@ -16,7 +16,7 @@ Commands:
|
|
|
16
16
|
dev:stop Stop local dev server
|
|
17
17
|
check Validate configuration and content
|
|
18
18
|
config:check Validate site/config.yaml
|
|
19
|
-
content:check Validate
|
|
19
|
+
content:check Validate page content and managed image references
|
|
20
20
|
content:sync Move misplaced Norna-managed images and refresh generated images
|
|
21
21
|
theme:presets List available theme presets and their intended uses
|
|
22
22
|
theme:export Export a commented theme preset reference
|
|
@@ -27,6 +27,8 @@ Commands:
|
|
|
27
27
|
engine:update Update @janga/norna in a site repository
|
|
28
28
|
engine:version Show installed engine and Astro versions
|
|
29
29
|
init Create a new site project from the starter
|
|
30
|
+
page:add Add a page to the site page tree
|
|
31
|
+
category:add Add a non-routable category to the site page tree
|
|
30
32
|
build Build the selected site
|
|
31
33
|
build:local Build and restart local dev server
|
|
32
34
|
deploy Build and deploy committed branch
|
|
@@ -159,6 +161,10 @@ try {
|
|
|
159
161
|
await runScript('scripts/engine-version.mjs', rest);
|
|
160
162
|
} else if (command === 'init') {
|
|
161
163
|
await runScript('scripts/init-site.mjs', rest);
|
|
164
|
+
} else if (command === 'page:add') {
|
|
165
|
+
await runScript('scripts/add-site-node.mjs', ['page', ...rest]);
|
|
166
|
+
} else if (command === 'category:add') {
|
|
167
|
+
await runScript('scripts/add-site-node.mjs', ['category', ...rest]);
|
|
162
168
|
} else if (command === 'build') {
|
|
163
169
|
await runBuild();
|
|
164
170
|
} else if (command === 'build:local') {
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@janga/norna",
|
|
3
3
|
"description": "An opinionated CLI for building responsive websites from Markdown, images, and theme presets.",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "0.7.
|
|
5
|
+
"version": "0.7.22",
|
|
6
6
|
"license": "GPL-3.0-only",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
@@ -26,15 +26,33 @@
|
|
|
26
26
|
"files": [
|
|
27
27
|
"astro.config.mjs",
|
|
28
28
|
"bin/",
|
|
29
|
-
"docs/",
|
|
30
|
-
"examples/",
|
|
31
|
-
"fixtures/",
|
|
32
|
-
"scripts/",
|
|
33
29
|
"schemas/",
|
|
34
30
|
"src/",
|
|
35
|
-
"starters/",
|
|
36
|
-
"
|
|
37
|
-
"
|
|
31
|
+
"starters/basic/",
|
|
32
|
+
"!starters/basic/.astro/",
|
|
33
|
+
"!starters/basic/node_modules/",
|
|
34
|
+
"!starters/basic/site/.norna/",
|
|
35
|
+
"scripts/build-site.mjs",
|
|
36
|
+
"scripts/add-site-node.mjs",
|
|
37
|
+
"scripts/check-config.mjs",
|
|
38
|
+
"scripts/deploy-site.mjs",
|
|
39
|
+
"scripts/dev-local.mjs",
|
|
40
|
+
"scripts/doctor.mjs",
|
|
41
|
+
"scripts/engine-version.mjs",
|
|
42
|
+
"scripts/export-theme-preset.mjs",
|
|
43
|
+
"scripts/generate-images.mjs",
|
|
44
|
+
"scripts/generate-schemas.mjs",
|
|
45
|
+
"scripts/init-site.mjs",
|
|
46
|
+
"scripts/lib/",
|
|
47
|
+
"!scripts/lib/documentation-preset-candidates.mjs",
|
|
48
|
+
"!scripts/lib/example-sites.mjs",
|
|
49
|
+
"!scripts/lib/git-status.mjs",
|
|
50
|
+
"scripts/list-theme-presets.mjs",
|
|
51
|
+
"scripts/show-typography.mjs",
|
|
52
|
+
"scripts/sync-content-sections.mjs",
|
|
53
|
+
"scripts/sync-site-public.mjs",
|
|
54
|
+
"scripts/update-engine.mjs",
|
|
55
|
+
"scripts/watch-pages-deploy.mjs",
|
|
38
56
|
"README.md"
|
|
39
57
|
],
|
|
40
58
|
"publishConfig": {
|
|
@@ -69,11 +87,13 @@
|
|
|
69
87
|
"deploy:commit": "node bin/norna.mjs deploy:commit",
|
|
70
88
|
"deploy:watch": "node bin/norna.mjs deploy:watch",
|
|
71
89
|
"doctor": "node bin/norna.mjs doctor",
|
|
72
|
-
"demo:build": "node
|
|
73
|
-
"test": "npm run schemas:check && npm run test:schemas && npm run test:page-model && npm run test:nested-pages && npm run test:heading-ids && npm run test:navigation-model && npm run test:project-config && npm run test:editor-language && npm run test:content-check && npm run test:content-model-v2 && npm run test:theme-presets && npm run test:site-public && npm run test:cli-discovery && npm run test:engine-commands && npm run test:documentation && npm run test:ci-lockfile && npm run test:banner-visibility && npm run test:client-javascript && npm run test:fixture:build && npm run test:examples && npm run package:check",
|
|
74
|
-
"test:fixture:build": "node
|
|
90
|
+
"demo:build": "node scripts/build-demo.mjs",
|
|
91
|
+
"test": "npm run schemas:check && npm run test:dead-code && npm run test:schemas && npm run test:page-model && npm run test:page-markdown && npm run test:site-node-commands && npm run test:nested-pages && npm run test:heading-ids && npm run test:navigation-model && npm run test:project-config && npm run test:editor-language && npm run test:content-check && npm run test:content-model-v2 && npm run test:theme-presets && npm run test:presentation-contract && npm run test:preset-baselines && npm run test:documentation-preset-review && npm run test:site-public && npm run test:cli-discovery && npm run test:engine-commands && npm run test:documentation && npm run test:ci-lockfile && npm run test:banner-visibility && npm run test:client-javascript && npm run test:fixture:build && npm run test:examples && npm run package:check",
|
|
92
|
+
"test:fixture:build": "node scripts/test-basic-fixture-build.mjs",
|
|
75
93
|
"test:examples": "node scripts/test-examples.mjs",
|
|
76
94
|
"test:page-model": "node scripts/test-page-model.mjs",
|
|
95
|
+
"test:page-markdown": "node scripts/test-page-markdown.mjs",
|
|
96
|
+
"test:site-node-commands": "node scripts/test-site-node-commands.mjs",
|
|
77
97
|
"test:nested-pages": "node scripts/test-nested-pages.mjs",
|
|
78
98
|
"test:heading-ids": "node scripts/test-heading-ids.mjs",
|
|
79
99
|
"test:navigation-model": "node scripts/test-navigation-model.mjs",
|
|
@@ -82,6 +102,15 @@
|
|
|
82
102
|
"test:content-check": "node scripts/test-content-check.mjs",
|
|
83
103
|
"test:content-model-v2": "node scripts/test-content-model-v2.mjs",
|
|
84
104
|
"test:theme-presets": "node scripts/test-theme-presets.mjs",
|
|
105
|
+
"test:presentation-contract": "node scripts/test-presentation-contract.mjs",
|
|
106
|
+
"test:presentation:browser": "node scripts/test-navigation.mjs --site-dir fixtures/preset-baseline/site tests/presentation-contract.spec.ts",
|
|
107
|
+
"test:preset-baselines": "node scripts/test-preset-baselines.mjs",
|
|
108
|
+
"test:documentation-preset-review": "node scripts/test-documentation-preset-review.mjs",
|
|
109
|
+
"preset:baselines:capture": "node scripts/test-preset-baselines.mjs --capture",
|
|
110
|
+
"preset:documentation:review": "node scripts/review-documentation-preset.mjs",
|
|
111
|
+
"preset:documentation:review:build": "node scripts/review-documentation-preset.mjs --build-only",
|
|
112
|
+
"palette:review": "node scripts/review-documentation-preset.mjs --palettes",
|
|
113
|
+
"palette:review:build": "node scripts/review-documentation-preset.mjs --palettes --build-only",
|
|
85
114
|
"test:site-public": "node scripts/test-site-public.mjs",
|
|
86
115
|
"test:cli-discovery": "node scripts/test-cli-discovery.mjs",
|
|
87
116
|
"test:engine-commands": "node scripts/test-engine-commands.mjs",
|
|
@@ -90,7 +119,9 @@
|
|
|
90
119
|
"test:ci-lockfile": "node scripts/test-ci-lockfile.mjs",
|
|
91
120
|
"test:banner-visibility": "node scripts/test-banner-visibility.mjs",
|
|
92
121
|
"test:client-javascript": "node scripts/test-client-javascript.mjs",
|
|
122
|
+
"test:dead-code": "knip --include files,exports",
|
|
93
123
|
"test:navigation": "node scripts/test-navigation.mjs",
|
|
124
|
+
"test:navigation:tree": "node scripts/test-navigation.mjs --site-dir fixtures/nested-pages/site tests/navigation-tree.spec.ts",
|
|
94
125
|
"test:navigation:stress": "node scripts/test-navigation.mjs tests/navigation-stress.spec.ts",
|
|
95
126
|
"test:navigation:preview": "node scripts/test-navigation-preview.mjs",
|
|
96
127
|
"package:check": "node scripts/test-package-check.mjs",
|
|
@@ -102,12 +133,15 @@
|
|
|
102
133
|
"astro": "node bin/norna.mjs astro"
|
|
103
134
|
},
|
|
104
135
|
"dependencies": {
|
|
136
|
+
"@astrojs/markdown-satteri": "0.3.4",
|
|
137
|
+
"@lucide/astro": "1.34.0",
|
|
105
138
|
"astro": "^7.1.3",
|
|
106
139
|
"embla-carousel": "^8.6.0",
|
|
107
140
|
"js-yaml": "^4.3.1",
|
|
108
141
|
"satteri": "^0.9.1"
|
|
109
142
|
},
|
|
110
143
|
"devDependencies": {
|
|
111
|
-
"@playwright/test": "^1.61.1"
|
|
144
|
+
"@playwright/test": "^1.61.1",
|
|
145
|
+
"knip": "6.33.0"
|
|
112
146
|
}
|
|
113
147
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"properties": {
|
|
5
|
+
"label": {
|
|
6
|
+
"type": "string",
|
|
7
|
+
"minLength": 1,
|
|
8
|
+
"description": "Navigation label for this non-routable page category.",
|
|
9
|
+
"markdownDescription": "```yaml\nlabel: Guides\n```\n\nThe category label shown in global navigation, tree navigation, mobile navigation, and breadcrumbs.\n\n[Navigation category reference](https://github.com/janga/norna/blob/v0.7.22/docs/pages.md#navigation-categories)"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"required": [
|
|
13
|
+
"label"
|
|
14
|
+
],
|
|
15
|
+
"additionalProperties": false,
|
|
16
|
+
"description": "A non-routable navigation category containing child pages.",
|
|
17
|
+
"$id": "https://janga.github.io/norna/schemas/category.schema.json",
|
|
18
|
+
"title": "Norna page category",
|
|
19
|
+
"markdownDescription": "```yaml\nlabel: Guides\n```\n\n`category.yaml` creates a navigation-only group for child pages. It has no page content and produces no URL of its own.\n\n[Navigation category reference](https://github.com/janga/norna/blob/v0.7.22/docs/pages.md#navigation-categories)"
|
|
20
|
+
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"type": "string",
|
|
7
7
|
"format": "uri",
|
|
8
8
|
"description": "Absolute public URL for the built site.",
|
|
9
|
-
"markdownDescription": "```yaml\nurl: https://example.com/\n```\n\nThe absolute public URL. Its path also determines the base path for generated links and assets.\n\n[Public URL reference](https://github.com/janga/norna/blob/v0.7.
|
|
9
|
+
"markdownDescription": "```yaml\nurl: https://example.com/\n```\n\nThe absolute public URL. Its path also determines the base path for generated links and assets.\n\n[Public URL reference](https://github.com/janga/norna/blob/v0.7.22/docs/configuration.md#url)",
|
|
10
10
|
"examples": [
|
|
11
11
|
"https://example.com/",
|
|
12
12
|
"https://owner.github.io/repository-name/"
|
|
@@ -41,7 +41,58 @@
|
|
|
41
41
|
"description": "Use an English or Swedish regional language tag such as en-GB or sv-SE."
|
|
42
42
|
}
|
|
43
43
|
],
|
|
44
|
-
"markdownDescription": "```yaml\nlanguage: en-GB\n```\n\nSets the page language and selects Norna's built-in English or Swedish interface text. The default is `en`.\n\n[Language reference](https://github.com/janga/norna/blob/v0.7.
|
|
44
|
+
"markdownDescription": "```yaml\nlanguage: en-GB\n```\n\nSets the page language and selects Norna's built-in English or Swedish interface text. The default is `en`.\n\n[Language reference](https://github.com/janga/norna/blob/v0.7.22/docs/configuration.md#language)"
|
|
45
|
+
},
|
|
46
|
+
"navigation": {
|
|
47
|
+
"type": "object",
|
|
48
|
+
"properties": {
|
|
49
|
+
"mode": {
|
|
50
|
+
"description": "Navigation model. Omit this to let Norna choose from the site structure.",
|
|
51
|
+
"type": "string",
|
|
52
|
+
"oneOf": [
|
|
53
|
+
{
|
|
54
|
+
"const": "automatic",
|
|
55
|
+
"title": "Automatic",
|
|
56
|
+
"description": "Choose sections for one page, top navigation for a shallow multi-page site, and tree navigation for deeper content."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"const": "sections",
|
|
60
|
+
"title": "Sections",
|
|
61
|
+
"description": "Navigate the sections of the current page."
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"const": "top",
|
|
65
|
+
"title": "Top",
|
|
66
|
+
"description": "Use pages in the top navigation and sections below them."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"const": "tree",
|
|
70
|
+
"title": "Tree",
|
|
71
|
+
"description": "Use a hierarchical site-wide navigation tree."
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"markdownDescription": "```yaml\nnavigation:\n mode: automatic\n```\n\nNavigation model. Omit this to let Norna choose from the site structure.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/pages.md#navigation)",
|
|
75
|
+
"examples": [
|
|
76
|
+
"automatic",
|
|
77
|
+
"sections",
|
|
78
|
+
"top",
|
|
79
|
+
"tree"
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
"sectionTracking": {
|
|
83
|
+
"default": false,
|
|
84
|
+
"description": "As the reader scrolls in tree navigation, mark the last H2 or H3 that has reached the reading area below the sticky header. The URL and keyboard focus do not change.",
|
|
85
|
+
"type": "boolean",
|
|
86
|
+
"markdownDescription": "```yaml\nnavigation:\n sectionTracking: true\n```\n\nAs the reader scrolls in tree navigation, mark the last H2 or H3 that has reached the reading area below the sticky header. The URL and keyboard focus do not change.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/configuration.md#navigationsectiontracking)",
|
|
87
|
+
"examples": [
|
|
88
|
+
true,
|
|
89
|
+
false
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"additionalProperties": false,
|
|
94
|
+
"description": "Site-wide navigation behavior.",
|
|
95
|
+
"markdownDescription": "```yaml\nnavigation:\n mode: automatic\n```\n\nSets one navigation model for the complete site. `automatic` selects from the page hierarchy.\n\n[Navigation reference](https://github.com/janga/norna/blob/v0.7.22/docs/pages.md#navigation)"
|
|
45
96
|
},
|
|
46
97
|
"scrollBehavior": {
|
|
47
98
|
"default": "instant",
|
|
@@ -59,7 +110,7 @@
|
|
|
59
110
|
"description": "Use the browser's native smooth scrolling for anchor navigation."
|
|
60
111
|
}
|
|
61
112
|
],
|
|
62
|
-
"markdownDescription": "```yaml\nscrollBehavior: smooth\n```\n\nControls same-page anchor movement. `instant` is the default; `smooth` uses the browser's native smooth scrolling.\n\n[Scroll behavior reference](https://github.com/janga/norna/blob/v0.7.
|
|
113
|
+
"markdownDescription": "```yaml\nscrollBehavior: smooth\n```\n\nControls same-page anchor movement. `instant` is the default; `smooth` uses the browser's native smooth scrolling.\n\n[Scroll behavior reference](https://github.com/janga/norna/blob/v0.7.22/docs/configuration.md#scrollbehavior)",
|
|
63
114
|
"examples": [
|
|
64
115
|
"instant",
|
|
65
116
|
"smooth"
|
|
@@ -73,5 +124,5 @@
|
|
|
73
124
|
"description": "Technical settings for one Norna site. Additional pages cannot provide technical configuration.",
|
|
74
125
|
"$id": "https://janga.github.io/norna/schemas/config.schema.json",
|
|
75
126
|
"title": "Norna site configuration",
|
|
76
|
-
"markdownDescription": "```yaml\nurl: https://example.com/\n```\n\n`config.yaml` contains the few technical settings shared by the complete site.\n\n[Configuration reference](https://github.com/janga/norna/blob/v0.7.
|
|
127
|
+
"markdownDescription": "```yaml\nurl: https://example.com/\n```\n\n`config.yaml` contains the few technical settings shared by the complete site.\n\n[Configuration reference](https://github.com/janga/norna/blob/v0.7.22/docs/configuration.md)"
|
|
77
128
|
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"description": "Optional page-specific meta description.",
|
|
10
10
|
"type": "string",
|
|
11
11
|
"minLength": 1,
|
|
12
|
-
"markdownDescription": "```yaml\npage:\n description: About this project.\n```\n\nAn optional page-specific description rendered as `<meta name=\"description\">`. It is not visible in page content.\n\n[Page title and frontmatter reference](https://github.com/janga/norna/blob/v0.7.
|
|
12
|
+
"markdownDescription": "```yaml\npage:\n description: About this project.\n```\n\nAn optional page-specific description rendered as `<meta name=\"description\">`. It is not visible in page content.\n\n[Page title and frontmatter reference](https://github.com/janga/norna/blob/v0.7.22/docs/content.md#page-title-and-frontmatter)",
|
|
13
13
|
"examples": [
|
|
14
14
|
"About this project."
|
|
15
15
|
]
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"additionalProperties": false,
|
|
19
19
|
"description": "Optional metadata for this homepage or additional page. The Markdown H1 supplies the page title.",
|
|
20
|
-
"markdownDescription": "```yaml\npage:\n description: About this project.\n```\n\nContains optional metadata for the current homepage or additional page. The Markdown H1 supplies its title.\n\n[Page title and frontmatter reference](https://github.com/janga/norna/blob/v0.7.
|
|
20
|
+
"markdownDescription": "```yaml\npage:\n description: About this project.\n```\n\nContains optional metadata for the current homepage or additional page. The Markdown H1 supplies its title.\n\n[Page title and frontmatter reference](https://github.com/janga/norna/blob/v0.7.22/docs/content.md#page-title-and-frontmatter)"
|
|
21
21
|
},
|
|
22
22
|
"navigation": {
|
|
23
23
|
"description": "Optional navigation metadata for this page.",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"default": true,
|
|
28
28
|
"description": "List this page in site navigation. The page remains public when false.",
|
|
29
29
|
"type": "boolean",
|
|
30
|
-
"markdownDescription": "```yaml\nnavigation:\n listed: false\n```\n\nList this page in site navigation. The page remains public when false.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.
|
|
30
|
+
"markdownDescription": "```yaml\nnavigation:\n listed: false\n```\n\nList this page in site navigation. The page remains public when false.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.22/docs/pages.md#navigation)",
|
|
31
31
|
"examples": [
|
|
32
32
|
true,
|
|
33
33
|
false
|
|
@@ -35,12 +35,12 @@
|
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
37
|
"additionalProperties": false,
|
|
38
|
-
"markdownDescription": "```yaml\nnavigation:\n listed: false\n```\n\nOptionally excludes an additional page from site navigation without removing its public URL.\n\n[Site navigation reference](https://github.com/janga/norna/blob/v0.7.
|
|
38
|
+
"markdownDescription": "```yaml\nnavigation:\n listed: false\n```\n\nOptionally excludes an additional page from site navigation without removing its public URL.\n\n[Site navigation reference](https://github.com/janga/norna/blob/v0.7.22/docs/pages.md#navigation)"
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
"additionalProperties": false,
|
|
42
42
|
"description": "Frontmatter for a homepage or additional page content.md file.",
|
|
43
43
|
"$id": "https://janga.github.io/norna/schemas/content-frontmatter.schema.json",
|
|
44
44
|
"title": "Norna page frontmatter",
|
|
45
|
-
"markdownDescription": "```yaml\n---\npage:\n description: About this project.\n---\n```\n\nContent frontmatter is optional. Write the page title as the single Markdown H1; use frontmatter only for optional metadata or navigation settings.\n\n[Page title and frontmatter reference](https://github.com/janga/norna/blob/v0.7.
|
|
45
|
+
"markdownDescription": "```yaml\n---\npage:\n description: About this project.\n---\n```\n\nContent frontmatter is optional. Write the page title as the single Markdown H1; use frontmatter only for optional metadata or navigation settings.\n\n[Page title and frontmatter reference](https://github.com/janga/norna/blob/v0.7.22/docs/content.md#page-title-and-frontmatter)"
|
|
46
46
|
}
|
package/schemas/manifest.json
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"editorApiVersion": 1,
|
|
3
|
-
"schemaVersion":
|
|
3
|
+
"schemaVersion": 3,
|
|
4
4
|
"files": {
|
|
5
|
+
"category": "category.schema.json",
|
|
5
6
|
"config": "config.schema.json",
|
|
6
7
|
"contentFrontmatter": "content-frontmatter.schema.json",
|
|
7
8
|
"sitewideContent": "sitewide-content.schema.json",
|
|
8
|
-
"theme": "theme.schema.json"
|
|
9
|
+
"theme": "theme.schema.json",
|
|
10
|
+
"pageTheme": "page-theme.schema.json"
|
|
9
11
|
}
|
|
10
12
|
}
|