const { useState, useEffect, useRef } = React; // Pull shared atoms / icons from window (populated by shared.jsx) const { MV_Header: Header, MV_Footer: Footer, MV_BackToTop: BackToTop, MV_SectionLabel: SectionLabelBase, MV_Ornament: Ornament, MV_Stat: Stat, MV_PhoneFrame: PhoneFrame, MV_FigCaption: FigCaptionBase, MV_Lightbox: Lightbox, MV_Zoomable: Zoomable, MV_ArrowRight: ArrowRight, MV_ArrowDown: ArrowDown, MV_ArrowUpRight: ArrowUpRight, MV_IconDownloadSmall: IconDownloadSmall, MV_Check: Check, MV_IconWebsite: IconWebsite, MV_IconDownload: IconDownload, MV_IconBook: IconBook, MV_IconFilm: IconFilm, MV_IconShield: IconShield, MV_IconLock: IconLock, MV_IconClock: IconClock, MV_IconPhone: IconPhone, } = window; /* ========================================================================= TWEAKS ========================================================================= */ const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accent": "gold", "numbering": "arabic", "conclusionTone": "cream", "showFigCaptions": true }/*EDITMODE-END*/; const ACCENTS = { gold: { name: "Or classique", c1: "#c9a55c", c2: "#e2c98a", c3: "#a8854a" }, champagne: { name: "Champagne", c1: "#d6b98a", c2: "#ead9b8", c3: "#b69a6d" }, rosegold: { name: "Or rosé", c1: "#d8a48a", c2: "#ecc9b8", c3: "#b8836a" }, }; // Wrap shared atoms with tweak-aware variants function SectionLabel({ n, children }) { const t = window._tw || TWEAK_DEFAULTS; return {children}; } function FigCaption({ children }) { const t = window._tw || TWEAK_DEFAULTS; return {children}; } /* ========================================================================= 1. HERO ========================================================================= */ function Hero() { return (
Un service offert par votre agence funéraire
Mémoire Vive

Pour que la mémoire
soit toujours vivante.

Un espace numérique d'hommage où famille, proches et connaissances rassemblent — avant, pendant et après la cérémonie — les mots, photos et souvenirs qui composent une vie.

Pour en composer un site web à partager, un livre relié à conserver, un film d'hommage à projeter.

Découvrir le service Voir une démonstration
); } /* ========================================================================= 1a. PRESENTATION VIDÉO — Clip de présentation YouTube ========================================================================= */ function PresentationVideo() { return (
Mémoire Vive en une minute

Le service expliqué en images.

); } /* ========================================================================= 1bis. ORIGINE — Témoignage du fondateur ========================================================================= */ function Origine() { return (
Le témoignage du fondateur

Comment est née Mémoire Vive

Lors des obsèques de mon cousin, l'église était pleine — et sa famille proche ne connaissait pas la moitié des personnes présentes.

Tous, pourtant, avaient croisé sa vie. Certains avaient partagé un moment fort, une anecdote, peut-être même une photo oubliée dans un téléphone.

Après la cérémonie, chacun est reparti avec ces fragments. Des souvenirs précieux que sa famille ne connaîtrait jamais.

J'ai compris qu'un hommage ne devait pas seulement servir à déposer des condoléances. Il devait aussi aider à retrouver tout ce que la vie d'une personne a semé chez les autres.

C'est ainsi qu'est née Mémoire Vive.

); } /* ========================================================================= VIDEO BOUCLE — Cadre vidéo autoplay silencieux + clic ouvre lightbox son. Après fermeture du lightbox : poster statique + bouton lecture central. ========================================================================= */ function VideoBoucle({ src, poster, onOpenLightbox, hasBeenOpened }) { const videoRef = useRef(null); const wrapperRef = useRef(null); // Autoplay + Intersection Observer (pause hors viewport) — tant que // hasBeenOpened est false. Une fois le lightbox ouvert, on stoppe // définitivement l'autoplay boucle. useEffect(() => { if (hasBeenOpened) { const v = videoRef.current; if (v) { v.pause(); v.currentTime = 0; } return; } const video = videoRef.current; const wrapper = wrapperRef.current; if (!video || !wrapper) return; const observer = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { video.play().catch(() => {}); } else { video.pause(); } }); }, { threshold: 0.25 } ); observer.observe(wrapper); return () => observer.disconnect(); }, [hasBeenOpened]); const handleClick = () => { onOpenLightbox(); }; return (
{ if (e.key === "Enter" || e.key === " ") { e.preventDefault(); handleClick(); } }}> {hasBeenOpened && ( )} {!hasBeenOpened && ( )}
); } /* ========================================================================= VIDEO LIGHTBOX — Overlay plein écran avec vidéo son + contrôles natifs ========================================================================= */ function VideoLightbox({ src, onClose }) { const videoRef = useRef(null); // Fermeture au clavier (Échap) + focus management useEffect(() => { const handleKey = (e) => { if (e.key === "Escape") onClose(); }; window.addEventListener("keydown", handleKey); // Bloquer le scroll de la page derrière le lightbox const originalOverflow = document.body.style.overflow; document.body.style.overflow = "hidden"; // Lancer la vidéo dès l'ouverture const v = videoRef.current; if (v) { v.currentTime = 0; v.play().catch(() => {}); } return () => { window.removeEventListener("keydown", handleKey); document.body.style.overflow = originalOverflow; }; }, [onClose]); // Clic sur l'overlay (hors vidéo) ferme le lightbox const handleOverlayClick = (e) => { if (e.target === e.currentTarget) onClose(); }; return (
); } /* ========================================================================= 2. EXPLICATION ========================================================================= */ function Explication() { const [isLightboxOpen, setIsLightboxOpen] = useState(false); const [hasBeenOpened, setHasBeenOpened] = useState(false); const openLightbox = () => { setIsLightboxOpen(true); setHasBeenOpened(true); }; const closeLightbox = () => setIsLightboxOpen(false); return (
Pourquoi Mémoire Vive

Le jour de la cérémonie,
tant de souvenirs restent à recueillir.

La famille ne connaît peut-être pas tous les participants aux obsèques. Et pourtant chacun a probablement eu une histoire avec le défunt — une anecdote à raconter, des photos enfouies dans la galerie d'un smartphone…

Il serait dommage de perdre tous ces témoignages, de ne jamais connaître les événements marquants ou plus anecdotiques que l'on ignore de la vie d'un proche.

Mémoire Vive permet aux proches, amis, collègues et connaissances {" "}de partager un message, une photo, un souvenir — et même de contribuer au parcours de vie du défunt.

Exclusivité Mémoire Vive Avant, pendant, et même après la cérémonie.

{isLightboxOpen && ( )}
); } /* ========================================================================= 3. COMMENT ÇA MARCHE ========================================================================= */ function CommentCaMarche() { return (
Comment ça marche
Un parcours pensé pour être simple, même sans aisance numérique.

Six étapes simples,
de la cérémonie à ses souvenirs conservés.

01

L'agence remet un lien et affiche un QR code

L'agence funéraire transmet à la famille un lien vers leur « Espace Hommage » et affiche un QR code au salon funéraire, devant l'église ou sur le lieu d'inhumation. Les participants le scannent pour ouvrir l'application — aucun compte, aucun enregistrement.

  • Accès immédiat depuis n'importe quel smartphone
  • Aucun téléchargement, aucun mot de passe
  • Le QR code peut être imprimé en A4 par l'agence
Affiche QR code Mémoire Vive
Affiche A4 — imprimable depuis l'espace agence · cliquez pour agrandir
Checklist des contributions — Juliette Armand
Un contributeur voit d'un coup d'œil ce qu'il a déjà partagé · cliquez pour agrandir
02

Les proches accèdent à l'Espace Hommage

Une fois sur l'espace, chaque participant peut choisir ce qu'il souhaite partager. Quatre actions sont possibles, séparément ou ensemble :

  1. i

    Se faire connaître

    Pour que la famille puisse identifier qui était présent ce jour-là, en précisant à quel cercle on appartient (famille, amis, collègues de travail, du sport…).

  2. ii

    Laisser un message

    Écrire librement, ou répondre à des questions guidées lorsque l'inspiration manque.

  3. iii

    Envoyer des photos

    Partager des images qui pourront ensuite être légendées par leur auteur.

  4. iv

    Enrichir le parcours de vie

    Contribuer à la timeline du défunt, de sa naissance à son décès, à travers les événements marquants vécus avec lui. Exclusivité Mémoire Vive.

03

L'hommage s'installe sur le téléphone, sans rien télécharger

Une fois sur leur Espace Hommage, les proches peuvent en quelques secondes ajouter une icône à l'écran d'accueil de leur téléphone. L'hommage devient alors aussi accessible qu'une application — sans passer par un magasin d'applications, sans téléchargement, sans création de compte. L'icône porte le prénom du défunt : un petit signe discret, à portée de main pendant les jours et les semaines qui suivent.

  • Aucune appli à télécharger, aucun store, aucun compte
  • L'icône Mémoire Vive au prénom du défunt apparaît sur l'écran d'accueil
  • Un accès direct, sans avoir à rechercher le lien dans ses messages

L'installation est proposée aux proches qui ouvrent leur lien personnel — les visiteurs qui scannent simplement le QR code à la cérémonie restent, eux, en navigation web classique.

Proposition d'installation par le navigateur — Hommage à Juliette ARMAND
Écran d'accueil avec icônes Juliette ARMAND et Marc ZOBEL
Une icône au prénom du défunt, sur l'écran d'accueil · cliquez pour agrandir
Parcours de création du film — Réunir, Personnaliser, Générer
Créer le film d'hommage en 3 étapes, sans compétence technique · cliquez pour agrandir
04

Le film, prêt en 3 étapes

Le film est la première chose à créer : il sera diffusé dès la cérémonie ou au salon funéraire. Pas besoin d'attendre les contributions des proches pour le générer.

  1. i

    Réunissez vos photos

    Une dizaine suffit, jusqu'à 70 photos possibles.

  2. ii

    Personnalisez si vous le souhaitez

    Musique, textes d'intro et de clôture, entièrement facultatif.

  3. iii

    Générez le film en un clic

    Prêt à télécharger et diffuser lors de la cérémonie.

05

Le Livre de Vie, en 3 étapes aussi

Un ouvrage souvenir en PDF qui rassemble photos, messages et parcours de vie, à conserver tel quel ou à imprimer soi-même (ou à faire brocher par une imprimerie en ligne).

  1. i

    Réunissez vos photos favorites

    Les mêmes que pour le film.

  2. ii

    Personnalisez le contenu

    Dédicace, mot de la famille, remerciements (facultatif).

  3. iii

    Générez le PDF

    Prêt à imprimer chez vous ou via une plateforme d'impression. Exclusivité Mémoire Vive.

Parcours de création du Livre de Vie
Le parcours de création du Livre de Vie · cliquez pour agrandir
Parcours d'activation du site hommage
Le parcours d'activation du site hommage · cliquez pour agrandir
06

Le site hommage, activé en un instant

Une page web dédiée à la mémoire de votre proche, comportant le film et les éléments du livre, à partager avec tous ceux qui l'ont connu.

  1. i

    Enrichissez la page

    Photos et texte d'introduction.

  2. ii

    Publiez la page hommage

    La page devient accessible publiquement.

  3. iii

    Partagez le lien

    Avec tous les proches.

Tout récupérer, à tout moment

Une fois la cérémonie passée et les contributions reçues, la famille peut télécharger l'intégralité des souvenirs — photos, messages, liste des visiteurs — dans des formats simples à conserver, aussi souvent qu'elle le souhaite.

Vous n'êtes jamais seuls face à la technique

Une question, un souci ? Le service client Mémoire Vive vous répond directement — guide d'aide, chat en direct, ou par téléphone. Votre conseiller funéraire n'a pas à s'en occuper : nous sommes là pour ça.

); } /* ========================================================================= 4. DEMO ========================================================================= */ function Demo() { return (
Démonstration

Découvrez Mémoire Vive
de vos propres yeux.

Pour vous faire une idée concrète, nous avons préparé deux démonstrations à partir de l'hommage (fictif) rendu à Juliette Armand.

Démo en ligne

Voir la page web hommage

Explorez l'espace tel que le voient les proches — accueil, parcours de vie, messages et photos rassemblés.

memoire-vive.eu/hommage/juliette-armand-zg07d
Ouvrir la démo
Téléchargement · PDF

Télécharger un Livre de Vie

Le document tel qu'il est généré pour la famille — couverture, dédicace, parcours de vie, messages favoris et photos.

livre-de-vie-juliette-armand.pdf
Télécharger le PDF
Démo · Film hommage

Visionner un film d'hommage

Un exemple complet généré à partir des photos et messages de l'hommage à Juliette Armand. La famille peut également télécharger le fichier MP4 pour le conserver et le partager.

youtu.be/0y5wLnhw_do
Voir le film
Nouveau service

L'Avis de Décès

Partagez en un lien toutes les informations pratiques de la cérémonie, avec plan et ajout à l'agenda.

memoire-vive.eu/avis-de-deces
En savoir plus
); } /* ========================================================================= 5. CONCLUSION ========================================================================= */ function Conclusion() { const t = window._tw || TWEAK_DEFAULTS; const [submitted, setSubmitted] = useState(false); const empty = { nom: "", email: "", telephone: "", ville: "", agence: "", message: "", website: "" }; const [form, setForm] = useState(empty); const set = (k) => (e) => setForm({ ...form, [k]: e.target.value }); const [submitting, setSubmitting] = useStateS(false); const [submitError, setSubmitError] = useStateS(null); const submit = async (e) => { e.preventDefault(); if (submitting) return; setSubmitting(true); setSubmitError(null); try { const res = await fetch("/api/contact-site/famille", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(form), }); const data = await res.json().catch(() => ({})); if (!res.ok || !data.success) { throw new Error(data.error || "Erreur lors de l'envoi."); } setSubmitted(true); } catch (err) { setSubmitError(err.message || "Erreur réseau. Réessayez dans un instant."); } finally { setSubmitting(false); } }; return (
Pour aller plus loin

Vous souhaitez utiliser Mémoire Vive
pour un hommage ?

Parlez-en à notre équipe : nous contacterons l'agence funéraire de votre choix, ou nous vous proposerons une agence proche de chez vous qui propose notre service.

À défaut, nous vous accompagnerons nous-mêmes pour activer l'Espace Hommage de votre proche, dans les plus brefs délais.

{submitted ? (

Merci, votre message est bien reçu.

Nous reviendrons vers vous très rapidement à l'adresse {form.email || "que vous avez indiquée"} {form.telephone ? ` ou au ${form.telephone}` : ""}.

) : ( <> {/* Honeypot anti-spam — caché aux humains, rempli par les bots */}