/* ============================================================ EHBT BATIPRO — App ============================================================ */ const { useState, useEffect, useRef, useCallback } = React; /* ---------- Image library (Unsplash, façades & chantiers) ---------- */ const IMG = { hero: "media/img1.webp", whyVisual: "media/XVIIIe.JPEG", about1: "media/Entreprise1.jpg", about2: "media/Entreprise2.jpg", baBefore: "media/avant.jpg", baAfter: "media/apres.jpg", baBefore2: "https://images.unsplash.com/photo-1518780664697-55e3ad937233?auto=format&fit=crop&w=2000&q=80", baAfter2: "https://images.unsplash.com/photo-1577495508048-b635879837f1?auto=format&fit=crop&w=2000&q=80", baBefore3: "https://images.unsplash.com/photo-1551503766-ac63dfa6401c?auto=format&fit=crop&w=2000&q=80", baAfter3: "https://images.unsplash.com/photo-1602343168117-bb8ffe3e2e9f?auto=format&fit=crop&w=2000&q=80", gal: [ "media/ravalement.jpg", "media/rejointement.jpg", "media/enduit.jpg", "media/ite.JPEG", "media/apres.jpg", "media/XVIIIe.JPEG", "media/nettoyagepeinture.png", "media/toiture.png", ], }; /* ---------- Icons (line, stroked) ---------- */ const Icon = ({ name, ...p }) => { const s = { fill: "none", stroke: "currentColor", strokeWidth: 1.6, strokeLinecap: "round", strokeLinejoin: "round" }; const paths = { trowel: , stones: , brush: , shield: , wall: , drop: , arrow: , arrowOut: , plus: , menu: , close: , phone: , check: , drag: , chevL: , chevR: , pin: , mail: , clock: , star: , sparkle: , }; return {paths[name]}; }; /* ---------- Reveal-on-scroll ---------- */ function useReveal() { useEffect(() => { const els = document.querySelectorAll(".reveal"); const io = new IntersectionObserver((entries) => { entries.forEach((e) => { if (e.isIntersecting) { e.target.classList.add("in"); io.unobserve(e.target); } }); }, { threshold: 0.12, rootMargin: "0px 0px -10% 0px" }); els.forEach((el) => io.observe(el)); return () => io.disconnect(); }, []); } /* ============================================================ HEADER ============================================================ */ function Header({ onCta, mobileOpen, setMobileOpen }) { const [scrolled, setScrolled] = useState(false); useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 30); onScroll(); window.addEventListener("scroll", onScroll, { passive: true }); return () => window.removeEventListener("scroll", onScroll); }, []); return (
EHBT Batipro
07 67 56 44 23
); } function MobileMenu({ open, onClose, onCta }) { const items = [ { l: "Accueil", h: "#accueil", n: "01" }, { l: "Nos expertises", h: "#services", n: "02" }, { l: "Réalisations", h: "#realisations", n: "03" }, { l: "L'entreprise", h: "#about", n: "04" }, { l: "Contact", h: "#contact", n: "05" }, ]; return (
EHBT Batipro
07 67 56 44 23
); } /* ============================================================ HERO ============================================================ */ function Hero({ onCta }) { return (
Scroll · Découvrir
Experts en façades depuis + de 10 ans

Façades sublimées,
expertise affirmée.

Ravalement, enduits traditionnels, restauration du bâti ancien. Nous redonnons vie à vos façades avec savoir-faire et exigence, dans tout le Loir-et-Cher.

Voir nos réalisations
10+
Années d'expérience
240+
Chantiers livrés
100%
Garantie décennale
5/5
Avis Google clients
); } /* ============================================================ SERVICES ============================================================ */ const SERVICES = [ { n: "01", icon: "trowel", title: "Ravalement de façade", desc: "Nettoyage, traitement, enduits & finitions pour redonner éclat et protection à vos murs.", tag: "Crépis · Hydrofuge", }, { n: "02", icon: "stones", title: "Rejointement de pierre", desc: "Reprise des joints à la chaux dans le respect des techniques traditionnelles du bâti ancien.", tag: "Chaux · Patrimoine", }, { n: "03", icon: "brush", title: "Peinture façade", desc: "Peintures pliolite et siloxane haute durabilité, choisies avec vous pour un rendu sur-mesure.", tag: "Siloxane · Pliolite", }, { n: "04", icon: "shield", title: "Isolation thermique ITE", desc: "Isolation par l'extérieur, jusqu'à 30 % d'économies d'énergie et un vrai gain de confort toute l'année.", tag: "Performance · Confort", }, { n: "05", icon: "wall", title: "Maçonnerie traditionnelle", desc: "Reprise de fissures, ouvertures, encadrements de pierre et travaux de gros œuvre artisanaux.", tag: "Pierre · Brique", }, { n: "06", icon: "drop", title: "Nettoyage toiture", desc: "Démoussage, traitement hydrofuge et application d'un revêtement protecteur longue durée.", tag: "Démoussage · Anti-mousse", }, ]; function Services() { return (
02 · Nos expertises

Un métier complet,
une exigence unique.

De la simple remise en peinture à la restauration complète d'un bâti ancien. Nous maîtrisons l'ensemble des techniques de façade, anciennes comme contemporaines.

{SERVICES.map((s) => (
{s.n} / 06

{s.title}

{s.desc}

{s.tag}
))}
); } /* ============================================================ WHY US — Accordion list + visual ============================================================ */ const WHY = [ { n: "01", h: "Plus de 10 ans d'expérience", p: "Une équipe artisanale rodée, formée aux techniques anciennes comme aux dernières finitions contemporaines.", }, { n: "02", h: "Respect du bâti ancien", p: "Chaux naturelle, joints traditionnels, pierre apparente. Nous préservons le caractère de votre patrimoine.", }, { n: "03", h: "Protection durable", p: "Traitement hydrofuge, reprise des fissures, isolation thermique : votre façade gagne en performance et en longévité.", }, { n: "04", h: "Finitions soignées", p: "Le détail fait la différence : encadrements nets, raccords invisibles, surfaces régulières, chantier propre.", }, { n: "05", h: "Engagement local", p: "Entreprise familiale basée à Onzain, nous intervenons dans tout le Loir-et-Cher avec une vraie relation de proximité.", }, ]; function Why() { const [active, setActive] = useState(0); return (
03 · Pourquoi nous choisir

L'artisanat,
sans compromis.

Cinq raisons qui font la différence sur chacun de nos chantiers. Du diagnostic initial à la livraison finale.

{WHY.map((w, i) => (
setActive(i)} onClick={() => setActive(i)} > {w.n}

{w.h}

{w.p}

))}
10ans Garantie décennale
Chantier · Blois centre
Restauration d'une demeure du XVIIIe
); } /* ============================================================ ABOUT ============================================================ */ function About() { return (
04 · Qui sommes-nous

Une entreprise familiale,
enracinée à Onzain.

Chez EHBT BATIPRO, on est une entreprise familiale passionnée par la rénovation de façade et le travail bien fait. Basés à Blois, nous intervenons dans le Loir-et-Cher (41) pour le ravalement de façade, le traitement des fissures, les enduits à la chaux, l'imperméabilisation et l'ITE.

Chaque chantier est étudié avec sérieux pour proposer une solution durable, adaptée à votre façade et à votre bâtiment. Notre priorité : un travail propre, honnête et soigné, avec un vrai accompagnement du début à la fin.

Siège
Onzain (41)
Zone d'intervention
Loir-et-Cher
Assurance
Décennale
Garantie
Décennale
); } /* ============================================================ BEFORE / AFTER SLIDER ============================================================ */ const BA_PROJECTS = [ { place: "Longère · Amboise", title: "Rejointement complet & enduit à la chaux", before: IMG.baBefore, after: IMG.baAfter, }, { place: "Longère · Vendôme", title: "Rejointement pierre & restauration patrimoniale", before: IMG.baBefore2, after: IMG.baAfter2, }, { place: "Pavillon · Romorantin", title: "Isolation thermique extérieure & finition siloxane", before: IMG.baBefore3, after: IMG.baAfter3, }, ]; function BeforeAfter() { const [pos, setPos] = useState(50); const wrapRef = useRef(null); const draggingRef = useRef(false); const updateFromEvent = useCallback((clientX) => { const el = wrapRef.current; if (!el) return; const rect = el.getBoundingClientRect(); const ratio = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width)); setPos(ratio * 100); }, []); useEffect(() => { const onMove = (e) => { if (!draggingRef.current) return; const x = e.touches ? e.touches[0].clientX : e.clientX; updateFromEvent(x); }; const onUp = () => { draggingRef.current = false; }; window.addEventListener("mousemove", onMove); window.addEventListener("touchmove", onMove, { passive: false }); window.addEventListener("mouseup", onUp); window.addEventListener("touchend", onUp); return () => { window.removeEventListener("mousemove", onMove); window.removeEventListener("touchmove", onMove); window.removeEventListener("mouseup", onUp); window.removeEventListener("touchend", onUp); }; }, [updateFromEvent]); const startDrag = (e) => { draggingRef.current = true; const x = e.touches ? e.touches[0].clientX : e.clientX; updateFromEvent(x); }; const project = BA_PROJECTS[0]; return (
Avant
Après
{project.place}
{project.title}
); } /* ============================================================ REALISATIONS — Gallery ============================================================ */ const GAL_ITEMS = [ { cls: "gal-a", place: "Blois", name: "Ravalement de façade", tag: "Ravalement", cat: "Ravalement", i: 0 }, { cls: "gal-b", place: "Blois · Centre", name: "Rejointement de pierre", tag: "Rejointement", cat: "Pierre", i: 1 }, { cls: "gal-c", place: "Bléré", name: "Enduit taloché", tag: "Enduit", cat: "Ravalement", i: 2 }, { cls: "gal-d", place: "Tours", name: "Isolation thermique ITE", tag: "ITE", cat: "ITE", i: 3 }, { cls: "gal-e", place: "Amboise", name: "Façade après travaux", tag: "Restauration", cat: "Restauration", i: 4 }, { cls: "gal-f", place: "Niort", name: "Restauration bâti ancien", tag: "Restauration", cat: "Restauration", i: 5 }, { cls: "gal-g", place: "Loches", name: "Nettoyage & peinture", tag: "Peinture", cat: "Ravalement", i: 6 }, { cls: "gal-h", place: "Blois", name: "Nettoyage toiture", tag: "Toiture", cat: "Toiture", i: 7 }, ]; const FILTERS = ["Tous", "Ravalement", "Pierre", "ITE", "Restauration", "Toiture"]; function Realisations() { const [filter, setFilter] = useState("Tous"); const [galVisible, setGalVisible] = useState(false); const galRef = useRef(null); const filtered = filter === "Tous" ? GAL_ITEMS : GAL_ITEMS.filter(g => g.cat === filter); const isFiltered = filter !== "Tous"; useEffect(() => { if (!galRef.current || galVisible) return; const io = new IntersectionObserver(([e]) => { if (e.isIntersecting) { setGalVisible(true); io.disconnect(); } }, { threshold: 0.05 }); io.observe(galRef.current); return () => io.disconnect(); }, [galVisible]); return (
05 · Réalisations

Avant / après -
le geste qui transforme.

{FILTERS.map((f) => ( ))}
{filtered.map((g) => (
{g.tag}
{g.place}
{g.name}
))}
); } /* ============================================================ PROCESS — Four steps ============================================================ */ function Process() { const steps = [ { n: "01", h: "Diagnostic gratuit", p: "Visite sur site, état des lieux de la façade, conseils techniques et estimation budgétaire." }, { n: "02", h: "Devis détaillé", p: "Proposition transparente, choix des matériaux, planning précis et accompagnement personnalisé sur les aides disponibles." }, { n: "03", h: "Chantier soigné", p: "Préparation, application, finitions. Un chantier propre, sécurisé et respectueux du voisinage." }, { n: "04", h: "Livraison & garantie", p: "Réception du chantier, livret d'entretien et garantie décennale sur l'ensemble des travaux." }, ]; return (
06 · Notre méthode

De la première visite
à la dernière touche.

Une démarche structurée en quatre temps. Pour que chaque projet avance avec clarté, sérénité et un budget maîtrisé.

{steps.map((st) => (
{st.n}

{st.h}

{st.p}

))}
); } /* ============================================================ TRUST BAR ============================================================ */ function TrustBar() { return (
240+
Façades rénovées en Loir-et-Cher
10ans
Au service du patrimoine
5.0
Note moyenne Google · 6 avis
Décennale
Couverture incluse sur tous nos chantiers
); } /* ============================================================ CONTACT — Final CTA + form ============================================================ */ const SERVICE_OPTIONS = ["Ravalement", "Rejointement", "Peinture", "ITE", "Maçonnerie", "Toiture"]; function Contact({ formRef }) { const [chosen, setChosen] = useState(["Ravalement"]); const [submitted, setSubmitted] = useState(false); const [sending, setSending] = useState(false); const [error, setError] = useState(null); const toggle = (s) => { setChosen((c) => c.includes(s) ? c.filter((x) => x !== s) : [...c, s]); }; const onSubmit = async (e) => { e.preventDefault(); setSending(true); setError(null); const data = new FormData(e.target); data.append("travaux", chosen.join(", ")); try { const res = await fetch("https://formspree.io/f/mredqpzq", { method: "POST", body: data, headers: { Accept: "application/json" }, }); if (res.ok) { setSubmitted(true); } else { setError("Une erreur est survenue. Veuillez réessayer ou nous appeler directement."); } } catch { setError("Une erreur est survenue. Veuillez réessayer ou nous appeler directement."); } finally { setSending(false); } }; return (
07 · Contact

Prêt à redonner vie
à votre façade ?

Contactez-nous pour un diagnostic gratuit et un devis personnalisé. Notre équipe vous accompagne de A à Z.

Téléphone 07 67 56 44 23
Email ehbtbatipro@gmail.com
Adresse 26 rue du Stade · 41150 Onzain
Horaires Lun. – Ven. 8h – 18h · Sam. sur rendez-vous
{!submitted ? (

Demande de devis

Réponse sous 24h
{SERVICE_OPTIONS.map((s) => ( ))}