first commit

This commit is contained in:
Arnaud Delcasse
2025-12-30 12:14:33 +01:00
commit 95e3bad443
105 changed files with 4997 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
{{ define "main" }}
<section class="page-default">
<h1 class="page-title">{{ .Title }}</h1>
<div class="page-content">
{{ .Content }}
</div>
</section>
{{ end }}

View File

@@ -0,0 +1,66 @@
<div class="footer-contact-block">
<h2 class="footer-contact-title">{{ site.Params.contact.title }}</h2>
<div class="footer-contact-phrases">
{{ range site.Params.contact.phrases }}
<p>{{ . }}</p>
{{ end }}
</div>
<a href="{{ "/pages/contact/" | relURL }}" class="contact-btn">{{ site.Params.contact.buttonText }}</a>
</div>
<div class="footer-partners-block">
{{ $bandeauDesktop := resources.Get "images/visuels/Desktop - Bandeau logos.png" }}
{{ $bandeauMobile := resources.Get "images/visuels/Mobile - Bandeau logos.png" }}
{{ if $bandeauDesktop }}
<img src="{{ $bandeauDesktop.RelPermalink }}" alt="Nos partenaires" class="partners-desktop" />
{{ end }}
{{ if $bandeauMobile }}
<img src="{{ $bandeauMobile.RelPermalink }}" alt="Nos partenaires" class="partners-mobile" />
{{ end }}
</div>
<div class="footer-container">
<div class="footer-left">
{{ $logoVertical := resources.Get "images/logos/Logo_MMS43_Vertical_Defonce.svg" }}
{{ $logoHorizontal := resources.Get "images/logos/Logo_MMS43-Defonce_Horizontal.svg" }}
<a href="{{ "/" | relURL }}" class="footer-logo">
{{ if $logoVertical }}
<img src="{{ $logoVertical.RelPermalink }}" alt="{{ site.Title }}" class="footer-logo-vertical" />
{{ end }}
{{ if $logoHorizontal }}
<img src="{{ $logoHorizontal.RelPermalink }}" alt="{{ site.Title }}" class="footer-logo-horizontal" />
{{ end }}
</a>
</div>
<div class="footer-center">
<nav class="footer-nav">
<a href="https://partenaire.mms43.fr" target="_blank" rel="noopener">Espace partenaire</a>
<a href="{{ "/pages/contact/" | relURL }}">Contact</a>
<a href="{{ "/pages/mentions-legales/" | relURL }}">Mentions légales et politique de confidentialité</a>
</nav>
<div class="footer-social">
{{ $linkedin := resources.Get "images/logos/Logo Linkedin.png" }}
{{ $facebook := resources.Get "images/logos/Logo Facebook.png" }}
{{ if $linkedin }}
<a href="{{ site.Params.linkedinUrl | default "#" }}" target="_blank" rel="noopener" class="social-link">
<img src="{{ $linkedin.RelPermalink }}" alt="LinkedIn" />
</a>
{{ end }}
{{ if $facebook }}
<a href="{{ site.Params.facebookUrl | default "#" }}" target="_blank" rel="noopener" class="social-link">
<img src="{{ $facebook.RelPermalink }}" alt="Facebook" />
</a>
{{ end }}
</div>
<p class="footer-copyright footer-copyright-mobile">{{ site.Params.footer.copyright }} &copy;{{ now.Year }} - Tous droits réservés</p>
</div>
<div class="footer-right">
<div class="footer-cta">
<p class="footer-cta-title">{{ site.Params.footer.ctaTitle }}</p>
<p class="footer-cta-contact">{{ site.Params.phone }} / {{ site.Params.email }}</p>
</div>
<p class="footer-copyright">{{ site.Params.footer.copyright }} &copy;{{ now.Year }} - Tous droits réservés</p>
</div>
</div>

View File

@@ -0,0 +1,5 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>{{ if .IsHome }}{{ site.Title }}{{ else }}{{ printf "%s | %s" .Title site.Title }}{{ end }}</title>
{{ partialCached "head/css.html" . }}
{{ partialCached "head/js.html" . }}

View File

@@ -0,0 +1,9 @@
{{- with resources.Get "css/main.css" }}
{{- if hugo.IsDevelopment }}
<link rel="stylesheet" href="{{ .RelPermalink }}">
{{- else }}
{{- with . | minify | fingerprint }}
<link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
{{- end }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,16 @@
{{- with resources.Get "js/main.js" }}
{{- $opts := dict
"minify" (not hugo.IsDevelopment)
"sourceMap" (cond hugo.IsDevelopment "external" "")
"targetPath" "js/main.js"
}}
{{- with . | js.Build $opts }}
{{- if hugo.IsDevelopment }}
<script src="{{ .RelPermalink }}"></script>
{{- else }}
{{- with . | fingerprint }}
<script src="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous"></script>
{{- end }}
{{- end }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,107 @@
<div class="header-container">
<a href="{{ "/" | relURL }}" class="header-logo">
{{ $logo := resources.Get "images/logos/Logo_MMS43_Vertical_Defonce.svg" }}
{{ if $logo }}
<img src="{{ $logo.RelPermalink }}" alt="{{ site.Title }}" />
{{ end }}
</a>
<nav class="header-nav">
{{ range site.Menus.main }}
<a href="{{ .URL }}" class="nav-link{{ if $.IsMenuCurrent "main" . }} active{{ end }}">
{{ .Name }}
</a>
{{ end }}
</nav>
<div class="header-phone">
{{ $phoneIcon := resources.Get "images/picto/call_24dp_1F1F1F_FILL1_wght400_GRAD0_opsz24.svg" }}
{{ if $phoneIcon }}
<div class="phone-icon">
<img src="{{ $phoneIcon.RelPermalink }}" alt="Téléphone" />
</div>
{{ end }}
<div class="phone-info">
<span class="phone-number">{{ site.Params.phone | default "04 XX XX XX XX" }}</span>
<span class="phone-hours">{{ site.Params.phoneHours | default "(du lundi au vendredi, 9h - 17h)" }}</span>
</div>
</div>
<!-- Mobile phone button -->
<a href="tel:{{ site.Params.phone | default "0400000000" }}" class="header-phone-mobile">
{{ $phoneIcon := resources.Get "images/picto/call_24dp_1F1F1F_FILL1_wght400_GRAD0_opsz24.svg" }}
{{ if $phoneIcon }}
<div class="phone-icon">
<img src="{{ $phoneIcon.RelPermalink }}" alt="Téléphone" />
</div>
{{ end }}
<div class="phone-info">
<span class="phone-number">{{ site.Params.phone | default "04 XX XX XX XX" }}</span>
<span class="phone-hours">{{ site.Params.phoneHours | default "(du lundi au vendredi, 9h - 17h)" }}</span>
</div>
</a>
<!-- Burger button -->
<button class="header-burger" aria-label="Menu" aria-expanded="false">
<span class="burger-line"></span>
<span class="burger-line"></span>
<span class="burger-line"></span>
</button>
</div>
<!-- Mobile menu overlay -->
<div class="mobile-menu">
<button class="mobile-menu-close" aria-label="Fermer le menu">
{{ $closeIcon := resources.Get "images/picto/close_24dp_FFFFFF_FILL1_wght400_GRAD0_opsz24.svg" }}
{{ if $closeIcon }}
<img src="{{ $closeIcon.RelPermalink }}" alt="Fermer" />
{{ else }}
<span>&times;</span>
{{ end }}
</button>
<nav class="mobile-menu-nav">
{{ $arrowIcon := resources.Get "images/picto/chevron_forward_24dp_1F1F1F_FILL1_wght400_GRAD0_opsz24.svg" }}
{{ range site.Menus.main }}
<a href="{{ .URL }}" class="mobile-menu-link">
<span>{{ .Name }}</span>
{{ if $arrowIcon }}
<img src="{{ $arrowIcon.RelPermalink }}" alt="" class="mobile-menu-arrow" />
{{ end }}
</a>
{{ end }}
</nav>
<div class="mobile-menu-contact">
<p class="mobile-menu-contact-title">{{ site.Params.footer.ctaTitle | default "Organisez vos déplacements en Haute-Loire" }}</p>
<p class="mobile-menu-contact-info">{{ site.Params.phone }} / {{ site.Params.email }}</p>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const burger = document.querySelector('.header-burger');
const closeBtn = document.querySelector('.mobile-menu-close');
const mobileMenu = document.querySelector('.mobile-menu');
function openMenu() {
mobileMenu.classList.add('is-open');
burger.setAttribute('aria-expanded', 'true');
document.body.style.overflow = 'hidden';
}
function closeMenu() {
mobileMenu.classList.remove('is-open');
burger.setAttribute('aria-expanded', 'false');
document.body.style.overflow = '';
}
burger.addEventListener('click', openMenu);
closeBtn.addEventListener('click', closeMenu);
// Fermer le menu au clic sur un lien
mobileMenu.querySelectorAll('.mobile-menu-link').forEach(link => {
link.addEventListener('click', closeMenu);
});
});
</script>

View File

@@ -0,0 +1,51 @@
{{- /*
Renders a menu for the given menu ID.
@context {page} page The current page.
@context {string} menuID The menu ID.
@example: {{ partial "menu.html" (dict "menuID" "main" "page" .) }}
*/}}
{{- $page := .page }}
{{- $menuID := .menuID }}
{{- with index site.Menus $menuID }}
<nav>
<ul>
{{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
</ul>
</nav>
{{- end }}
{{- define "_partials/inline/menu/walk.html" }}
{{- $page := .page }}
{{- range .menuEntries }}
{{- $attrs := dict "href" .URL }}
{{- if $page.IsMenuCurrent .Menu . }}
{{- $attrs = merge $attrs (dict "class" "active" "aria-current" "page") }}
{{- else if $page.HasMenuCurrent .Menu .}}
{{- $attrs = merge $attrs (dict "class" "ancestor" "aria-current" "true") }}
{{- end }}
{{- $name := .Name }}
{{- with .Identifier }}
{{- with T . }}
{{- $name = . }}
{{- end }}
{{- end }}
<li>
<a
{{- range $k, $v := $attrs }}
{{- with $v }}
{{- printf " %s=%q" $k $v | safeHTMLAttr }}
{{- end }}
{{- end -}}
>{{ $name }}</a>
{{- with .Children }}
<ul>
{{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
</ul>
{{- end }}
</li>
{{- end }}
{{- end }}

View File

@@ -0,0 +1,23 @@
{{- /*
For a given taxonomy, renders a list of terms assigned to the page.
@context {page} page The current page.
@context {string} taxonomy The taxonomy.
@example: {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }}
*/}}
{{- $page := .page }}
{{- $taxonomy := .taxonomy }}
{{- with $page.GetTerms $taxonomy }}
{{- $label := (index . 0).Parent.LinkTitle }}
<div>
<div>{{ $label }}:</div>
<ul>
{{- range . }}
<li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
{{- end }}
</ul>
</div>
{{- end }}

View File

@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="{{ site.Language.LanguageCode }}" dir="{{ or site.Language.LanguageDirection `ltr` }}">
<head>
{{ partial "head.html" . }}
</head>
<body>
<header>
{{ partial "header.html" . }}
</header>
<main>
{{ block "main" . }}{{ end }}
</main>
<footer>
{{ partial "footer.html" . }}
</footer>
</body>
</html>

View File

@@ -0,0 +1,81 @@
{{ define "main" }}
{{ $heroBg := resources.Get "images/visuels/incontournable-haut-pays-velay.jpg" }}
<section class="hero" {{ if $heroBg }}style="background-image: url('{{ $heroBg.RelPermalink }}')"{{ end }}>
<h1 class="hero-headline">
<span class="text-primary">{{ site.Params.hero.line1before }}</span> <span class="text-highlight">{{ site.Params.hero.line1highlight }}</span> <span class="text-primary">{{ site.Params.hero.line1after }}</span><br>
<span class="text-highlight">{{ site.Params.hero.line2highlight }}</span> <span class="text-primary">{{ site.Params.hero.line2after }}</span>
</h1>
</section>
<section class="search-block">
<h2 class="search-title">{{ site.Params.search.title }}</h2>
<form class="search-form">
{{ $iconLocation := resources.Get "images/picto/location_on_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }}
{{ $iconCalendar := resources.Get "images/picto/calendar_today_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }}
{{ $iconSchedule := resources.Get "images/picto/schedule_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }}
{{ $iconSearch := resources.Get "images/picto/search_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }}
{{ $iconSwap := resources.Get "images/picto/sync_alt_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }}
<div class="form-group-locations">
<div class="form-group">
<label for="depart">
{{ if $iconLocation }}<img src="{{ $iconLocation.RelPermalink }}" alt="" class="label-icon" />{{ end }}
{{ site.Params.search.labelDepart }}
</label>
<input type="text" id="depart" name="depart" placeholder="" />
</div>
<button type="button" class="swap-btn" onclick="swapLocations()" aria-label="Inverser départ et destination">
{{ if $iconSwap }}<img src="{{ $iconSwap.RelPermalink }}" alt="" />{{ end }}
</button>
<div class="form-group">
<label for="destination">
{{ if $iconLocation }}<img src="{{ $iconLocation.RelPermalink }}" alt="" class="label-icon" />{{ end }}
{{ site.Params.search.labelDestination }}
</label>
<input type="text" id="destination" name="destination" placeholder="" />
</div>
</div>
<div class="form-group-row">
<div class="form-group">
<label for="date">
{{ if $iconCalendar }}<img src="{{ $iconCalendar.RelPermalink }}" alt="" class="label-icon" />{{ end }}
{{ site.Params.search.labelDate }}
</label>
<input type="date" id="date" name="date" />
</div>
<div class="form-group">
<label for="heure">
{{ if $iconSchedule }}<img src="{{ $iconSchedule.RelPermalink }}" alt="" class="label-icon" />{{ end }}
{{ site.Params.search.labelHeure }}
</label>
<input type="time" id="heure" name="heure" />
</div>
</div>
<button type="submit" class="search-btn">
{{ if $iconSearch }}<img src="{{ $iconSearch.RelPermalink }}" alt="" class="btn-icon" />{{ end }}
{{ site.Params.search.buttonText }}
</button>
</form>
</section>
<section class="video-block">
<h2 class="video-title">{{ site.Params.video.title }}</h2>
{{ $video := resources.Get "videos/video_presentation_mms43.mp4" }}
{{ if $video }}
<div class="video-container">
<video controls>
<source src="{{ $video.RelPermalink }}" type="video/mp4" />
Votre navigateur ne supporte pas la lecture de vidéos.
</video>
</div>
{{ end }}
</section>
{{ .Content }}
{{ end }}

View File

@@ -0,0 +1,9 @@
{{ define "main" }}
<section class="page-default">
<h1 class="page-title">{{ .Params.headline | default .Title }}</h1>
<div class="page-content">
{{ .Content }}
</div>
</section>
{{ end }}

View File

@@ -0,0 +1,101 @@
{{ define "main" }}
{{ $heroImage := .Params.heroImage | default "images/visuels/Conducteur-solidaire.png" }}
{{ $heroBg := resources.Get $heroImage }}
<section class="conducteur-hero" {{ if $heroBg }}style="background-image: url('{{ $heroBg.RelPermalink }}')"{{ end }}>
</section>
<section class="page-conducteur">
<h1 class="page-title">{{ .Params.headline | default "Rejoignez la communauté des conducteurs solidaires !" }}</h1>
<div class="conducteur-content">
{{ $carImagePath := .Params.contentImage | default "images/visuels/covoiturage.svg" }}
{{ $carImage := resources.Get $carImagePath }}
{{ if $carImage }}
<div class="conducteur-image">
<img src="{{ $carImage.RelPermalink }}" alt="Covoiturage" />
</div>
{{ end }}
<div class="conducteur-text">
{{ .Content }}
</div>
</div>
<div class="conducteur-etapes-section">
{{ $allResources := .Resources.Match "*.md" }}
{{ $etapes := where $allResources "Params.type" "!=" "page-footer" }}
{{ $arrowGreen := resources.Get "images/picto/Picto - Conducteur solidaire - Fleche verte.svg" }}
{{ $arrowOrange := resources.Get "images/picto/Picto - Conducteur solidaire - Fleche orange.svg" }}
{{ if $etapes }}
<div class="conducteur-etapes">
<h2 class="etapes-title">{{ .Params.etapesTitle | default "Une démarche simple et pratique" }}</h2>
<div class="etapes-list">
{{ $sortedEtapes := sort $etapes "Params.weight" }}
{{ $total := len $sortedEtapes }}
{{ range $index, $etape := $sortedEtapes }}
<div class="etape-block">
{{ if $etape.Params.icon }}
{{ $icon := resources.Get $etape.Params.icon }}
{{ if $icon }}
<div class="etape-icon">
<img src="{{ $icon.RelPermalink }}" alt="" />
</div>
{{ end }}
{{ end }}
<div class="etape-content">
<h3 class="etape-title">{{ $etape.Title }}</h3>
<div class="etape-text">{{ $etape.Content }}</div>
</div>
{{ if lt (add $index 1) $total }}
{{ if eq (mod $index 2) 0 }}
<div class="etape-arrow etape-arrow-right">
<img src="{{ $arrowGreen.RelPermalink }}" alt="" />
</div>
{{ else }}
<div class="etape-arrow etape-arrow-left">
<img src="{{ $arrowOrange.RelPermalink }}" alt="" />
</div>
{{ end }}
{{ end }}
</div>
{{ end }}
</div>
</div>
{{ end }}
<div class="plus-infos">
{{ $downloadIcon := resources.Get "images/picto/Telechargez.svg" }}
<h3 class="plus-infos-title">{{ .Params.plusInfosTitle | default "Plus d'infos ?" }}</h3>
<p class="plus-infos-text">{{ .Params.plusInfosText | default "Vous avez des questions ? Vous souhaitez recevoir de la documentation imprimée ?" }}</p>
<a href="{{ .Params.plusInfosContactLink | default "/pages/contact/" }}" class="plus-infos-button">Contactez-nous</a>
<a href="{{ $downloadIcon := resources.Get "images/picto/download_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }}" class="plus-infos-download">
{{ if $downloadIcon }}
<img src="{{ $downloadIcon.RelPermalink }}" alt="" />
{{ end }}
<span>Ou téléchargez le dépliant d'information</span>
</a>
</div>
</div>
<div class="conducteur-video">
<div class="conducteur-video-container">
{{ $videoPath := .Params.video | default "videos/capsule_covoiturage.mp4" }}
{{ $video := resources.Get $videoPath }}
{{ if $video }}
<video controls>
<source src="{{ $video.RelPermalink }}" type="video/mp4">
</video>
{{ end }}
</div>
</div>
{{ $pageFooter := where $allResources "Params.type" "page-footer" }}
{{ range $pageFooter }}
<div class="page-footer-section">
<h2 class="page-footer-title">{{ .Title }}</h2>
<div class="page-footer-content">
{{ .Content }}
</div>
</div>
{{ end }}
</section>
{{ end }}

View File

@@ -0,0 +1,103 @@
{{ define "main" }}
{{ $heroImage := .Params.heroImage | default "images/visuels/engagez.jpg" }}
{{ $heroBg := resources.Get $heroImage }}
<section class="entreprise-hero" {{ if $heroBg }}style="background-image: url('{{ $heroBg.RelPermalink }}')"{{ end }}>
</section>
<section class="page-entreprise">
<h1 class="page-title">{{ .Params.headline | default "La mobilité, un enjeu RSE pour votre entreprise" }}</h1>
{{ .Content }}
{{ $allResources := .Resources.Match "*.md" }}
{{ $avantages := where $allResources "Params.type" "avantage" }}
{{ if $avantages }}
<div class="entreprise-avantages">
{{ range sort $avantages "Params.weight" }}
<div class="avantage-block">
{{ if .Params.icon }}
{{ $icon := resources.Get .Params.icon }}
{{ if $icon }}
<div class="avantage-icon">
<img src="{{ $icon.RelPermalink }}" alt="" />
</div>
{{ end }}
{{ end }}
<h3 class="avantage-title">{{ .Title }}</h3>
<div class="avantage-text">{{ .Content }}</div>
</div>
{{ end }}
</div>
{{ end }}
<h2 class="entreprise-subtitle">{{ .Params.engagementTitle | default "De plus en plus d'entreprises s'engagent, pourquoi pas vous ?" }}</h2>
{{ $engagements := where $allResources "Params.type" "engagement" }}
{{ if $engagements }}
{{ $sortedEngagements := sort $engagements "Params.weight" }}
<div class="entreprise-engagements">
<div class="engagements-column">
{{ range first 3 $sortedEngagements }}
<div class="engagement-block">
{{ if .Params.icon }}
{{ $icon := resources.Get .Params.icon }}
{{ if $icon }}
<div class="engagement-icon">
<img src="{{ $icon.RelPermalink }}" alt="" />
</div>
{{ end }}
{{ end }}
<div class="engagement-content">
<h3 class="engagement-title">{{ .Title }}</h3>
<div class="engagement-text">{{ .Content }}</div>
</div>
</div>
{{ end }}
</div>
<div class="engagements-column">
{{ range after 3 $sortedEngagements }}
<div class="engagement-block">
{{ if .Params.icon }}
{{ $icon := resources.Get .Params.icon }}
{{ if $icon }}
<div class="engagement-icon">
<img src="{{ $icon.RelPermalink }}" alt="" />
</div>
{{ end }}
{{ end }}
<div class="engagement-content">
<h3 class="engagement-title">{{ .Title }}</h3>
<div class="engagement-text">{{ .Content }}</div>
</div>
</div>
{{ end }}
<div class="plus-infos">
{{ $downloadIcon := resources.Get "images/picto/download_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }}
<h3 class="plus-infos-title">{{ .Params.plusInfosTitle | default "Plus d'infos ?" }}</h3>
<p class="plus-infos-text">{{ .Params.plusInfosText | default "Vous avez des questions ? Vous souhaitez recevoir de la documentation imprimée à mettre à disposition de vos publics ?" }}</p>
<a href="{{ .Params.plusInfosContactLink | default "/pages/contact/" }}" class="plus-infos-button">Contactez-nous</a>
<a href="{{ .Params.plusInfosDocLink | default "#" }}" class="plus-infos-download">
{{ if $downloadIcon }}
<img src="{{ $downloadIcon.RelPermalink }}" alt="" />
{{ end }}
<span>{{ .Params.plusInfosDownloadText | default "Ou téléchargez le dépliant d'informations Mobi'Conseil" }}</span>
</a>
</div>
</div>
</div>
{{ end }}
<div class="entreprise-video">
<div class="entreprise-video-container">
{{ $videoPath := .Params.video | default "videos/entreprise.mp4" }}
{{ $video := resources.Get $videoPath }}
{{ if $video }}
<video controls>
<source src="{{ $video.RelPermalink }}" type="video/mp4">
</video>
{{ end }}
</div>
</div>
</section>
{{ end }}

View File

@@ -0,0 +1,47 @@
{{ define "main" }}
<section class="page-solutions">
<h1 class="page-title">{{ .Params.headline }}</h1>
{{ $iconChevron := resources.Get "images/picto/chevron_forward_24dp_1F1F1F_FILL1_wght400_GRAD0_opsz24.svg" }}
{{ $iconClose := resources.Get "images/picto/close_34dp_1F1F1F_FILL0_wght400_GRAD0_opsz40.svg" }}
<div class="solutions-grid">
{{ range sort (.Resources.Match "*.md") "Params.weight" }}
<div class="solution-card">
<div class="solution-front">
<div class="solution-header">
<h3 class="solution-title">{{ .Title }}</h3>
</div>
<div class="solution-image-container">
{{ if .Params.image }}
{{ $img := resources.Get .Params.image }}
{{ if $img }}
<img src="{{ $img.RelPermalink }}" alt="{{ .Title }}" class="solution-image" />
{{ end }}
{{ end }}
<div class="solution-toggle" aria-label="Voir le détail">
{{ if $iconChevron }}<img src="{{ $iconChevron.RelPermalink }}" alt="" />{{ end }}
</div>
</div>
</div>
<div class="solution-back">
<div class="solution-close" aria-label="Fermer">
{{ if $iconClose }}<img src="{{ $iconClose.RelPermalink }}" alt="" />{{ end }}
</div>
<div class="solution-content">
<p class="solution-text">{{ .Content | plainify }}</p>
</div>
</div>
</div>
{{ end }}
</div>
<div class="solutions-cta">
{{ $iconSearch := resources.Get "images/picto/search_24dp_1F1F1F_FILL0_wght400_GRAD0_opsz24.svg" }}
<a href="/" class="solutions-btn">
{{ if $iconSearch }}<img src="{{ $iconSearch.RelPermalink }}" alt="" class="btn-icon" />{{ end }}
Rechercher un trajet
</a>
</div>
</section>
{{ end }}

View File

@@ -0,0 +1,40 @@
{{ define "main" }}
{{ $heroImage := .Params.heroImage | default "images/visuels/Photo equipe.jpg" }}
{{ $heroBg := resources.Get $heroImage }}
<section class="quisommesnous-hero" {{ if $heroBg }}style="background-image: url('{{ $heroBg.RelPermalink }}')"{{ end }}>
</section>
<section class="page-quisommesnous">
<h1 class="page-title">{{ .Params.headline | default "Qu'est-ce que la Maison de la Mobilité Solidaire ?" }}</h1>
<div class="quisommesnous-content">
<div class="quisommesnous-text">
{{ .Content }}
</div>
{{ $visuel := resources.Get "images/visuels/visuel-mms43.svg" }}
{{ if $visuel }}
<div class="quisommesnous-image">
<img src="{{ $visuel.RelPermalink }}" alt="Maison de la Mobilité Solidaire" />
</div>
{{ end }}
</div>
</section>
{{ if .Params.savoirPlusLinks }}
<div class="quisommesnous-savoirplus">
<h2 class="savoirplus-title">{{ .Params.savoirPlusTitle | default "Pour en savoir plus" }}</h2>
{{ $arrowIcon := resources.Get "images/picto/arrow_right_alt_24dp_1F1F1F_FILL1_wght400_GRAD0_opsz24.svg" }}
<ul class="savoirplus-links">
{{ range .Params.savoirPlusLinks }}
<li class="savoirplus-item">
{{ if $arrowIcon }}
<img src="{{ $arrowIcon.RelPermalink }}" alt="" class="savoirplus-arrow" />
{{ end }}
<a href="{{ .url }}" target="_blank" class="savoirplus-link">{{ .text }}</a>
</li>
{{ end }}
</ul>
</div>
{{ end }}
{{ end }}

View File

@@ -0,0 +1,8 @@
{{ define "main" }}
<h1>{{ .Title }}</h1>
{{ .Content }}
{{ range .Pages }}
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ .Summary }}
{{ end }}
{{ end }}

View File

@@ -0,0 +1,76 @@
{{ $action := .Get "action" | default "/api/contact" }}
{{ $buttonText := .Get "buttonText" | default "Envoyer" }}
{{ $lastnameLabel := .Get "lastnameLabel" | default "Nom" }}
{{ $firstnameLabel := .Get "firstnameLabel" | default "Prénom" }}
{{ $privacyText := .Get "privacyText" | default "La protection de vos données est au coeur de nos préoccupations. Celles-ci sont confidentielles et ne seront utilisées que dans le cadre de la mobilité solidaire. Vous pouvez à tout moment les modifier où demander à les faire supprimer de notre base de données." }}
{{/* Récupérer les champs dynamiques : d'abord depuis le paramètre, sinon depuis le front matter */}}
{{ $fieldsParam := .Get "fields" }}
{{ $fields := slice }}
{{ if $fieldsParam }}
{{ $fields = transform.Unmarshal $fieldsParam }}
{{ else }}
{{ $fields = .Page.Params.formFields }}
{{ end }}
<form class="contact-form" action="{{ $action }}" method="POST">
<div class="contact-form-row">
<div class="contact-form-group">
<label for="lastname">{{ $lastnameLabel }}</label>
<input type="text" id="lastname" name="lastname" required />
</div>
<div class="contact-form-group">
<label for="firstname">{{ $firstnameLabel }}</label>
<input type="text" id="firstname" name="firstname" required />
</div>
</div>
{{/* Champs dynamiques */}}
{{ if $fields }}
{{ range $index, $field := $fields }}
{{ $fieldId := $field.name | default (printf "field_%d" $index) }}
{{ $fieldRequired := $field.required | default false }}
{{ if eq $field.type "multicheckboxes" }}
<div class="contact-form-group contact-form-checkboxes">
<span class="contact-form-checkbox-label">{{ $field.label }}</span>
<div class="contact-form-checkbox-options">
{{ range $optIndex, $option := $field.options }}
<label class="contact-form-checkbox">
<input type="checkbox" name="{{ $fieldId }}[]" value="{{ $option.value | default $option.label }}" />
<span>{{ $option.label }}</span>
</label>
{{ end }}
</div>
</div>
{{ else if eq $field.type "textarea" }}
<div class="contact-form-group">
<label for="{{ $fieldId }}">{{ $field.label }}</label>
<textarea id="{{ $fieldId }}" name="{{ $fieldId }}" rows="{{ $field.rows | default 6 }}" {{ if $fieldRequired }}required{{ end }}></textarea>
</div>
{{ else }}
<div class="contact-form-group">
<label for="{{ $fieldId }}">{{ $field.label }}</label>
<input type="{{ $field.type | default "text" }}" id="{{ $fieldId }}" name="{{ $fieldId }}" {{ if $fieldRequired }}required{{ end }} />
</div>
{{ end }}
{{ end }}
{{ else }}
{{/* Champs par défaut si aucun champ dynamique n'est défini */}}
<div class="contact-form-group">
<label for="email">Votre adresse mail</label>
<input type="email" id="email" name="email" required />
</div>
<div class="contact-form-group">
<label for="subject">Objet de votre demande</label>
<input type="text" id="subject" name="subject" />
</div>
<div class="contact-form-group">
<label for="message">Votre message</label>
<textarea id="message" name="message" rows="6" required></textarea>
</div>
{{ end }}
<button type="submit" class="contact-form-submit">{{ $buttonText }}</button>
<p class="contact-form-privacy">{{ $privacyText }}</p>
</form>

View File

@@ -0,0 +1,7 @@
{{ define "main" }}
<h1>{{ .Title }}</h1>
{{ .Content }}
{{ range .Pages }}
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ end }}
{{ end }}

View File

@@ -0,0 +1,7 @@
{{ define "main" }}
<h1>{{ .Title }}</h1>
{{ .Content }}
{{ range .Pages }}
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ end }}
{{ end }}