= html($subpage->title()) ?>
+ tags()->isNotEmpty()): ?> + + += html($subpage->title()) ?>
+ subtitle()->isNotEmpty()): ?> += html($subpage->subtitle()) ?>
+ + tags()->isNotEmpty()): ?> + + +diff --git a/public/assets/css/web.css b/public/assets/css/web.css new file mode 100644 index 0000000..0269c7a --- /dev/null +++ b/public/assets/css/web.css @@ -0,0 +1,1004 @@ +/*/* ═══════════════════════════════════════════════════════════ + narrative-web.css + Style storytelling éditorial — inspiré des grandes enquêtes + journalistiques (NYT, Le Monde, The Guardian) + + ⚠ Ce fichier COMPLÈTE style.css sans l'écraser. + Toutes les règles sont préfixées .nw- ou [data-template="narrative-web"] + ═══════════════════════════════════════════════════════════ */ + +/* ─────────────────────────────────────────── + VARIABLES LOCALES + (surcharge possible via customCss du panel) +─────────────────────────────────────────── */ +:root { +/* --nw-font-display : 'Playfair Display', 'Georgia', 'Times New Roman', serif; + --nw-font-body : 'Source Serif 4', 'Georgia', serif; + --nw-font-ui : 'DM Sans', 'Helvetica Neue', sans-serif;*/ + + --nw-ink : #1a1a18; + --nw-ink-soft : #3d3d38; + --nw-ink-muted : #7a7a72; + --nw-paper : var(--color-panel-bg); + --nw-paper-warm : #f4f1eb; + --nw-rule : #d8d4cc; + --nw-accent : rgb(93, 40, 230); + --nw-accent-dark : #96261e; + --nw-tag-bg : #e9e5dc; + + --nw-max-w : 1280px; + --nw-narrow : 720px; + --nw-sidenav-w : 220px; + + --nw-transition : 0.25s ease; +} + +/* ─────────────────────────────────────────── + BASE BODY (narrative-web uniquement) +─────────────────────────────────────────── */ +/*body[data-template="narrative-web"] { + background-color: var(--nw-paper); + color: var(--nw-ink); + font-family: var(--nw-font-body); + line-height: 1.75; + -webkit-font-smoothing: antialiased; +}*/ + +/* ─────────────────────────────────────────── + NAVIGATION LATÉRALE +─────────────────────────────────────────── */ +.nw-sidenav { + position: fixed; + top: 50%; + right: 2rem; + transform: translateY(-50%); + z-index: 100; + pointer-events: none; +} + +.nw-sidenav__list { + list-style: none; + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.nw-sidenav__item { + pointer-events: all; +} + +.nw-sidenav__link { + display: flex; + align-items: center; + gap: 0.6rem; + text-decoration: none; + color: var(--nw-ink-muted); + transition: color var(--nw-transition); + justify-content: flex-end; +} + +.nw-sidenav__dot { + display: block; + width: 8px; + height: 8px; + border-radius: 50%; + background: currentColor; + opacity: 0.3; + transition: opacity var(--nw-transition), background var(--nw-transition), transform var(--nw-transition); + flex-shrink: 0; + order: 2; +} + +.nw-sidenav__label { + font-family: var(--nw-font-ui); + font-size: 0.72rem; + font-weight: 500; + letter-spacing: 0.04em; + text-transform: uppercase; + opacity: 0; + transform: translateX(6px); + transition: opacity var(--nw-transition), transform var(--nw-transition); + white-space: nowrap; + order: 1; +} + +.nw-sidenav__link:hover .nw-sidenav__label, +.nw-sidenav__link.is-active .nw-sidenav__label { + opacity: 1; + transform: translateX(0); +} + +.nw-sidenav__link:hover .nw-sidenav__dot, +.nw-sidenav__link.is-active .nw-sidenav__dot { + opacity: 1; + background: var(--nw-accent); + transform: scale(1.4); +} + +.nw-sidenav__item--map .nw-sidenav__dot { background: #2980b9; } +.nw-sidenav__item--geoformat .nw-sidenav__dot { background: var(--nw-accent); } + +/* ── Sous-items sidenav (marqueurs) ── */ +.nw-sidenav__sub { + list-style: none; + margin: 0.3rem 0 0; + padding: 0; + display: flex; + flex-direction: column; + gap: 0.25rem; + padding-left: 0; +} + +.nw-sidenav__sub-item { + pointer-events: all; +} + +.nw-sidenav__sub-link { + display: flex; + align-items: center; + gap: 0.5rem; + text-decoration: none; + color: var(--nw-ink-muted); + transition: color var(--nw-transition); + justify-content: flex-end; + opacity: 0.75; +} + +.nw-sidenav__sub-dot { + display: block; + width: 5px; + height: 5px; + border-radius: 50%; + background: #2980b9; + opacity: 0.4; + flex-shrink: 0; + order: 2; + transition: opacity var(--nw-transition), transform var(--nw-transition); +} + +.nw-sidenav__sub-label { + font-family: var(--nw-font-ui); + font-size: 0.65rem; + font-weight: 400; + letter-spacing: 0.03em; + white-space: nowrap; + order: 1; + opacity: 0; + transform: translateX(4px); + transition: opacity var(--nw-transition), transform var(--nw-transition); + max-width: 140px; + overflow: hidden; + text-overflow: ellipsis; +} + +.nw-sidenav__sub-link:hover .nw-sidenav__sub-label, +.nw-sidenav__sub-link.is-active .nw-sidenav__sub-label { + opacity: 1 !important; + transform: translateX(0); +} + +.nw-sidenav__sub-link:hover .nw-sidenav__sub-dot, +.nw-sidenav__sub-link.is-active .nw-sidenav__sub-dot { + opacity: 1 !important; + transform: scale(1.5); + background: var(--nw-accent); +} + +/* Afficher les labels sub quand le parent est actif */ +.nw-sidenav__item.is-parent-active .nw-sidenav__sub-label { + opacity: 0.7; + transform: translateX(0); +} + +@media (max-width: 900px) { + .nw-sidenav { display: none; } +} + +/* ─────────────────────────────────────────── + HERO NARRATIVE +─────────────────────────────────────────── */ +.nw-hero { + position: relative; + min-height: 92vh; + display: flex; + align-items: flex-end; + overflow: hidden; + background: var(--nw-ink); +} + +.nw-hero__bg { + position: absolute; + inset: 0; + background-size: cover; + background-position: center; + filter: grayscale(20%); + transform: scale(1.04); + transition: transform 8s ease-out; +} + +.nw-hero:hover .nw-hero__bg { + transform: scale(1); +} + +.nw-hero__overlay { + position: absolute; + inset: 0; + background: linear-gradient( + to bottom, + rgba(26,26,24,0.1) 0%, + rgba(26,26,24,0.4) 50%, + rgba(26,26,24,0.88) 100% + ); +} + +.nw-hero__content { + position: relative; + z-index: 2; + padding: 6rem 3rem 4rem; + max-width: var(--nw-narrow); + margin: 0 auto; + width: 100%; +} + +.nw-hero__title { + font-family: var(--nw-font-display); + font-size: clamp(2.4rem, 5vw, 4.5rem); + font-weight: 800; + color: #fff; + line-height: 1.12; + letter-spacing: -0.01em; + margin: 0 0 1.25rem; + text-shadow: 0 2px 20px rgba(0,0,0,0.3); +} + +.nw-hero__author { + font-family: var(--nw-font-ui); + font-size: 0.875rem; + color: rgba(255,255,255,0.75); + letter-spacing: 0.06em; + text-transform: uppercase; + margin: 0; +} + +.nw-hero__author span { + color: #fff; + font-weight: 600; +} + +/* Hero sans image de couverture */ +.nw-hero:not(:has(.nw-hero__bg)) { + background: var(--nw-ink); + min-height: 55vh; +} + +/* ─────────────────────────────────────────── + INTRODUCTION +─────────────────────────────────────────── */ +.nw-introduction { + padding: 4rem 1rem; + background: var(--nw-paper); +} + +.nw-introduction__body { + font-size: 1.25rem; + line-height: 1.8; + color: var(--nw-ink-soft); + font-weight: 300; + font-style: italic; + border-left: 3px solid var(--nw-accent); + padding-left: 2rem; +} + +.nw-introduction__body p:first-child::first-letter { + font-family: var(--nw-font-display); + font-size: 4.5rem; + font-weight: 800; + line-height: 0.8; + float: left; + margin: 0.05em 0.12em 0 0; + color: var(--nw-accent); +} + +/* ─────────────────────────────────────────── + DIVIDER +─────────────────────────────────────────── */ +.nw-divider { + text-align: center; + padding: 1rem 0; + overflow: hidden; +} + +.nw-divider span { + display: inline-block; + position: relative; + width: 4rem; + height: 2px; + background: var(--nw-accent); +} + +.nw-divider span::before, +.nw-divider span::after { + content: ''; + position: absolute; + top: 50%; + transform: translateY(-50%); + width: 40vw; + height: 1px; + background: var(--nw-rule); +} + +.nw-divider span::before { right: calc(100% + 1rem); } +.nw-divider span::after { left: calc(100% + 1rem); } + +/* ─────────────────────────────────────────── + CONTAINERS +─────────────────────────────────────────── */ +.nw-container { + max-width: var(--nw-max-w); + margin: 0 auto; + padding: 0 2rem; +} + +.nw-container--narrow { + max-width: var(--nw-narrow); +} + +/* ─────────────────────────────────────────── + SECTIONS GÉNÉRIQUES +─────────────────────────────────────────── */ +.nw-section { + padding: 5rem 0; + border-bottom: 1px solid var(--nw-rule); +} + +.nw-section:last-child { + border-bottom: none; +} + +.nw-section__header { + margin-bottom: 2.5rem; +} + +.nw-section__title { + font-family: var(--nw-font-display); + font-size: clamp(1.8rem, 3vw, 2.8rem); + font-weight: 700; + color: var(--nw-ink); + line-height: 1.2; + margin: 0 0 1rem; +} + +/* ─────────────────────────────────────────── + TAGS +─────────────────────────────────────────── */ +.nw-tags { + display: flex; + flex-wrap: wrap; + gap: 0.4rem; + margin-top: 0.75rem; +} + +.nw-tag { + font-family: var(--nw-font-ui); + font-size: 0.7rem; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + background: var(--nw-tag-bg); + color: var(--nw-ink-soft); + padding: 0.25rem 0.65rem; + border-radius: 2px; +} + +/* ─────────────────────────────────────────── + PROSE (writer fields) +─────────────────────────────────────────── */ +.nw-prose { + font-size: 1.1rem; + line-height: 1.8; + color: var(--nw-ink-soft); + margin-bottom: 2rem; +} + +.nw-prose p { margin: 0 0 1.25em; } + +.nw-chapeau { + font-size: 1.2rem; + line-height: 1.75; + color: var(--nw-ink-soft); + font-weight: 400; + padding: 2rem 0; + border-bottom: 1px solid var(--nw-rule); + margin-bottom: 2rem; +} + +/* ─────────────────────────────────────────── + SECTION MAP +─────────────────────────────────────────── */ +.nw-section--map { + background: var(--nw-paper-warm); +} + +.nw-section--map .nw-container { + margin-bottom: 2rem; +} + +.nw-map-wrap { + position: relative; + width: 100%; + height: clamp(400px, 55vh, 700px); + margin: 2rem 0; + border-top: 3px solid var(--nw-accent); + overflow: hidden; +} + +.nw-map { + width: 100%; + height: 100%; +} + +/* Popup MapLibre */ +.maplibregl-popup-content { + font-family: var(--nw-font-body) !important; + font-size: 0.95rem !important; + line-height: 1.6 !important; + color: var(--nw-ink) !important; + padding: 0 !important; + border-radius: 4px !important; + box-shadow: 0 4px 24px rgba(0,0,0,0.18) !important; + overflow: hidden; + max-width: 280px; +} + +.maplibregl-popup-close-button { + color: #fff !important; + font-size: 1.1rem !important; + padding: 0.25rem 0.5rem !important; + z-index: 2; + text-shadow: 0 1px 3px rgba(0,0,0,0.5); +} + +/* Image cover dans la popup */ +.nw-popup-cover { + width: 100%; + height: 140px; + overflow: hidden; + position: relative; +} + +.nw-popup-cover img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; + filter: brightness(0.92); + transition: filter 0.3s ease; +} + +.nw-popup-cover:hover img { + filter: brightness(1); +} + +.nw-popup-body { + padding: 0.85rem 1rem 1rem; +} + +.nw-popup-title { + display: block; + font-family: var(--nw-font-display); + font-size: 1rem; + font-weight: 700; + margin-bottom: 0.5rem; + color: var(--nw-ink); + line-height: 1.3; +} + +/* Lien ancre vers le texte du marqueur */ +.nw-popup-anchor { + display: inline-flex; + align-items: center; + gap: 0.3rem; + font-family: var(--nw-font-ui); + font-size: 0.72rem; + font-weight: 600; + letter-spacing: 0.06em; + text-transform: uppercase; + color: var(--nw-accent); + text-decoration: none; + border-bottom: 1px solid transparent; + transition: border-color var(--nw-transition); + padding-bottom: 1px; +} + +.nw-popup-anchor:hover { + border-bottom-color: var(--nw-accent); +} + +/* Icône marqueur custom */ +.nw-marker-icon { + background-size: cover; + background-position: center; + border-radius: 50%; + box-shadow: 0 2px 8px rgba(0,0,0,0.3); + cursor: pointer; +} + +/* ─────────────────────────────────────────── + LISTE DES MARQUEURS (sous la carte) +─────────────────────────────────────────── */ +.nw-map-marker-list { + padding-top: 4rem; + padding-bottom: 2rem; +} + +.nw-map-marker { + display: grid; + grid-template-columns: 1fr; + gap: 0; + padding: 3.5rem 0; + border-bottom: 1px solid var(--nw-rule); + position: relative; + scroll-margin-top: 2rem; +} + +/* Paires : alterner cover gauche / droite */ +.nw-map-marker:nth-child(odd) { + grid-template-columns: 380px 1fr; +} + +.nw-map-marker:nth-child(even) { + grid-template-columns: 1fr 380px; +} + +.nw-map-marker:nth-child(even) .nw-map-marker__cover { + order: 2; +} + +.nw-map-marker:nth-child(even) .nw-map-marker__body { + order: 1; + padding-right: 3rem; + padding-left: 0; +} + +.nw-map-marker:last-child { + border-bottom: none; +} + +/* Cover du marqueur */ +.nw-map-marker__cover { + position: relative; + overflow: hidden; + background: var(--nw-ink); + max-height: 420px; +} + +.nw-map-marker__cover img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; + filter: brightness(0.88) grayscale(10%); + transition: filter 0.5s ease, transform 0.6s ease; +} + +.nw-map-marker:hover .nw-map-marker__cover img { + filter: brightness(1) grayscale(0%); + transform: scale(1.02); +} + +/* Numéro sur la cover */ +.nw-map-marker__num { + position: absolute; + top: 1.25rem; + left: 1.25rem; + font-family: var(--nw-font-display); + font-size: 3rem; + font-weight: 800; + color: rgba(255,255,255,0.9); + line-height: 1; + text-shadow: 0 2px 12px rgba(0,0,0,0.5); + z-index: 2; + pointer-events: none; +} + +/* Numéro sans cover */ +.nw-map-marker__num--no-cover { + position: static; + display: block; + font-family: var(--nw-font-display); + font-size: 4rem; + font-weight: 800; + color: var(--nw-rule); + line-height: 1; + margin-bottom: 1rem; +} + +/* Corps texte du marqueur */ +.nw-map-marker__body { + padding: 2rem 0 2rem 3rem; + display: flex; + flex-direction: column; + justify-content: center; +} + +.nw-map-marker__title { + font-family: var(--nw-font-display); + font-size: clamp(1.4rem, 2.2vw, 2rem); + font-weight: 700; + color: var(--nw-ink); + line-height: 1.2; + margin: 0 0 1.5rem; + padding-bottom: 1rem; + border-bottom: 2px solid var(--nw-ink); +} + +/* Ligne décorative avant le titre (numéro + trait) */ +.nw-map-marker__title::before { + content: attr(data-num); +} + +/* Contenu blocks */ +.nw-map-marker__content { + font-size: 1.05rem; + line-height: 1.85; + color: var(--nw-ink-soft); +} + +.nw-map-marker__content p { margin: 0 0 1.1em; } + +.nw-map-marker__content h2, +.nw-map-marker__content h3 { + font-family: var(--nw-font-display); + color: var(--nw-ink); + margin: 1.75rem 0 0.5rem; +} + +.nw-map-marker__content h2 { font-size: 1.3rem; } +.nw-map-marker__content h3 { font-size: 1.1rem; } + +.nw-map-marker__content ul, +.nw-map-marker__content ol { + padding-left: 1.4rem; + margin-bottom: 1.1em; +} + +.nw-map-marker__content blockquote { + margin: 1.75rem 0; + padding: 1rem 1.5rem; + border-left: 3px solid var(--nw-accent); + background: var(--nw-paper-warm); + font-style: italic; + font-size: 1.05rem; +} + +.nw-map-marker__content figure { + margin: 1.5rem 0; +} + +.nw-map-marker__content figure img { + width: 100%; + height: auto; + display: block; +} + +.nw-map-marker__content figcaption { + font-family: var(--nw-font-ui); + font-size: 0.78rem; + color: var(--nw-ink-muted); + font-style: italic; + padding-top: 0.4rem; +} + +/* Responsive marqueurs */ +@media (max-width: 900px) { + .nw-map-marker:nth-child(odd), + .nw-map-marker:nth-child(even) { + grid-template-columns: 1fr; + } + .nw-map-marker:nth-child(even) .nw-map-marker__cover { order: 0; } + .nw-map-marker:nth-child(even) .nw-map-marker__body { order: 1; padding-right: 0; } + .nw-map-marker__cover { max-height: 280px; } + .nw-map-marker__body { padding: 1.5rem 0; } +} + +/* ─────────────────────────────────────────── + FICHIERS +─────────────────────────────────────────── */ +.nw-files { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + padding-top: 1.5rem; +} + +.nw-file { + display: inline-flex; + align-items: center; + gap: 0.4rem; + font-family: var(--nw-font-ui); + font-size: 0.8rem; + font-weight: 500; + color: var(--nw-ink-soft); + border: 1px solid var(--nw-rule); + padding: 0.35rem 0.75rem; + text-decoration: none; + border-radius: 2px; + transition: border-color var(--nw-transition), color var(--nw-transition); +} + +.nw-file:hover { + border-color: var(--nw-accent); + color: var(--nw-accent); +} + +.nw-file__icon { + font-size: 0.9rem; +} + +/* ─────────────────────────────────────────── + SECTION GÉOFORMAT +─────────────────────────────────────────── */ +.nw-section--geoformat { + padding: 0 0 5rem; +} + +.nw-geoformat-hero { + position: relative; + min-height: 50vh; + display: flex; + align-items: flex-end; + overflow: hidden; + background: #2c2c28; + margin-bottom: 3rem; +} + +.nw-geoformat-hero__bg { + position: absolute; + inset: 0; + background-size: cover; + background-position: center; + filter: grayscale(30%) brightness(0.7); +} + +.nw-geoformat-hero__overlay { + position: absolute; + inset: 0; + background: linear-gradient(to bottom, transparent 30%, rgba(26,26,24,0.82) 100%); +} + +.nw-geoformat-hero__content { + position: relative; + z-index: 2; + padding: 3rem 2rem; +} + +.nw-geoformat-hero__title { + font-family: var(--nw-font-display); + font-size: clamp(1.6rem, 3.5vw, 3rem); + font-weight: 700; + color: #fff; + line-height: 1.15; + margin: 0 0 0.5rem; +} + +.nw-geoformat-hero__subtitle { + font-family: var(--nw-font-body); + font-size: 1.05rem; + color: rgba(255,255,255,0.8); + font-style: italic; + margin: 0 0 0.75rem; +} + +/* Géoformat sans cover */ +.nw-geoformat-hero:not(:has(.nw-geoformat-hero__bg)) { + min-height: 20vh; + background: var(--nw-ink); +} + +/* ─────────────────────────────────────────── + NAVIGATION CHAPITRES +─────────────────────────────────────────── */ +.nw-chap-nav { + display: flex; + flex-wrap: wrap; + gap: 0.75rem; + padding: 1.5rem 0; + border-top: 2px solid var(--nw-ink); + border-bottom: 1px solid var(--nw-rule); + margin-bottom: 3rem; +} + +.nw-chap-nav__link { + display: flex; + align-items: center; + gap: 0.5rem; + text-decoration: none; + color: var(--nw-ink-soft); + font-family: var(--nw-font-ui); + font-size: 0.82rem; + font-weight: 500; + transition: color var(--nw-transition); + padding: 0.25rem 0; +} + +.nw-chap-nav__link:hover { + color: var(--nw-accent); +} + +.nw-chap-nav__num { + display: inline-flex; + align-items: center; + justify-content: center; + width: 1.5rem; + height: 1.5rem; + background: var(--nw-ink); + color: var(--nw-paper); + font-size: 0.7rem; + font-weight: 700; + border-radius: 50%; + flex-shrink: 0; + transition: background var(--nw-transition); +} + +.nw-chap-nav__link:hover .nw-chap-nav__num { + background: var(--nw-accent); +} + +/* ─────────────────────────────────────────── + CHAPITRES +─────────────────────────────────────────── */ +.nw-chapitre { + padding: 3.5rem 0; + border-bottom: 1px solid var(--nw-rule); +} + +.nw-chapitre:last-child { + border-bottom: none; +} + +.nw-chapitre__header { + margin-bottom: 2rem; +} + +.nw-chapitre__num { + font-family: var(--nw-font-ui); + font-size: 0.72rem; + font-weight: 600; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--nw-accent); + display: block; + margin-bottom: 0.5rem; +} + +.nw-chapitre__title { + font-family: var(--nw-font-display); + font-size: clamp(1.4rem, 2.5vw, 2rem); + font-weight: 700; + color: var(--nw-ink); + line-height: 1.25; + margin: 0; +} + +/* Corps des chapitres (blocks Kirby) */ +.nw-chapitre__body { + font-size: 1.05rem; + line-height: 1.85; + color: var(--nw-ink-soft); +} + +.nw-chapitre__body h2, +.nw-chapitre__body h3 { + font-family: var(--nw-font-display); + color: var(--nw-ink); + margin: 2.5rem 0 0.75rem; + line-height: 1.25; +} + +.nw-chapitre__body h2 { font-size: 1.5rem; } +.nw-chapitre__body h3 { font-size: 1.2rem; } + +.nw-chapitre__body p { + margin: 0 0 1.25em; +} + +.nw-chapitre__body ul, +.nw-chapitre__body ol { + padding-left: 1.5rem; + margin: 0 0 1.25em; +} + +.nw-chapitre__body li { margin-bottom: 0.4em; } + +.nw-chapitre__body blockquote { + margin: 2.5rem 0; + padding: 1.5rem 2rem; + border-left: 4px solid var(--nw-accent); + background: var(--nw-paper-warm); + font-style: italic; + font-size: 1.15rem; + color: var(--nw-ink); +} + +.nw-chapitre__body blockquote p { margin: 0; } + +.nw-chapitre__body figure { + margin: 2.5rem -1rem; +} + +.nw-chapitre__body figure img { + width: 100%; + height: auto; + display: block; +} + +.nw-chapitre__body figcaption { + font-family: var(--nw-font-ui); + font-size: 0.8rem; + color: var(--nw-ink-muted); + padding: 0.5rem 1rem 0; + font-style: italic; +} + +.nw-chapitre__body .video-block, +.nw-chapitre__body .map-block { + margin: 2.5rem 0; +} + +/* Block map dans un chapitre */ +.nw-chapitre__body .map-block iframe, +.nw-chapitre__body .map-block > div { + width: 100%; + height: 400px; + border: none; + display: block; +} + +/* ─────────────────────────────────────────── + ANIMATIONS D'ENTRÉE +─────────────────────────────────────────── */ +/*@keyframes nw-fadeUp { + from { opacity: 0; transform: translateY(20px); } + to { opacity: 1; transform: translateY(0); } +} + +.nw-hero__content { + animation: nw-fadeUp 0.9s ease 0.15s both; +} + +.nw-section { + opacity: 0; + transform: translateY(16px); + transition: opacity 0.6s ease, transform 0.6s ease; +} + +.nw-section.is-visible { + opacity: 1; + transform: translateY(0); +}*/ + +/* ─────────────────────────────────────────── + RESPONSIVE +─────────────────────────────────────────── */ +@media (max-width: 768px) { + .nw-hero__content { padding: 4rem 1.25rem 2.5rem; } + .nw-container { padding: 0 1.25rem; } + .nw-map-wrap { height: 320px; } + .nw-chapitre__body figure { margin: 1.5rem 0; } + .nw-geoformat-hero { min-height: 35vh; } + .nw-geoformat-hero__content { padding: 2rem 1.25rem; } + .nw-chap-nav { flex-direction: column; } +} + +@media (max-width: 480px) { + .nw-introduction__body { padding-left: 1rem; font-size: 1rem; } + .nw-section { padding: 3rem 0; } +} + +/* ─────────────────────────────────────────── + INTERSECTION OBSERVER (sections visibles) +─────────────────────────────────────────── */ +/* Le JS d'en bas de page gère les classes is-visible */ + diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/img_1399-e1763646882111.jpg b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/img_1399-e1763646882111.jpg new file mode 100644 index 0000000..287ad6e Binary files /dev/null and b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/img_1399-e1763646882111.jpg differ diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/img_1399-e1763646882111.jpg.txt b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/img_1399-e1763646882111.jpg.txt new file mode 100644 index 0000000..5e60673 --- /dev/null +++ b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/img_1399-e1763646882111.jpg.txt @@ -0,0 +1,5 @@ +Uuid: 0ofsryvoc2wwnnqr + +---- + +Template: blocks/image \ No newline at end of file diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/img_1404-1152x1536.png b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/img_1404-1152x1536.png new file mode 100644 index 0000000..a4e1fc4 Binary files /dev/null and b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/img_1404-1152x1536.png differ diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/img_1404-1152x1536.png.txt b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/img_1404-1152x1536.png.txt new file mode 100644 index 0000000..57c7d88 --- /dev/null +++ b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/img_1404-1152x1536.png.txt @@ -0,0 +1,5 @@ +Uuid: kjb9tgal4d7m95mt + +---- + +Template: blocks/image \ No newline at end of file diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/marker.txt b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/marker.txt new file mode 100644 index 0000000..0ec9470 --- /dev/null +++ b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/1_marqueur-1/marker.txt @@ -0,0 +1,29 @@ +Title: Maison + +---- + +Cover: - file://0ofsryvoc2wwnnqr + +---- + +Text: [{"content":{"location":"kirby","image":["file://0ofsryvoc2wwnnqr"],"src":"","alt":"","caption":"Mon appartement","link":"","width":"","position":""},"id":"bf74d3e0-3fff-4ef6-a1bc-ba7605e67a74","isHidden":false,"type":"image"},{"content":{"text":"
Il fait chaud, la luminosité est chaleureuse, et l'odeur apaisante. Un chat est assis sur la table basse du salon, un autre sur le meuble télé, un dort sur le canapé, et un autre semble se diriger vers la chambre. Des toiles et des posters recouvrent les murs, et de la musique jaillit des quatre coins de la pièce. Je me sens bien ici, car je fais en sorte que ce soit le cas. Mais pourtant, depuis quelques jours, j'ai du mal à rester dans mon salon, dans ma cuisine ou même dans ma chambre. Même mon balcon devient étouffant. Il y a soit trop de silence chez moi, soit trop de bruit. Mon salon semble soit trop rangé minutieusement, soit trop en désordre. Je n'ai plus envie de rester ici, et je n'y arrive tout simplement plus. Mais je n'ai pas non plus envie d'en sortir. Alors je mets de la musique pour casser ce lourd silence, mais en même temps je change de musique toutes les secondes, car aucune ne me convient. Cette dualité mentale m'épuise et m'empêche de réfléchir, parfois même de respirer. Alors en ce moment je doute de tout. Tout me semble terne, je n'ai plus d'inspiration et je n'arrive plus a peindre. Je suis bloquée. Et plus rien ne me donne envie. J'ai mal partout, mon dos est bloqué, je suis constamment recroquevillée sur moi-même, et j'ai parfois l'impression que mes jambes ne sont plus capables de me porter.
Un de mes chats se réveille doucement de sa sieste : Fely. C'est mon chat tout gris. Le plus gourmand des quatre. Alors forcement, s'il se réveille de sa sieste c'est uniquement pour aller manger. Mais voilà que je l'entends miauler malgré la musique qui se fait retentir chez moi. Ce qui vient balayer mes pensées. Il n'y a plus de croquettes dans les gamelles, et, pire encore, plus de croquettes dans le paquet. C'est une excuse parfaite pour enfin sortir de chez moi, et pour ne penser qu'à une chose : faire les courses.
"},"id":"42deaa16-dcd1-4327-a4b3-875a2c61d47b","isHidden":false,"type":"text"},{"content":{"location":"kirby","image":["file://kjb9tgal4d7m95mt"],"src":"","alt":"","caption":"Fely sur mon canapé","link":"","width":"","position":""},"id":"ab6104a9-6c93-4d72-9ff9-3eb75476cf94","isHidden":false,"type":"image"}] + +---- + +Latitude: 48.850647669811 + +---- + +Longitude: 2.3252579641452 + +---- + +Markericon: + +---- + +Markericonsize: 40 + +---- + +Uuid: mkl0rcgmk2va5v2p \ No newline at end of file diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_0848-885x1024.jpg b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_0848-885x1024.jpg new file mode 100644 index 0000000..75933c6 Binary files /dev/null and b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_0848-885x1024.jpg differ diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_0848-885x1024.jpg.txt b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_0848-885x1024.jpg.txt new file mode 100644 index 0000000..c416a19 --- /dev/null +++ b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_0848-885x1024.jpg.txt @@ -0,0 +1,5 @@ +Uuid: ugt8nkibhgeaxws8 + +---- + +Template: blocks/image \ No newline at end of file diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_1400.png b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_1400.png new file mode 100644 index 0000000..970b8c7 Binary files /dev/null and b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_1400.png differ diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_1400.png.txt b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_1400.png.txt new file mode 100644 index 0000000..e265abd --- /dev/null +++ b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_1400.png.txt @@ -0,0 +1 @@ +Uuid: nrzg8aiibnsxecfl \ No newline at end of file diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_1419-scaled.jpeg b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_1419-scaled.jpeg new file mode 100644 index 0000000..540a5de Binary files /dev/null and b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_1419-scaled.jpeg differ diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_1419-scaled.jpeg.txt b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_1419-scaled.jpeg.txt new file mode 100644 index 0000000..4a8fbba --- /dev/null +++ b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/img_1419-scaled.jpeg.txt @@ -0,0 +1,5 @@ +Uuid: v3cgqqjcu5xi0bef + +---- + +Template: blocks/image \ No newline at end of file diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/marker.txt b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/marker.txt new file mode 100644 index 0000000..0332339 --- /dev/null +++ b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/2_marqueur-2/marker.txt @@ -0,0 +1,29 @@ +Title: Mes premiers pas + +---- + +Cover: - file://nrzg8aiibnsxecfl + +---- + +Text: [{"content":{"location":"kirby","image":["file://ugt8nkibhgeaxws8"],"src":"","alt":"","caption":"Vue de la rue","link":"","width":"","position":""},"id":"480e0e09-5554-420e-b058-ea82e3985a6c","isHidden":false,"type":"image"},{"content":{"text":"J'ai enfilé un pull un peu au hasard, mes baskets aux pieds, et mes écouteurs diffusent mon son du moment : Rue de Sèvres de Dinos. Me voilà en route vers le supermarché le plus proche. La rue semble silencieuse à côté de ce qu'il se passe dans ma tête. Même en me trouvant à l'extérieur, je me sens bloquée et j'ai de nouveau l'impression d'étouffer. Je me sens coincée dans ma vie. Plus rien ne me fait vibrer. Même cette rue que j'apprécie tant, à fini par me blaser. Je crois que j'attends quelque chose, un signe, un événement pour avoir un renouveau d'inspiration. J'essaie de me concentrer uniquement sur le chemin et sur ma liste de courses, mais ces pensées ne cessent de revenir. Pourquoi est-ce que je n'arrive plus à peindre ? Pourquoi est-ce que cette activité qui me faisait du bien autrefois devient un réel calvaire ? Pourquoi est-ce que même mon propre appartement ne me convient plus ? Pourquoi ? Pourquoi ? Pourquoi ?!
Une pause. Il me faut une pause.
Je vais aller m'asseoir sur ce banc, dans ce parc dans lequel je n'ai pas mis les pieds depuis des années.
"},"id":"8d7cf47a-20c4-4a90-9b91-fc470b67fc09","isHidden":false,"type":"text"}] + +---- + +Latitude: 48.850268819336 + +---- + +Longitude: 2.3242447746227 + +---- + +Markericon: + +---- + +Markericonsize: 40 + +---- + +Uuid: ttylgpb9rz43bncb \ No newline at end of file diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1388-2048x1431.jpg b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1388-2048x1431.jpg new file mode 100644 index 0000000..f034f39 Binary files /dev/null and b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1388-2048x1431.jpg differ diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1388-2048x1431.jpg.txt b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1388-2048x1431.jpg.txt new file mode 100644 index 0000000..f327aa6 --- /dev/null +++ b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1388-2048x1431.jpg.txt @@ -0,0 +1,5 @@ +Uuid: ublkpzmpvyfnraw8 + +---- + +Template: blocks/image \ No newline at end of file diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1389.jpeg b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1389.jpeg new file mode 100644 index 0000000..1a2c854 Binary files /dev/null and b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1389.jpeg differ diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1389.jpeg.txt b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1389.jpeg.txt new file mode 100644 index 0000000..7f46bf3 --- /dev/null +++ b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1389.jpeg.txt @@ -0,0 +1,5 @@ +Uuid: yk4i3gznft3k8mcs + +---- + +Template: blocks/image \ No newline at end of file diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1397.jpg b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1397.jpg new file mode 100644 index 0000000..ef1e4b6 Binary files /dev/null and b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1397.jpg differ diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1397.jpg.txt b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1397.jpg.txt new file mode 100644 index 0000000..b1dc19b --- /dev/null +++ b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/img_1397.jpg.txt @@ -0,0 +1 @@ +Uuid: ih9crswtmcuvhnlr \ No newline at end of file diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/marker.txt b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/marker.txt new file mode 100644 index 0000000..7829b29 --- /dev/null +++ b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/3_marqueur-3/marker.txt @@ -0,0 +1,29 @@ +Title: Le banc du parc + +---- + +Cover: - file://ih9crswtmcuvhnlr + +---- + +Text: [{"content":{"location":"kirby","image":["file://ublkpzmpvyfnraw8"],"src":"","alt":"","caption":"Assise sur le banc dans la charmille","link":"","width":"","position":""},"id":"2747a850-f19f-44fe-a017-bf3f9ba4a9e9","isHidden":false,"type":"image"},{"content":{"text":"Je suis assise, et j'ai retiré mes écouteurs. Je suis sur ce banc, dans cette charmille. Je ne savais pas qu'il y avait autant d'oiseaux dans ce parc, et qu'on pouvait si bien les entendre. Ce son apaise un peu mes pensées. Et ce lieu est tellement réconfortant. Je me sens enveloppée dans ces feuilles, j'ai l'étrange impression qu'elles prennent soin de moi. Je me sens portée par ces dernières. Comme si elles recouvraient tout mon corps pour me soigner. Tout doucement, l'idée que cela puisse se faire réellement, commence a se former. Je les imagine une à une se coller contre moi et me créer une deuxième peau. Certaines pourraient être jaunâtres, d'autres avec des reflets rouges, certaines même pourraient avoir la même couleur que ma peau. Et alors toutes les feuilles de la charmille se décolleraient pour ne former qu'un. Rien qu’en y pensant, je me sens rassurée et protégée.
"},"id":"0dc64c8d-b490-4ae9-9db8-ee2bd6e5ec73","isHidden":false,"type":"text"},{"content":{"location":"kirby","image":["file://yk4i3gznft3k8mcs"],"src":"","alt":"","caption":"Dans mon imagination","link":"","width":"","position":""},"id":"41801548-58df-4b9f-9e5f-fccfc300d714","isHidden":false,"type":"image"},{"content":{"text":"Mais c'est le bruit agaçant d'un gyrophare de police qui me ramène à la raison. En une fraction de seconde, cet état de bien-être a quitté mon corps. Je me sentais pourtant si bien... C'était ce sentiment que je ne retrouvais plus. J'étais enfin apaisée.
Il faut que je me reconcentre sur mon objectif premier : faire les courses.
"},"id":"eaf743f3-75da-4aab-84ac-3a7d89c88d59","isHidden":false,"type":"text"}] + +---- + +Latitude: 48.85065574496 + +---- + +Longitude: 2.3214011237332 + +---- + +Markericon: + +---- + +Markericonsize: 40 + +---- + +Uuid: xne8cgpoal5t9fkn \ No newline at end of file diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/map-static.png b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/map-static.png new file mode 100644 index 0000000..fbe9577 Binary files /dev/null and b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/map-static.png differ diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/map-static.png.txt b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/map-static.png.txt new file mode 100644 index 0000000..4719404 --- /dev/null +++ b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/map-static.png.txt @@ -0,0 +1 @@ +Uuid: tt7c6mvdavwxrx6r \ No newline at end of file diff --git a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/map.txt b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/map.txt index 3dfc457..f4e194d 100644 --- a/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/map.txt +++ b/public/content/1_cohesion-des-mondes/4_sur-le-chemin-de-la-recolte/1_le-trajet-des-courses/map.txt @@ -2,10 +2,6 @@ Title: Le trajet des courses ---- -Author: - ----- - Tags: chemin, paris, Rue de Sèvres ---- @@ -14,4 +10,19 @@ Text:Dans le 7ème arrondissement, à l'arrêt de métro Saint-Placide, se t ---- +Mapdata: + +background: + type: osm +center: + lat: 48.850072183852575 + lon: 2.32508823039484 +zoom: 16.154464167854993 + +---- + +Author: + +---- + Uuid: qdofat9jfhj50hqx \ No newline at end of file diff --git a/public/content/1_cohesion-des-mondes/5_test-avec-geoformat/narrative.txt b/public/content/1_cohesion-des-mondes/5_test-avec-geoformat/narrative.txt index 862e5b5..442e9a2 100644 --- a/public/content/1_cohesion-des-mondes/5_test-avec-geoformat/narrative.txt +++ b/public/content/1_cohesion-des-mondes/5_test-avec-geoformat/narrative.txt @@ -25,8 +25,8 @@ Customcss: body { font-family: "DM Sans", sans-serif; text-align: left; - color: rgb(190, 9, 9); - background: blue; + color: black; + background: transparent; } p { diff --git a/public/site/blueprints/pages/marker.yml b/public/site/blueprints/pages/marker.yml index 8097fb5..1777ec5 100644 --- a/public/site/blueprints/pages/marker.yml +++ b/public/site/blueprints/pages/marker.yml @@ -11,7 +11,11 @@ tabs: fields: type: fields fields: - content: + cover: + label: Image de couverture + type: files + multiple: false + text: label: Contenu type: blocks fieldsets: diff --git a/public/site/config/config.php b/public/site/config/config.php new file mode 100644 index 0000000..eb0610c --- /dev/null +++ b/public/site/config/config.php @@ -0,0 +1,46 @@ + true, + 'routes' => [ + [ + 'pattern' => '(:all)/web', + 'action' => function ($path) { + + $realPage = page($path); + + if (!$realPage) { + return false; + } + + return new Page([ + 'slug' => $realPage->slug() . '-web', + 'template' => 'narrative-web', + // 'content' => $realPage->content()->toArray(), + 'content' => array_merge( + $realPage->content()->toArray(), + ['originalUri' => $realPage->uri()] + ), + ]); + } + ] + ] + // [ + // 'pattern' => '(:all)/web', + // 'method' => 'GET', + // 'before' => true, + // 'action' => function (string $path) { + + // $page = kirby()->page($path); + + // if (!$page) { + // return false; + // } + + // return $page->render([], 'narrative-web'); + // } + // ] + // ] +]; \ No newline at end of file diff --git a/public/site/templates/narrative-web.php b/public/site/templates/narrative-web.php new file mode 100644 index 0000000..1a4af05 --- /dev/null +++ b/public/site/templates/narrative-web.php @@ -0,0 +1,485 @@ + geoformat > chapitre / map > marker + */ + +// Collect all subpages for lateral navigation +$original = page($page->originalUri()); +$subpages = $original->children()->listed(); +$navItems = []; + +foreach ($subpages as $subpage) { + $item = [ + 'id' => $subpage->uid(), + 'title' => $subpage->title()->value(), + 'template' => $subpage->intendedTemplate()->name(), + 'children' => [], + ]; + // Pour les cartes : inclure les marqueurs comme sous-items de navigation + if ($subpage->intendedTemplate()->name() === 'map') { + foreach ($subpage->children()->listed()->filterBy('intendedTemplate', 'marker') as $mk) { + $item['children'][] = [ + 'id' => $mk->uid(), + 'title' => $mk->title()->value(), + ]; + } + } + $navItems[] = $item; +} +?> + + +
+ + += html($subpage->subtitle()) ?>
+ + tags()->isNotEmpty()): ?> + + +