@janga/norna 0.7.8 → 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.
- package/README.md +1 -1
- package/docs/README.md +18 -11
- package/docs/configuration.md +9 -54
- package/docs/content.md +6 -7
- package/docs/design/norna-diagram-design.md +158 -0
- package/docs/getting-started.md +18 -16
- package/docs/routes.md +7 -6
- package/docs/site-structure.md +4 -2
- package/docs/sitewide-content.md +74 -0
- package/docs/theme.md +61 -128
- package/docs/typography.md +45 -33
- package/examples/001-dog-shelter-single-page/README.md +9 -0
- package/examples/001-dog-shelter-single-page/site/config.mjs +27 -0
- package/examples/001-dog-shelter-single-page/site/content.md +38 -0
- package/examples/001-dog-shelter-single-page/site/images/what-we-do/dog-house.svg +25 -0
- package/examples/001-dog-shelter-single-page/site/images/you-can-help/heart.svg +13 -0
- package/examples/001-dog-shelter-single-page/site/public/favicon.svg +10 -0
- package/examples/001-dog-shelter-single-page/site/public/robots.txt +2 -0
- package/examples/001-dog-shelter-single-page/site/sitewide-content.md +6 -0
- package/examples/001-dog-shelter-single-page/site/theme.md +25 -0
- package/examples/002-dog-shelter-multi-page/README.md +9 -0
- package/examples/002-dog-shelter-multi-page/site/config.mjs +27 -0
- package/examples/002-dog-shelter-multi-page/site/content.md +12 -0
- package/examples/002-dog-shelter-multi-page/site/public/favicon.svg +10 -0
- package/examples/002-dog-shelter-multi-page/site/public/robots.txt +2 -0
- package/examples/002-dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rex.svg +19 -0
- package/examples/002-dog-shelter-multi-page/site/routes/010-dogs/images/dogs/rover.svg +19 -0
- package/examples/002-dog-shelter-multi-page/site/routes/010-dogs/route-content.md +30 -0
- package/examples/002-dog-shelter-multi-page/site/routes/020-adopt/route-content.md +12 -0
- package/examples/002-dog-shelter-multi-page/site/sitewide-content.md +6 -0
- package/examples/002-dog-shelter-multi-page/site/theme.md +25 -0
- package/examples/dog-gallery/.astro/collections/site.schema.json +776 -0
- package/examples/dog-gallery/.astro/collections/theme.schema.json +672 -0
- package/examples/dog-gallery/.astro/content-assets.mjs +4 -0
- package/examples/dog-gallery/.astro/content-modules.mjs +1 -0
- package/examples/dog-gallery/.astro/content.d.ts +175 -0
- package/examples/dog-gallery/.astro/data-store.json +1 -0
- package/examples/dog-gallery/.astro/dev-local.json +8 -0
- package/examples/dog-gallery/.astro/dev.json +13 -0
- package/examples/dog-gallery/.astro/dev.log +95 -0
- package/examples/dog-gallery/.astro/settings.json +5 -0
- package/examples/dog-gallery/.astro/types.d.ts +2 -0
- package/examples/dog-gallery/dist/_astro/GalleryGrid.astro_astro_type_script_index_0_lang.B0kxDyGz.js +1 -0
- package/examples/dog-gallery/dist/_astro/SitePage.DicGh_5N.css +1 -0
- package/examples/dog-gallery/dist/dog-care/index.html +15 -0
- package/examples/dog-gallery/dist/dog-shelter-logo.svg +14 -0
- package/examples/dog-gallery/dist/favicon.svg +7 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1536.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/black-puppy-meadow-7255e3d9-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-960.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-1920.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-3939.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/brown-dog-50ef114e-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1920.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-2400.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-1600.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/golden-retriever-f797fd88-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1920.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-2576.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-1277.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-768.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1080.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1440.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1536.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-480.webp +0 -0
- package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-768.webp +0 -0
- package/examples/dog-gallery/dist/index.html +45 -0
- package/examples/dog-gallery/dist/robots.txt +2 -0
- package/examples/dog-gallery/node_modules/.vite/deps/_metadata.json +7 -7
- package/examples/dog-gallery/site/.norna/generated-images.json +8 -8
- package/examples/dog-gallery/site/config.mjs +0 -20
- package/examples/dog-gallery/site/content.md +4 -5
- package/examples/dog-gallery/site/public/logo.svg +14 -0
- package/examples/dog-gallery/site/sitewide-content.md +16 -0
- package/examples/dog-gallery/site/theme.md +13 -24
- package/examples/presentation/README.md +15 -0
- package/examples/presentation/site/.norna/generated-images.json +66 -0
- package/examples/presentation/site/config.mjs +29 -0
- package/examples/presentation/site/content.md +67 -0
- package/examples/presentation/site/public/robots.txt +2 -0
- package/examples/presentation/site/routes/010-presets/route-content.md +63 -0
- package/examples/presentation/site/routes/010-presets/theme.md +4 -0
- package/examples/presentation/site/routes/020-media/images/cards/card-carousel.svg +11 -0
- package/examples/presentation/site/routes/020-media/images/cards/card-stack.svg +9 -0
- package/examples/presentation/site/routes/020-media/images/cards/card-surfaces.svg +8 -0
- package/examples/presentation/site/routes/020-media/images/carousel/carousel-one.svg +8 -0
- package/examples/presentation/site/routes/020-media/images/carousel/carousel-three.svg +13 -0
- package/examples/presentation/site/routes/020-media/images/carousel/carousel-two.svg +8 -0
- package/examples/presentation/site/routes/020-media/images/stack/stack-one.svg +8 -0
- package/examples/presentation/site/routes/020-media/images/stack/stack-two.svg +9 -0
- package/examples/presentation/site/routes/020-media/route-content.md +77 -0
- package/examples/presentation/site/routes/020-media/theme.md +4 -0
- package/examples/presentation/site/routes/030-surfaces/route-content.md +44 -0
- package/examples/presentation/site/routes/030-surfaces/theme.md +7 -0
- package/examples/presentation/site/sitewide-content.md +6 -0
- package/examples/presentation/site/theme.md +43 -0
- package/examples/typography-presets/.astro/collections/routeTheme.schema.json +746 -0
- package/examples/typography-presets/.astro/collections/site.schema.json +59 -0
- package/examples/typography-presets/.astro/collections/sitewide.schema.json +114 -0
- package/examples/typography-presets/.astro/collections/theme.schema.json +770 -0
- package/examples/typography-presets/.astro/content-assets.mjs +4 -0
- package/examples/typography-presets/.astro/content-modules.mjs +1 -0
- package/examples/typography-presets/.astro/content.d.ts +183 -0
- package/examples/typography-presets/.astro/data-store.json +1 -0
- package/examples/typography-presets/.astro/dev-local.json +8 -0
- package/examples/typography-presets/.astro/dev.json +15 -0
- package/examples/typography-presets/.astro/dev.log +45 -0
- package/examples/typography-presets/.astro/settings.json +5 -0
- package/examples/typography-presets/.astro/types.d.ts +2 -0
- package/examples/typography-presets/node_modules/.vite/deps/_metadata.json +80 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro-D_GIpJIE.js +434 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro-D_GIpJIE.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_aria-query.js +6390 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_aria-query.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_axobject-query.js +2702 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_axobject-query.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_html-escaper.js +65 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_n_html-escaper.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js +455 -0
- package/examples/typography-presets/node_modules/.vite/deps/astro_runtime_client_dev-toolbar_entrypoint__js.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/audit-DM9Hkl5B.js +1534 -0
- package/examples/typography-presets/node_modules/.vite/deps/audit-DM9Hkl5B.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/embla-carousel.js +1389 -0
- package/examples/typography-presets/node_modules/.vite/deps/embla-carousel.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/highlight-DnZ1ULOL.js +48 -0
- package/examples/typography-presets/node_modules/.vite/deps/highlight-DnZ1ULOL.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/icons-RyebKi45.js +42 -0
- package/examples/typography-presets/node_modules/.vite/deps/icons-RyebKi45.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/package.json +3 -0
- package/examples/typography-presets/node_modules/.vite/deps/rolldown-runtime-BvCyGRYZ.js +4 -0
- package/examples/typography-presets/node_modules/.vite/deps/settings-DaU-gNnK.js +190 -0
- package/examples/typography-presets/node_modules/.vite/deps/settings-DaU-gNnK.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/toolbar-63PA619H.js +458 -0
- package/examples/typography-presets/node_modules/.vite/deps/toolbar-63PA619H.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/ui-library--bkcNSYz.js +1016 -0
- package/examples/typography-presets/node_modules/.vite/deps/ui-library--bkcNSYz.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/window-jPkpKVcy.js +32 -0
- package/examples/typography-presets/node_modules/.vite/deps/window-jPkpKVcy.js.map +1 -0
- package/examples/typography-presets/node_modules/.vite/deps/xray-BXCHpEJP.js +111 -0
- package/examples/typography-presets/node_modules/.vite/deps/xray-BXCHpEJP.js.map +1 -0
- package/examples/typography-presets/site/.norna/generated-images.json +290 -0
- package/examples/typography-presets/site/config.mjs +29 -0
- package/examples/typography-presets/site/content.md +16 -0
- package/examples/typography-presets/site/public/robots.txt +2 -0
- package/examples/typography-presets/site/routes/010-quiet-gallery/images/quiet-gallery/puppy-portrait.jpg +0 -0
- package/examples/typography-presets/site/routes/010-quiet-gallery/images/quiet-gallery/shepherd-portrait.jpg +0 -0
- package/examples/typography-presets/site/routes/010-quiet-gallery/images/quiet-gallery/white-puppy.jpg +0 -0
- package/examples/typography-presets/site/routes/010-quiet-gallery/route-content.md +34 -0
- package/examples/typography-presets/site/routes/010-quiet-gallery/theme.md +4 -0
- package/examples/typography-presets/site/routes/020-compact-gallery/images/compact-gallery/black-schnauzer.jpg +0 -0
- package/examples/typography-presets/site/routes/020-compact-gallery/images/compact-gallery/retriever-portrait.jpg +0 -0
- package/examples/typography-presets/site/routes/020-compact-gallery/images/compact-gallery/schnauzer-portrait.jpg +0 -0
- package/examples/typography-presets/site/routes/020-compact-gallery/route-content.md +33 -0
- package/examples/typography-presets/site/routes/020-compact-gallery/theme.md +4 -0
- package/examples/typography-presets/site/routes/030-text-forward/images/text-forward/boxer-portrait.jpg +0 -0
- package/examples/typography-presets/site/routes/030-text-forward/images/text-forward/grass-puppy.jpg +0 -0
- package/examples/typography-presets/site/routes/030-text-forward/images/text-forward/grey-street-dog.jpg +0 -0
- package/examples/typography-presets/site/routes/030-text-forward/route-content.md +34 -0
- package/examples/typography-presets/site/routes/030-text-forward/theme.md +4 -0
- package/examples/typography-presets/site/routes/040-statement/images/statement/black-pedigree.jpg +0 -0
- package/examples/typography-presets/site/routes/040-statement/images/statement/sheepdog-grass.jpg +0 -0
- package/examples/typography-presets/site/routes/040-statement/images/statement/sheepdog-wide.jpg +0 -0
- package/examples/typography-presets/site/routes/040-statement/route-content.md +34 -0
- package/examples/typography-presets/site/routes/040-statement/theme.md +4 -0
- package/examples/typography-presets/site/sitewide-content.md +14 -0
- package/examples/typography-presets/site/theme.md +43 -0
- package/fixtures/basic/site/config.mjs +0 -13
- package/fixtures/basic/site/sitewide-content.md +12 -0
- package/fixtures/basic/site/theme.md +2 -2
- package/fixtures/content-model-v2/site/content.md +2 -5
- package/fixtures/content-model-v2/site/theme.md +1 -3
- package/package.json +3 -2
- package/scripts/check-config.mjs +22 -1
- package/scripts/lib/frontmatter-yaml.mjs +28 -0
- package/scripts/lib/logo-assets.mjs +35 -0
- package/scripts/lib/norna-markdown-blocks.mjs +166 -0
- package/scripts/lib/presentation.mjs +104 -46
- package/scripts/lib/project-config.mjs +67 -105
- package/scripts/lib/site-content.mjs +26 -42
- package/scripts/lib/site-paths.mjs +2 -0
- package/scripts/lib/sitewide-config.mjs +34 -0
- package/scripts/lib/theme-config.mjs +72 -6
- package/scripts/lib/typography.mjs +20 -26
- package/scripts/show-typography.mjs +40 -147
- package/scripts/sync-content-sections.mjs +19 -14
- package/scripts/test-content-check.mjs +76 -14
- package/scripts/test-content-model-v2.mjs +154 -0
- package/scripts/test-engine-commands.mjs +3 -1
- package/scripts/test-package-check.mjs +78 -19
- package/scripts/test-temporary-visibility.mjs +19 -2
- package/src/components/CardList.astro +5 -2
- package/src/components/GalleryGrid.astro +37 -16
- package/src/components/SiteBanners.astro +100 -0
- package/src/components/SiteNavigation.astro +48 -31
- package/src/components/SitePage.astro +55 -13
- package/src/components/SiteSection.astro +194 -36
- package/src/content.config.ts +78 -48
- package/src/layouts/BaseLayout.astro +64 -14
- package/src/lib/routeThemes.ts +61 -0
- package/src/lib/sectionContent.ts +236 -44
- package/src/lib/sitePublicAssets.ts +1 -0
- package/src/styles/global.css +282 -93
- package/starters/basic/.github/workflows/deploy.yml +1 -1
- package/starters/basic/README.md +7 -6
- package/starters/basic/site/config.mjs +0 -13
- package/starters/basic/site/content.md +1 -1
- package/starters/basic/site/sitewide-content.md +14 -0
- package/starters/basic/site/theme.md +13 -24
- package/starters/project/.github/workflows/deploy.yml +1 -1
- package/starters/project/README.md +10 -8
- package/starters/project/site/config.mjs +0 -13
- package/starters/project/site/sitewide-content.md +14 -0
- package/starters/project/site/theme.md +3 -11
package/examples/dog-gallery/dist/images/generated/golden-dogs/toller-puppy-a2a8fbc0-2576.webp
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-1080.webp
ADDED
|
Binary file
|
package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-1277.webp
ADDED
|
Binary file
|
package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-480.webp
ADDED
|
Binary file
|
package/examples/dog-gallery/dist/images/generated/white-dogs/white-cute-dog-077a0689-768.webp
ADDED
|
Binary file
|
package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1080.webp
ADDED
|
Binary file
|
package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1440.webp
ADDED
|
Binary file
|
package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1536.webp
ADDED
|
Binary file
|
package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-480.webp
ADDED
|
Binary file
|
package/examples/dog-gallery/dist/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-768.webp
ADDED
|
Binary file
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en" style="scroll-behavior: smooth; --font-sans: Arial, 'Helvetica Neue', Helvetica, sans-serif; --page-width: 2048px; --content-gutter-desktop: clamp(1.25rem, 4vw, 3rem); --content-gutter-mobile: 16px; --space-nav-to-first-section-desktop: clamp(1.25rem, 2.5vw, 2rem); --space-nav-to-first-section-mobile: 1rem; --space-section-body-to-gallery-desktop: 1.25rem; --space-section-body-to-gallery-mobile: 1rem; --space-gallery-item-desktop: clamp(1.25rem, 2.8vw, 2rem); --space-gallery-item-mobile: 1.8rem; --space-section-to-section-desktop: clamp(1.8rem, 3vw, 2.75rem); --space-section-to-section-mobile: 1.65rem; --space-final-section-bottom-desktop: clamp(1.8rem, 3vw, 2.75rem); --space-final-section-bottom-mobile: 1.65rem; --gallery-width: 55vw; --gallery-max-available-width-desktop: 100%; --gallery-max-available-width-mobile: 100%; --gallery-max-image-height-desktop: 74svh; --gallery-max-image-height-mobile: 68svh"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="format-detection" content="telephone=no"><meta name="description" content="A small norna example with free dog images."><meta name="theme-color" content="#000000"><link rel="canonical" href="http://localhost:4321/"><meta name="generator" content="Astro v7.1.3"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><title>Local Dog Example</title><link rel="stylesheet" href="/_astro/SitePage.DicGh_5N.css"></head><body><a class="skip-link" href="#main-content">Skip to content</a><header class="site-top site-top-has-site-nav" data-smooth-scroll="{"durationPerPixelMs":0.22,"enabled":true,"maximumDurationMs":4000,"minimumDurationMs":2000}" style="--site-top-background-color: #550000; --site-top-text-color: #ffffff"><div class="site-nav-row"><a class="site-brand" href="/"><img class="site-brand-logo" src="/dog-shelter-logo.svg" alt="Dog Site"></a><nav class="site-nav" aria-label="Pages"><ul><li class="site-nav-item site-nav-item-has-sections"><a href="/" aria-current="page">Snoopy´s dog shelter!</a><div class="site-nav-submenu"><nav aria-label="Snoopy´s dog shelter! On this page"><ul><li><a href="/#black-dogs">Black Dogs</a></li><li><a href="/#summer-dogs">Summer Dogs</a></li><li><a href="/#brown-dogs">Brown Dogs</a></li><li><a href="/#golden-dogs">Golden Dogs</a></li><li><a href="/#white-dogs">White Dogs</a></li><li><a href="/#sources">Sources</a></li></ul></nav></div></li><li class="site-nav-item site-nav-item-has-sections"><a href="/dog-care/">Dog care</a><div class="site-nav-submenu"><nav aria-label="Dog care On this page"><ul><li><a href="/dog-care/#daily-rhythm">Daily rhythm</a></li><li><a href="/dog-care/#calm-training">Calm training</a></li><li><a href="/dog-care/#media-notes">Media notes</a></li></ul></nav></div></li></ul></nav><details class="mobile-nav-menu"><summary><span>Snoopy´s dog shelter!</span></summary><div class="mobile-nav-panel"><nav class="mobile-site-nav" aria-label="Pages"><h2>Pages</h2><ul><li><a href="/" aria-current="page">Snoopy´s dog shelter!</a></li><li><a href="/dog-care/">Dog care</a></li></ul></nav><nav class="mobile-page-nav" aria-label="On this page"><h2>On this page</h2><ul><li><a href="/#black-dogs" aria-current="true">Black Dogs</a></li><li><a href="/#summer-dogs">Summer Dogs</a></li><li><a href="/#brown-dogs">Brown Dogs</a></li><li><a href="/#golden-dogs">Golden Dogs</a></li><li><a href="/#white-dogs">White Dogs</a></li><li><a href="/#sources">Sources</a></li></ul></nav></div></details></div></header><script type="module">var e=document.querySelector(`.site-top`),t=Array.from(document.querySelectorAll(`.site-section`)),n=Array.from(document.querySelectorAll(`.site-nav-submenu a, .mobile-page-nav a`)),r=document.querySelector(`.mobile-nav-menu`),i=JSON.parse(e?.getAttribute(`data-smooth-scroll`)??`{}`),a=0,o=[120,320,700,1e3,2e3],s=window.matchMedia(`(prefers-reduced-motion: reduce)`),c=i.minimumDurationMs,l=i.maximumDurationMs,u=i.durationPerPixelMs,d=[`wheel`,`touchstart`],f=new Set([`ArrowDown`,`ArrowUp`,`End`,`Home`,`PageDown`,`PageUp`,` `]),p=null,m=null,h=0;`scrollRestoration`in history&&(history.scrollRestoration=`manual`);var g=()=>{if(!(e instanceof HTMLElement))return;let t=Math.ceil(e.getBoundingClientRect().height+a);return document.documentElement.style.setProperty(`--site-top-anchor-offset`,`${t}px`),t},_=e=>{let n=e.replace(/^#/,``);return t.find(e=>e.id===n)},v=e=>e?.querySelector(`h1, h2`),y=()=>{p&&=(p.cancel(),null)},b=e=>{e&&m!==e.id&&(m=e.id,n.forEach(t=>{let n=new URL(t.href,window.location.href);n.pathname===window.location.pathname&&n.hash===`#${e.id}`?t.setAttribute(`aria-current`,`true`):t.removeAttribute(`aria-current`)}))},x=()=>_(window.location.hash),S=e=>{window.location.hash!==e&&history.pushState(null,``,e)},C=()=>{r instanceof HTMLDetailsElement&&(r.open=!1)},w=e=>{if(!(e instanceof HTMLElement))return;let t=v(e);if(!(t instanceof HTMLElement))return;let n=g();if(n)return Math.max(0,t.getBoundingClientRect().top+window.scrollY-n)},T=e=>{y();let t=document.documentElement,n=t.style.scrollBehavior;t.style.scrollBehavior=`auto`,window.scrollTo(0,e),t.style.scrollBehavior=n},E=e=>{let t=Math.abs(e);return!i.enabled||s.matches||t<=a?0:Math.min(l,Math.max(c,t*u))},D=e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2,O=(e,{duration:t,onComplete:n}={})=>{y();let r=typeof e==`function`?e:()=>e,i=r();if(i===void 0)return 0;let a=window.scrollY,o=i-a,s=t??E(o);if(s<=0){let e=r();return e===void 0?0:(T(e),n?.(),0)}let c=document.documentElement,l=c.style.scrollBehavior,u=performance.now(),m=0,h={cancel:()=>{}},g=()=>{d.forEach(e=>{window.removeEventListener(e,v)}),window.removeEventListener(`keydown`,b),c.style.scrollBehavior=l,p===h&&(p=null)},_=()=>{m&&cancelAnimationFrame(m),g()},v=()=>_(),b=e=>{f.has(e.key)&&v()},x=e=>{let t=e-u,o=Math.min(1,t/s),c=r();c!==void 0&&(i=c);let l=a+(i-a)*D(o);if(window.scrollTo(0,l),o>=1){window.scrollTo(0,i),g(),n?.();return}m=requestAnimationFrame(x)};return h.cancel=_,p=h,c.style.scrollBehavior=`auto`,d.forEach(e=>{window.addEventListener(e,v,{passive:!0})}),window.addEventListener(`keydown`,b),m=requestAnimationFrame(x),s},k=(e,{behavior:t=`smooth`,duration:n,onComplete:r}={})=>{let i=w(e);if(i===void 0)return 0;let a=t===`smooth`?O(()=>w(e),{duration:n,onComplete:r}):(T(i),r?.(),0);return b(e),a},A=()=>{g()},j=()=>{if(p)return;let e=x();e instanceof HTMLElement&&k(e,{behavior:`auto`})},M=()=>{if(!window.location.hash)return;h+=1;let e=h;o.forEach(t=>{window.setTimeout(()=>{e===h&&requestAnimationFrame(j)},t)})},N=({behavior:e=`auto`,scrollHashlessTop:n=!1}={})=>{let r=x();if(r instanceof HTMLElement){k(r,{behavior:e}),M();return}n&&T(0),b(t[0])};n.forEach(e=>{e.addEventListener(`click`,t=>{let n=new URL(e.href,window.location.href);if(n.pathname!==window.location.pathname)return;let r=_(n.hash);if(!(r instanceof HTMLElement))return;let i=w(r);if(i===void 0)return;t.preventDefault();let a=n.hash,o=E(i-window.scrollY);S(a),b(r),C(),k(r,{behavior:`smooth`,duration:o,onComplete:M})})}),A(),requestAnimationFrame(()=>N({behavior:`auto`})),e instanceof HTMLElement&&`ResizeObserver`in window&&new ResizeObserver(A).observe(e),window.addEventListener(`resize`,A),window.addEventListener(`load`,M),window.addEventListener(`hashchange`,()=>N({behavior:`auto`,scrollHashlessTop:!0})),window.addEventListener(`popstate`,()=>N({behavior:`auto`,scrollHashlessTop:!0})),window.visualViewport&&window.visualViewport.addEventListener(`resize`,A);</script><main id="main-content" class="site-content"><section id="black-dogs" class="site-section" data-section-title="Black Dogs" style="--section-background-color: #550000; --section-text-color: #ffffff; --section-heading-align-desktop: left; --section-heading-align-mobile: left; --section-heading-font-size-desktop: clamp(1.35rem, 1.1rem + 0.9vw, 2rem); --section-heading-font-size-mobile: clamp(1.3rem, 1.05rem + 1.35vw, 1.75rem); --section-heading-line-height: 1.08; --section-heading-spacing-after: 0.45em; --section-heading-width-desktop: var(--gallery-layout-width); --section-heading-width-mobile: var(--gallery-layout-width); --section-markdown-h3-align-desktop: left; --section-markdown-h3-align-mobile: left; --section-markdown-h3-font-size-desktop: clamp(1.05rem, 0.98rem + 0.28vw, 1.22rem); --section-markdown-h3-font-size-mobile: clamp(1.04rem, 0.98rem + 0.45vw, 1.18rem); --section-markdown-h3-line-height: 1.35; --section-markdown-h3-spacing-before: 1.2em; --section-markdown-h3-spacing-after: 0.45em; --section-markdown-h4-align-desktop: left; --section-markdown-h4-align-mobile: left; --section-markdown-h4-font-size-desktop: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-markdown-h4-font-size-mobile: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-markdown-h4-line-height: 1.5; --section-markdown-h4-spacing-before: 0.9em; --section-markdown-h4-spacing-after: 0.35em; --section-body-align-desktop: left; --section-body-align-mobile: left; --section-body-font-size-desktop: clamp(0.96rem, 0.94rem + 0.08vw, 1rem); --section-body-font-size-mobile: clamp(0.96rem, 0.94rem + 0.08vw, 1rem); --section-body-line-height: 1.5; --section-body-paragraph-spacing: 0.65em; --section-body-width-desktop: var(--gallery-layout-width); --section-body-width-mobile: var(--gallery-layout-width); --section-caption-align-desktop: center; --section-caption-align-mobile: center; --section-caption-font-size-desktop: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-caption-font-size-mobile: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-caption-line-height: 1.35; --section-caption-spacing-before: 0.35em; --section-caption-justify-desktop: center; --section-caption-justify-mobile: center"><div class="section-card"><header class="section-header"><h1>Black Dogs</h1></header><div class="section-body section-body-has-gallery"><div class="section-markdown"><p>Black-coated dogs from the local norna development collection. This sentence
|
|
2
|
+
contains <span class="inline-style inline-style-highlight" style="--inline-style-color: #ffd84d">yellow highlighted text</span> for inline style inspection.</p>
|
|
3
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a
|
|
4
|
+
ante venenatis dapibus posuere velit aliquet.</p>
|
|
5
|
+
<h3 id="coat-notes">Coat notes</h3>
|
|
6
|
+
<p>This <code>###</code> heading should follow <code>typography.headings.h3</code>.</p>
|
|
7
|
+
<h4 id="small-detail">Small detail</h4>
|
|
8
|
+
<p>This <code>####</code> heading should follow <code>typography.headings.h4</code>.</p>
|
|
9
|
+
<p>Curabitur blandit tempus porttitor. Donec id elit non mi porta gravida at eget
|
|
10
|
+
metus. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</p>
|
|
11
|
+
</div><div class="gallery" aria-label="Images: Black Dogs"><figure class="gallery-item"><div class="gallery-image-frame"><img src="/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-960.webp" srcset="/images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-480.webp 480w, /images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-768.webp 768w, /images/generated/black-dogs/photo-of-a-black-dog-5cf614d2-960.webp 960w" sizes="(max-width: 700px) 100vw, 100vw" style="aspect-ratio: 960 / 1600;" width="960" height="1600" class="gallery-image" alt="A black dog sitting outdoors and looking at the camera." decoding="async" fetchpriority="low" loading="lazy"></div><figcaption class="gallery-meta"><div class="gallery-details"><span>Photo of a dog. ContaDeletada2906, CC0 1.0, via Wikimedia Commons.</span></div></figcaption></figure><figure class="gallery-item"><div class="gallery-image-frame"><img src="/images/generated/black-dogs/black-puppy-meadow-7255e3d9-1440.webp" srcset="/images/generated/black-dogs/black-puppy-meadow-7255e3d9-480.webp 480w, /images/generated/black-dogs/black-puppy-meadow-7255e3d9-768.webp 768w, /images/generated/black-dogs/black-puppy-meadow-7255e3d9-1080.webp 1080w, /images/generated/black-dogs/black-puppy-meadow-7255e3d9-1440.webp 1440w, /images/generated/black-dogs/black-puppy-meadow-7255e3d9-1536.webp 1536w" sizes="(max-width: 700px) 100vw, 100vw" style="aspect-ratio: 1536 / 1024;" width="1536" height="1024" class="gallery-image gallery-image-landscape" alt="A black puppy standing in a grassy meadow and looking at the camera." decoding="async" fetchpriority="low" loading="lazy"></div><figcaption class="gallery-meta"><div class="gallery-details"><span>AI-generated image.</span></div></figcaption></figure></div><script type="module" src="/_astro/GalleryGrid.astro_astro_type_script_index_0_lang.B0kxDyGz.js"></script></div></div></section><section id="summer-dogs" class="site-section" data-section-title="Summer Dogs" style="--section-background-color: #550000; --section-text-color: #ffffff; --section-heading-align-desktop: left; --section-heading-align-mobile: left; --section-heading-font-size-desktop: clamp(1.35rem, 1.1rem + 0.9vw, 2rem); --section-heading-font-size-mobile: clamp(1.3rem, 1.05rem + 1.35vw, 1.75rem); --section-heading-line-height: 1.08; --section-heading-spacing-after: 0.45em; --section-heading-width-desktop: var(--gallery-layout-width); --section-heading-width-mobile: var(--gallery-layout-width); --section-markdown-h3-align-desktop: left; --section-markdown-h3-align-mobile: left; --section-markdown-h3-font-size-desktop: clamp(1.05rem, 0.98rem + 0.28vw, 1.22rem); --section-markdown-h3-font-size-mobile: clamp(1.04rem, 0.98rem + 0.45vw, 1.18rem); --section-markdown-h3-line-height: 1.35; --section-markdown-h3-spacing-before: 1.2em; --section-markdown-h3-spacing-after: 0.45em; --section-markdown-h4-align-desktop: left; --section-markdown-h4-align-mobile: left; --section-markdown-h4-font-size-desktop: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-markdown-h4-font-size-mobile: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-markdown-h4-line-height: 1.5; --section-markdown-h4-spacing-before: 0.9em; --section-markdown-h4-spacing-after: 0.35em; --section-body-align-desktop: left; --section-body-align-mobile: left; --section-body-font-size-desktop: clamp(0.96rem, 0.94rem + 0.08vw, 1rem); --section-body-font-size-mobile: clamp(0.96rem, 0.94rem + 0.08vw, 1rem); --section-body-line-height: 1.5; --section-body-paragraph-spacing: 0.65em; --section-body-width-desktop: var(--gallery-layout-width); --section-body-width-mobile: var(--gallery-layout-width); --section-caption-align-desktop: center; --section-caption-align-mobile: center; --section-caption-font-size-desktop: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-caption-font-size-mobile: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-caption-line-height: 1.35; --section-caption-spacing-before: 0.35em; --section-caption-justify-desktop: center; --section-caption-justify-mobile: center"><div class="section-card"><header class="section-header"><h2>Summer Dogs</h2></header><div class="section-body section-body-text-only"><div class="section-markdown"><p>This temporary section is visible during August 2026. It is here to demonstrate
|
|
12
|
+
date-controlled sections and <span class="inline-style inline-style-alert" style="--inline-style-color: #ff9a3d">warm alert text</span> in the local dog example.</p>
|
|
13
|
+
<p>Lorem ipsum dolor sit amet.</p>
|
|
14
|
+
<p>Vestibulum id ligula porta felis euismod semper. Maecenas faucibus mollis
|
|
15
|
+
interdum. Nullam quis risus eget urna mollis ornare vel eu leo.</p></div></div></div></section><section id="brown-dogs" class="site-section" data-section-title="Brown Dogs" style="--section-background-color: #550000; --section-text-color: #ffffff; --section-heading-align-desktop: left; --section-heading-align-mobile: left; --section-heading-font-size-desktop: clamp(1.35rem, 1.1rem + 0.9vw, 2rem); --section-heading-font-size-mobile: clamp(1.3rem, 1.05rem + 1.35vw, 1.75rem); --section-heading-line-height: 1.08; --section-heading-spacing-after: 0.45em; --section-heading-width-desktop: var(--gallery-layout-width); --section-heading-width-mobile: var(--gallery-layout-width); --section-markdown-h3-align-desktop: left; --section-markdown-h3-align-mobile: left; --section-markdown-h3-font-size-desktop: clamp(1.05rem, 0.98rem + 0.28vw, 1.22rem); --section-markdown-h3-font-size-mobile: clamp(1.04rem, 0.98rem + 0.45vw, 1.18rem); --section-markdown-h3-line-height: 1.35; --section-markdown-h3-spacing-before: 1.2em; --section-markdown-h3-spacing-after: 0.45em; --section-markdown-h4-align-desktop: left; --section-markdown-h4-align-mobile: left; --section-markdown-h4-font-size-desktop: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-markdown-h4-font-size-mobile: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-markdown-h4-line-height: 1.5; --section-markdown-h4-spacing-before: 0.9em; --section-markdown-h4-spacing-after: 0.35em; --section-body-align-desktop: left; --section-body-align-mobile: left; --section-body-font-size-desktop: clamp(0.96rem, 0.94rem + 0.08vw, 1rem); --section-body-font-size-mobile: clamp(0.96rem, 0.94rem + 0.08vw, 1rem); --section-body-line-height: 1.5; --section-body-paragraph-spacing: 0.65em; --section-body-width-desktop: var(--gallery-layout-width); --section-body-width-mobile: var(--gallery-layout-width); --section-caption-align-desktop: center; --section-caption-align-mobile: center; --section-caption-font-size-desktop: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-caption-font-size-mobile: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-caption-line-height: 1.35; --section-caption-spacing-before: 0.35em; --section-caption-justify-desktop: center; --section-caption-justify-mobile: center"><div class="section-card"><header class="section-header"><h2>Brown Dogs</h2></header><div class="section-body section-body-has-gallery"><div class="section-markdown"><p>Brown dogs provide a second image section for local navigation checks.</p>
|
|
16
|
+
<p>Donec ullamcorper nulla non metus auctor fringilla. Fusce dapibus, tellus ac
|
|
17
|
+
cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit
|
|
18
|
+
amet risus.</p>
|
|
19
|
+
<p>Maecenas sed diam eget risus varius blandit sit amet non magna. Morbi leo risus,
|
|
20
|
+
porta ac consectetur ac, vestibulum at eros. Sed posuere consectetur est at
|
|
21
|
+
lobortis.</p>
|
|
22
|
+
</div><div class="gallery" aria-label="Images: Brown Dogs"><figure class="gallery-item"><div class="gallery-image-frame"><img src="/images/generated/brown-dogs/brown-dog-50ef114e-1440.webp" srcset="/images/generated/brown-dogs/brown-dog-50ef114e-480.webp 480w, /images/generated/brown-dogs/brown-dog-50ef114e-768.webp 768w, /images/generated/brown-dogs/brown-dog-50ef114e-1080.webp 1080w, /images/generated/brown-dogs/brown-dog-50ef114e-1440.webp 1440w, /images/generated/brown-dogs/brown-dog-50ef114e-1920.webp 1920w" sizes="(max-width: 700px) 100vw, 100vw" style="aspect-ratio: 3939 / 2626;" width="3939" height="2626" class="gallery-image gallery-image-landscape" alt="A brown dog looking directly at the camera." decoding="async" fetchpriority="low" loading="lazy"></div><figcaption class="gallery-meta"><div class="gallery-details"><span>DogBrown. Frank-3, CC0 1.0, via Wikimedia Commons.</span></div></figcaption></figure><figure class="gallery-item"><div class="gallery-image-frame"><img src="/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1440.webp" srcset="/images/generated/brown-dogs/dog-accompanies-master-7ef804d5-480.webp 480w, /images/generated/brown-dogs/dog-accompanies-master-7ef804d5-768.webp 768w, /images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1080.webp 1080w, /images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1440.webp 1440w, /images/generated/brown-dogs/dog-accompanies-master-7ef804d5-1920.webp 1920w" sizes="(max-width: 700px) 100vw, 100vw" style="aspect-ratio: 2400 / 1800;" width="2400" height="1800" class="gallery-image gallery-image-landscape" alt="A man walks outdoors with a dog at his side." decoding="async" fetchpriority="low" loading="lazy"></div><figcaption class="gallery-meta"><div class="gallery-details"><span>Dog accompanies his master. Steve Hillebrand, U.S. Fish and Wildlife Service, public domain.</span></div></figcaption></figure></div></div></div></section><section id="golden-dogs" class="site-section" data-section-title="Golden Dogs" style="--section-background-color: #550000; --section-text-color: #ffffff; --section-heading-align-desktop: left; --section-heading-align-mobile: left; --section-heading-font-size-desktop: clamp(1.35rem, 1.1rem + 0.9vw, 2rem); --section-heading-font-size-mobile: clamp(1.3rem, 1.05rem + 1.35vw, 1.75rem); --section-heading-line-height: 1.08; --section-heading-spacing-after: 0.45em; --section-heading-width-desktop: var(--gallery-layout-width); --section-heading-width-mobile: var(--gallery-layout-width); --section-markdown-h3-align-desktop: left; --section-markdown-h3-align-mobile: left; --section-markdown-h3-font-size-desktop: clamp(1.05rem, 0.98rem + 0.28vw, 1.22rem); --section-markdown-h3-font-size-mobile: clamp(1.04rem, 0.98rem + 0.45vw, 1.18rem); --section-markdown-h3-line-height: 1.35; --section-markdown-h3-spacing-before: 1.2em; --section-markdown-h3-spacing-after: 0.45em; --section-markdown-h4-align-desktop: left; --section-markdown-h4-align-mobile: left; --section-markdown-h4-font-size-desktop: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-markdown-h4-font-size-mobile: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-markdown-h4-line-height: 1.5; --section-markdown-h4-spacing-before: 0.9em; --section-markdown-h4-spacing-after: 0.35em; --section-body-align-desktop: left; --section-body-align-mobile: left; --section-body-font-size-desktop: clamp(0.96rem, 0.94rem + 0.08vw, 1rem); --section-body-font-size-mobile: clamp(0.96rem, 0.94rem + 0.08vw, 1rem); --section-body-line-height: 1.5; --section-body-paragraph-spacing: 0.65em; --section-body-width-desktop: var(--gallery-layout-width); --section-body-width-mobile: var(--gallery-layout-width); --section-caption-align-desktop: center; --section-caption-align-mobile: center; --section-caption-font-size-desktop: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-caption-font-size-mobile: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-caption-line-height: 1.35; --section-caption-spacing-before: 0.35em; --section-caption-justify-desktop: center; --section-caption-justify-mobile: center"><div class="section-card"><header class="section-header"><h2>Golden Dogs</h2></header><div class="section-body section-body-has-gallery"><div class="section-markdown"><p>Golden-coated retrievers add a third image section and more scrolling depth.</p>
|
|
23
|
+
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam.</p>
|
|
24
|
+
<h3 id="training-note">Training note</h3>
|
|
25
|
+
<p>This <code>###</code> heading follows the site-wide <code>headings.h3</code> style.</p>
|
|
26
|
+
<p>Nulla vitae elit libero, a pharetra augue. Integer posuere erat a ante venenatis
|
|
27
|
+
dapibus posuere velit aliquet. Aenean eu leo quam. Pellentesque ornare sem
|
|
28
|
+
lacinia quam venenatis vestibulum.</p>
|
|
29
|
+
</div><div class="gallery" aria-label="Images: Golden Dogs"><figure class="gallery-item"><div class="gallery-image-frame"><img src="/images/generated/golden-dogs/golden-retriever-f797fd88-1440.webp" srcset="/images/generated/golden-dogs/golden-retriever-f797fd88-480.webp 480w, /images/generated/golden-dogs/golden-retriever-f797fd88-768.webp 768w, /images/generated/golden-dogs/golden-retriever-f797fd88-1080.webp 1080w, /images/generated/golden-dogs/golden-retriever-f797fd88-1440.webp 1440w, /images/generated/golden-dogs/golden-retriever-f797fd88-1600.webp 1600w" sizes="(max-width: 700px) 100vw, 100vw" style="aspect-ratio: 1600 / 1200;" width="1600" height="1200" class="gallery-image gallery-image-landscape" alt="A golden retriever standing outdoors." decoding="async" fetchpriority="low" loading="lazy"></div><figcaption class="gallery-meta"><div class="gallery-details"><span>Golden Retriever. Ribo, public domain, via Wikimedia Commons.</span></div></figcaption></figure><figure class="gallery-item"><div class="gallery-image-frame"><img src="/images/generated/golden-dogs/toller-puppy-a2a8fbc0-1440.webp" srcset="/images/generated/golden-dogs/toller-puppy-a2a8fbc0-480.webp 480w, /images/generated/golden-dogs/toller-puppy-a2a8fbc0-768.webp 768w, /images/generated/golden-dogs/toller-puppy-a2a8fbc0-1080.webp 1080w, /images/generated/golden-dogs/toller-puppy-a2a8fbc0-1440.webp 1440w, /images/generated/golden-dogs/toller-puppy-a2a8fbc0-1920.webp 1920w" sizes="(max-width: 700px) 100vw, 100vw" style="aspect-ratio: 2576 / 1932;" width="2576" height="1932" class="gallery-image gallery-image-landscape" alt="A young Nova Scotia Duck Tolling Retriever puppy sitting on grass." decoding="async" fetchpriority="low" loading="lazy"></div><figcaption class="gallery-meta"><div class="gallery-details"><span>Nova Scotia Duck Tolling Retriever puppy. RM, public domain, via Wikimedia Commons.</span></div></figcaption></figure></div></div></div></section><section id="white-dogs" class="site-section" data-section-title="White Dogs" style="--section-background-color: #550000; --section-text-color: #ffffff; --section-heading-align-desktop: left; --section-heading-align-mobile: left; --section-heading-font-size-desktop: clamp(1.35rem, 1.1rem + 0.9vw, 2rem); --section-heading-font-size-mobile: clamp(1.3rem, 1.05rem + 1.35vw, 1.75rem); --section-heading-line-height: 1.08; --section-heading-spacing-after: 0.45em; --section-heading-width-desktop: var(--gallery-layout-width); --section-heading-width-mobile: var(--gallery-layout-width); --section-markdown-h3-align-desktop: left; --section-markdown-h3-align-mobile: left; --section-markdown-h3-font-size-desktop: clamp(1.05rem, 0.98rem + 0.28vw, 1.22rem); --section-markdown-h3-font-size-mobile: clamp(1.04rem, 0.98rem + 0.45vw, 1.18rem); --section-markdown-h3-line-height: 1.35; --section-markdown-h3-spacing-before: 1.2em; --section-markdown-h3-spacing-after: 0.45em; --section-markdown-h4-align-desktop: left; --section-markdown-h4-align-mobile: left; --section-markdown-h4-font-size-desktop: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-markdown-h4-font-size-mobile: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-markdown-h4-line-height: 1.5; --section-markdown-h4-spacing-before: 0.9em; --section-markdown-h4-spacing-after: 0.35em; --section-body-align-desktop: left; --section-body-align-mobile: left; --section-body-font-size-desktop: clamp(0.96rem, 0.94rem + 0.08vw, 1rem); --section-body-font-size-mobile: clamp(0.96rem, 0.94rem + 0.08vw, 1rem); --section-body-line-height: 1.5; --section-body-paragraph-spacing: 0.65em; --section-body-width-desktop: var(--gallery-layout-width); --section-body-width-mobile: var(--gallery-layout-width); --section-caption-align-desktop: center; --section-caption-align-mobile: center; --section-caption-font-size-desktop: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-caption-font-size-mobile: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-caption-line-height: 1.35; --section-caption-spacing-before: 0.35em; --section-caption-justify-desktop: center; --section-caption-justify-mobile: center"><div class="section-card"><header class="section-header"><h2>White Dogs</h2></header><div class="section-body section-body-has-gallery"><div class="section-markdown"><p>A white dog completes the colour-based image sequence.</p>
|
|
30
|
+
<p>Etiam porta sem malesuada magna mollis euismod. Donec id elit non mi porta
|
|
31
|
+
gravida at eget metus.</p>
|
|
32
|
+
<p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Lorem ipsum
|
|
33
|
+
dolor sit amet, consectetur adipiscing elit. Donec sed odio dui. Vestibulum id
|
|
34
|
+
ligula porta felis euismod semper.</p>
|
|
35
|
+
</div><div class="gallery" aria-label="Images: White Dogs"><figure class="gallery-item"><div class="gallery-image-frame"><img src="/images/generated/white-dogs/white-cute-dog-077a0689-1277.webp" srcset="/images/generated/white-dogs/white-cute-dog-077a0689-480.webp 480w, /images/generated/white-dogs/white-cute-dog-077a0689-768.webp 768w, /images/generated/white-dogs/white-cute-dog-077a0689-1080.webp 1080w, /images/generated/white-dogs/white-cute-dog-077a0689-1277.webp 1277w" sizes="(max-width: 700px) 100vw, 100vw" style="aspect-ratio: 1277 / 1060;" width="1277" height="1060" class="gallery-image gallery-image-landscape" alt="A white dog looking toward the camera." decoding="async" fetchpriority="low" loading="lazy"></div><figcaption class="gallery-meta"><div class="gallery-details"><span>White cute dog. Neal Ziring, public domain, via Wikimedia Commons.</span></div></figcaption></figure><figure class="gallery-item"><div class="gallery-image-frame"><img src="/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1440.webp" srcset="/images/generated/white-dogs/white-puppy-garden-d3ab2ca0-480.webp 480w, /images/generated/white-dogs/white-puppy-garden-d3ab2ca0-768.webp 768w, /images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1080.webp 1080w, /images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1440.webp 1440w, /images/generated/white-dogs/white-puppy-garden-d3ab2ca0-1536.webp 1536w" sizes="(max-width: 700px) 100vw, 100vw" style="aspect-ratio: 1536 / 1024;" width="1536" height="1024" class="gallery-image gallery-image-landscape" alt="A fluffy white puppy standing on grass in a garden." decoding="async" fetchpriority="low" loading="lazy"></div><figcaption class="gallery-meta"><div class="gallery-details"><span>AI-generated image.</span></div></figcaption></figure></div></div></div></section><section id="sources" class="site-section" data-section-title="Sources" style="--section-background-color: #550000; --section-text-color: #ffffff; --section-heading-align-desktop: left; --section-heading-align-mobile: left; --section-heading-font-size-desktop: clamp(1.35rem, 1.1rem + 0.9vw, 2rem); --section-heading-font-size-mobile: clamp(1.3rem, 1.05rem + 1.35vw, 1.75rem); --section-heading-line-height: 1.08; --section-heading-spacing-after: 0.45em; --section-heading-width-desktop: var(--gallery-layout-width); --section-heading-width-mobile: var(--gallery-layout-width); --section-markdown-h3-align-desktop: left; --section-markdown-h3-align-mobile: left; --section-markdown-h3-font-size-desktop: clamp(1.05rem, 0.98rem + 0.28vw, 1.22rem); --section-markdown-h3-font-size-mobile: clamp(1.04rem, 0.98rem + 0.45vw, 1.18rem); --section-markdown-h3-line-height: 1.35; --section-markdown-h3-spacing-before: 1.2em; --section-markdown-h3-spacing-after: 0.45em; --section-markdown-h4-align-desktop: left; --section-markdown-h4-align-mobile: left; --section-markdown-h4-font-size-desktop: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-markdown-h4-font-size-mobile: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-markdown-h4-line-height: 1.5; --section-markdown-h4-spacing-before: 0.9em; --section-markdown-h4-spacing-after: 0.35em; --section-body-align-desktop: left; --section-body-align-mobile: left; --section-body-font-size-desktop: clamp(0.96rem, 0.94rem + 0.08vw, 1rem); --section-body-font-size-mobile: clamp(0.96rem, 0.94rem + 0.08vw, 1rem); --section-body-line-height: 1.5; --section-body-paragraph-spacing: 0.65em; --section-body-width-desktop: var(--gallery-layout-width); --section-body-width-mobile: var(--gallery-layout-width); --section-caption-align-desktop: center; --section-caption-align-mobile: center; --section-caption-font-size-desktop: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-caption-font-size-mobile: clamp(0.86rem, 0.84rem + 0.08vw, 0.92rem); --section-caption-line-height: 1.35; --section-caption-spacing-before: 0.35em; --section-caption-justify-desktop: center; --section-caption-justify-mobile: center"><div class="section-card"><header class="section-header"><h2>Sources</h2></header><div class="section-body section-body-text-only"><div class="section-markdown"><p>Most images are sourced from Wikimedia Commons pages that list CC0 or
|
|
36
|
+
public-domain licensing:</p>
|
|
37
|
+
<ul>
|
|
38
|
+
<li><a href="https://commons.wikimedia.org/wiki/File:Photo_of_a_dog.jpg">Photo of a dog</a></li>
|
|
39
|
+
<li><a href="https://commons.wikimedia.org/wiki/File:DogBrown.jpg">DogBrown</a></li>
|
|
40
|
+
<li><a href="https://commons.wikimedia.org/wiki/File:Dog_accompanies_his_master.jpg">Dog accompanies his master</a></li>
|
|
41
|
+
<li><a href="https://commons.wikimedia.org/wiki/File:Golden_Retriever.jpg">Golden Retriever</a></li>
|
|
42
|
+
<li><a href="https://commons.wikimedia.org/wiki/File:Toller_pup7wks2.JPG">Toller pup7wks2</a></li>
|
|
43
|
+
<li><a href="https://commons.wikimedia.org/wiki/File:White_cute_dog.jpg">White cute dog</a></li>
|
|
44
|
+
</ul>
|
|
45
|
+
<p>The black and white puppy images are AI-generated.</p></div></div></div></section></main><footer class="site-footer" style="--site-footer-background-color: #550000; --site-footer-text-color: #ffffff"><p>Dog images from Wikimedia Commons; see image captions for license details.<span>Built 17/08/2026, 15:17</span></p></footer></body></html>
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
{
|
|
2
|
-
"hash": "
|
|
3
|
-
"configHash": "
|
|
2
|
+
"hash": "9288c44d",
|
|
3
|
+
"configHash": "157af100",
|
|
4
4
|
"lockfileHash": "808f2e8e",
|
|
5
|
-
"browserHash": "
|
|
5
|
+
"browserHash": "a00be533",
|
|
6
6
|
"optimized": {
|
|
7
7
|
"astro > aria-query": {
|
|
8
8
|
"src": "../../../../../node_modules/aria-query/lib/index.js",
|
|
9
9
|
"file": "astro_n_aria-query.js",
|
|
10
|
-
"fileHash": "
|
|
10
|
+
"fileHash": "9b91d854",
|
|
11
11
|
"needsInterop": true
|
|
12
12
|
},
|
|
13
13
|
"astro > axobject-query": {
|
|
14
14
|
"src": "../../../../../node_modules/axobject-query/lib/index.js",
|
|
15
15
|
"file": "astro_n_axobject-query.js",
|
|
16
|
-
"fileHash": "
|
|
16
|
+
"fileHash": "5a1ed64b",
|
|
17
17
|
"needsInterop": true
|
|
18
18
|
},
|
|
19
19
|
"astro > html-escaper": {
|
|
20
20
|
"src": "../../../../../node_modules/html-escaper/esm/index.js",
|
|
21
21
|
"file": "astro_n_html-escaper.js",
|
|
22
|
-
"fileHash": "
|
|
22
|
+
"fileHash": "6d948667",
|
|
23
23
|
"needsInterop": false
|
|
24
24
|
},
|
|
25
25
|
"astro/runtime/client/dev-toolbar/entrypoint.js": {
|
|
26
26
|
"src": "../../../../../node_modules/astro/dist/runtime/client/dev-toolbar/entrypoint.js",
|
|
27
27
|
"file": "astro_runtime_client_dev-toolbar_entrypoint__js.js",
|
|
28
|
-
"fileHash": "
|
|
28
|
+
"fileHash": "deee87d7",
|
|
29
29
|
"needsInterop": false
|
|
30
30
|
}
|
|
31
31
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"black-puppy-meadow.png": {
|
|
2
|
+
"images/black-dogs/black-puppy-meadow.png": {
|
|
3
3
|
"outputVersion": 2,
|
|
4
4
|
"sourceHash": "7255e3d9148c1ded01ae6ae6809b9a8261b553a1516d3f8f4de0554bc321f652",
|
|
5
5
|
"width": 1536,
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
}
|
|
28
28
|
]
|
|
29
29
|
},
|
|
30
|
-
"photo-of-a-black-dog.jpg": {
|
|
30
|
+
"images/black-dogs/photo-of-a-black-dog.jpg": {
|
|
31
31
|
"outputVersion": 2,
|
|
32
32
|
"sourceHash": "5cf614d2863ca8f86b6162c7b477fd2690adbc101816206c9e675bf36d9962d0",
|
|
33
33
|
"width": 960,
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
}
|
|
48
48
|
]
|
|
49
49
|
},
|
|
50
|
-
"brown-dog.jpg": {
|
|
50
|
+
"images/brown-dogs/brown-dog.jpg": {
|
|
51
51
|
"outputVersion": 2,
|
|
52
52
|
"sourceHash": "50ef114e49ae48491c015157b4a25f4f1fd69140170fe6d4202c551858c3e03d",
|
|
53
53
|
"width": 3939,
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
}
|
|
80
80
|
]
|
|
81
81
|
},
|
|
82
|
-
"dog-accompanies-master.jpg": {
|
|
82
|
+
"images/brown-dogs/dog-accompanies-master.jpg": {
|
|
83
83
|
"outputVersion": 2,
|
|
84
84
|
"sourceHash": "7ef804d5ebe27724409f4ffa94389c7b1102c2c8bb9c1dae29ecbd4c56e61af9",
|
|
85
85
|
"width": 2400,
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
}
|
|
112
112
|
]
|
|
113
113
|
},
|
|
114
|
-
"golden-retriever.jpg": {
|
|
114
|
+
"images/golden-dogs/golden-retriever.jpg": {
|
|
115
115
|
"outputVersion": 2,
|
|
116
116
|
"sourceHash": "f797fd880d6c3b112ceb3408f468fbeaf442efc792f935fd6c9954b812fdc838",
|
|
117
117
|
"width": 1600,
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
}
|
|
140
140
|
]
|
|
141
141
|
},
|
|
142
|
-
"toller-puppy.jpg": {
|
|
142
|
+
"images/golden-dogs/toller-puppy.jpg": {
|
|
143
143
|
"outputVersion": 2,
|
|
144
144
|
"sourceHash": "a2a8fbc0d599deb019d45f7b11de98bcbcb4f1fd609e931073161dcb88cbf63f",
|
|
145
145
|
"width": 2576,
|
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
}
|
|
172
172
|
]
|
|
173
173
|
},
|
|
174
|
-
"white-cute-dog.jpg": {
|
|
174
|
+
"images/white-dogs/white-cute-dog.jpg": {
|
|
175
175
|
"outputVersion": 2,
|
|
176
176
|
"sourceHash": "077a06891d97eafb4593cfcaa5c9b04fdb1e3a6206d56acd4ebd3eadb83356bf",
|
|
177
177
|
"width": 1277,
|
|
@@ -195,7 +195,7 @@
|
|
|
195
195
|
}
|
|
196
196
|
]
|
|
197
197
|
},
|
|
198
|
-
"white-puppy-garden.png": {
|
|
198
|
+
"images/white-dogs/white-puppy-garden.png": {
|
|
199
199
|
"outputVersion": 2,
|
|
200
200
|
"sourceHash": "d3ab2ca04fb37dfbf010e7f9f3adf2ba8401553bd1946e3b388cb662eac58ee9",
|
|
201
201
|
"width": 1536,
|
|
@@ -30,26 +30,6 @@ export default {
|
|
|
30
30
|
gallery: 'Images',
|
|
31
31
|
},
|
|
32
32
|
},
|
|
33
|
-
footer: {
|
|
34
|
-
// Omit this value to hide the copyright sentence.
|
|
35
|
-
copyrightMessage: 'Dog images from Wikimedia Commons; see image captions for license details.',
|
|
36
|
-
|
|
37
|
-
// Set enabled to false to hide the build timestamp while keeping its config.
|
|
38
|
-
buildInfo: {
|
|
39
|
-
enabled: true,
|
|
40
|
-
|
|
41
|
-
// Text shown before the formatted build timestamp.
|
|
42
|
-
text: 'Built',
|
|
43
|
-
|
|
44
|
-
// Standard Intl.DateTimeFormat options for the build timestamp.
|
|
45
|
-
dateTimeFormat: {
|
|
46
|
-
locale: 'en-GB',
|
|
47
|
-
timeZone: 'UTC',
|
|
48
|
-
dateStyle: 'short',
|
|
49
|
-
timeStyle: 'short',
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
33
|
github: {
|
|
54
34
|
// Example repository and workflow details used by deploy scripts.
|
|
55
35
|
repo: 'owner/example-site',
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
title: Local Dog Example
|
|
3
3
|
description: A small norna example with free dog images.
|
|
4
4
|
navigation:
|
|
5
|
-
label:
|
|
5
|
+
label: Snoopy´s dog shelter!
|
|
6
6
|
sections:
|
|
7
7
|
summer-dogs:
|
|
8
8
|
visible:
|
|
@@ -12,9 +12,8 @@ sections:
|
|
|
12
12
|
|
|
13
13
|
## Black Dogs {#black-dogs}
|
|
14
14
|
|
|
15
|
-
Black-coated dogs from the local norna development collection. This
|
|
16
|
-
|
|
17
|
-
inspection.
|
|
15
|
+
Black-coated dogs from the local norna development collection. This sentence
|
|
16
|
+
contains **highlighted text** for inline emphasis inspection.
|
|
18
17
|
|
|
19
18
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a
|
|
20
19
|
ante venenatis dapibus posuere velit aliquet.
|
|
@@ -42,7 +41,7 @@ metus. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.
|
|
|
42
41
|
## Summer Dogs {#summer-dogs}
|
|
43
42
|
|
|
44
43
|
This temporary section is visible during August 2026. It is here to demonstrate
|
|
45
|
-
date-controlled sections and
|
|
44
|
+
date-controlled sections and **warm alert text** in the local dog example.
|
|
46
45
|
|
|
47
46
|
Lorem ipsum dolor sit amet.
|
|
48
47
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 104" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">Dog Shelter</title>
|
|
3
|
+
<desc id="desc">A line-art dog house, food bowl and dog beside the words Dog Shelter.</desc>
|
|
4
|
+
<g fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="4">
|
|
5
|
+
<path d="M8 48 39 19l31 29M16 42v43h46V42M30 85V58h18v27"/>
|
|
6
|
+
<path d="M80 69h42l-6 17H86zM78 69c0-6 46-6 46 0"/>
|
|
7
|
+
<path d="M159 42c-3-8-2-17 2-24 6 2 12 6 16 11 5-4 11-7 17-8 3 8 1 16-4 22"/>
|
|
8
|
+
<path d="M158 41c-1 14 7 24 19 24s20-10 19-24M163 66c-5 8-7 15-6 20M191 66c5 8 7 15 6 20"/>
|
|
9
|
+
<circle cx="166" cy="43" r="2" fill="#fff" stroke="none"/>
|
|
10
|
+
<circle cx="186" cy="43" r="2" fill="#fff" stroke="none"/>
|
|
11
|
+
<path d="M177 50c2 2 6 2 8 0M181 47v3"/>
|
|
12
|
+
</g>
|
|
13
|
+
<text x="232" y="63" fill="#fff" font-family="Arial, Helvetica, sans-serif" font-size="29" font-weight="700" letter-spacing="2">DOG SHELTER</text>
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
navigation:
|
|
3
|
+
logo:
|
|
4
|
+
alt: Dog Shelter
|
|
5
|
+
height: 2.6rem
|
|
6
|
+
footer:
|
|
7
|
+
copyrightMessage: Dog images from Wikimedia Commons; see image captions for license details.
|
|
8
|
+
buildInfo:
|
|
9
|
+
enabled: true
|
|
10
|
+
text: Built
|
|
11
|
+
dateTimeFormat:
|
|
12
|
+
locale: en-GB
|
|
13
|
+
timeZone: UTC
|
|
14
|
+
dateStyle: short
|
|
15
|
+
timeStyle: short
|
|
16
|
+
---
|
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
# Active values below are ordinary YAML; this marked comment block is only help text.
|
|
5
5
|
#
|
|
6
6
|
# Available structure:
|
|
7
|
-
# navigation:
|
|
8
|
-
# brand: site-wide brand/home text; defaults to the homepage title
|
|
9
7
|
# layout:
|
|
10
8
|
# density: compact | normal | airy
|
|
11
9
|
# pageWidth: CSS length, e.g. 2048px
|
|
@@ -44,16 +42,10 @@
|
|
|
44
42
|
# spacingBefore: CSS length, e.g. 0.9em
|
|
45
43
|
# spacingAfter: CSS length, e.g. 0.35em
|
|
46
44
|
# presentation:
|
|
47
|
-
#
|
|
48
|
-
#
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
# color: quoted hex color
|
|
52
|
-
# frame:
|
|
53
|
-
# colors: presentation | theme
|
|
54
|
-
# colors:
|
|
55
|
-
# backgroundColor: quoted hex color
|
|
56
|
-
# textColor: quoted hex color
|
|
45
|
+
# palette: dark # Alternatives: light, paper
|
|
46
|
+
# sectionSurfaces:
|
|
47
|
+
# mode: none | cycle
|
|
48
|
+
# sequence: [base, soft, emphasis]
|
|
57
49
|
# norna:end theme-help
|
|
58
50
|
layout:
|
|
59
51
|
density: compact
|
|
@@ -71,9 +63,12 @@ layout:
|
|
|
71
63
|
finalSectionBottom:
|
|
72
64
|
desktop: clamp(1.8rem, 3vw, 2.75rem)
|
|
73
65
|
mobile: 1.65rem
|
|
74
|
-
|
|
75
|
-
desktop:
|
|
76
|
-
mobile:
|
|
66
|
+
headingToBlock:
|
|
67
|
+
desktop: 0.65em
|
|
68
|
+
mobile: 0.6em
|
|
69
|
+
blockGap:
|
|
70
|
+
desktop: 1.25em
|
|
71
|
+
mobile: 1.1em
|
|
77
72
|
imageGap:
|
|
78
73
|
desktop: clamp(1.25rem, 2.8vw, 2rem)
|
|
79
74
|
mobile: 1.8rem
|
|
@@ -100,13 +95,7 @@ typography:
|
|
|
100
95
|
spacingBefore: 0.9em
|
|
101
96
|
spacingAfter: 0.35em
|
|
102
97
|
presentation:
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
highlight:
|
|
107
|
-
color: "#ffd84d"
|
|
108
|
-
alert:
|
|
109
|
-
color: "#ff9a3d"
|
|
110
|
-
frame:
|
|
111
|
-
colors: presentation
|
|
98
|
+
palette: dark # Alternatives: light, paper
|
|
99
|
+
sectionSurfaces:
|
|
100
|
+
mode: cycle
|
|
112
101
|
---
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Norna visual model example
|
|
2
|
+
|
|
3
|
+
This example is a visual test bench for Norna's presentation features.
|
|
4
|
+
|
|
5
|
+
It shows established typography presets and managed media blocks alongside the
|
|
6
|
+
palette and section-surface model. The SVG files are hand-authored local assets
|
|
7
|
+
so the example does not depend on external images.
|
|
8
|
+
|
|
9
|
+
Run it from the repository root with:
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
node bin/norna.mjs --site-dir examples/presentation/site dev:local
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
The site has a home page plus routes for presets, media blocks and surfaces.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"routes/020-media/images/cards/card-carousel.svg": {
|
|
3
|
+
"kind": "static",
|
|
4
|
+
"outputVersion": 2,
|
|
5
|
+
"sourceHash": "1447ec44c3cfe2f9041237dfd8aff42a21b82bc6762b840ab2c22d17b0454f8b",
|
|
6
|
+
"src": "/images/original/routes/020-media/images/cards/card-carousel-1447ec44.svg",
|
|
7
|
+
"width": 1200,
|
|
8
|
+
"height": 700
|
|
9
|
+
},
|
|
10
|
+
"routes/020-media/images/cards/card-stack.svg": {
|
|
11
|
+
"kind": "static",
|
|
12
|
+
"outputVersion": 2,
|
|
13
|
+
"sourceHash": "00e6c2d553b7cb23cc8a13d0fbca72d25a046a76db828faa5de8ccb6b2e4b2ae",
|
|
14
|
+
"src": "/images/original/routes/020-media/images/cards/card-stack-00e6c2d5.svg",
|
|
15
|
+
"width": 1200,
|
|
16
|
+
"height": 700
|
|
17
|
+
},
|
|
18
|
+
"routes/020-media/images/cards/card-surfaces.svg": {
|
|
19
|
+
"kind": "static",
|
|
20
|
+
"outputVersion": 2,
|
|
21
|
+
"sourceHash": "094c43e8bad8f1b8e497d21996f5cf66588f3b4c1ab9ced6dd40a3f67d827fb4",
|
|
22
|
+
"src": "/images/original/routes/020-media/images/cards/card-surfaces-094c43e8.svg",
|
|
23
|
+
"width": 1200,
|
|
24
|
+
"height": 700
|
|
25
|
+
},
|
|
26
|
+
"routes/020-media/images/carousel/carousel-one.svg": {
|
|
27
|
+
"kind": "static",
|
|
28
|
+
"outputVersion": 2,
|
|
29
|
+
"sourceHash": "b2d1e7c0642cd1ec7b36a26da54b58739804b61db9e986fe054eb7fe3c811e88",
|
|
30
|
+
"src": "/images/original/routes/020-media/images/carousel/carousel-one-b2d1e7c0.svg",
|
|
31
|
+
"width": 1200,
|
|
32
|
+
"height": 700
|
|
33
|
+
},
|
|
34
|
+
"routes/020-media/images/carousel/carousel-three.svg": {
|
|
35
|
+
"kind": "static",
|
|
36
|
+
"outputVersion": 2,
|
|
37
|
+
"sourceHash": "08e70e38babec81507497a81dfe0136a7b9993fb885ac06155b346bfc8413cac",
|
|
38
|
+
"src": "/images/original/routes/020-media/images/carousel/carousel-three-08e70e38.svg",
|
|
39
|
+
"width": 1200,
|
|
40
|
+
"height": 700
|
|
41
|
+
},
|
|
42
|
+
"routes/020-media/images/carousel/carousel-two.svg": {
|
|
43
|
+
"kind": "static",
|
|
44
|
+
"outputVersion": 2,
|
|
45
|
+
"sourceHash": "ba65261788ba8cc8dd5162dd0a748919a01aa925f2f8e3f844745e0c54af28be",
|
|
46
|
+
"src": "/images/original/routes/020-media/images/carousel/carousel-two-ba652617.svg",
|
|
47
|
+
"width": 1200,
|
|
48
|
+
"height": 700
|
|
49
|
+
},
|
|
50
|
+
"routes/020-media/images/stack/stack-one.svg": {
|
|
51
|
+
"kind": "static",
|
|
52
|
+
"outputVersion": 2,
|
|
53
|
+
"sourceHash": "c835acc71775886a86829989398b2e498fb2ccedafa465ee03f97dd8f6695c69",
|
|
54
|
+
"src": "/images/original/routes/020-media/images/stack/stack-one-c835acc7.svg",
|
|
55
|
+
"width": 1200,
|
|
56
|
+
"height": 700
|
|
57
|
+
},
|
|
58
|
+
"routes/020-media/images/stack/stack-two.svg": {
|
|
59
|
+
"kind": "static",
|
|
60
|
+
"outputVersion": 2,
|
|
61
|
+
"sourceHash": "83c64b1c1dd3b4745100baf272db7e91921b2e2967a51f0d31a9cd30cf045881",
|
|
62
|
+
"src": "/images/original/routes/020-media/images/stack/stack-two-83c64b1c.svg",
|
|
63
|
+
"width": 1200,
|
|
64
|
+
"height": 700
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const siteUrl = 'http://localhost:4321/';
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
site: {
|
|
5
|
+
url: siteUrl,
|
|
6
|
+
basePath: '/',
|
|
7
|
+
},
|
|
8
|
+
navigation: {
|
|
9
|
+
smoothScroll: {
|
|
10
|
+
enabled: true,
|
|
11
|
+
minimumDurationMs: 2_000,
|
|
12
|
+
maximumDurationMs: 4_000,
|
|
13
|
+
durationPerPixelMs: 0.22,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
locale: {
|
|
17
|
+
lang: 'en',
|
|
18
|
+
labels: {
|
|
19
|
+
skipToContent: 'Skip to content',
|
|
20
|
+
sectionNavigation: 'Sections',
|
|
21
|
+
gallery: 'Images',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
github: {
|
|
25
|
+
repo: 'owner/norna-visual-model-example',
|
|
26
|
+
branch: 'main',
|
|
27
|
+
pagesWorkflow: 'Deploy to GitHub Pages',
|
|
28
|
+
},
|
|
29
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Visual Model
|
|
3
|
+
description: A visual test bench for Norna's established and new presentation features.
|
|
4
|
+
navigation:
|
|
5
|
+
label: Home
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Norna's visual model {#intro}
|
|
9
|
+
|
|
10
|
+
This site is a small test bench for Norna's graphical possibilities. It shows
|
|
11
|
+
the features that have been part of the site model for some time, together with
|
|
12
|
+
the newer palette and section-surface controls.
|
|
13
|
+
|
|
14
|
+
The examples are deliberately ordinary Norna files: a theme chooses the site's
|
|
15
|
+
visual defaults, routes can use their own complete themes, and Markdown blocks
|
|
16
|
+
place managed media in the content flow.
|
|
17
|
+
|
|
18
|
+
## New: palettes and surfaces {#palette}
|
|
19
|
+
|
|
20
|
+
The palette is a small, named choice rather than a collection of unrelated
|
|
21
|
+
colours. The site theme selects one of the built-in palettes:
|
|
22
|
+
|
|
23
|
+
```yaml
|
|
24
|
+
presentation:
|
|
25
|
+
palette: paper
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The palette supplies the page, navigation and frame colours. A site can also
|
|
29
|
+
cycle through base, soft and emphasis section surfaces:
|
|
30
|
+
|
|
31
|
+
```yaml
|
|
32
|
+
presentation:
|
|
33
|
+
sectionSurfaces:
|
|
34
|
+
mode: cycle
|
|
35
|
+
sequence: [base, soft, emphasis]
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
This keeps the visual rhythm consistent without asking each section to invent
|
|
39
|
+
its own colours.
|
|
40
|
+
|
|
41
|
+
## New: explicit section surfaces {#surfaces}
|
|
42
|
+
|
|
43
|
+
This page uses the theme's surface sequence. `palette` is the visual family;
|
|
44
|
+
`sectionSurfaces` chooses a bounded sequence of base, soft and emphasis
|
|
45
|
+
treatments for the page.
|
|
46
|
+
|
|
47
|
+
The result is a restrained change in background and text treatment, while the
|
|
48
|
+
same typography and content model remain in place.
|
|
49
|
+
|
|
50
|
+
## Established features {#established}
|
|
51
|
+
|
|
52
|
+
Typography presets, managed image stacks, carousels and card lists remain the
|
|
53
|
+
main building blocks for shaping a small site. They are shown in detail on the
|
|
54
|
+
routes in this example.
|
|
55
|
+
|
|
56
|
+
The important distinction is that these controls are named and bounded. They
|
|
57
|
+
provide useful visual variation without turning every page into a new template
|
|
58
|
+
or CSS project.
|
|
59
|
+
|
|
60
|
+
## Explore the examples {#next}
|
|
61
|
+
|
|
62
|
+
Read [Presets](/presets/) to compare the four typography presets.
|
|
63
|
+
|
|
64
|
+
Read [Media blocks](/media/) to compare image stacks, carousels and card lists.
|
|
65
|
+
|
|
66
|
+
Read [Surfaces](/surfaces/) for the relationship between palette defaults and
|
|
67
|
+
theme-level surface choices.
|