@janga/norna 0.7.16 → 0.7.17
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 +6 -6
- package/astro.config.mjs +35 -3
- package/docs/README.md +10 -10
- package/docs/commands.md +2 -2
- package/docs/content.md +82 -102
- package/docs/design/navigation-and-theme-plan.md +115 -0
- package/docs/design/norna-diagram-design.md +9 -9
- package/docs/design/site-examples-structure.md +9 -9
- package/docs/engine-development.md +9 -9
- package/docs/getting-started.md +20 -15
- package/docs/images-and-metadata.md +10 -9
- package/docs/pages.md +134 -0
- package/docs/public-files.md +49 -36
- package/docs/publishing.md +19 -3
- package/docs/site-files.md +29 -28
- package/docs/sitewide-content.md +20 -36
- package/docs/theme.md +20 -20
- package/docs/typography.md +10 -10
- package/examples/README.md +2 -2
- package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/site.schema.json +17 -41
- package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/sitewide.schema.json +26 -67
- package/examples/complete-sites/dog-shelter-multi-page/.astro/collections/theme.schema.json +185 -88
- package/examples/complete-sites/dog-shelter-multi-page/.astro/data-store.json +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev-local.json +4 -4
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.json +5 -5
- package/examples/complete-sites/dog-shelter-multi-page/.astro/dev.log +33 -23
- package/examples/complete-sites/dog-shelter-multi-page/README.md +1 -1
- package/examples/complete-sites/dog-shelter-multi-page/node_modules/.vite/deps/_metadata.json +8 -8
- package/examples/complete-sites/dog-shelter-multi-page/site/.norna/generated-images.json +20 -20
- package/examples/complete-sites/dog-shelter-multi-page/site/content.md +3 -4
- package/examples/complete-sites/dog-shelter-multi-page/site/{routes → pages}/010-dogs/content.md +3 -4
- package/examples/complete-sites/dog-shelter-multi-page/site/{routes → pages}/020-adopt/content.md +3 -4
- package/examples/complete-sites/dog-shelter-multi-page/site/sitewide-content.yaml +2 -4
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/site.schema.json +17 -41
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/sitewide.schema.json +26 -67
- package/examples/complete-sites/dog-shelter-single-page/.astro/collections/theme.schema.json +185 -88
- package/examples/complete-sites/dog-shelter-single-page/.astro/data-store.json +1 -1
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev-local.json +8 -0
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev.json +5 -5
- package/examples/complete-sites/dog-shelter-single-page/.astro/dev.log +16 -12
- package/examples/complete-sites/dog-shelter-single-page/README.md +1 -1
- package/examples/complete-sites/dog-shelter-single-page/node_modules/.vite/deps/_metadata.json +8 -8
- package/examples/complete-sites/dog-shelter-single-page/site/.norna/generated-images.json +12 -12
- package/examples/complete-sites/dog-shelter-single-page/site/content.md +5 -2
- package/examples/complete-sites/dog-shelter-single-page/site/sitewide-content.yaml +2 -4
- package/examples/feature-demos/media-and-surfaces/.astro/collections/site.schema.json +17 -41
- package/examples/feature-demos/media-and-surfaces/.astro/collections/sitewide.schema.json +26 -67
- package/examples/feature-demos/media-and-surfaces/.astro/collections/theme.schema.json +185 -88
- package/examples/feature-demos/media-and-surfaces/.astro/data-store.json +1 -1
- package/examples/feature-demos/media-and-surfaces/.astro/dev.log +4 -14
- package/examples/feature-demos/media-and-surfaces/README.md +2 -2
- package/examples/feature-demos/media-and-surfaces/node_modules/.vite/deps/_metadata.json +9 -9
- package/examples/feature-demos/media-and-surfaces/site/.norna/generated-images.json +16 -16
- package/examples/feature-demos/media-and-surfaces/site/content.md +4 -7
- package/examples/feature-demos/media-and-surfaces/site/{routes → pages}/010-media/content.md +6 -5
- package/examples/feature-demos/media-and-surfaces/site/{routes → pages}/020-surfaces/content.md +7 -6
- package/examples/feature-demos/media-and-surfaces/site/sitewide-content.yaml +0 -2
- package/examples/feature-demos/sitewide-content/README.md +3 -3
- package/examples/feature-demos/sitewide-content/site/content.md +8 -7
- package/examples/feature-demos/sitewide-content/site/pages/010-logo-and-navigation/content.md +17 -0
- package/examples/feature-demos/sitewide-content/site/{routes → pages}/020-notices/content.md +7 -6
- package/examples/feature-demos/sitewide-content/site/{routes → pages}/030-footer/content.md +6 -5
- package/examples/feature-demos/sitewide-content/site/sitewide-content.yaml +4 -13
- package/examples/feature-demos/theme-presets/README.md +1 -1
- package/examples/feature-demos/theme-presets/site/.norna/generated-images.json +60 -60
- package/examples/feature-demos/theme-presets/site/content.md +4 -7
- package/examples/feature-demos/theme-presets/site/{routes → pages}/010-portfolio/content.md +4 -7
- package/examples/feature-demos/theme-presets/site/{routes → pages}/020-documentation/content.md +4 -7
- package/examples/feature-demos/theme-presets/site/{routes → pages}/030-project/content.md +4 -7
- package/examples/feature-demos/theme-presets/site/{routes → pages}/040-statement/content.md +4 -7
- package/examples/feature-demos/theme-presets/site/sitewide-content.yaml +1 -10
- package/fixtures/basic/site/content.md +5 -6
- package/fixtures/basic/site/sitewide-content.yaml +1 -8
- package/fixtures/content-model-v2/site/content.md +11 -13
- package/fixtures/content-model-v2/site/pages/010-guide/content.md +18 -0
- package/fixtures/nested-pages/site/.norna/generated-images.json +10 -0
- package/fixtures/nested-pages/site/config.yaml +1 -0
- package/fixtures/nested-pages/site/content.md +15 -0
- package/fixtures/nested-pages/site/pages/010-guides/content.md +15 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/content.md +21 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/images/diagram.svg +21 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/010-installation/pages/010-macos/content.md +14 -0
- package/fixtures/nested-pages/site/pages/010-guides/pages/020-workflows/content.md +11 -0
- package/fixtures/nested-pages/site/pages/010-guides/theme.yaml +3 -0
- package/fixtures/nested-pages/site/pages/020-reference/content.md +10 -0
- package/fixtures/nested-pages/site/pages/020-reference/pages/010-installation/content.md +11 -0
- package/fixtures/nested-pages/site/theme.yaml +3 -0
- package/package.json +7 -4
- package/schemas/config.schema.json +5 -5
- package/schemas/content-frontmatter.schema.json +28 -63
- package/schemas/manifest.json +1 -0
- package/schemas/sitewide-content.schema.json +58 -132
- package/schemas/theme.schema.json +396 -86
- package/scripts/check-config.mjs +6 -5
- package/scripts/deploy-site.mjs +6 -8
- package/scripts/doctor.mjs +2 -2
- package/scripts/generate-images.mjs +11 -18
- package/scripts/generate-schemas.mjs +3 -217
- package/scripts/lib/base-path-redirect.mjs +9 -0
- package/scripts/lib/editor-language-service.mjs +126 -66
- package/scripts/lib/heading-ids.mjs +161 -0
- package/scripts/lib/navigation-model.mjs +51 -0
- package/scripts/lib/norna-markdown-blocks.mjs +3 -4
- package/scripts/lib/page-model.mjs +83 -0
- package/scripts/lib/project-config.mjs +28 -0
- package/scripts/lib/schema-definitions.mjs +41 -46
- package/scripts/lib/schema-editor-metadata.mjs +475 -0
- package/scripts/lib/schema-value-definitions.mjs +6 -6
- package/scripts/lib/site-content.mjs +124 -87
- package/scripts/lib/site-paths.mjs +2 -2
- package/scripts/lib/theme-config.mjs +9 -16
- package/scripts/lib/theme-presets.mjs +9 -1
- package/scripts/release.mjs +1 -1
- package/scripts/show-typography.mjs +26 -20
- package/scripts/sync-content-sections.mjs +106 -65
- package/scripts/{test-temporary-visibility.mjs → test-banner-visibility.mjs} +7 -24
- package/scripts/test-client-javascript.mjs +39 -42
- package/scripts/test-content-check.mjs +138 -54
- package/scripts/test-content-model-v2.mjs +445 -228
- package/scripts/test-documentation.mjs +6 -1
- package/scripts/test-editor-language-service.mjs +168 -24
- package/scripts/test-engine-commands.mjs +2 -1
- package/scripts/test-heading-ids.mjs +68 -0
- package/scripts/test-navigation-model.mjs +63 -0
- package/scripts/test-nested-pages.mjs +110 -0
- package/scripts/test-package-check.mjs +31 -40
- package/scripts/test-page-model.mjs +80 -0
- package/scripts/test-project-config.mjs +25 -1
- package/scripts/test-schemas.mjs +66 -14
- package/scripts/test-theme-presets.mjs +33 -24
- package/src/components/NavigationPageTree.astro +68 -0
- package/src/components/SectionNavigationScript.astro +110 -5
- package/src/components/SiteBreadcrumbs.astro +29 -0
- package/src/components/SiteNavigation.astro +65 -69
- package/src/components/SitePage.astro +70 -46
- package/src/components/SiteSection.astro +27 -20
- package/src/content.config.ts +9 -5
- package/src/layouts/BaseLayout.astro +11 -20
- package/src/lib/pageThemes.ts +42 -0
- package/src/lib/sectionContent.ts +109 -106
- package/src/lib/siteNavigation.ts +48 -0
- package/src/lib/sitePages.ts +85 -38
- package/src/pages/{[slug].astro → [...slug].astro} +2 -2
- package/src/styles/global.css +373 -55
- package/starters/basic/README.md +5 -7
- package/starters/basic/site/content.md +7 -4
- package/starters/basic/site/sitewide-content.yaml +1 -10
- package/starters/project/README.md +8 -8
- package/starters/project/site/content.md +5 -4
- package/starters/project/site/{routes → pages}/010-guide/content.md +5 -4
- package/starters/project/site/sitewide-content.yaml +1 -10
- package/docs/routes.md +0 -121
- package/examples/feature-demos/sitewide-content/site/routes/010-identity/content.md +0 -20
- package/fixtures/content-model-v2/site/routes/010-guide/content.md +0 -17
- package/scripts/lib/route-model.mjs +0 -17
- package/scripts/test-route-model.mjs +0 -32
- package/src/lib/routeThemes.ts +0 -41
- /package/examples/complete-sites/dog-shelter-multi-page/site/images/{intro/shelter-dog.jpg → shelter-dog.jpg} +0 -0
- /package/examples/complete-sites/dog-shelter-multi-page/site/{routes/010-dogs/images/dogs → pages/010-dogs/images}/rex.jpg +0 -0
- /package/examples/complete-sites/dog-shelter-multi-page/site/{routes/010-dogs/images/dogs → pages/010-dogs/images}/rover.jpg +0 -0
- /package/examples/complete-sites/dog-shelter-multi-page/site/{routes/020-adopt/images/adopt → pages/020-adopt/images}/adoption-dog.jpg +0 -0
- /package/examples/complete-sites/dog-shelter-single-page/site/images/{you-can-help/foster-dog.jpg → foster-dog.jpg} +0 -0
- /package/examples/complete-sites/dog-shelter-single-page/site/images/{what-we-do/rescue-dog.jpg → rescue-dog.jpg} +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/cards → pages/010-media/images}/card-carousel.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/cards → pages/010-media/images}/card-stack.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/cards → pages/010-media/images}/card-surfaces.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/carousel → pages/010-media/images}/carousel-one.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/carousel → pages/010-media/images}/carousel-three.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/carousel → pages/010-media/images}/carousel-two.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/stack → pages/010-media/images}/stack-one.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes/010-media/images/stack → pages/010-media/images}/stack-two.svg +0 -0
- /package/examples/feature-demos/media-and-surfaces/site/{routes → pages}/020-surfaces/theme.yaml +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes/010-portfolio/images/portfolio → pages/010-portfolio/images}/puppy-portrait.jpg +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes/010-portfolio/images/portfolio → pages/010-portfolio/images}/shepherd-portrait.jpg +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes/010-portfolio/images/portfolio → pages/010-portfolio/images}/white-puppy.jpg +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes → pages}/010-portfolio/theme.yaml +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes/020-documentation/images/documentation → pages/020-documentation/images}/black-schnauzer.jpg +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes/020-documentation/images/documentation → pages/020-documentation/images}/retriever-portrait.jpg +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes/020-documentation/images/documentation → pages/020-documentation/images}/schnauzer-portrait.jpg +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes → pages}/020-documentation/theme.yaml +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes/030-project/images/project → pages/030-project/images}/boxer-portrait.jpg +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes/030-project/images/project → pages/030-project/images}/grass-puppy.jpg +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes/030-project/images/project → pages/030-project/images}/grey-street-dog.jpg +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes → pages}/030-project/theme.yaml +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes/040-statement/images/statement → pages/040-statement/images}/black-pedigree.jpg +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes/040-statement/images/statement → pages/040-statement/images}/sheepdog-grass.jpg +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes/040-statement/images/statement → pages/040-statement/images}/sheepdog-wide.jpg +0 -0
- /package/examples/feature-demos/theme-presets/site/{routes → pages}/040-statement/theme.yaml +0 -0
- /package/fixtures/basic/site/images/{work/.gitkeep → .gitkeep} +0 -0
- /package/fixtures/content-model-v2/site/images/{card-section/adopt.svg → adopt.svg} +0 -0
- /package/fixtures/content-model-v2/site/images/{intro/detail.jpg → detail.jpg} +0 -0
- /package/fixtures/content-model-v2/site/images/{intro/duplicate.jpg → duplicate.jpg} +0 -0
- /package/fixtures/content-model-v2/site/images/{card-section/foster.svg → foster.svg} +0 -0
- /package/fixtures/content-model-v2/site/images/{intro/hero.jpg → hero.jpg} +0 -0
- /package/fixtures/content-model-v2/site/images/{plain/image.jpg → image.jpg} +0 -0
- /package/fixtures/content-model-v2/site/images/{timed/slide-one.jpg → slide-one.jpg} +0 -0
- /package/fixtures/content-model-v2/site/images/{timed/slide-three.jpg → slide-three.jpg} +0 -0
- /package/fixtures/content-model-v2/site/images/{timed/slide-two.jpg → slide-two.jpg} +0 -0
- /package/fixtures/content-model-v2/site/{routes/010-guide/images/intro → pages/010-guide/images}/duplicate.jpg +0 -0
- /package/starters/basic/site/images/{work/.gitkeep → .gitkeep} +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 240" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">Nested pages</title>
|
|
3
|
+
<desc id="desc">Three page boxes connected from Guides to Installation to macOS.</desc>
|
|
4
|
+
<rect width="900" height="240" fill="#f3f0e8"/>
|
|
5
|
+
<g fill="#fff" stroke="#191919" stroke-width="3">
|
|
6
|
+
<rect x="45" y="65" width="210" height="110" rx="6"/>
|
|
7
|
+
<rect x="345" y="65" width="210" height="110" rx="6"/>
|
|
8
|
+
<rect x="645" y="65" width="210" height="110" rx="6"/>
|
|
9
|
+
</g>
|
|
10
|
+
<g fill="#191919" font-family="system-ui, sans-serif" font-size="26" text-anchor="middle">
|
|
11
|
+
<text x="150" y="130">Guides</text>
|
|
12
|
+
<text x="450" y="130">Installation</text>
|
|
13
|
+
<text x="750" y="130">macOS</text>
|
|
14
|
+
</g>
|
|
15
|
+
<g fill="none" stroke="#b33a2b" stroke-width="4">
|
|
16
|
+
<path d="M270 120h55"/>
|
|
17
|
+
<path d="m315 110 10 10-10 10"/>
|
|
18
|
+
<path d="M570 120h55"/>
|
|
19
|
+
<path d="m615 110 10 10-10 10"/>
|
|
20
|
+
</g>
|
|
21
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
page:
|
|
3
|
+
description: A third-level macOS installation page.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# macOS
|
|
7
|
+
|
|
8
|
+
## Install
|
|
9
|
+
|
|
10
|
+
This third-level page should be available at `/guides/installation/macos/`.
|
|
11
|
+
|
|
12
|
+
## Verify
|
|
13
|
+
|
|
14
|
+
The page should inherit the theme from Guides through its parent page.
|
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.17",
|
|
6
6
|
"license": "GPL-3.0-only",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
@@ -70,10 +70,13 @@
|
|
|
70
70
|
"deploy:watch": "node bin/norna.mjs deploy:watch",
|
|
71
71
|
"doctor": "node bin/norna.mjs doctor",
|
|
72
72
|
"demo:build": "node bin/norna.mjs --site-dir examples/feature-demos/media-and-surfaces/site build",
|
|
73
|
-
"test": "npm run schemas:check && npm run test:schemas && npm run test:
|
|
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
74
|
"test:fixture:build": "node bin/norna.mjs --site-dir fixtures/basic/site build",
|
|
75
75
|
"test:examples": "node scripts/test-examples.mjs",
|
|
76
|
-
"test:
|
|
76
|
+
"test:page-model": "node scripts/test-page-model.mjs",
|
|
77
|
+
"test:nested-pages": "node scripts/test-nested-pages.mjs",
|
|
78
|
+
"test:heading-ids": "node scripts/test-heading-ids.mjs",
|
|
79
|
+
"test:navigation-model": "node scripts/test-navigation-model.mjs",
|
|
77
80
|
"test:schemas": "node scripts/test-schemas.mjs",
|
|
78
81
|
"test:project-config": "node scripts/test-project-config.mjs",
|
|
79
82
|
"test:content-check": "node scripts/test-content-check.mjs",
|
|
@@ -85,7 +88,7 @@
|
|
|
85
88
|
"test:editor-language": "node scripts/test-editor-language-service.mjs && npm --prefix editors/vscode run check",
|
|
86
89
|
"test:documentation": "node scripts/test-documentation.mjs",
|
|
87
90
|
"test:ci-lockfile": "node scripts/test-ci-lockfile.mjs",
|
|
88
|
-
"test:
|
|
91
|
+
"test:banner-visibility": "node scripts/test-banner-visibility.mjs",
|
|
89
92
|
"test:client-javascript": "node scripts/test-client-javascript.mjs",
|
|
90
93
|
"test:navigation": "node scripts/test-navigation.mjs",
|
|
91
94
|
"test:navigation:stress": "node scripts/test-navigation.mjs tests/navigation-stress.spec.ts",
|
|
@@ -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.17/docs/configuration.md#url)",
|
|
10
10
|
"examples": [
|
|
11
11
|
"https://example.com/",
|
|
12
12
|
"https://owner.github.io/repository-name/"
|
|
@@ -41,7 +41,7 @@
|
|
|
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.17/docs/configuration.md#language)"
|
|
45
45
|
},
|
|
46
46
|
"scrollBehavior": {
|
|
47
47
|
"default": "instant",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"description": "Use the browser's native smooth scrolling for anchor navigation."
|
|
60
60
|
}
|
|
61
61
|
],
|
|
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.
|
|
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.17/docs/configuration.md#scrollbehavior)",
|
|
63
63
|
"examples": [
|
|
64
64
|
"instant",
|
|
65
65
|
"smooth"
|
|
@@ -70,8 +70,8 @@
|
|
|
70
70
|
"url"
|
|
71
71
|
],
|
|
72
72
|
"additionalProperties": false,
|
|
73
|
-
"description": "Technical settings for one Norna site.
|
|
73
|
+
"description": "Technical settings for one Norna site. Additional pages cannot provide technical configuration.",
|
|
74
74
|
"$id": "https://janga.github.io/norna/schemas/config.schema.json",
|
|
75
75
|
"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.
|
|
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.17/docs/configuration.md)"
|
|
77
77
|
}
|
|
@@ -2,80 +2,45 @@
|
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"type": "object",
|
|
4
4
|
"properties": {
|
|
5
|
-
"
|
|
6
|
-
"type": "string",
|
|
7
|
-
"description": "Page title used in metadata and route navigation.",
|
|
8
|
-
"markdownDescription": "```yaml\ntitle: About\n```\n\nThe page title used in metadata and, by default, route navigation.\n\n[Page frontmatter reference](https://github.com/janga/norna/blob/v0.7.16/docs/content.md#page-frontmatter)",
|
|
9
|
-
"examples": [
|
|
10
|
-
"About"
|
|
11
|
-
]
|
|
12
|
-
},
|
|
13
|
-
"description": {
|
|
14
|
-
"type": "string",
|
|
15
|
-
"description": "Page description used in metadata.",
|
|
16
|
-
"markdownDescription": "```yaml\ndescription: About this project.\n```\n\nA concise page description used in metadata.\n\n[Page frontmatter reference](https://github.com/janga/norna/blob/v0.7.16/docs/content.md#page-frontmatter)",
|
|
17
|
-
"examples": [
|
|
18
|
-
"About this project."
|
|
19
|
-
]
|
|
20
|
-
},
|
|
21
|
-
"navigation": {
|
|
22
|
-
"description": "Optional navigation metadata for this page.",
|
|
5
|
+
"page": {
|
|
23
6
|
"type": "object",
|
|
24
7
|
"properties": {
|
|
25
|
-
"
|
|
26
|
-
"description": "
|
|
27
|
-
"type": "
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"
|
|
31
|
-
|
|
8
|
+
"description": {
|
|
9
|
+
"description": "Optional page-specific meta description.",
|
|
10
|
+
"type": "string",
|
|
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.17/docs/content.md#page-title-and-frontmatter)",
|
|
13
|
+
"examples": [
|
|
14
|
+
"About this project."
|
|
15
|
+
]
|
|
32
16
|
}
|
|
33
17
|
},
|
|
34
18
|
"additionalProperties": false,
|
|
35
|
-
"
|
|
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.17/docs/content.md#page-title-and-frontmatter)"
|
|
36
21
|
},
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"description": "Optional metadata keyed by Markdown section id. Do not duplicate section order here.",
|
|
22
|
+
"navigation": {
|
|
23
|
+
"description": "Optional navigation metadata for this page.",
|
|
40
24
|
"type": "object",
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"from": {
|
|
53
|
-
"description": "First date on which the content is visible.",
|
|
54
|
-
"type": "string",
|
|
55
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
|
|
56
|
-
},
|
|
57
|
-
"until": {
|
|
58
|
-
"description": "First date on which the content is no longer visible.",
|
|
59
|
-
"type": "string",
|
|
60
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
"additionalProperties": false
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
"additionalProperties": false,
|
|
67
|
-
"description": "Metadata keyed by the explicit Markdown section id. Markdown order remains authoritative."
|
|
25
|
+
"properties": {
|
|
26
|
+
"listed": {
|
|
27
|
+
"default": true,
|
|
28
|
+
"description": "List this page in site navigation. The page remains public when false.",
|
|
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.17/docs/pages.md#navigation)",
|
|
31
|
+
"examples": [
|
|
32
|
+
true,
|
|
33
|
+
false
|
|
34
|
+
]
|
|
35
|
+
}
|
|
68
36
|
},
|
|
69
|
-
"
|
|
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.17/docs/pages.md#navigation)"
|
|
70
39
|
}
|
|
71
40
|
},
|
|
72
|
-
"required": [
|
|
73
|
-
"title",
|
|
74
|
-
"description"
|
|
75
|
-
],
|
|
76
41
|
"additionalProperties": false,
|
|
77
|
-
"description": "Frontmatter for a homepage or
|
|
42
|
+
"description": "Frontmatter for a homepage or additional page content.md file.",
|
|
78
43
|
"$id": "https://janga.github.io/norna/schemas/content-frontmatter.schema.json",
|
|
79
44
|
"title": "Norna page frontmatter",
|
|
80
|
-
"markdownDescription": "```yaml\n---\
|
|
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.17/docs/content.md#page-title-and-frontmatter)"
|
|
81
46
|
}
|
package/schemas/manifest.json
CHANGED
|
@@ -2,38 +2,22 @@
|
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"type": "object",
|
|
4
4
|
"properties": {
|
|
5
|
-
"
|
|
6
|
-
"description": "Site-wide navigation identity.",
|
|
5
|
+
"logo": {
|
|
7
6
|
"type": "object",
|
|
8
7
|
"properties": {
|
|
9
|
-
"
|
|
10
|
-
"description": "
|
|
8
|
+
"height": {
|
|
9
|
+
"description": "Displayed logo height. Width follows the intrinsic aspect ratio.",
|
|
11
10
|
"type": "string",
|
|
12
|
-
"
|
|
13
|
-
"markdownDescription": "```yaml\nnavigation:\n label: Example Site\n```\n\n- Without a logo, this text is shown in the navigation.\n\n- With a logo, this text becomes the image alternative text.\n\n- When omitted, Norna uses the homepage title.\n\n[Navigation identity reference](https://github.com/janga/norna/blob/v0.7.16/docs/sitewide-content.md#navigation-identity)",
|
|
11
|
+
"pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
|
|
14
12
|
"examples": [
|
|
15
|
-
"
|
|
16
|
-
]
|
|
17
|
-
|
|
18
|
-
"logo": {
|
|
19
|
-
"description": "Optional display settings for a convention-based navigation logo.",
|
|
20
|
-
"type": "object",
|
|
21
|
-
"properties": {
|
|
22
|
-
"height": {
|
|
23
|
-
"description": "Displayed logo height. Width follows the intrinsic aspect ratio.",
|
|
24
|
-
"type": "string",
|
|
25
|
-
"pattern": "^(?:0|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)|clamp\\(\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*,\\s*(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:px|rem|em|vw|vh|vmin|vmax|ch|%)\\s*\\))$",
|
|
26
|
-
"examples": [
|
|
27
|
-
"2rem"
|
|
28
|
-
]
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
"additionalProperties": false,
|
|
32
|
-
"markdownDescription": "```yaml\nnavigation:\n label: Example Site\n logo:\n height: 2rem\n```\n\n`logo` optionally overrides the displayed height of the logo file that Norna discovers automatically. It does not enable or select the file.\n\n[Navigation logo filenames and placement](https://github.com/janga/norna/blob/v0.7.16/docs/public-files.md#navigation-logo)"
|
|
13
|
+
"2rem"
|
|
14
|
+
],
|
|
15
|
+
"markdownDescription": "```yaml\nlogo:\n height: 2rem\n```\n\nDisplayed logo height. Width follows the intrinsic aspect ratio.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/public-files.md#navigation-logo)"
|
|
33
16
|
}
|
|
34
17
|
},
|
|
35
18
|
"additionalProperties": false,
|
|
36
|
-
"
|
|
19
|
+
"description": "Optional display settings for a convention-based navigation logo.",
|
|
20
|
+
"markdownDescription": "```yaml\nlogo:\n height: 2rem\n```\n\n`logo` optionally overrides the displayed height of the convention-based logo file. The logo links home, and its alternative text comes from the homepage Markdown H1. This setting does not enable or select the file.\n\n[Navigation logo filenames and placement](https://github.com/janga/norna/blob/v0.7.17/docs/public-files.md#navigation-logo)"
|
|
37
21
|
},
|
|
38
22
|
"banners": {
|
|
39
23
|
"default": [],
|
|
@@ -45,7 +29,8 @@
|
|
|
45
29
|
"id": {
|
|
46
30
|
"type": "string",
|
|
47
31
|
"pattern": "^[a-z0-9-]+$",
|
|
48
|
-
"description": "Stable banner identifier used for dismissal state."
|
|
32
|
+
"description": "Stable banner identifier used for dismissal state.",
|
|
33
|
+
"markdownDescription": "```yaml\nbanners:\n - id: project-status\n```\n\nStable banner identifier used for dismissal state.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md#banners)"
|
|
49
34
|
},
|
|
50
35
|
"tone": {
|
|
51
36
|
"default": "warning",
|
|
@@ -57,7 +42,8 @@
|
|
|
57
42
|
"title": "Warning",
|
|
58
43
|
"description": "Present the banner as an important warning notice."
|
|
59
44
|
}
|
|
60
|
-
]
|
|
45
|
+
],
|
|
46
|
+
"markdownDescription": "```yaml\nbanners:\n - tone: warning\n```\n\nSemantic banner tone.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md#banners)"
|
|
61
47
|
},
|
|
62
48
|
"visible": {
|
|
63
49
|
"description": "Optional date window for the banner.",
|
|
@@ -66,25 +52,40 @@
|
|
|
66
52
|
"from": {
|
|
67
53
|
"description": "First date on which the content is visible.",
|
|
68
54
|
"type": "string",
|
|
69
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
|
|
55
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
56
|
+
"markdownDescription": "```yaml\nbanners:\n - visible:\n from: \"2026-01-01\"\n```\n\nFirst date on which the content is visible.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md#banners)"
|
|
70
57
|
},
|
|
71
58
|
"until": {
|
|
72
59
|
"description": "First date on which the content is no longer visible.",
|
|
73
60
|
"type": "string",
|
|
74
|
-
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
|
|
61
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
|
|
62
|
+
"markdownDescription": "```yaml\nbanners:\n - visible:\n until: \"2026-02-01\"\n```\n\nFirst date on which the content is no longer visible.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md#banners)"
|
|
75
63
|
}
|
|
76
64
|
},
|
|
77
|
-
"additionalProperties": false
|
|
65
|
+
"additionalProperties": false,
|
|
66
|
+
"markdownDescription": "```yaml\nbanners:\n - visible:\n from: \"2026-01-01\"\n until: \"2026-02-01\"\n```\n\nOptional date window for the banner.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md#banners)",
|
|
67
|
+
"defaultSnippets": [
|
|
68
|
+
{
|
|
69
|
+
"label": "Visibility window",
|
|
70
|
+
"markdownDescription": "Show the banner from the first date up to, but not including, the second date.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md#banners)",
|
|
71
|
+
"body": {
|
|
72
|
+
"from": "${1:2026-01-01}",
|
|
73
|
+
"until": "${2:2026-02-01}"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
]
|
|
78
77
|
},
|
|
79
78
|
"title": {
|
|
80
79
|
"type": "string",
|
|
81
80
|
"minLength": 1,
|
|
82
|
-
"description": "Short banner heading."
|
|
81
|
+
"description": "Short banner heading.",
|
|
82
|
+
"markdownDescription": "```yaml\nbanners:\n - title: Important notice\n```\n\nShort banner heading.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md#banners)"
|
|
83
83
|
},
|
|
84
84
|
"text": {
|
|
85
85
|
"type": "string",
|
|
86
86
|
"minLength": 1,
|
|
87
|
-
"description": "Concise banner message."
|
|
87
|
+
"description": "Concise banner message.",
|
|
88
|
+
"markdownDescription": "```yaml\nbanners:\n - text: Brief explanation.\n```\n\nConcise banner message.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md#banners)"
|
|
88
89
|
}
|
|
89
90
|
},
|
|
90
91
|
"required": [
|
|
@@ -93,9 +94,23 @@
|
|
|
93
94
|
"text"
|
|
94
95
|
],
|
|
95
96
|
"additionalProperties": false,
|
|
96
|
-
"description": "Dismissible
|
|
97
|
+
"description": "Dismissible site-wide warning shown above page content for important temporary information.",
|
|
98
|
+
"title": "Warning banner",
|
|
99
|
+
"markdownDescription": "A `warning` is a dismissible site-wide notice shown above page content. Use it for important temporary information visitors should notice, rather than ordinary page content.\n\n[Banner reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md#banners)",
|
|
100
|
+
"defaultSnippets": [
|
|
101
|
+
{
|
|
102
|
+
"label": "Warning banner",
|
|
103
|
+
"markdownDescription": "A `warning` is a dismissible site-wide notice shown above page content. Use it for important temporary information visitors should notice, rather than ordinary page content.\n\n[Banner reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md#banners)",
|
|
104
|
+
"body": {
|
|
105
|
+
"id": "${1:project-status}",
|
|
106
|
+
"tone": "warning",
|
|
107
|
+
"title": "${2:Important notice}",
|
|
108
|
+
"text": "${3:Brief explanation.}"
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
]
|
|
97
112
|
},
|
|
98
|
-
"markdownDescription": "```yaml\nbanners:\n - id: project-status\n tone: warning\n title: Experimental code\n text: Not for production use.\n```\n\nAdds dismissible notices above page content. List order controls their presentation order; each `id` must be unique.\n\n[Banner reference](https://github.com/janga/norna/blob/v0.7.
|
|
113
|
+
"markdownDescription": "```yaml\nbanners:\n - id: project-status\n tone: warning\n title: Experimental code\n text: Not for production use.\n```\n\nAdds dismissible notices above page content. List order controls their presentation order; each `id` must be unique.\n\n[Banner reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md#banners)"
|
|
99
114
|
},
|
|
100
115
|
"footer": {
|
|
101
116
|
"description": "Site-wide footer content.",
|
|
@@ -104,112 +119,23 @@
|
|
|
104
119
|
"copyrightMessage": {
|
|
105
120
|
"description": "Copyright or ownership text shown in the site footer.",
|
|
106
121
|
"type": "string",
|
|
107
|
-
"minLength": 1
|
|
122
|
+
"minLength": 1,
|
|
123
|
+
"markdownDescription": "```yaml\nfooter:\n copyrightMessage: Copyright Example Owner.\n```\n\nCopyright or ownership text shown in the site footer.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md#footer)"
|
|
108
124
|
},
|
|
109
125
|
"buildInfo": {
|
|
110
|
-
"
|
|
111
|
-
"
|
|
112
|
-
"
|
|
113
|
-
|
|
114
|
-
"default": true,
|
|
115
|
-
"description": "Show generated build information in the footer.",
|
|
116
|
-
"type": "boolean"
|
|
117
|
-
},
|
|
118
|
-
"text": {
|
|
119
|
-
"type": "string",
|
|
120
|
-
"minLength": 1,
|
|
121
|
-
"description": "Label shown before the generated build timestamp."
|
|
122
|
-
},
|
|
123
|
-
"dateTimeFormat": {
|
|
124
|
-
"type": "object",
|
|
125
|
-
"properties": {
|
|
126
|
-
"locale": {
|
|
127
|
-
"type": "string",
|
|
128
|
-
"minLength": 1,
|
|
129
|
-
"description": "Intl locale such as en-GB or sv-SE."
|
|
130
|
-
},
|
|
131
|
-
"timeZone": {
|
|
132
|
-
"type": "string",
|
|
133
|
-
"minLength": 1,
|
|
134
|
-
"description": "IANA time zone such as Europe/Stockholm."
|
|
135
|
-
},
|
|
136
|
-
"dateStyle": {
|
|
137
|
-
"type": "string",
|
|
138
|
-
"description": "Intl dateStyle for the build timestamp.",
|
|
139
|
-
"oneOf": [
|
|
140
|
-
{
|
|
141
|
-
"const": "short",
|
|
142
|
-
"title": "Short",
|
|
143
|
-
"description": "Use a compact localized date or time representation."
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
"const": "medium",
|
|
147
|
-
"title": "Medium",
|
|
148
|
-
"description": "Use a moderately detailed localized representation."
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
"const": "long",
|
|
152
|
-
"title": "Long",
|
|
153
|
-
"description": "Use a detailed localized representation."
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
"const": "full",
|
|
157
|
-
"title": "Full",
|
|
158
|
-
"description": "Use the most detailed localized representation."
|
|
159
|
-
}
|
|
160
|
-
]
|
|
161
|
-
},
|
|
162
|
-
"timeStyle": {
|
|
163
|
-
"type": "string",
|
|
164
|
-
"description": "Intl timeStyle for the build timestamp.",
|
|
165
|
-
"oneOf": [
|
|
166
|
-
{
|
|
167
|
-
"const": "short",
|
|
168
|
-
"title": "Short",
|
|
169
|
-
"description": "Use a compact localized date or time representation."
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
"const": "medium",
|
|
173
|
-
"title": "Medium",
|
|
174
|
-
"description": "Use a moderately detailed localized representation."
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
"const": "long",
|
|
178
|
-
"title": "Long",
|
|
179
|
-
"description": "Use a detailed localized representation."
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
"const": "full",
|
|
183
|
-
"title": "Full",
|
|
184
|
-
"description": "Use the most detailed localized representation."
|
|
185
|
-
}
|
|
186
|
-
]
|
|
187
|
-
}
|
|
188
|
-
},
|
|
189
|
-
"required": [
|
|
190
|
-
"locale",
|
|
191
|
-
"timeZone",
|
|
192
|
-
"dateStyle",
|
|
193
|
-
"timeStyle"
|
|
194
|
-
],
|
|
195
|
-
"additionalProperties": false,
|
|
196
|
-
"description": "Formatting used for the generated build timestamp."
|
|
197
|
-
}
|
|
198
|
-
},
|
|
199
|
-
"required": [
|
|
200
|
-
"text",
|
|
201
|
-
"dateTimeFormat"
|
|
202
|
-
],
|
|
203
|
-
"additionalProperties": false
|
|
126
|
+
"default": false,
|
|
127
|
+
"description": "Show a localized generated build timestamp in the footer.",
|
|
128
|
+
"type": "boolean",
|
|
129
|
+
"markdownDescription": "```yaml\nfooter:\n buildInfo: true\n```\n\nShow a localized generated build timestamp in the footer.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md#footer)"
|
|
204
130
|
}
|
|
205
131
|
},
|
|
206
132
|
"additionalProperties": false,
|
|
207
|
-
"markdownDescription": "```yaml\nfooter:\n copyrightMessage: Copyright Example Owner.\n```\n\nAdds shared footer content. Generated build information is optional.\n\n[Footer reference](https://github.com/janga/norna/blob/v0.7.
|
|
133
|
+
"markdownDescription": "```yaml\nfooter:\n copyrightMessage: Copyright Example Owner.\n```\n\nAdds shared footer content. Generated build information is optional.\n\n[Footer reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md#footer)"
|
|
208
134
|
}
|
|
209
135
|
},
|
|
210
136
|
"additionalProperties": false,
|
|
211
|
-
"description": "Editorial content and
|
|
137
|
+
"description": "Editorial content and optional navigation logo display settings shared by every page.",
|
|
212
138
|
"$id": "https://janga.github.io/norna/schemas/sitewide-content.schema.json",
|
|
213
139
|
"title": "Norna site-wide content",
|
|
214
|
-
"markdownDescription": "```yaml\
|
|
140
|
+
"markdownDescription": "```yaml\nfooter:\n copyrightMessage: Copyright Example Owner.\n```\n\n`sitewide-content.yaml` optionally defines banners, footer content, and logo display settings shared by every page.\n\n[Site-wide content reference](https://github.com/janga/norna/blob/v0.7.17/docs/sitewide-content.md)"
|
|
215
141
|
}
|