@janga/norna 0.7.9 → 0.7.10

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 (198) hide show
  1. package/README.md +1 -1
  2. package/docs/README.md +14 -11
  3. package/docs/configuration.md +9 -54
  4. package/docs/content.md +6 -7
  5. package/docs/design/norna-diagram-design.md +2 -0
  6. package/docs/getting-started.md +18 -16
  7. package/docs/routes.md +7 -6
  8. package/docs/site-structure.md +4 -2
  9. package/docs/sitewide-content.md +74 -0
  10. package/docs/theme.md +61 -128
  11. package/docs/typography.md +45 -33
  12. package/examples/001-dog-shelter-single-page/README.md +9 -0
  13. package/examples/001-dog-shelter-single-page/site/config.mjs +27 -0
  14. package/examples/001-dog-shelter-single-page/site/content.md +38 -0
  15. package/examples/001-dog-shelter-single-page/site/images/what-we-do/dog-house.svg +25 -0
  16. package/examples/001-dog-shelter-single-page/site/images/you-can-help/heart.svg +13 -0
  17. package/examples/001-dog-shelter-single-page/site/public/favicon.svg +10 -0
  18. package/examples/001-dog-shelter-single-page/site/public/robots.txt +2 -0
  19. package/examples/001-dog-shelter-single-page/site/sitewide-content.md +6 -0
  20. package/examples/001-dog-shelter-single-page/site/theme.md +25 -0
  21. package/examples/002-dog-shelter-multi-page/README.md +9 -0
  22. package/examples/002-dog-shelter-multi-page/site/config.mjs +27 -0
  23. package/examples/002-dog-shelter-multi-page/site/content.md +12 -0
  24. package/examples/002-dog-shelter-multi-page/site/public/favicon.svg +10 -0
  25. package/examples/002-dog-shelter-multi-page/site/public/robots.txt +2 -0
  26. package/examples/002-dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rex.svg +19 -0
  27. package/examples/002-dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rover.svg +19 -0
  28. package/examples/002-dog-shelter-multi-page/site/routes/010-dogs/route-content.md +30 -0
  29. package/examples/002-dog-shelter-multi-page/site/routes/020-adopt/route-content.md +12 -0
  30. package/examples/002-dog-shelter-multi-page/site/sitewide-content.md +6 -0
  31. package/examples/002-dog-shelter-multi-page/site/theme.md +25 -0
  32. package/examples/dog-gallery/.astro/collections/site.schema.json +776 -0
  33. package/examples/dog-gallery/.astro/collections/theme.schema.json +672 -0
  34. package/examples/dog-gallery/.astro/content-assets.mjs +4 -0
  35. package/examples/dog-gallery/.astro/content-modules.mjs +1 -0
  36. package/examples/dog-gallery/.astro/content.d.ts +175 -0
  37. package/examples/dog-gallery/.astro/data-store.json +1 -0
  38. package/examples/dog-gallery/.astro/dev-local.json +8 -0
  39. package/examples/dog-gallery/.astro/dev.json +13 -0
  40. package/examples/dog-gallery/.astro/dev.log +95 -0
  41. package/examples/dog-gallery/.astro/settings.json +5 -0
  42. package/examples/dog-gallery/.astro/types.d.ts +2 -0
  43. package/examples/dog-gallery/dist/_astro/GalleryGrid.astro_astro_type_script_index_0_lang.B0kxDyGz.js +1 -0
  44. package/examples/dog-gallery/dist/_astro/SitePage.DicGh_5N.css +1 -0
  45. package/examples/dog-gallery/dist/dog-care/index.html +15 -0
  46. package/examples/dog-gallery/dist/dog-shelter-logo.svg +14 -0
  47. package/examples/dog-gallery/dist/favicon.svg +7 -0
  48. package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1080.webp +0 -0
  49. package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1440.webp +0 -0
  50. package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1536.webp +0 -0
  51. package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-480.webp +0 -0
  52. package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-768.webp +0 -0
  53. package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-480.webp +0 -0
  54. package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-768.webp +0 -0
  55. package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-960.webp +0 -0
  56. package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1080.webp +0 -0
  57. package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1440.webp +0 -0
  58. package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1920.webp +0 -0
  59. package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-3939.webp +0 -0
  60. package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-480.webp +0 -0
  61. package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-768.webp +0 -0
  62. package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1080.webp +0 -0
  63. package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1440.webp +0 -0
  64. package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1920.webp +0 -0
  65. package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-2400.webp +0 -0
  66. package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-480.webp +0 -0
  67. package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-768.webp +0 -0
  68. package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1080.webp +0 -0
  69. package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1440.webp +0 -0
  70. package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1600.webp +0 -0
  71. package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-480.webp +0 -0
  72. package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-768.webp +0 -0
  73. package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1080.webp +0 -0
  74. package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1440.webp +0 -0
  75. package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1920.webp +0 -0
  76. package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-2576.webp +0 -0
  77. package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-480.webp +0 -0
  78. package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-768.webp +0 -0
  79. package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-1080.webp +0 -0
  80. package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-1277.webp +0 -0
  81. package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-480.webp +0 -0
  82. package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-768.webp +0 -0
  83. package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1080.webp +0 -0
  84. package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1440.webp +0 -0
  85. package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1536.webp +0 -0
  86. package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-480.webp +0 -0
  87. package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-768.webp +0 -0
  88. package/examples/dog-gallery/dist/index.html +45 -0
  89. package/examples/dog-gallery/dist/robots.txt +2 -0
  90. package/examples/dog-gallery/node_modules/.vite/deps/_metadata.json +7 -7
  91. package/examples/dog-gallery/site/.norna/generated-images.json +8 -8
  92. package/examples/dog-gallery/site/config.mjs +0 -20
  93. package/examples/dog-gallery/site/content.md +4 -5
  94. package/examples/dog-gallery/site/public/logo.svg +14 -0
  95. package/examples/dog-gallery/site/sitewide-content.md +16 -0
  96. package/examples/dog-gallery/site/theme.md +13 -24
  97. package/examples/presentation/README.md +15 -0
  98. package/examples/presentation/site/.norna/generated-images.json +66 -0
  99. package/examples/presentation/site/config.mjs +29 -0
  100. package/examples/presentation/site/content.md +67 -0
  101. package/examples/presentation/site/public/robots.txt +2 -0
  102. package/examples/presentation/site/routes/010-presets/route-content.md +63 -0
  103. package/examples/presentation/site/routes/010-presets/theme.md +4 -0
  104. package/examples/presentation/site/routes/020-media/images/cards/card-carousel.svg +11 -0
  105. package/examples/presentation/site/routes/020-media/images/cards/card-stack.svg +9 -0
  106. package/examples/presentation/site/routes/020-media/images/cards/card-surfaces.svg +8 -0
  107. package/examples/presentation/site/routes/020-media/images/carousel/carousel-one.svg +8 -0
  108. package/examples/presentation/site/routes/020-media/images/carousel/carousel-three.svg +13 -0
  109. package/examples/presentation/site/routes/020-media/images/carousel/carousel-two.svg +8 -0
  110. package/examples/presentation/site/routes/020-media/images/stack/stack-one.svg +8 -0
  111. package/examples/presentation/site/routes/020-media/images/stack/stack-two.svg +9 -0
  112. package/examples/presentation/site/routes/020-media/route-content.md +77 -0
  113. package/examples/presentation/site/routes/020-media/theme.md +4 -0
  114. package/examples/presentation/site/routes/030-surfaces/route-content.md +44 -0
  115. package/examples/presentation/site/routes/030-surfaces/theme.md +7 -0
  116. package/examples/presentation/site/sitewide-content.md +6 -0
  117. package/examples/presentation/site/theme.md +43 -0
  118. package/examples/typography-presets/.astro/collections/routeTheme.schema.json +746 -0
  119. package/examples/typography-presets/.astro/collections/site.schema.json +0 -717
  120. package/examples/typography-presets/.astro/collections/sitewide.schema.json +114 -0
  121. package/examples/typography-presets/.astro/collections/theme.schema.json +161 -59
  122. package/examples/typography-presets/.astro/content.d.ts +8 -0
  123. package/examples/typography-presets/.astro/data-store.json +1 -1
  124. package/examples/typography-presets/.astro/dev-local.json +2 -2
  125. package/examples/typography-presets/.astro/dev.json +2 -2
  126. package/examples/typography-presets/.astro/dev.log +37 -16
  127. package/examples/typography-presets/site/.norna/generated-images.json +76 -76
  128. package/examples/typography-presets/site/config.mjs +0 -13
  129. package/examples/typography-presets/site/content.md +8 -126
  130. package/examples/typography-presets/site/routes/010-quiet-gallery/route-content.md +34 -0
  131. package/examples/typography-presets/site/routes/010-quiet-gallery/theme.md +4 -0
  132. package/examples/typography-presets/site/routes/020-compact-gallery/route-content.md +33 -0
  133. package/examples/typography-presets/site/routes/020-compact-gallery/theme.md +4 -0
  134. package/examples/typography-presets/site/routes/030-text-forward/route-content.md +34 -0
  135. package/examples/typography-presets/site/routes/030-text-forward/theme.md +4 -0
  136. package/examples/typography-presets/site/routes/040-statement/route-content.md +34 -0
  137. package/examples/typography-presets/site/routes/040-statement/theme.md +4 -0
  138. package/examples/typography-presets/site/sitewide-content.md +14 -0
  139. package/examples/typography-presets/site/theme.md +9 -9
  140. package/fixtures/basic/site/config.mjs +0 -13
  141. package/fixtures/basic/site/sitewide-content.md +12 -0
  142. package/fixtures/basic/site/theme.md +2 -2
  143. package/fixtures/content-model-v2/site/content.md +2 -5
  144. package/fixtures/content-model-v2/site/theme.md +1 -3
  145. package/package.json +3 -2
  146. package/scripts/check-config.mjs +22 -1
  147. package/scripts/lib/frontmatter-yaml.mjs +28 -0
  148. package/scripts/lib/logo-assets.mjs +35 -0
  149. package/scripts/lib/norna-markdown-blocks.mjs +166 -0
  150. package/scripts/lib/presentation.mjs +104 -46
  151. package/scripts/lib/project-config.mjs +67 -105
  152. package/scripts/lib/site-content.mjs +26 -118
  153. package/scripts/lib/site-paths.mjs +2 -0
  154. package/scripts/lib/sitewide-config.mjs +34 -0
  155. package/scripts/lib/theme-config.mjs +72 -8
  156. package/scripts/lib/typography.mjs +20 -26
  157. package/scripts/show-typography.mjs +40 -147
  158. package/scripts/sync-content-sections.mjs +19 -17
  159. package/scripts/test-content-check.mjs +59 -27
  160. package/scripts/test-content-model-v2.mjs +154 -0
  161. package/scripts/test-engine-commands.mjs +3 -1
  162. package/scripts/test-package-check.mjs +66 -24
  163. package/scripts/test-temporary-visibility.mjs +19 -2
  164. package/src/components/CardList.astro +5 -2
  165. package/src/components/GalleryGrid.astro +37 -16
  166. package/src/components/SiteBanners.astro +100 -0
  167. package/src/components/SiteNavigation.astro +48 -31
  168. package/src/components/SitePage.astro +55 -13
  169. package/src/components/SiteSection.astro +193 -35
  170. package/src/content.config.ts +78 -48
  171. package/src/layouts/BaseLayout.astro +64 -14
  172. package/src/lib/routeThemes.ts +61 -0
  173. package/src/lib/sectionContent.ts +235 -51
  174. package/src/lib/sitePublicAssets.ts +1 -0
  175. package/src/styles/global.css +282 -93
  176. package/starters/basic/.github/workflows/deploy.yml +1 -1
  177. package/starters/basic/README.md +7 -6
  178. package/starters/basic/site/config.mjs +0 -13
  179. package/starters/basic/site/content.md +1 -1
  180. package/starters/basic/site/sitewide-content.md +14 -0
  181. package/starters/basic/site/theme.md +13 -24
  182. package/starters/project/.github/workflows/deploy.yml +1 -1
  183. package/starters/project/README.md +10 -8
  184. package/starters/project/site/config.mjs +0 -13
  185. package/starters/project/site/sitewide-content.md +14 -0
  186. package/starters/project/site/theme.md +3 -11
  187. /package/examples/typography-presets/site/{images → routes/010-quiet-gallery/images}/quiet-gallery/puppy-portrait.jpg +0 -0
  188. /package/examples/typography-presets/site/{images → routes/010-quiet-gallery/images}/quiet-gallery/shepherd-portrait.jpg +0 -0
  189. /package/examples/typography-presets/site/{images → routes/010-quiet-gallery/images}/quiet-gallery/white-puppy.jpg +0 -0
  190. /package/examples/typography-presets/site/{images → routes/020-compact-gallery/images}/compact-gallery/black-schnauzer.jpg +0 -0
  191. /package/examples/typography-presets/site/{images → routes/020-compact-gallery/images}/compact-gallery/retriever-portrait.jpg +0 -0
  192. /package/examples/typography-presets/site/{images → routes/020-compact-gallery/images}/compact-gallery/schnauzer-portrait.jpg +0 -0
  193. /package/examples/typography-presets/site/{images → routes/030-text-forward/images}/text-forward/boxer-portrait.jpg +0 -0
  194. /package/examples/typography-presets/site/{images → routes/030-text-forward/images}/text-forward/grass-puppy.jpg +0 -0
  195. /package/examples/typography-presets/site/{images → routes/030-text-forward/images}/text-forward/grey-street-dog.jpg +0 -0
  196. /package/examples/typography-presets/site/{images → routes/040-statement/images}/statement/black-pedigree.jpg +0 -0
  197. /package/examples/typography-presets/site/{images → routes/040-statement/images}/statement/sheepdog-grass.jpg +0 -0
  198. /package/examples/typography-presets/site/{images → routes/040-statement/images}/statement/sheepdog-wide.jpg +0 -0
@@ -1,288 +1,288 @@
1
1
  {
2
- "images/compact-gallery/black-schnauzer.jpg": {
2
+ "routes/010-quiet-gallery/images/quiet-gallery/puppy-portrait.jpg": {
3
3
  "outputVersion": 2,
4
- "sourceHash": "569922b4aa71096cc8e3a245f0ddccf74f941881b823084723854580078b50b0",
4
+ "sourceHash": "0cb5126b86660785da62903393e43df7b6e361d3bd1a0492cc6f371159c5afb8",
5
5
  "width": 1200,
6
6
  "height": 800,
7
7
  "variants": [
8
8
  {
9
- "src": "/images/generated/compact-gallery/black-schnauzer-569922b4-480.webp",
9
+ "src": "/images/generated/routes/010-quiet-gallery/images/quiet-gallery/puppy-portrait-0cb5126b-480.webp",
10
10
  "width": 480
11
11
  },
12
12
  {
13
- "src": "/images/generated/compact-gallery/black-schnauzer-569922b4-768.webp",
13
+ "src": "/images/generated/routes/010-quiet-gallery/images/quiet-gallery/puppy-portrait-0cb5126b-768.webp",
14
14
  "width": 768
15
15
  },
16
16
  {
17
- "src": "/images/generated/compact-gallery/black-schnauzer-569922b4-1080.webp",
17
+ "src": "/images/generated/routes/010-quiet-gallery/images/quiet-gallery/puppy-portrait-0cb5126b-1080.webp",
18
18
  "width": 1080
19
19
  },
20
20
  {
21
- "src": "/images/generated/compact-gallery/black-schnauzer-569922b4-1200.webp",
21
+ "src": "/images/generated/routes/010-quiet-gallery/images/quiet-gallery/puppy-portrait-0cb5126b-1200.webp",
22
22
  "width": 1200
23
23
  }
24
24
  ]
25
25
  },
26
- "images/compact-gallery/retriever-portrait.jpg": {
26
+ "routes/010-quiet-gallery/images/quiet-gallery/shepherd-portrait.jpg": {
27
27
  "outputVersion": 2,
28
- "sourceHash": "c441ca2935debeb008a43e2a7fd510bfd6776682f84160151fd5c8605bfb8cae",
28
+ "sourceHash": "604099036852fa40c2fecf8620a138405c8edcb0b92f120bb603742f9ee91154",
29
29
  "width": 1200,
30
30
  "height": 800,
31
31
  "variants": [
32
32
  {
33
- "src": "/images/generated/compact-gallery/retriever-portrait-c441ca29-480.webp",
33
+ "src": "/images/generated/routes/010-quiet-gallery/images/quiet-gallery/shepherd-portrait-60409903-480.webp",
34
34
  "width": 480
35
35
  },
36
36
  {
37
- "src": "/images/generated/compact-gallery/retriever-portrait-c441ca29-768.webp",
37
+ "src": "/images/generated/routes/010-quiet-gallery/images/quiet-gallery/shepherd-portrait-60409903-768.webp",
38
38
  "width": 768
39
39
  },
40
40
  {
41
- "src": "/images/generated/compact-gallery/retriever-portrait-c441ca29-1080.webp",
41
+ "src": "/images/generated/routes/010-quiet-gallery/images/quiet-gallery/shepherd-portrait-60409903-1080.webp",
42
42
  "width": 1080
43
43
  },
44
44
  {
45
- "src": "/images/generated/compact-gallery/retriever-portrait-c441ca29-1200.webp",
45
+ "src": "/images/generated/routes/010-quiet-gallery/images/quiet-gallery/shepherd-portrait-60409903-1200.webp",
46
46
  "width": 1200
47
47
  }
48
48
  ]
49
49
  },
50
- "images/compact-gallery/schnauzer-portrait.jpg": {
50
+ "routes/010-quiet-gallery/images/quiet-gallery/white-puppy.jpg": {
51
51
  "outputVersion": 2,
52
- "sourceHash": "545b0427b8e15846fe73656758da6eb3b8612dabf2b2879c31197986f8deb9b5",
52
+ "sourceHash": "bcb834d00bb9b520dac475c32906f8578a03bd922c1639c7d86252ae1f1c433a",
53
53
  "width": 1200,
54
- "height": 900,
54
+ "height": 800,
55
55
  "variants": [
56
56
  {
57
- "src": "/images/generated/compact-gallery/schnauzer-portrait-545b0427-480.webp",
57
+ "src": "/images/generated/routes/010-quiet-gallery/images/quiet-gallery/white-puppy-bcb834d0-480.webp",
58
58
  "width": 480
59
59
  },
60
60
  {
61
- "src": "/images/generated/compact-gallery/schnauzer-portrait-545b0427-768.webp",
61
+ "src": "/images/generated/routes/010-quiet-gallery/images/quiet-gallery/white-puppy-bcb834d0-768.webp",
62
62
  "width": 768
63
63
  },
64
64
  {
65
- "src": "/images/generated/compact-gallery/schnauzer-portrait-545b0427-1080.webp",
65
+ "src": "/images/generated/routes/010-quiet-gallery/images/quiet-gallery/white-puppy-bcb834d0-1080.webp",
66
66
  "width": 1080
67
67
  },
68
68
  {
69
- "src": "/images/generated/compact-gallery/schnauzer-portrait-545b0427-1200.webp",
69
+ "src": "/images/generated/routes/010-quiet-gallery/images/quiet-gallery/white-puppy-bcb834d0-1200.webp",
70
70
  "width": 1200
71
71
  }
72
72
  ]
73
73
  },
74
- "images/quiet-gallery/puppy-portrait.jpg": {
74
+ "routes/020-compact-gallery/images/compact-gallery/black-schnauzer.jpg": {
75
75
  "outputVersion": 2,
76
- "sourceHash": "0cb5126b86660785da62903393e43df7b6e361d3bd1a0492cc6f371159c5afb8",
76
+ "sourceHash": "569922b4aa71096cc8e3a245f0ddccf74f941881b823084723854580078b50b0",
77
77
  "width": 1200,
78
78
  "height": 800,
79
79
  "variants": [
80
80
  {
81
- "src": "/images/generated/quiet-gallery/puppy-portrait-0cb5126b-480.webp",
81
+ "src": "/images/generated/routes/020-compact-gallery/images/compact-gallery/black-schnauzer-569922b4-480.webp",
82
82
  "width": 480
83
83
  },
84
84
  {
85
- "src": "/images/generated/quiet-gallery/puppy-portrait-0cb5126b-768.webp",
85
+ "src": "/images/generated/routes/020-compact-gallery/images/compact-gallery/black-schnauzer-569922b4-768.webp",
86
86
  "width": 768
87
87
  },
88
88
  {
89
- "src": "/images/generated/quiet-gallery/puppy-portrait-0cb5126b-1080.webp",
89
+ "src": "/images/generated/routes/020-compact-gallery/images/compact-gallery/black-schnauzer-569922b4-1080.webp",
90
90
  "width": 1080
91
91
  },
92
92
  {
93
- "src": "/images/generated/quiet-gallery/puppy-portrait-0cb5126b-1200.webp",
93
+ "src": "/images/generated/routes/020-compact-gallery/images/compact-gallery/black-schnauzer-569922b4-1200.webp",
94
94
  "width": 1200
95
95
  }
96
96
  ]
97
97
  },
98
- "images/quiet-gallery/shepherd-portrait.jpg": {
98
+ "routes/020-compact-gallery/images/compact-gallery/retriever-portrait.jpg": {
99
99
  "outputVersion": 2,
100
- "sourceHash": "604099036852fa40c2fecf8620a138405c8edcb0b92f120bb603742f9ee91154",
100
+ "sourceHash": "c441ca2935debeb008a43e2a7fd510bfd6776682f84160151fd5c8605bfb8cae",
101
101
  "width": 1200,
102
102
  "height": 800,
103
103
  "variants": [
104
104
  {
105
- "src": "/images/generated/quiet-gallery/shepherd-portrait-60409903-480.webp",
105
+ "src": "/images/generated/routes/020-compact-gallery/images/compact-gallery/retriever-portrait-c441ca29-480.webp",
106
106
  "width": 480
107
107
  },
108
108
  {
109
- "src": "/images/generated/quiet-gallery/shepherd-portrait-60409903-768.webp",
109
+ "src": "/images/generated/routes/020-compact-gallery/images/compact-gallery/retriever-portrait-c441ca29-768.webp",
110
110
  "width": 768
111
111
  },
112
112
  {
113
- "src": "/images/generated/quiet-gallery/shepherd-portrait-60409903-1080.webp",
113
+ "src": "/images/generated/routes/020-compact-gallery/images/compact-gallery/retriever-portrait-c441ca29-1080.webp",
114
114
  "width": 1080
115
115
  },
116
116
  {
117
- "src": "/images/generated/quiet-gallery/shepherd-portrait-60409903-1200.webp",
117
+ "src": "/images/generated/routes/020-compact-gallery/images/compact-gallery/retriever-portrait-c441ca29-1200.webp",
118
118
  "width": 1200
119
119
  }
120
120
  ]
121
121
  },
122
- "images/quiet-gallery/white-puppy.jpg": {
122
+ "routes/020-compact-gallery/images/compact-gallery/schnauzer-portrait.jpg": {
123
123
  "outputVersion": 2,
124
- "sourceHash": "bcb834d00bb9b520dac475c32906f8578a03bd922c1639c7d86252ae1f1c433a",
124
+ "sourceHash": "545b0427b8e15846fe73656758da6eb3b8612dabf2b2879c31197986f8deb9b5",
125
125
  "width": 1200,
126
- "height": 800,
126
+ "height": 900,
127
127
  "variants": [
128
128
  {
129
- "src": "/images/generated/quiet-gallery/white-puppy-bcb834d0-480.webp",
129
+ "src": "/images/generated/routes/020-compact-gallery/images/compact-gallery/schnauzer-portrait-545b0427-480.webp",
130
130
  "width": 480
131
131
  },
132
132
  {
133
- "src": "/images/generated/quiet-gallery/white-puppy-bcb834d0-768.webp",
133
+ "src": "/images/generated/routes/020-compact-gallery/images/compact-gallery/schnauzer-portrait-545b0427-768.webp",
134
134
  "width": 768
135
135
  },
136
136
  {
137
- "src": "/images/generated/quiet-gallery/white-puppy-bcb834d0-1080.webp",
137
+ "src": "/images/generated/routes/020-compact-gallery/images/compact-gallery/schnauzer-portrait-545b0427-1080.webp",
138
138
  "width": 1080
139
139
  },
140
140
  {
141
- "src": "/images/generated/quiet-gallery/white-puppy-bcb834d0-1200.webp",
141
+ "src": "/images/generated/routes/020-compact-gallery/images/compact-gallery/schnauzer-portrait-545b0427-1200.webp",
142
142
  "width": 1200
143
143
  }
144
144
  ]
145
145
  },
146
- "images/statement/black-pedigree.jpg": {
146
+ "routes/030-text-forward/images/text-forward/boxer-portrait.jpg": {
147
147
  "outputVersion": 2,
148
- "sourceHash": "7d5e0be21d7889cb440b9dd6bab74d8f656e4f5159fdcd6cbe937fc7b9d4bd44",
148
+ "sourceHash": "da764a5b71f2bfa610ae4978cad4660cd6ecfdcd5b7fcbd788b92c3f9ada42b1",
149
149
  "width": 1200,
150
150
  "height": 800,
151
151
  "variants": [
152
152
  {
153
- "src": "/images/generated/statement/black-pedigree-7d5e0be2-480.webp",
153
+ "src": "/images/generated/routes/030-text-forward/images/text-forward/boxer-portrait-da764a5b-480.webp",
154
154
  "width": 480
155
155
  },
156
156
  {
157
- "src": "/images/generated/statement/black-pedigree-7d5e0be2-768.webp",
157
+ "src": "/images/generated/routes/030-text-forward/images/text-forward/boxer-portrait-da764a5b-768.webp",
158
158
  "width": 768
159
159
  },
160
160
  {
161
- "src": "/images/generated/statement/black-pedigree-7d5e0be2-1080.webp",
161
+ "src": "/images/generated/routes/030-text-forward/images/text-forward/boxer-portrait-da764a5b-1080.webp",
162
162
  "width": 1080
163
163
  },
164
164
  {
165
- "src": "/images/generated/statement/black-pedigree-7d5e0be2-1200.webp",
165
+ "src": "/images/generated/routes/030-text-forward/images/text-forward/boxer-portrait-da764a5b-1200.webp",
166
166
  "width": 1200
167
167
  }
168
168
  ]
169
169
  },
170
- "images/statement/sheepdog-grass.jpg": {
170
+ "routes/030-text-forward/images/text-forward/grass-puppy.jpg": {
171
171
  "outputVersion": 2,
172
- "sourceHash": "b9396e00227dac3b290d6e29cc82758a4cf98f08bc9154c24c8fbf598563b69a",
172
+ "sourceHash": "519d663971223bdb1948db9087c637f1ed8b4d21d81c08e1fc10d5e2d904f230",
173
173
  "width": 1200,
174
174
  "height": 800,
175
175
  "variants": [
176
176
  {
177
- "src": "/images/generated/statement/sheepdog-grass-b9396e00-480.webp",
177
+ "src": "/images/generated/routes/030-text-forward/images/text-forward/grass-puppy-519d6639-480.webp",
178
178
  "width": 480
179
179
  },
180
180
  {
181
- "src": "/images/generated/statement/sheepdog-grass-b9396e00-768.webp",
181
+ "src": "/images/generated/routes/030-text-forward/images/text-forward/grass-puppy-519d6639-768.webp",
182
182
  "width": 768
183
183
  },
184
184
  {
185
- "src": "/images/generated/statement/sheepdog-grass-b9396e00-1080.webp",
185
+ "src": "/images/generated/routes/030-text-forward/images/text-forward/grass-puppy-519d6639-1080.webp",
186
186
  "width": 1080
187
187
  },
188
188
  {
189
- "src": "/images/generated/statement/sheepdog-grass-b9396e00-1200.webp",
189
+ "src": "/images/generated/routes/030-text-forward/images/text-forward/grass-puppy-519d6639-1200.webp",
190
190
  "width": 1200
191
191
  }
192
192
  ]
193
193
  },
194
- "images/statement/sheepdog-wide.jpg": {
194
+ "routes/030-text-forward/images/text-forward/grey-street-dog.jpg": {
195
195
  "outputVersion": 2,
196
- "sourceHash": "5c8a6878d3d38549d41f8161b92ffb555f3bf5c2d3defbade15932c4d11b6dea",
196
+ "sourceHash": "08cab93ba9a2d1c3a72c471dd8724efa7d820f43dad447221b445c32ebe9ab28",
197
197
  "width": 1200,
198
- "height": 667,
198
+ "height": 800,
199
199
  "variants": [
200
200
  {
201
- "src": "/images/generated/statement/sheepdog-wide-5c8a6878-480.webp",
201
+ "src": "/images/generated/routes/030-text-forward/images/text-forward/grey-street-dog-08cab93b-480.webp",
202
202
  "width": 480
203
203
  },
204
204
  {
205
- "src": "/images/generated/statement/sheepdog-wide-5c8a6878-768.webp",
205
+ "src": "/images/generated/routes/030-text-forward/images/text-forward/grey-street-dog-08cab93b-768.webp",
206
206
  "width": 768
207
207
  },
208
208
  {
209
- "src": "/images/generated/statement/sheepdog-wide-5c8a6878-1080.webp",
209
+ "src": "/images/generated/routes/030-text-forward/images/text-forward/grey-street-dog-08cab93b-1080.webp",
210
210
  "width": 1080
211
211
  },
212
212
  {
213
- "src": "/images/generated/statement/sheepdog-wide-5c8a6878-1200.webp",
213
+ "src": "/images/generated/routes/030-text-forward/images/text-forward/grey-street-dog-08cab93b-1200.webp",
214
214
  "width": 1200
215
215
  }
216
216
  ]
217
217
  },
218
- "images/text-forward/boxer-portrait.jpg": {
218
+ "routes/040-statement/images/statement/black-pedigree.jpg": {
219
219
  "outputVersion": 2,
220
- "sourceHash": "da764a5b71f2bfa610ae4978cad4660cd6ecfdcd5b7fcbd788b92c3f9ada42b1",
220
+ "sourceHash": "7d5e0be21d7889cb440b9dd6bab74d8f656e4f5159fdcd6cbe937fc7b9d4bd44",
221
221
  "width": 1200,
222
222
  "height": 800,
223
223
  "variants": [
224
224
  {
225
- "src": "/images/generated/text-forward/boxer-portrait-da764a5b-480.webp",
225
+ "src": "/images/generated/routes/040-statement/images/statement/black-pedigree-7d5e0be2-480.webp",
226
226
  "width": 480
227
227
  },
228
228
  {
229
- "src": "/images/generated/text-forward/boxer-portrait-da764a5b-768.webp",
229
+ "src": "/images/generated/routes/040-statement/images/statement/black-pedigree-7d5e0be2-768.webp",
230
230
  "width": 768
231
231
  },
232
232
  {
233
- "src": "/images/generated/text-forward/boxer-portrait-da764a5b-1080.webp",
233
+ "src": "/images/generated/routes/040-statement/images/statement/black-pedigree-7d5e0be2-1080.webp",
234
234
  "width": 1080
235
235
  },
236
236
  {
237
- "src": "/images/generated/text-forward/boxer-portrait-da764a5b-1200.webp",
237
+ "src": "/images/generated/routes/040-statement/images/statement/black-pedigree-7d5e0be2-1200.webp",
238
238
  "width": 1200
239
239
  }
240
240
  ]
241
241
  },
242
- "images/text-forward/grass-puppy.jpg": {
242
+ "routes/040-statement/images/statement/sheepdog-grass.jpg": {
243
243
  "outputVersion": 2,
244
- "sourceHash": "519d663971223bdb1948db9087c637f1ed8b4d21d81c08e1fc10d5e2d904f230",
244
+ "sourceHash": "b9396e00227dac3b290d6e29cc82758a4cf98f08bc9154c24c8fbf598563b69a",
245
245
  "width": 1200,
246
246
  "height": 800,
247
247
  "variants": [
248
248
  {
249
- "src": "/images/generated/text-forward/grass-puppy-519d6639-480.webp",
249
+ "src": "/images/generated/routes/040-statement/images/statement/sheepdog-grass-b9396e00-480.webp",
250
250
  "width": 480
251
251
  },
252
252
  {
253
- "src": "/images/generated/text-forward/grass-puppy-519d6639-768.webp",
253
+ "src": "/images/generated/routes/040-statement/images/statement/sheepdog-grass-b9396e00-768.webp",
254
254
  "width": 768
255
255
  },
256
256
  {
257
- "src": "/images/generated/text-forward/grass-puppy-519d6639-1080.webp",
257
+ "src": "/images/generated/routes/040-statement/images/statement/sheepdog-grass-b9396e00-1080.webp",
258
258
  "width": 1080
259
259
  },
260
260
  {
261
- "src": "/images/generated/text-forward/grass-puppy-519d6639-1200.webp",
261
+ "src": "/images/generated/routes/040-statement/images/statement/sheepdog-grass-b9396e00-1200.webp",
262
262
  "width": 1200
263
263
  }
264
264
  ]
265
265
  },
266
- "images/text-forward/grey-street-dog.jpg": {
266
+ "routes/040-statement/images/statement/sheepdog-wide.jpg": {
267
267
  "outputVersion": 2,
268
- "sourceHash": "08cab93ba9a2d1c3a72c471dd8724efa7d820f43dad447221b445c32ebe9ab28",
268
+ "sourceHash": "5c8a6878d3d38549d41f8161b92ffb555f3bf5c2d3defbade15932c4d11b6dea",
269
269
  "width": 1200,
270
- "height": 800,
270
+ "height": 667,
271
271
  "variants": [
272
272
  {
273
- "src": "/images/generated/text-forward/grey-street-dog-08cab93b-480.webp",
273
+ "src": "/images/generated/routes/040-statement/images/statement/sheepdog-wide-5c8a6878-480.webp",
274
274
  "width": 480
275
275
  },
276
276
  {
277
- "src": "/images/generated/text-forward/grey-street-dog-08cab93b-768.webp",
277
+ "src": "/images/generated/routes/040-statement/images/statement/sheepdog-wide-5c8a6878-768.webp",
278
278
  "width": 768
279
279
  },
280
280
  {
281
- "src": "/images/generated/text-forward/grey-street-dog-08cab93b-1080.webp",
281
+ "src": "/images/generated/routes/040-statement/images/statement/sheepdog-wide-5c8a6878-1080.webp",
282
282
  "width": 1080
283
283
  },
284
284
  {
285
- "src": "/images/generated/text-forward/grey-street-dog-08cab93b-1200.webp",
285
+ "src": "/images/generated/routes/040-statement/images/statement/sheepdog-wide-5c8a6878-1200.webp",
286
286
  "width": 1200
287
287
  }
288
288
  ]
@@ -21,19 +21,6 @@ export default {
21
21
  gallery: 'Images',
22
22
  },
23
23
  },
24
- footer: {
25
- copyrightMessage: 'Dog photos by Bicanski, CC0, via Pixnio.',
26
- buildInfo: {
27
- enabled: true,
28
- text: 'Built',
29
- dateTimeFormat: {
30
- locale: 'en-GB',
31
- timeZone: 'UTC',
32
- dateStyle: 'short',
33
- timeStyle: 'short',
34
- },
35
- },
36
- },
37
24
  github: {
38
25
  repo: 'owner/typography-presets-example',
39
26
  branch: 'main',
@@ -1,134 +1,16 @@
1
1
  ---
2
2
  title: Typography Presets
3
- description: A Norna example page showing every built-in typography preset.
3
+ description: Compare Norna's built-in typography presets across separate routes.
4
4
  navigation:
5
5
  label: Presets
6
- sections:
7
- quiet-gallery:
8
- presentation:
9
- typography:
10
- preset: quiet-gallery
11
- compact-gallery:
12
- presentation:
13
- typography:
14
- preset: compact-gallery
15
- text-forward:
16
- presentation:
17
- typography:
18
- preset: text-forward
19
- statement:
20
- presentation:
21
- typography:
22
- preset: statement
23
6
  ---
24
7
 
25
- ## Quiet Gallery {#quiet-gallery}
8
+ ## Typography presets {#typography-presets}
26
9
 
27
- This section uses the `quiet-gallery` preset. Its purpose is to keep text
28
- restrained so images can carry much of the page without the typography
29
- competing for attention.
10
+ Each preset belongs to a complete route theme. This keeps one page visually
11
+ consistent while making the differences easy to compare:
30
12
 
31
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a
32
- ante venenatis dapibus posuere velit aliquet. Maecenas faucibus mollis
33
- interdum. Donec ullamcorper nulla non metus auctor fringilla.
34
-
35
- ### Reading rhythm
36
-
37
- Curabitur blandit tempus porttitor. Praesent commodo cursus magna, vel
38
- scelerisque nisl consectetur et. Vestibulum id ligula porta felis euismod
39
- semper.
40
-
41
- ```norna-image-stack
42
- - image: puppy-portrait.jpg
43
- alt: A puppy sitting outdoors and looking toward the camera.
44
- caption: Puppy portrait. Photo by Bicanski, CC0, via Pixnio.
45
- - image: shepherd-portrait.jpg
46
- alt: A shepherd dog standing outdoors and looking toward the camera.
47
- caption: Shepherd dog portrait. Photo by Bicanski, CC0, via Pixnio.
48
- - image: white-puppy.jpg
49
- alt: A white puppy outdoors in winter.
50
- caption: White puppy outdoors. Photo by Bicanski, CC0, via Pixnio.
51
- ```
52
-
53
- ## Compact Gallery {#compact-gallery}
54
-
55
- This section uses the `compact-gallery` preset. Its purpose is to make denser
56
- image-led pages easier to scan when a site contains many sections, many images
57
- or short information blocks.
58
-
59
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean lacinia
60
- bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod.
61
-
62
- ### Dense sections
63
-
64
- Nullam id dolor id nibh ultricies vehicula ut id elit. Fusce dapibus, tellus ac
65
- cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit
66
- amet risus.
67
-
68
- ```norna-image-stack
69
- - image: schnauzer-portrait.jpg
70
- alt: A schnauzer-type dog sitting outdoors.
71
- caption: Schnauzer portrait. Photo by Bicanski, CC0, via Pixnio.
72
- - image: black-schnauzer.jpg
73
- alt: A black schnauzer-type dog standing on grass.
74
- caption: Black hunting dog portrait. Photo by Bicanski, CC0, via Pixnio.
75
- - image: retriever-portrait.jpg
76
- alt: A retriever-type dog sitting outdoors.
77
- caption: Retriever portrait. Photo by Bicanski, CC0, via Pixnio.
78
- ```
79
-
80
- ## Text Forward {#text-forward}
81
-
82
- This section uses the `text-forward` preset. Its purpose is to give longer
83
- explanatory text more presence while still supporting image captions and
84
- image-led sections.
85
-
86
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed posuere
87
- consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum.
88
- Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
89
-
90
- ### Longer explanations
91
-
92
- Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Donec sed odio
93
- dui. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget
94
- lacinia odio sem nec elit.
95
-
96
- ```norna-image-stack
97
- - image: grass-puppy.jpg
98
- alt: A puppy standing in green grass.
99
- caption: Puppy in grass. Photo by Bicanski, CC0, via Pixnio.
100
- - image: grey-street-dog.jpg
101
- alt: A grey dog standing on a paved street.
102
- caption: Grey dog on pavement. Photo by Bicanski, CC0, via Pixnio.
103
- - image: boxer-portrait.jpg
104
- alt: A brown boxer-type dog looking at the camera.
105
- caption: Brown dog portrait. Photo by Bicanski, CC0, via Pixnio.
106
- ```
107
-
108
- ## Statement {#statement}
109
-
110
- This section uses the `statement` preset. Its purpose is to make short,
111
- declarative sections feel more direct and programmatic. It is intentionally
112
- stronger than the other presets and should usually be used sparingly.
113
-
114
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec id elit non mi
115
- porta gravida at eget metus. Integer posuere erat a ante venenatis dapibus
116
- posuere velit aliquet.
117
-
118
- ### Short emphasis
119
-
120
- Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean
121
- lacinia bibendum nulla sed consectetur. Maecenas sed diam eget risus varius
122
- blandit sit amet non magna.
123
-
124
- ```norna-image-stack
125
- - image: sheepdog-grass.jpg
126
- alt: A sheepdog puppy sitting in green grass.
127
- caption: Sheepdog puppy in grass. Photo by Bicanski, CC0, via Pixnio.
128
- - image: sheepdog-wide.jpg
129
- alt: A sheepdog puppy lying outdoors.
130
- caption: Sheepdog puppy outdoors. Photo by Bicanski, CC0, via Pixnio.
131
- - image: black-pedigree.jpg
132
- alt: A black dog standing in grass.
133
- caption: Black pedigree dog portrait. Photo by Bicanski, CC0, via Pixnio.
134
- ```
13
+ * [Quiet Gallery](/quiet-gallery/)
14
+ * [Compact Gallery](/compact-gallery/)
15
+ * [Text Forward](/text-forward/)
16
+ * [Statement](/statement/)
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: Quiet Gallery
3
+ description: A restrained typography preset for image-led pages.
4
+ navigation:
5
+ label: Quiet Gallery
6
+ ---
7
+
8
+ ## Quiet Gallery {#quiet-gallery}
9
+
10
+ This route uses the `quiet-gallery` preset. Its purpose is to keep text
11
+ restrained so images can carry much of the page without the typography
12
+ competing for attention.
13
+
14
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a
15
+ ante venenatis dapibus posuere velit aliquet. Maecenas faucibus mollis
16
+ interdum. Donec ullamcorper nulla non metus auctor fringilla.
17
+
18
+ ### Reading rhythm
19
+
20
+ Curabitur blandit tempus porttitor. Praesent commodo cursus magna, vel
21
+ scelerisque nisl consectetur et. Vestibulum id ligula porta felis euismod
22
+ semper.
23
+
24
+ ```norna-image-stack
25
+ - image: puppy-portrait.jpg
26
+ alt: A puppy sitting outdoors and looking toward the camera.
27
+ caption: Puppy portrait. Photo by Bicanski, CC0, via Pixnio.
28
+ - image: shepherd-portrait.jpg
29
+ alt: A shepherd dog standing outdoors and looking toward the camera.
30
+ caption: Shepherd dog portrait. Photo by Bicanski, CC0, via Pixnio.
31
+ - image: white-puppy.jpg
32
+ alt: A white puppy outdoors in winter.
33
+ caption: White puppy outdoors. Photo by Bicanski, CC0, via Pixnio.
34
+ ```
@@ -0,0 +1,4 @@
1
+ ---
2
+ typography:
3
+ preset: quiet-gallery
4
+ ---
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: Compact Gallery
3
+ description: A compact typography preset for dense image-led pages.
4
+ navigation:
5
+ label: Compact Gallery
6
+ ---
7
+
8
+ ## Compact Gallery {#compact-gallery}
9
+
10
+ This route uses the `compact-gallery` preset. Its purpose is to make denser
11
+ image-led pages easier to scan when a site contains many sections, many images
12
+ or short information blocks.
13
+
14
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean lacinia
15
+ bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod.
16
+
17
+ ### Dense sections
18
+
19
+ Nullam id dolor id nibh ultricies vehicula ut id elit. Fusce dapibus, tellus ac
20
+ cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit
21
+ amet risus.
22
+
23
+ ```norna-image-stack
24
+ - image: schnauzer-portrait.jpg
25
+ alt: A schnauzer-type dog sitting outdoors.
26
+ caption: Schnauzer portrait. Photo by Bicanski, CC0, via Pixnio.
27
+ - image: black-schnauzer.jpg
28
+ alt: A black schnauzer-type dog standing on grass.
29
+ caption: Black hunting dog portrait. Photo by Bicanski, CC0, via Pixnio.
30
+ - image: retriever-portrait.jpg
31
+ alt: A retriever-type dog sitting outdoors.
32
+ caption: Retriever portrait. Photo by Bicanski, CC0, via Pixnio.
33
+ ```
@@ -0,0 +1,4 @@
1
+ ---
2
+ typography:
3
+ preset: compact-gallery
4
+ ---
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: Text Forward
3
+ description: A typography preset for explanatory writing.
4
+ navigation:
5
+ label: Text Forward
6
+ ---
7
+
8
+ ## Text Forward {#text-forward}
9
+
10
+ This route uses the `text-forward` preset. Its purpose is to give longer
11
+ explanatory text more presence while still supporting image captions and
12
+ image-led sections.
13
+
14
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed posuere
15
+ consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum.
16
+ Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
17
+
18
+ ### Longer explanations
19
+
20
+ Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Donec sed odio
21
+ dui. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget
22
+ lacinia odio sem nec elit.
23
+
24
+ ```norna-image-stack
25
+ - image: grass-puppy.jpg
26
+ alt: A puppy standing in green grass.
27
+ caption: Puppy in grass. Photo by Bicanski, CC0, via Pixnio.
28
+ - image: grey-street-dog.jpg
29
+ alt: A grey dog standing on a paved street.
30
+ caption: Grey dog on pavement. Photo by Bicanski, CC0, via Pixnio.
31
+ - image: boxer-portrait.jpg
32
+ alt: A brown boxer-type dog looking at the camera.
33
+ caption: Brown dog portrait. Photo by Bicanski, CC0, via Pixnio.
34
+ ```