@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,414 +0,0 @@
|
|
|
1
|
-
# Command Organization
|
|
2
|
-
|
|
3
|
-
This document defines the naming principles for commands in `norna`, site
|
|
4
|
-
repositories, and GitHub projects that embed a Norna site.
|
|
5
|
-
|
|
6
|
-
The goal is that command names reveal both the action and the scope they affect.
|
|
7
|
-
This matters because the same repository can contain a Norna site, an app, tests,
|
|
8
|
-
and a publishing workflow that should not accidentally share ambiguous command
|
|
9
|
-
names.
|
|
10
|
-
|
|
11
|
-
## Situations
|
|
12
|
-
|
|
13
|
-
`norna` commands must be understandable in three situations:
|
|
14
|
-
|
|
15
|
-
- Standalone site project: the repository exists only to publish one
|
|
16
|
-
`norna` site.
|
|
17
|
-
- Mixed project: the repository contains another project, such as an app or
|
|
18
|
-
library, and includes a Norna site as one part of its
|
|
19
|
-
GitHub Pages output.
|
|
20
|
-
- Engine development: the repository is `norna` itself.
|
|
21
|
-
|
|
22
|
-
## Namespaces
|
|
23
|
-
|
|
24
|
-
Use these namespaces consistently.
|
|
25
|
-
|
|
26
|
-
### `norna:*`
|
|
27
|
-
|
|
28
|
-
Use `norna:*` npm scripts in repositories that consume `norna`.
|
|
29
|
-
|
|
30
|
-
These scripts operate on a selected site source directory. In a standalone site
|
|
31
|
-
project that directory is normally `site/`. In a mixed project it may be a more
|
|
32
|
-
specific directory such as `presentation/`, with the script setting
|
|
33
|
-
`NORNA_SITE_DIR` or passing `norna --site-dir`.
|
|
34
|
-
|
|
35
|
-
Examples:
|
|
36
|
-
|
|
37
|
-
```sh
|
|
38
|
-
npm run norna:dev
|
|
39
|
-
npm run norna:check
|
|
40
|
-
npm run norna:sync
|
|
41
|
-
npm run norna:build
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Mixed projects must use `norna:*` for Norna work so names such as `build`,
|
|
45
|
-
`test`, and `deploy` can remain under the containing project's control.
|
|
46
|
-
|
|
47
|
-
Standalone site projects should also use `norna:*` as the primary documented
|
|
48
|
-
interface. They may provide unprefixed aliases when the alias means the same
|
|
49
|
-
thing for the whole repository, for example `npm run build` as an alias for
|
|
50
|
-
`npm run norna:build`.
|
|
51
|
-
|
|
52
|
-
### Direct CLI Shortcut
|
|
53
|
-
|
|
54
|
-
Users may install `@janga/norna` globally as a cross-platform launcher and use
|
|
55
|
-
`norna dev`, `norna check`, or `norna build`. The launcher must delegate to the
|
|
56
|
-
current project's installed Norna version, so this shortcut does not replace
|
|
57
|
-
the project dependency or its lockfile.
|
|
58
|
-
|
|
59
|
-
### Project Commands That Call Norna Commands
|
|
60
|
-
|
|
61
|
-
`norna` does not define a consuming project's unprefixed commands. Names
|
|
62
|
-
such as `build`, `test`, and `deploy` belong to the project that consumes the
|
|
63
|
-
Norna engine.
|
|
64
|
-
|
|
65
|
-
Examples:
|
|
66
|
-
|
|
67
|
-
```sh
|
|
68
|
-
npm run build
|
|
69
|
-
npm run test
|
|
70
|
-
npm run deploy
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
When those project commands need the Norna site, they should call `norna:*`
|
|
74
|
-
scripts instead of calling `norna` directly. That keeps the selected
|
|
75
|
-
site source directory and other project-specific wrapper behavior in one
|
|
76
|
-
place.
|
|
77
|
-
|
|
78
|
-
In a mixed project, if `npm run build` exists, it should build the project's
|
|
79
|
-
complete publishable artifact, not only the Norna site. If the project publishes a
|
|
80
|
-
GitHub Pages artifact containing both a Norna site and an app, `build` should
|
|
81
|
-
produce that full artifact and may call `npm run norna:build` internally.
|
|
82
|
-
|
|
83
|
-
In a standalone site project, project commands may be aliases to `norna:*`
|
|
84
|
-
commands because the Norna site is the whole project.
|
|
85
|
-
|
|
86
|
-
### `release:*`
|
|
87
|
-
|
|
88
|
-
Use `release:*` only in the engine repository.
|
|
89
|
-
|
|
90
|
-
Examples:
|
|
91
|
-
|
|
92
|
-
```sh
|
|
93
|
-
npm run release:patch
|
|
94
|
-
npm run release:minor
|
|
95
|
-
npm run release:major
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
These commands change and publish the reusable `@janga/norna` package.
|
|
99
|
-
They must not be part of ordinary site repositories.
|
|
100
|
-
|
|
101
|
-
`npm run release:publish` is a low-level script used by the release command
|
|
102
|
-
after the version has already been bumped. It is not the normal release entry
|
|
103
|
-
point.
|
|
104
|
-
|
|
105
|
-
### Direct CLI Commands
|
|
106
|
-
|
|
107
|
-
The `norna` binary is the stable low-level command surface.
|
|
108
|
-
|
|
109
|
-
Examples:
|
|
110
|
-
|
|
111
|
-
```sh
|
|
112
|
-
norna content:check
|
|
113
|
-
norna content:sync
|
|
114
|
-
norna build
|
|
115
|
-
norna deploy
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Npm scripts in site repositories are convenience wrappers around this binary.
|
|
119
|
-
Documentation for ordinary site work should prefer the npm scripts because they
|
|
120
|
-
can set the correct site directory for the repository.
|
|
121
|
-
|
|
122
|
-
## Functional Groups
|
|
123
|
-
|
|
124
|
-
### Install Norna Software
|
|
125
|
-
|
|
126
|
-
Creating a new standalone site project starts outside the target project because
|
|
127
|
-
the target does not have a `package.json` yet:
|
|
128
|
-
|
|
129
|
-
```sh
|
|
130
|
-
npx @janga/norna@latest init my-site
|
|
131
|
-
cd my-site
|
|
132
|
-
npm install
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
A mixed project already has its own repository and may have its own
|
|
136
|
-
`package.json`. In that situation the Norna dependency should be installed as
|
|
137
|
-
part of the existing project setup:
|
|
138
|
-
|
|
139
|
-
```sh
|
|
140
|
-
npm install --save-exact @janga/norna
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
The mixed project should then add `norna:*` scripts that point at the chosen
|
|
144
|
-
site source directory.
|
|
145
|
-
|
|
146
|
-
Engine development uses ordinary package installation in the engine repository:
|
|
147
|
-
|
|
148
|
-
```sh
|
|
149
|
-
npm install
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### Upgrade Or Inspect Norna Software
|
|
153
|
-
|
|
154
|
-
In a consuming repository, upgrading or inspecting the installed Norna engine
|
|
155
|
-
is norna maintenance, so the preferred namespace is `norna:*`:
|
|
156
|
-
|
|
157
|
-
```sh
|
|
158
|
-
npm run norna:engine:version
|
|
159
|
-
npm run norna:engine:update
|
|
160
|
-
npm run norna:engine:update -- 0.2.0
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
These commands update the `@janga/norna` dependency and lockfile used by
|
|
164
|
-
the repository. They do not release the engine package.
|
|
165
|
-
|
|
166
|
-
In the engine repository, version changes belong to `release:*`:
|
|
167
|
-
|
|
168
|
-
```sh
|
|
169
|
-
npm run release:minor
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
### Initialize A Site Project Directory
|
|
173
|
-
|
|
174
|
-
Initialization is a direct CLI operation because it usually happens before a
|
|
175
|
-
project has npm scripts:
|
|
176
|
-
|
|
177
|
-
```sh
|
|
178
|
-
npx @janga/norna@latest init my-site
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
The initializer should support two setup modes that share the same `norna:*`
|
|
182
|
-
command vocabulary.
|
|
183
|
-
|
|
184
|
-
#### Standalone Setup
|
|
185
|
-
|
|
186
|
-
Standalone setup creates a new project where the Norna site is the whole repository:
|
|
187
|
-
|
|
188
|
-
```sh
|
|
189
|
-
npx @janga/norna@latest init my-site --type standalone
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
This should be the default when the target is a new or empty directory.
|
|
193
|
-
|
|
194
|
-
Standalone setup should create:
|
|
195
|
-
|
|
196
|
-
- a normal site source directory, normally `site/`;
|
|
197
|
-
- a `package.json` with `norna:*` scripts;
|
|
198
|
-
- unprefixed convenience aliases only when they mean the same thing as the
|
|
199
|
-
whole project, for example `build` as an alias for `norna:build`;
|
|
200
|
-
- the standard GitHub Pages workflow for publishing the site.
|
|
201
|
-
|
|
202
|
-
#### Embedded Setup
|
|
203
|
-
|
|
204
|
-
Embedded setup adds a Norna site to an existing project without taking ownership
|
|
205
|
-
of that project's root commands:
|
|
206
|
-
|
|
207
|
-
```sh
|
|
208
|
-
npx @janga/norna@latest init . --type embedded --site-dir presentation
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
Embedded setup should be selected explicitly, or suggested when the target
|
|
212
|
-
already contains a `package.json`.
|
|
213
|
-
|
|
214
|
-
Embedded setup should create or update only the Norna-owned parts:
|
|
215
|
-
|
|
216
|
-
- the chosen site source directory, for example `presentation/`;
|
|
217
|
-
- `@janga/norna` as a project dependency;
|
|
218
|
-
- `norna:*` scripts that set the selected site directory;
|
|
219
|
-
- no unprefixed aliases such as `build`, `test`, `dev`, or `deploy`;
|
|
220
|
-
- no project publishing workflow unless the caller explicitly asks for one.
|
|
221
|
-
|
|
222
|
-
Embedded setup must not overwrite existing npm scripts without explicit user
|
|
223
|
-
confirmation. If a needed `norna:*` script already exists, the initializer
|
|
224
|
-
should report the conflict and let the user decide whether to replace it.
|
|
225
|
-
|
|
226
|
-
### Control The Dev Server
|
|
227
|
-
|
|
228
|
-
Norna dev-server commands belong under `norna:dev:*` in consuming
|
|
229
|
-
repositories:
|
|
230
|
-
|
|
231
|
-
```sh
|
|
232
|
-
npm run norna:dev
|
|
233
|
-
npm run norna:dev:lan
|
|
234
|
-
npm run norna:dev:restart
|
|
235
|
-
npm run norna:dev:status
|
|
236
|
-
npm run norna:dev:logs
|
|
237
|
-
npm run norna:dev:stop
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
The shorter `norna:dev` starts the normal local server. Subcommands manage
|
|
241
|
-
the same server.
|
|
242
|
-
|
|
243
|
-
In the engine repository, engine and example development may use the engine's own
|
|
244
|
-
unprefixed commands:
|
|
245
|
-
|
|
246
|
-
```sh
|
|
247
|
-
npm run dev:local
|
|
248
|
-
npm run dev:lan
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
### Test Configuration And Content
|
|
252
|
-
|
|
253
|
-
Norna validation should use `norna:check` for the normal full check and
|
|
254
|
-
more specific commands when a caller needs one part:
|
|
255
|
-
|
|
256
|
-
```sh
|
|
257
|
-
npm run norna:check
|
|
258
|
-
npm run norna:config:check
|
|
259
|
-
npm run norna:content:check
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
`norna:check` should run configuration and content checks in the order needed
|
|
263
|
-
by the engine.
|
|
264
|
-
|
|
265
|
-
Project-level tests remain project-owned commands:
|
|
266
|
-
|
|
267
|
-
```sh
|
|
268
|
-
npm run test
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
If a mixed project defines `test`, that command should cover the whole project.
|
|
272
|
-
It may call `norna:check`, but it should not be a hidden synonym for only
|
|
273
|
-
Norna validation.
|
|
274
|
-
|
|
275
|
-
### Inspect Site Presentation
|
|
276
|
-
|
|
277
|
-
Commands that inspect site presentation without changing source files use
|
|
278
|
-
`norna:*` in consuming repositories:
|
|
279
|
-
|
|
280
|
-
```sh
|
|
281
|
-
npm run norna:typography:profiles
|
|
282
|
-
npm run norna:typography:show
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
`norna:typography:profiles` shows the built-in typography profiles and rhythms
|
|
286
|
-
from the installed engine. `norna:typography:show` shows the effective
|
|
287
|
-
typography for the selected site after profiles, rhythms, and overrides have
|
|
288
|
-
been applied.
|
|
289
|
-
|
|
290
|
-
### Correct Content And Configuration
|
|
291
|
-
|
|
292
|
-
Commands that modify Norna-owned source files use `norna:*`:
|
|
293
|
-
|
|
294
|
-
```sh
|
|
295
|
-
npm run norna:sync
|
|
296
|
-
npm run norna:public
|
|
297
|
-
npm run norna:images
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
`norna:sync` is the preferred npm wrapper for `norna content:sync`.
|
|
301
|
-
Messages emitted by the engine should mention the direct CLI command and the
|
|
302
|
-
starter-style npm wrapper when suggesting a fix.
|
|
303
|
-
|
|
304
|
-
Configuration edits are normally manual edits to the selected site
|
|
305
|
-
`config.yaml`, followed by:
|
|
306
|
-
|
|
307
|
-
```sh
|
|
308
|
-
npm run norna:config:check
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
### Build
|
|
312
|
-
|
|
313
|
-
In a standalone site project:
|
|
314
|
-
|
|
315
|
-
```sh
|
|
316
|
-
npm run norna:build
|
|
317
|
-
npm run norna:build:local
|
|
318
|
-
npm run build
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
`norna:build:local` builds and restarts the local dev server. `build` may
|
|
322
|
-
alias `norna:build` because the Norna site is the whole project.
|
|
323
|
-
|
|
324
|
-
In a mixed project:
|
|
325
|
-
|
|
326
|
-
```sh
|
|
327
|
-
npm run norna:build
|
|
328
|
-
npm run norna:build:local
|
|
329
|
-
npm run build
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
`norna:build` builds only the Norna site. `norna:build:local` builds the
|
|
333
|
-
site and restarts the local Norna dev server. If the mixed project defines
|
|
334
|
-
`build`, that project command should build the complete publishable artifact,
|
|
335
|
-
such as a GitHub Pages output that combines the Norna site with an app. It may call
|
|
336
|
-
`norna:build` internally.
|
|
337
|
-
|
|
338
|
-
In the engine repository:
|
|
339
|
-
|
|
340
|
-
```sh
|
|
341
|
-
npm run build
|
|
342
|
-
npm run demo:build
|
|
343
|
-
npm run test:fixture:build
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
Engine build commands verify the reusable package, fixtures, or demo site.
|
|
347
|
-
|
|
348
|
-
### Publish
|
|
349
|
-
|
|
350
|
-
Norna deploy helpers belong under `norna:deploy*` in consuming
|
|
351
|
-
repositories:
|
|
352
|
-
|
|
353
|
-
```sh
|
|
354
|
-
npm run norna:deploy
|
|
355
|
-
npm run norna:deploy:commit
|
|
356
|
-
```
|
|
357
|
-
|
|
358
|
-
Use these only when the Norna site is the deployable site or when the containing
|
|
359
|
-
project deliberately delegates deployment to the Norna engine.
|
|
360
|
-
|
|
361
|
-
Mixed projects may instead have project-owned deploy commands:
|
|
362
|
-
|
|
363
|
-
```sh
|
|
364
|
-
npm run deploy
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
Those commands should publish the complete project artifact. If they need the
|
|
368
|
-
Norna site, they should call `norna:*` scripts internally.
|
|
369
|
-
|
|
370
|
-
Engine publishing uses `release:*`, not `norna:*`:
|
|
371
|
-
|
|
372
|
-
```sh
|
|
373
|
-
npm run release:patch
|
|
374
|
-
npm run release:minor
|
|
375
|
-
npm run release:major
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
### Monitor Publishing
|
|
379
|
-
|
|
380
|
-
GitHub Pages monitoring for a Norna site belongs under:
|
|
381
|
-
|
|
382
|
-
```sh
|
|
383
|
-
npm run norna:deploy:watch
|
|
384
|
-
```
|
|
385
|
-
|
|
386
|
-
Mixed projects may provide a project-owned monitoring command when monitoring
|
|
387
|
-
is not specific to the Norna site:
|
|
388
|
-
|
|
389
|
-
```sh
|
|
390
|
-
npm run deploy:watch
|
|
391
|
-
```
|
|
392
|
-
|
|
393
|
-
That command should monitor the whole project's publishing workflow. If it needs
|
|
394
|
-
norna-specific deploy settings, it should call `norna:deploy:watch`.
|
|
395
|
-
|
|
396
|
-
## Naming Rules
|
|
397
|
-
|
|
398
|
-
- Use `norna:*` for every npm script in a consuming repository whose direct
|
|
399
|
-
object is the Norna site, its source files, its generated images, its dev server,
|
|
400
|
-
or its engine dependency.
|
|
401
|
-
- `norna` does not define unprefixed project commands such as `build`,
|
|
402
|
-
`test`, and `deploy` in consuming repositories.
|
|
403
|
-
- If project commands need Norna behavior, they should call `norna:*`
|
|
404
|
-
scripts.
|
|
405
|
-
- In standalone site projects, unprefixed project commands may alias `norna:*`
|
|
406
|
-
commands.
|
|
407
|
-
- In mixed projects, unprefixed project commands must not be aliases for only
|
|
408
|
-
the Norna site unless the command name makes that scope explicit.
|
|
409
|
-
- Use `release:*` only for publishing the reusable engine package.
|
|
410
|
-
- Prefer direct `norna ...` commands in engine docs and diagnostics;
|
|
411
|
-
prefer npm scripts in site-repository docs.
|
|
412
|
-
- Do not create separate namespaces for every internal concept. If a command is
|
|
413
|
-
about maintaining the Norna dependency in a consuming repository, keep it
|
|
414
|
-
under `norna:*`.
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
# Navigation And Theme Plan
|
|
2
|
-
|
|
3
|
-
This document records the intended order of work for page hierarchy,
|
|
4
|
-
navigation, and theme presets. It is an implementation plan, not a description
|
|
5
|
-
of released behavior.
|
|
6
|
-
|
|
7
|
-
## Goal
|
|
8
|
-
|
|
9
|
-
Norna should support sites with limited global navigation and a larger local
|
|
10
|
-
page hierarchy without making mobile navigation harder to understand. Theme
|
|
11
|
-
presets should provide a coherent visual system without changing the site's
|
|
12
|
-
information architecture.
|
|
13
|
-
|
|
14
|
-
## Working Principles
|
|
15
|
-
|
|
16
|
-
- The file structure defines the page hierarchy and presentation order.
|
|
17
|
-
- Navigation behavior and navigation styling are separate concerns.
|
|
18
|
-
- Global site navigation, local page navigation, and headings on the current
|
|
19
|
-
page have distinct roles.
|
|
20
|
-
- Changing a theme preset must not change which pages are available or how the
|
|
21
|
-
page hierarchy is interpreted.
|
|
22
|
-
- Site-wide visual identity should remain coherent while individual pages may
|
|
23
|
-
vary where that does not disrupt navigation or orientation.
|
|
24
|
-
- Documentation and broad example migration should follow implementation and
|
|
25
|
-
manual evaluation, not precede them.
|
|
26
|
-
|
|
27
|
-
## Order Of Work
|
|
28
|
-
|
|
29
|
-
### 1. Stabilize The Page Tree
|
|
30
|
-
|
|
31
|
-
Finish and test nested page discovery independently of final navigation
|
|
32
|
-
presentation. Establish deterministic rules for:
|
|
33
|
-
|
|
34
|
-
- directory parsing, page ids, URL paths, and presentation order;
|
|
35
|
-
- parent and ancestor relationships;
|
|
36
|
-
- collisions and invalid nesting;
|
|
37
|
-
- page-local content, images, and themes;
|
|
38
|
-
- breadcrumbs and current-branch discovery.
|
|
39
|
-
|
|
40
|
-
Commit this foundation separately before broad theme or preset changes.
|
|
41
|
-
|
|
42
|
-
### 2. Define The Navigation Contract
|
|
43
|
-
|
|
44
|
-
The intended information architecture is:
|
|
45
|
-
|
|
46
|
-
- a small global navigation for the site's top-level areas;
|
|
47
|
-
- a larger local page tree for the selected area;
|
|
48
|
-
- a separate `On this page` list for headings on the current page;
|
|
49
|
-
- breadcrumbs for location and ancestry;
|
|
50
|
-
- one unified mobile navigation containing the whole page hierarchy, with the
|
|
51
|
-
current branch expanded and current page marked.
|
|
52
|
-
|
|
53
|
-
The exact contract is potentially difficult to evaluate at an abstract level.
|
|
54
|
-
The maintainer therefore expects this phase to use executable test sites,
|
|
55
|
-
focused automated tests, or clear illustrative examples. These artifacts
|
|
56
|
-
should demonstrate short single-page sites, ordinary two-level sites, and
|
|
57
|
-
deeper documentation-style hierarchies on both desktop and mobile before the
|
|
58
|
-
contract is considered stable.
|
|
59
|
-
|
|
60
|
-
The contract should also define the fallback and override behavior for the
|
|
61
|
-
supported navigation modes. Structural behavior belongs to site-level engine
|
|
62
|
-
configuration or deterministic automatic selection, not to presentation
|
|
63
|
-
presets.
|
|
64
|
-
|
|
65
|
-
### 3. Implement Navigation In Layers
|
|
66
|
-
|
|
67
|
-
Implement and verify the navigation model in this order:
|
|
68
|
-
|
|
69
|
-
1. page-tree data and validation;
|
|
70
|
-
2. desktop global navigation, local tree, breadcrumbs, and `On this page`;
|
|
71
|
-
3. unified mobile navigation;
|
|
72
|
-
4. keyboard, focus, current-page, and progressive-enhancement behavior;
|
|
73
|
-
5. visual evaluation at representative viewport sizes.
|
|
74
|
-
|
|
75
|
-
Keep real links as the foundation. Client-side JavaScript should only enhance
|
|
76
|
-
interaction that cannot be expressed adequately with HTML and CSS.
|
|
77
|
-
|
|
78
|
-
### 4. Refine Theme And Preset Responsibilities
|
|
79
|
-
|
|
80
|
-
Presets should control visual presentation, including:
|
|
81
|
-
|
|
82
|
-
- color system;
|
|
83
|
-
- typography;
|
|
84
|
-
- spacing and density;
|
|
85
|
-
- page and content widths;
|
|
86
|
-
- the visual treatment of global navigation, local navigation, breadcrumbs,
|
|
87
|
-
and `On this page`.
|
|
88
|
-
|
|
89
|
-
Presets must not determine page hierarchy, link membership, or semantic
|
|
90
|
-
navigation structure. Those must remain stable when a preset changes.
|
|
91
|
-
|
|
92
|
-
Site-wide color, typography, and navigation treatment should normally remain
|
|
93
|
-
consistent. Page-local theme variation should be limited to properties such as
|
|
94
|
-
content width, density, and media presentation when variation does not weaken
|
|
95
|
-
site identity or navigation clarity.
|
|
96
|
-
|
|
97
|
-
### 5. Migrate After Evaluation
|
|
98
|
-
|
|
99
|
-
After the page tree, navigation contract, and preset boundaries have been
|
|
100
|
-
manually evaluated:
|
|
101
|
-
|
|
102
|
-
- migrate fixtures and examples;
|
|
103
|
-
- update schemas and editor assistance;
|
|
104
|
-
- update Markdown reference documentation;
|
|
105
|
-
- update the rendered documentation site;
|
|
106
|
-
- remove obsolete navigation and preset behavior rather than retaining
|
|
107
|
-
compatibility layers.
|
|
108
|
-
|
|
109
|
-
Keep foundation, navigation, preset, migration, and documentation changes in
|
|
110
|
-
separate commits where practical.
|
|
111
|
-
|
|
112
|
-
## Immediate Checkpoint
|
|
113
|
-
|
|
114
|
-
The current nested-page implementation should be reviewed, tested, and secured
|
|
115
|
-
before work continues on the final navigation contract or preset model.
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
# Norna Diagram Design
|
|
2
|
-
|
|
3
|
-
This document defines a repository-local workflow for creating technical and
|
|
4
|
-
pedagogical diagrams for Norna.
|
|
5
|
-
|
|
6
|
-
It is intentionally not a vendored copy of any external skill, MCP server, or
|
|
7
|
-
diagram tool. The first experiment should use hand-authored SVG assets managed
|
|
8
|
-
by Norna's existing image model.
|
|
9
|
-
|
|
10
|
-
## Goal
|
|
11
|
-
|
|
12
|
-
Norna diagrams should help a new reader understand the site model faster than
|
|
13
|
-
text alone.
|
|
14
|
-
|
|
15
|
-
A diagram should explain one idea clearly, not show every related feature. If a
|
|
16
|
-
topic needs several ideas, split it into several diagrams.
|
|
17
|
-
|
|
18
|
-
## Current Scope
|
|
19
|
-
|
|
20
|
-
Use this workflow for diagrams in the Norna documentation site under `site/`.
|
|
21
|
-
|
|
22
|
-
Do not add diagram generation to the Norna build pipeline yet. Diagram creation
|
|
23
|
-
is an authoring workflow for now, not product functionality.
|
|
24
|
-
|
|
25
|
-
Do not require Excalidraw, MCP servers, browser plugins, or external layout
|
|
26
|
-
tools for the first experiment.
|
|
27
|
-
|
|
28
|
-
## Diagram Brief
|
|
29
|
-
|
|
30
|
-
Before creating or replacing a diagram, write a short brief:
|
|
31
|
-
|
|
32
|
-
```md
|
|
33
|
-
Purpose:
|
|
34
|
-
Audience:
|
|
35
|
-
Main message:
|
|
36
|
-
Concepts to show:
|
|
37
|
-
Concepts to avoid:
|
|
38
|
-
Norna features that must not be implied:
|
|
39
|
-
Suggested layout:
|
|
40
|
-
Mobile/readability requirement:
|
|
41
|
-
Where the SVG will live:
|
|
42
|
-
Markdown block and alt text:
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
The brief can live in the discussion, in a source-only Markdown comment near
|
|
46
|
-
the image, or in `docs/design/` when it is useful for future maintenance.
|
|
47
|
-
|
|
48
|
-
## Design Principles
|
|
49
|
-
|
|
50
|
-
- Show one primary flow or relationship.
|
|
51
|
-
- Prefer two to five main objects.
|
|
52
|
-
- Use short labels.
|
|
53
|
-
- Use one clear visual hierarchy.
|
|
54
|
-
- Keep arrows few and directional.
|
|
55
|
-
- Avoid diagrams where every object connects to every other object.
|
|
56
|
-
- Prefer multiple simple diagrams over one dense diagram.
|
|
57
|
-
- Make page order, URL slugs, section ids, image folders, source files, and
|
|
58
|
-
generated output visually distinct when those ideas matter.
|
|
59
|
-
- Do not show templates, components, custom rendering logic, page-level
|
|
60
|
-
technical configuration, or hosting integrations that Norna does not support.
|
|
61
|
-
- Do not show page layouts that Norna cannot actually render unless the diagram
|
|
62
|
-
is clearly abstract and not a product capability example.
|
|
63
|
-
|
|
64
|
-
## Norna-Specific Accuracy
|
|
65
|
-
|
|
66
|
-
Diagrams must match the current Norna model:
|
|
67
|
-
|
|
68
|
-
- A Norna site is described with site files, not arbitrary project structure.
|
|
69
|
-
- `content.md` is the homepage content file.
|
|
70
|
-
- `sitewide-content.yaml` contains shared logo settings, banners, and footer
|
|
71
|
-
content.
|
|
72
|
-
- Additional pages are page directories with `content.md`.
|
|
73
|
-
- Page folder prefixes control navigation order.
|
|
74
|
-
- Page ids become URL segments.
|
|
75
|
-
- Images belong under the image root for their page, usually grouped by
|
|
76
|
-
section id.
|
|
77
|
-
- Markdown remains the primary writing format.
|
|
78
|
-
- Norna blocks cover fixed site patterns such as image stacks,
|
|
79
|
-
carousels, and card lists.
|
|
80
|
-
- `theme.yaml` controls visual presentation.
|
|
81
|
-
- `config.yaml` controls the public URL and optional language and smooth
|
|
82
|
-
scrolling.
|
|
83
|
-
- `dist/` is generated static output.
|
|
84
|
-
- GitHub Pages is the integrated publishing target today.
|
|
85
|
-
|
|
86
|
-
## SVG Requirements
|
|
87
|
-
|
|
88
|
-
Use hand-authored SVG for the first experiment.
|
|
89
|
-
|
|
90
|
-
SVG assets should:
|
|
91
|
-
|
|
92
|
-
- have a `viewBox`;
|
|
93
|
-
- include `<title>` and `<desc>`;
|
|
94
|
-
- use real text, not outlined text;
|
|
95
|
-
- avoid external fonts and external image files;
|
|
96
|
-
- remain readable at the size used on the site;
|
|
97
|
-
- work when scaled down on a phone;
|
|
98
|
-
- use restrained colors that fit the surrounding page;
|
|
99
|
-
- avoid decorative effects that compete with the explanation;
|
|
100
|
-
- keep text inside boxes with visible margins;
|
|
101
|
-
- be maintainable by editing the SVG source.
|
|
102
|
-
|
|
103
|
-
If a diagram is too wide for mobile, prefer splitting it into smaller diagrams
|
|
104
|
-
over relying on horizontal scrolling.
|
|
105
|
-
|
|
106
|
-
## Source Placement
|
|
107
|
-
|
|
108
|
-
Store diagram SVG files as normal Norna managed image assets:
|
|
109
|
-
|
|
110
|
-
```text
|
|
111
|
-
site/pages/<NNN-page-id>/images/<diagram-name>.svg
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
Reference them with a Norna image block:
|
|
115
|
-
|
|
116
|
-
````md
|
|
117
|
-
<!-- norna-image-provenance:
|
|
118
|
-
image: diagram-name.svg
|
|
119
|
-
source: hand-authored
|
|
120
|
-
Short maintenance note explaining why the diagram exists.
|
|
121
|
-
-->
|
|
122
|
-
|
|
123
|
-
```norna-image-stack
|
|
124
|
-
- image: diagram-name.svg
|
|
125
|
-
alt: Concise explanation of what the diagram shows.
|
|
126
|
-
```
|
|
127
|
-
````
|
|
128
|
-
|
|
129
|
-
## Review Checklist
|
|
130
|
-
|
|
131
|
-
Before accepting a diagram:
|
|
132
|
-
|
|
133
|
-
- The main message is obvious without reading the surrounding section.
|
|
134
|
-
- The diagram does not imply unsupported Norna functionality.
|
|
135
|
-
- URL, page, section, image, theme, config, and output terminology is
|
|
136
|
-
consistent with documentation.
|
|
137
|
-
- Text fits inside boxes at desktop and mobile widths.
|
|
138
|
-
- Arrows clarify the relationship instead of adding noise.
|
|
139
|
-
- The SVG has title, description, and useful alt text in Markdown.
|
|
140
|
-
- `norna content:check` passes.
|
|
141
|
-
- A desktop and mobile visual check has been done when layout changed.
|
|
142
|
-
|
|
143
|
-
## Relationship To Excalidraw
|
|
144
|
-
|
|
145
|
-
Excalidraw can be useful as a sketching style or inspiration for box-and-arrow
|
|
146
|
-
clarity, but the first Norna experiment should not depend on Excalidraw files,
|
|
147
|
-
exports, or MCP tooling.
|
|
148
|
-
|
|
149
|
-
If future experiments show that diagram generation should be automated, evaluate
|
|
150
|
-
that as a separate authoring tool or CLI. Do not make it part of the site build
|
|
151
|
-
engine unless there is a clear product reason.
|
|
152
|
-
|
|
153
|
-
## Future Questions
|
|
154
|
-
|
|
155
|
-
- Should diagram briefs become tracked files next to SVG assets?
|
|
156
|
-
- Should Norna have a separate authoring helper for diagrams?
|
|
157
|
-
- Should generated diagrams store both a source format and exported SVG?
|
|
158
|
-
- Should a later tool create Excalidraw-compatible files, plain SVG, or both?
|
|
159
|
-
- What review rules are needed before diagrams are used in starters or examples?
|