// Composants partagés : NavBar (avec mega-menu), Footer, Icon, TrustBar, TweaksPanel
const { useState, useEffect, useRef } = React;
function Icon({ name, className = '', style }) {
return {name};
}
// Contenu du mega-menu
const MEGA_MENU_DATA = {
services: [
{ key: 'fleuriste-marseille', label: 'Fleuriste funéraire Marseille' },
{ key: 'livraison-marseille', label: 'Livraison fleurs funéraires' },
],
communes: [
{ key: 'commune-aix-en-provence', label: 'Aix-en-Provence' },
{ key: 'commune-arles', label: 'Arles' },
{ key: 'commune-salon-de-provence', label: 'Salon-de-Provence' },
{ key: 'commune-cassis', label: 'Cassis' },
{ key: 'commune-la-ciotat', label: 'La Ciotat' },
{ key: 'commune-martigues', label: 'Martigues' },
{ key: 'commune-les-baux-de-provence', label: 'Les Baux-de-Provence' },
{ key: 'commune-aubagne', label: 'Aubagne' },
],
};
function MegaMenu({ setRoute, onClose }) {
return (
setAllMenuOpen(false)}
/>
{/* Panneau latéral */}
{/* En-tête panneau */}
{/* Navigation */}
Navigation
{[
{ key: 'boutique', label: 'Fleuriste' },
{ key: 'funerariums', label: 'Funérariums' },
{ key: 'fleuriste-marseille', label: 'Fleuriste funéraire Marseille' },
{ key: 'livraison-marseille', label: 'Livraison fleurs funéraires' },
{ key: 'guide', label: 'Guide et protocole' },
{ key: 'contact', label: 'Contact' },
{ key: 'apropos', label: 'À propos' },
].map((item, idx, arr) => (
{idx < arr.length - 1 && }
))}
{/* Marseille & Communes */}
Marseille & Communes
{[...MEGA_MENU_DATA.services, ...MEGA_MENU_DATA.communes].map((item, idx, arr) => (
{idx < arr.length - 1 && }
))}
>
);
}
function Footer({ setRoute }) {
return (
);
}
function TrustBar() {
const items = [
{ icon: 'local_shipping', label: 'Fleurs obsèques', value: 'Livraison express le jour même' },
{ icon: 'visibility_off', label: 'Engagement', value: 'Service discret' },
{ icon: 'schedule', label: 'Urgences', value: 'Livraison gerbe deuil 24h/24' },
{ icon: 'location_on', label: 'Périmètre', value: 'Grand Marseille & PACA' },
];
return (
);
}
function TweaksPanel({ open, onClose, primaryColor, setPrimaryColor }) {
const palette = [
{ key: '#39a3d5', label: 'Bleu Marseille', sub: 'Original' },
{ key: '#2282b3', label: 'Bleu Profond', sub: 'Plus intense' },
{ key: '#1a6491', label: 'Bleu Marine', sub: 'Sobre' },
{ key: '#57b8d8', label: 'Bleu Ciel', sub: 'Plus clair' },
{ key: '#2d7a8a', label: 'Bleu Pétrole', sub: 'Méditerranéen' },
{ key: '#3a6ea5', label: 'Bleu Indigo', sub: 'Élégant' },
{ key: '#1c3a4a', label: 'Bleu Nuit', sub: 'Minimaliste' },
];
if (!open) return null;
return (
Personnalisation
Couleur principale
{palette.map(p => {
const active = p.key.toLowerCase() === primaryColor.toLowerCase();
return (
);
})}
Le changement s'applique à toute l'interface.
);
}
function CookieBanner({ setRoute }) {
const [visible, setVisible] = useState(() => {
try { return !localStorage.getItem('fdm.cookies'); } catch { return true; }
});
const [leaving, setLeaving] = useState(false);
function dismiss(choice) {
setLeaving(true);
setTimeout(() => {
try { localStorage.setItem('fdm.cookies', choice); } catch {}
setVisible(false);
}, 320);
}
if (!visible) return null;
return (
{/* Icono + texto */}
Cookies & confidentialité
Nous utilisons des cookies pour améliorer votre expérience et analyser l'audience de notre site, conformément au RGPD.{' '}
{/* Boutons */}
);
}
Object.assign(window, { Icon, NavBar, Footer, TrustBar, TweaksPanel, CookieBanner, MEGA_MENU_DATA });