@janga/norna 0.7.25 → 0.7.26

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.
Files changed (131) hide show
  1. package/README.md +3 -2
  2. package/astro.config.mjs +26 -12
  3. package/bin/norna-cli.mjs +12 -0
  4. package/package.json +14 -5
  5. package/schemas/card-list.schema.json +121 -0
  6. package/schemas/category.schema.json +2 -2
  7. package/schemas/config.schema.json +306 -32
  8. package/schemas/content-frontmatter.schema.json +7 -7
  9. package/schemas/image-carousel.schema.json +43 -0
  10. package/schemas/image-stack.schema.json +43 -0
  11. package/schemas/manifest.json +6 -1
  12. package/schemas/page-theme.schema.json +26 -26
  13. package/schemas/sitewide-content.schema.json +18 -18
  14. package/schemas/theme.schema.json +237 -262
  15. package/scripts/dev-local.mjs +24 -2
  16. package/scripts/generate-schemas.mjs +15 -3
  17. package/scripts/lib/category-destinations.mjs +48 -0
  18. package/scripts/lib/code-fence-metadata.mjs +14 -37
  19. package/scripts/lib/content-tabs.mjs +155 -0
  20. package/scripts/lib/details-headings.mjs +58 -0
  21. package/scripts/lib/docusaurus-migration-audit.mjs +603 -0
  22. package/scripts/lib/editor-language-service.mjs +238 -116
  23. package/scripts/lib/locale-registry.mjs +597 -0
  24. package/scripts/lib/locales/az-Latn.mjs +78 -0
  25. package/scripts/lib/locales/be.mjs +78 -0
  26. package/scripts/lib/locales/bg.mjs +78 -0
  27. package/scripts/lib/locales/bs.mjs +78 -0
  28. package/scripts/lib/locales/ca.mjs +78 -0
  29. package/scripts/lib/locales/cnr.mjs +78 -0
  30. package/scripts/lib/locales/cs.mjs +78 -0
  31. package/scripts/lib/locales/da.mjs +78 -0
  32. package/scripts/lib/locales/de.mjs +78 -0
  33. package/scripts/lib/locales/el.mjs +78 -0
  34. package/scripts/lib/locales/en.mjs +78 -0
  35. package/scripts/lib/locales/es.mjs +78 -0
  36. package/scripts/lib/locales/et.mjs +78 -0
  37. package/scripts/lib/locales/fi.mjs +78 -0
  38. package/scripts/lib/locales/fil.mjs +78 -0
  39. package/scripts/lib/locales/fr.mjs +78 -0
  40. package/scripts/lib/locales/ga.mjs +78 -0
  41. package/scripts/lib/locales/ha.mjs +78 -0
  42. package/scripts/lib/locales/hr.mjs +78 -0
  43. package/scripts/lib/locales/hu.mjs +78 -0
  44. package/scripts/lib/locales/id.mjs +78 -0
  45. package/scripts/lib/locales/is.mjs +78 -0
  46. package/scripts/lib/locales/it.mjs +78 -0
  47. package/scripts/lib/locales/jv.mjs +78 -0
  48. package/scripts/lib/locales/lb.mjs +78 -0
  49. package/scripts/lib/locales/lt.mjs +78 -0
  50. package/scripts/lib/locales/lv.mjs +78 -0
  51. package/scripts/lib/locales/mk.mjs +78 -0
  52. package/scripts/lib/locales/mt.mjs +78 -0
  53. package/scripts/lib/locales/nb.mjs +78 -0
  54. package/scripts/lib/locales/nl.mjs +78 -0
  55. package/scripts/lib/locales/nn.mjs +78 -0
  56. package/scripts/lib/locales/pcm.mjs +78 -0
  57. package/scripts/lib/locales/pl.mjs +78 -0
  58. package/scripts/lib/locales/pt.mjs +78 -0
  59. package/scripts/lib/locales/ro.mjs +78 -0
  60. package/scripts/lib/locales/ru.mjs +78 -0
  61. package/scripts/lib/locales/sk.mjs +78 -0
  62. package/scripts/lib/locales/sl.mjs +78 -0
  63. package/scripts/lib/locales/sq.mjs +78 -0
  64. package/scripts/lib/locales/sr-Cyrl.mjs +78 -0
  65. package/scripts/lib/locales/sr-Latn.mjs +78 -0
  66. package/scripts/lib/locales/sv.mjs +78 -0
  67. package/scripts/lib/locales/sw.mjs +78 -0
  68. package/scripts/lib/locales/tr.mjs +78 -0
  69. package/scripts/lib/locales/uk.mjs +78 -0
  70. package/scripts/lib/locales/vi.mjs +78 -0
  71. package/scripts/lib/markdown-links.mjs +4 -25
  72. package/scripts/lib/markdown-notes-render-plugin.mjs +75 -0
  73. package/scripts/lib/markdown-notes.mjs +165 -0
  74. package/scripts/lib/norna-markdown-blocks.mjs +32 -447
  75. package/scripts/lib/norna-markdown-render-plugin.mjs +4 -0
  76. package/scripts/lib/page-aliases.mjs +12 -1
  77. package/scripts/lib/page-markdown.mjs +63 -16
  78. package/scripts/lib/page-move-plan.mjs +22 -5
  79. package/scripts/lib/pagefind-translations.mjs +620 -0
  80. package/scripts/lib/presentation-contract.mjs +6 -1
  81. package/scripts/lib/presentation.mjs +29 -30
  82. package/scripts/lib/project-config.mjs +2 -173
  83. package/scripts/lib/schema-definitions.mjs +3 -10
  84. package/scripts/lib/schema-editor-metadata.mjs +22 -43
  85. package/scripts/lib/schema-value-definitions.mjs +4 -8
  86. package/scripts/lib/semantic-callouts.mjs +4 -2
  87. package/scripts/lib/site-content.mjs +4 -2
  88. package/scripts/lib/site-link-graph.mjs +16 -6
  89. package/scripts/lib/site-navigation-tree.mjs +0 -11
  90. package/scripts/lib/sitemap.mjs +5 -3
  91. package/scripts/lib/structured-blocks.mjs +108 -0
  92. package/scripts/lib/table-render-plugin.mjs +46 -3
  93. package/scripts/lib/table-row-headers.mjs +218 -0
  94. package/scripts/lib/theme-presets.mjs +3 -10
  95. package/scripts/lib/yaml-config.mjs +2 -6
  96. package/scripts/migrate-check.mjs +19 -0
  97. package/scripts/sync-content-sections.mjs +39 -10
  98. package/scripts/sync-site-public.mjs +7 -1
  99. package/src/components/CodeBlockCopyScript.astro +47 -5
  100. package/src/components/ContentBlocks.astro +39 -0
  101. package/src/components/ContentTabsScript.astro +60 -0
  102. package/src/components/DisplaySettings.astro +17 -19
  103. package/src/components/NavigationPageTree.astro +1 -1
  104. package/src/components/NoteNavigationScript.astro +4 -0
  105. package/src/components/PageAliasRedirect.astro +5 -4
  106. package/src/components/SearchNavigationScript.astro +4 -0
  107. package/src/components/SearchPage.astro +43 -2
  108. package/src/components/SectionNavigationScript.astro +43 -11
  109. package/src/components/SiteBreadcrumbs.astro +1 -1
  110. package/src/components/SiteNavigation.astro +29 -20
  111. package/src/components/SitePage.astro +40 -15
  112. package/src/components/SiteSection.astro +5 -81
  113. package/src/components/SiteTreeNavigation.astro +2 -2
  114. package/src/components/TableOverflowScript.astro +386 -58
  115. package/src/components/TopPageMenu.astro +47 -0
  116. package/src/components/TreeNavigationScript.astro +10 -3
  117. package/src/layouts/BaseLayout.astro +8 -12
  118. package/src/lib/navigationFollowing.ts +142 -0
  119. package/src/lib/noteNavigation.ts +50 -0
  120. package/src/lib/searchNavigation.ts +107 -0
  121. package/src/lib/sectionContent.ts +20 -90
  122. package/src/lib/siteNavigation.ts +0 -5
  123. package/src/lib/sitePages.ts +13 -2
  124. package/src/lib/table-sort-tooltip.ts +109 -0
  125. package/src/pages/[...slug].astro +16 -6
  126. package/src/styles/content.css +394 -132
  127. package/src/styles/foundations.css +9 -0
  128. package/src/styles/media.css +5 -0
  129. package/src/styles/navigation.css +63 -74
  130. package/src/styles/page-layout.css +7 -0
  131. package/src/styles/responsive.css +2 -7
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "description": "Display one or more managed images in a vertical stack.",
4
+ "type": "object",
5
+ "additionalProperties": false,
6
+ "required": [
7
+ "items"
8
+ ],
9
+ "properties": {
10
+ "items": {
11
+ "type": "array",
12
+ "minItems": 1,
13
+ "items": {
14
+ "type": "object",
15
+ "additionalProperties": false,
16
+ "required": [
17
+ "image"
18
+ ],
19
+ "properties": {
20
+ "image": {
21
+ "type": "string",
22
+ "description": "Start another managed image.",
23
+ "minLength": 1,
24
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9.-]*\\.(?:[jJ][pP][eE]?[gG]|[pP][nN][gG]|[sS][vV][gG])$(?![\\s\\S])"
25
+ },
26
+ "alt": {
27
+ "type": "string",
28
+ "description": "Optional alternative text for the image.",
29
+ "pattern": "^(?:|(?=.*\\S)[^\\x00-\\x1F\\x7F-\\x9F\\u2028\\u2029]+)$(?![\\s\\S])"
30
+ },
31
+ "caption": {
32
+ "type": "string",
33
+ "description": "Optional visible caption below the image.",
34
+ "minLength": 1,
35
+ "pattern": "^(?=[\\s\\S]*\\S)[^\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x9F]*$(?![\\s\\S])"
36
+ }
37
+ }
38
+ }
39
+ }
40
+ },
41
+ "$id": "https://janga.github.io/norna/schemas/image-stack.schema.json",
42
+ "title": "Norna image-stack"
43
+ }
@@ -1,6 +1,11 @@
1
1
  {
2
- "editorApiVersion": 1,
2
+ "editorApiVersion": 2,
3
3
  "schemaVersion": 3,
4
+ "blockSchemas": {
5
+ "image-stack": "image-stack.schema.json",
6
+ "image-carousel": "image-carousel.schema.json",
7
+ "card-list": "card-list.schema.json"
8
+ },
4
9
  "files": {
5
10
  "category": "category.schema.json",
6
11
  "config": "config.schema.json",
@@ -13,22 +13,22 @@
13
13
  "const": "compact",
14
14
  "title": "Compact",
15
15
  "description": "Use restrained spacing between sections and structured blocks.",
16
- "markdownDescription": "Use restrained spacing between sections and structured blocks.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)"
16
+ "markdownDescription": "Use restrained spacing between sections and structured blocks.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)"
17
17
  },
18
18
  {
19
19
  "const": "normal",
20
20
  "title": "Normal",
21
21
  "description": "Use balanced content spacing.",
22
- "markdownDescription": "Use balanced content spacing.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)"
22
+ "markdownDescription": "Use balanced content spacing.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)"
23
23
  },
24
24
  {
25
25
  "const": "spacious",
26
26
  "title": "Spacious",
27
27
  "description": "Use more expansive spacing between sections and structured blocks.",
28
- "markdownDescription": "Use more expansive spacing between sections and structured blocks.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)"
28
+ "markdownDescription": "Use more expansive spacing between sections and structured blocks.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)"
29
29
  }
30
30
  ],
31
- "markdownDescription": "```yaml\nlayout:\n contentSpacing: compact\n```\n\nPage content spacing. Descendant pages inherit this value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)",
31
+ "markdownDescription": "```yaml\nlayout:\n contentSpacing: compact\n```\n\nPage content spacing. Descendant pages inherit this value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)",
32
32
  "examples": [
33
33
  "compact",
34
34
  "normal",
@@ -43,22 +43,22 @@
43
43
  "const": "narrow",
44
44
  "title": "Narrow",
45
45
  "description": "Use a shorter line length suited to reading-focused text.",
46
- "markdownDescription": "Use a shorter line length suited to reading-focused text.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)"
46
+ "markdownDescription": "Use a shorter line length suited to reading-focused text.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)"
47
47
  },
48
48
  {
49
49
  "const": "normal",
50
50
  "title": "Normal",
51
51
  "description": "Use the balanced default line length.",
52
- "markdownDescription": "Use the balanced default line length.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)"
52
+ "markdownDescription": "Use the balanced default line length.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)"
53
53
  },
54
54
  {
55
55
  "const": "wide",
56
56
  "title": "Wide",
57
57
  "description": "Allow body text to use more horizontal space.",
58
- "markdownDescription": "Allow body text to use more horizontal space.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)"
58
+ "markdownDescription": "Allow body text to use more horizontal space.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)"
59
59
  }
60
60
  ],
61
- "markdownDescription": "```yaml\nlayout:\n textWidth: narrow\n```\n\nBody-text line length. Descendant pages inherit this value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)",
61
+ "markdownDescription": "```yaml\nlayout:\n textWidth: narrow\n```\n\nBody-text line length. Descendant pages inherit this value.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)",
62
62
  "examples": [
63
63
  "narrow",
64
64
  "normal",
@@ -68,7 +68,7 @@
68
68
  },
69
69
  "additionalProperties": false,
70
70
  "description": "Page-local layout settings inherited by descendant pages.",
71
- "markdownDescription": "```yaml\nlayout:\n textWidth: narrow\n contentSpacing: compact\n```\n\nAdjusts body-text line length and vertical content spacing for pages below this directory.\n\n[Page theme reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)"
71
+ "markdownDescription": "```yaml\nlayout:\n textWidth: narrow\n contentSpacing: compact\n```\n\nAdjusts body-text line length and vertical content spacing for pages below this directory.\n\n[Page theme reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)"
72
72
  },
73
73
  "images": {
74
74
  "type": "object",
@@ -81,22 +81,22 @@
81
81
  "const": "prose-aligned",
82
82
  "title": "Prose-aligned",
83
83
  "description": "Start managed images and captions at the body-text edge and size them from the page content area.",
84
- "markdownDescription": "Start managed images and captions at the body-text edge and size them from the page content area.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#image-sizing)"
84
+ "markdownDescription": "Start managed images and captions at the body-text edge and size them from the page content area.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#image-sizing)"
85
85
  },
86
86
  {
87
87
  "const": "centered-fit",
88
88
  "title": "Centered fit",
89
89
  "description": "Center managed images and captions in the page media area and constrain them by available width and viewport height.",
90
- "markdownDescription": "Center managed images and captions in the page media area and constrain them by available width and viewport height.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#image-sizing)"
90
+ "markdownDescription": "Center managed images and captions in the page media area and constrain them by available width and viewport height.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#image-sizing)"
91
91
  }
92
92
  ],
93
- "markdownDescription": "```yaml\nimages:\n presentation: prose-aligned\n```\n\nManaged-image presentation method. Omit this to keep the selected preset or inherited page setting.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#image-sizing)"
93
+ "markdownDescription": "```yaml\nimages:\n presentation: prose-aligned\n```\n\nManaged-image presentation method. Omit this to keep the selected preset or inherited page setting.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#image-sizing)"
94
94
  },
95
95
  "width": {
96
96
  "description": "Maximum managed-image width. Omit this to keep the selected preset.",
97
97
  "type": "string",
98
98
  "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*\\))$",
99
- "markdownDescription": "```yaml\nimages:\n width: 900px\n```\n\nMaximum managed-image width. Omit this to keep the selected preset.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#image-sizing)"
99
+ "markdownDescription": "```yaml\nimages:\n width: 900px\n```\n\nMaximum managed-image width. Omit this to keep the selected preset.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#image-sizing)"
100
100
  },
101
101
  "maxAvailableWidthPercent": {
102
102
  "description": "Maximum percentage of available horizontal space used by managed images.",
@@ -114,14 +114,14 @@
114
114
  "exclusiveMinimum": 0,
115
115
  "maximum": 100,
116
116
  "description": "Percentage used on wider screens.",
117
- "markdownDescription": "```yaml\nimages:\n maxAvailableWidthPercent:\n desktop: 100\n```\n\nPercentage used on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#image-sizing)"
117
+ "markdownDescription": "```yaml\nimages:\n maxAvailableWidthPercent:\n desktop: 100\n```\n\nPercentage used on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#image-sizing)"
118
118
  },
119
119
  "mobile": {
120
120
  "type": "number",
121
121
  "exclusiveMinimum": 0,
122
122
  "maximum": 100,
123
123
  "description": "Percentage used on narrow screens.",
124
- "markdownDescription": "```yaml\nimages:\n maxAvailableWidthPercent:\n mobile: 100\n```\n\nPercentage used on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#image-sizing)"
124
+ "markdownDescription": "```yaml\nimages:\n maxAvailableWidthPercent:\n mobile: 100\n```\n\nPercentage used on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#image-sizing)"
125
125
  }
126
126
  },
127
127
  "required": [
@@ -131,7 +131,7 @@
131
131
  "additionalProperties": false
132
132
  }
133
133
  ],
134
- "markdownDescription": "```yaml\nimages:\n maxAvailableWidthPercent:\n desktop: 100\n mobile: 100\n```\n\nMaximum percentage of available horizontal space used by managed images.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#image-sizing)"
134
+ "markdownDescription": "```yaml\nimages:\n maxAvailableWidthPercent:\n desktop: 100\n mobile: 100\n```\n\nMaximum percentage of available horizontal space used by managed images.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#image-sizing)"
135
135
  },
136
136
  "maxAvailableHeightPercent": {
137
137
  "description": "Maximum percentage of viewport height used by centered-fit images. This setting is unavailable with prose-aligned presentation.",
@@ -149,14 +149,14 @@
149
149
  "exclusiveMinimum": 0,
150
150
  "maximum": 100,
151
151
  "description": "Percentage used on wider screens.",
152
- "markdownDescription": "```yaml\nimages:\n maxAvailableHeightPercent:\n desktop: 74\n```\n\nPercentage used on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#image-sizing)"
152
+ "markdownDescription": "```yaml\nimages:\n maxAvailableHeightPercent:\n desktop: 74\n```\n\nPercentage used on wider screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#image-sizing)"
153
153
  },
154
154
  "mobile": {
155
155
  "type": "number",
156
156
  "exclusiveMinimum": 0,
157
157
  "maximum": 100,
158
158
  "description": "Percentage used on narrow screens.",
159
- "markdownDescription": "```yaml\nimages:\n maxAvailableHeightPercent:\n mobile: 68\n```\n\nPercentage used on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#image-sizing)"
159
+ "markdownDescription": "```yaml\nimages:\n maxAvailableHeightPercent:\n mobile: 68\n```\n\nPercentage used on narrow screens.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#image-sizing)"
160
160
  }
161
161
  },
162
162
  "required": [
@@ -166,12 +166,12 @@
166
166
  "additionalProperties": false
167
167
  }
168
168
  ],
169
- "markdownDescription": "```yaml\nimages:\n maxAvailableHeightPercent:\n desktop: 74\n mobile: 68\n```\n\nMaximum percentage of viewport height used by centered-fit images. This setting is unavailable with prose-aligned presentation.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#image-sizing)"
169
+ "markdownDescription": "```yaml\nimages:\n maxAvailableHeightPercent:\n desktop: 74\n mobile: 68\n```\n\nMaximum percentage of viewport height used by centered-fit images. This setting is unavailable with prose-aligned presentation.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#image-sizing)"
170
170
  }
171
171
  },
172
172
  "additionalProperties": false,
173
173
  "description": "Optional defaults for placing managed images inside the page content area. Persistent navigation remains outside this area.",
174
- "markdownDescription": "```yaml\nimages:\n presentation: prose-aligned\n width: 900px\n```\n\nAdjusts managed-image presentation and sizing inside the content area for pages below this directory. Persistent navigation remains outside this area.\n\n[Image sizing reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#image-sizing)"
174
+ "markdownDescription": "```yaml\nimages:\n presentation: prose-aligned\n width: 900px\n```\n\nAdjusts managed-image presentation and sizing inside the content area for pages below this directory. Persistent navigation remains outside this area.\n\n[Image sizing reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#image-sizing)"
175
175
  },
176
176
  "sections": {
177
177
  "type": "object",
@@ -184,22 +184,22 @@
184
184
  "const": "uniform",
185
185
  "title": "Uniform",
186
186
  "description": "Use the normal page background for every H2 section. Tree navigation requires this pattern.",
187
- "markdownDescription": "Use the normal page background for every H2 section. Tree navigation requires this pattern.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)"
187
+ "markdownDescription": "Use the normal page background for every H2 section. Tree navigation requires this pattern.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)"
188
188
  },
189
189
  {
190
190
  "const": "alternating",
191
191
  "title": "Alternating",
192
192
  "description": "Alternate normal and subtly contrasting full-width section backgrounds. Available with sections and top navigation.",
193
- "markdownDescription": "Alternate normal and subtly contrasting full-width section backgrounds. Available with sections and top navigation.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)"
193
+ "markdownDescription": "Alternate normal and subtly contrasting full-width section backgrounds. Available with sections and top navigation.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)"
194
194
  },
195
195
  {
196
196
  "const": "accented",
197
197
  "title": "Accented",
198
198
  "description": "Move through base, soft, emphasis and soft full-width section backgrounds before repeating. Available with sections and top navigation.",
199
- "markdownDescription": "Move through base, soft, emphasis and soft full-width section backgrounds before repeating. Available with sections and top navigation.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)"
199
+ "markdownDescription": "Move through base, soft, emphasis and soft full-width section backgrounds before repeating. Available with sections and top navigation.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)"
200
200
  }
201
201
  ],
202
- "markdownDescription": "```yaml\nsections:\n backgroundPattern: alternating\n```\n\nSection background sequence inherited by descendant pages. Non-uniform patterns are invalid with tree navigation.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)",
202
+ "markdownDescription": "```yaml\nsections:\n backgroundPattern: alternating\n```\n\nSection background sequence inherited by descendant pages. Non-uniform patterns are invalid with tree navigation.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)",
203
203
  "examples": [
204
204
  "uniform",
205
205
  "alternating",
@@ -209,12 +209,12 @@
209
209
  },
210
210
  "additionalProperties": false,
211
211
  "description": "Page-local section presentation inherited by descendant pages.",
212
- "markdownDescription": "```yaml\nsections:\n backgroundPattern: alternating\n```\n\nAdjusts the H2 section background pattern for pages below this directory. Alternating and accented create full-width bands but are invalid when navigation resolves to tree.\n\n[Page theme reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)"
212
+ "markdownDescription": "```yaml\nsections:\n backgroundPattern: alternating\n```\n\nAdjusts the H2 section background pattern for pages below this directory. Alternating and accented create full-width bands but are invalid when navigation resolves to tree.\n\n[Page theme reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)"
213
213
  }
214
214
  },
215
215
  "additionalProperties": false,
216
216
  "description": "Limited page presentation overrides inherited by descendant pages. Site colors, corners, typography, content-block defaults and navigation remain global.",
217
217
  "$id": "https://janga.github.io/norna/schemas/page-theme.schema.json",
218
218
  "title": "Norna page theme",
219
- "markdownDescription": "```yaml\nlayout:\n textWidth: narrow\n contentSpacing: compact\n```\n\nA limited theme in a page or category directory may adjust only page layout, managed-image sizing and the section background pattern. Descendant pages inherit these values. Tree navigation requires a uniform section background. Site colors, corners, typography, content-block defaults and navigation stay consistent.\n\n[Page theme reference](https://github.com/janga/norna/blob/v0.7.25/docs/theme.md#page-themes)"
219
+ "markdownDescription": "```yaml\nlayout:\n textWidth: narrow\n contentSpacing: compact\n```\n\nA limited theme in a page or category directory may adjust only page layout, managed-image sizing and the section background pattern. Descendant pages inherit these values. Tree navigation requires a uniform section background. Site colors, corners, typography, content-block defaults and navigation stay consistent.\n\n[Page theme reference](https://github.com/janga/norna/blob/v0.7.26/docs/theme.md#page-themes)"
220
220
  }
@@ -12,12 +12,12 @@
12
12
  "examples": [
13
13
  "2rem"
14
14
  ],
15
- "markdownDescription": "```yaml\nlogo:\n height: 2rem\n```\n\nDisplayed logo height on wider screens. Omit it to use 2.6rem; narrow screens cap the height at 2.15rem. Width follows the intrinsic aspect ratio.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/public-files.md#navigation-logo)"
15
+ "markdownDescription": "```yaml\nlogo:\n height: 2rem\n```\n\nDisplayed logo height on wider screens. Omit it to use 2.6rem; narrow screens cap the height at 2.15rem. Width follows the intrinsic aspect ratio.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/public-files.md#navigation-logo)"
16
16
  }
17
17
  },
18
18
  "additionalProperties": false,
19
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. Without an override, Norna uses 2.6rem on wider screens and caps the logo at 2.15rem on narrow screens. 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.25/docs/public-files.md#navigation-logo)"
20
+ "markdownDescription": "```yaml\nlogo:\n height: 2rem\n```\n\n`logo` optionally overrides the displayed height of the convention-based logo file. Without an override, Norna uses 2.6rem on wider screens and caps the logo at 2.15rem on narrow screens. 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.26/docs/public-files.md#navigation-logo)"
21
21
  },
22
22
  "banners": {
23
23
  "default": [],
@@ -30,7 +30,7 @@
30
30
  "type": "string",
31
31
  "pattern": "^[a-z0-9-]+$",
32
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.25/docs/sitewide-content.md#banners)"
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.26/docs/sitewide-content.md#banners)"
34
34
  },
35
35
  "tone": {
36
36
  "default": "warning",
@@ -41,10 +41,10 @@
41
41
  "const": "warning",
42
42
  "title": "Warning",
43
43
  "description": "Present the banner as an important warning notice.",
44
- "markdownDescription": "Present the banner as an important warning notice.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.25/docs/sitewide-content.md#banners)"
44
+ "markdownDescription": "Present the banner as an important warning notice.\n\n[Read the relevant reference](https://github.com/janga/norna/blob/v0.7.26/docs/sitewide-content.md#banners)"
45
45
  }
46
46
  ],
47
- "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.25/docs/sitewide-content.md#banners)"
47
+ "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.26/docs/sitewide-content.md#banners)"
48
48
  },
49
49
  "visible": {
50
50
  "description": "Optional date window for the banner.",
@@ -54,21 +54,21 @@
54
54
  "description": "First date on which the content is visible.",
55
55
  "type": "string",
56
56
  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
57
- "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.25/docs/sitewide-content.md#banners)"
57
+ "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.26/docs/sitewide-content.md#banners)"
58
58
  },
59
59
  "until": {
60
60
  "description": "First date on which the content is no longer visible.",
61
61
  "type": "string",
62
62
  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
63
- "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.25/docs/sitewide-content.md#banners)"
63
+ "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.26/docs/sitewide-content.md#banners)"
64
64
  }
65
65
  },
66
66
  "additionalProperties": false,
67
- "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.25/docs/sitewide-content.md#banners)",
67
+ "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.26/docs/sitewide-content.md#banners)",
68
68
  "defaultSnippets": [
69
69
  {
70
70
  "label": "Visibility window",
71
- "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.25/docs/sitewide-content.md#banners)",
71
+ "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.26/docs/sitewide-content.md#banners)",
72
72
  "body": {
73
73
  "from": "${1:2026-01-01}",
74
74
  "until": "${2:2026-02-01}"
@@ -80,13 +80,13 @@
80
80
  "type": "string",
81
81
  "minLength": 1,
82
82
  "description": "Short banner heading.",
83
- "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.25/docs/sitewide-content.md#banners)"
83
+ "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.26/docs/sitewide-content.md#banners)"
84
84
  },
85
85
  "text": {
86
86
  "type": "string",
87
87
  "minLength": 1,
88
88
  "description": "Concise banner message.",
89
- "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.25/docs/sitewide-content.md#banners)"
89
+ "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.26/docs/sitewide-content.md#banners)"
90
90
  }
91
91
  },
92
92
  "required": [
@@ -97,11 +97,11 @@
97
97
  "additionalProperties": false,
98
98
  "description": "Dismissible site-wide warning shown above page content for important temporary information.",
99
99
  "title": "Warning banner",
100
- "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.25/docs/sitewide-content.md#banners)",
100
+ "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.26/docs/sitewide-content.md#banners)",
101
101
  "defaultSnippets": [
102
102
  {
103
103
  "label": "Warning banner",
104
- "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.25/docs/sitewide-content.md#banners)",
104
+ "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.26/docs/sitewide-content.md#banners)",
105
105
  "body": {
106
106
  "id": "${1:project-status}",
107
107
  "tone": "warning",
@@ -111,7 +111,7 @@
111
111
  }
112
112
  ]
113
113
  },
114
- "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.25/docs/sitewide-content.md#banners)"
114
+ "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.26/docs/sitewide-content.md#banners)"
115
115
  },
116
116
  "footer": {
117
117
  "description": "Site-wide footer content.",
@@ -121,22 +121,22 @@
121
121
  "description": "Copyright or ownership text shown in the site footer.",
122
122
  "type": "string",
123
123
  "minLength": 1,
124
- "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.25/docs/sitewide-content.md#footer)"
124
+ "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.26/docs/sitewide-content.md#footer)"
125
125
  },
126
126
  "buildInfo": {
127
127
  "default": false,
128
128
  "description": "Show a localized generated build timestamp in the footer.",
129
129
  "type": "boolean",
130
- "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.25/docs/sitewide-content.md#footer)"
130
+ "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.26/docs/sitewide-content.md#footer)"
131
131
  }
132
132
  },
133
133
  "additionalProperties": false,
134
- "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.25/docs/sitewide-content.md#footer)"
134
+ "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.26/docs/sitewide-content.md#footer)"
135
135
  }
136
136
  },
137
137
  "additionalProperties": false,
138
138
  "description": "Editorial content and optional navigation logo display settings shared by every page.",
139
139
  "$id": "https://janga.github.io/norna/schemas/sitewide-content.schema.json",
140
140
  "title": "Norna site-wide content",
141
- "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.25/docs/sitewide-content.md)"
141
+ "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.26/docs/sitewide-content.md)"
142
142
  }