// ============================================================ // TERREXO — Home page // ============================================================ const { useState: useStateH, useEffect: useEffectH, useRef: useRefH } = React; function Hero() { const [mouse, setMouse] = useStateH({ x: 0.5, y: 0.5 }); const heroRef = useRefH(null); const isMobile = useMobile(768); useEffectH(() => { if (isMobile) return; const onMove = (e) => { if (!heroRef.current) return; const r = heroRef.current.getBoundingClientRect(); setMouse({ x: (e.clientX - r.left) / r.width, y: (e.clientY - r.top) / r.height, }); }; window.addEventListener("mousemove", onMove); return () => window.removeEventListener("mousemove", onMove); }, [isMobile]); const parallaxX = (mouse.x - 0.5) * 16; const parallaxY = (mouse.y - 0.5) * 12; return (
{/* Left: headline */}
Atelier ouvert · Foetz, Luxembourg Depuis 2008

Rénover
avec mesure.
Bâtir
pour durer.

Terrexo est un atelier d'artisans rénovateurs au Luxembourg. Extensions, combles, isolation, salles de bains, intérieurs sur mesure — un seul interlocuteur, du premier croquis à la dernière finition.

Demander une visite gratuite Voir nos réalisations
{/* Right: image */} {isMobile ? (
Maison Belair
) : (
Maison Belair
Extension Mersch
{/* Floating spec card */}
En cours · Belair
Maison de maître · 240 m²
Avancement 72%
)}
{/* Bottom strip */}
↓ Faites défiler {!isMobile && (
FR / LB / DE / EN BÂTIMENTS PUBLICS & PRIVÉS GARANTIE DÉCENNALE KLIMABONUS PARTENAIRE
)} {new Date().getFullYear()} — N° 18
); } function StatsBand() { const T = window.TERREXO; const isMobile = useMobile(640); return (
{T.stats.map(s => )}
); } function ServicesSection() { const T = window.TERREXO; const [hover, setHover] = useStateH(null); const isMobile = useMobile(768); return (
Six métiers,
une seule équipe.} lead="On ne sous-traite rien d'essentiel. Nos chefs de chantier, nos menuisiers et nos chefs de projet sont salariés de l'atelier." action={Tous les services } />
); } function FeaturedProject() { const p = window.TERREXO.projects[0]; const isMobile = useMobile(768); return (
02 — Étude de cas

Maison Belair, 1928.

Une maison de maître ramenée à sa lumière d'origine : moulures restaurées, parquets en chêne fumé, cuisine ouverte sur le jardin, et une isolation invisible mais radicale.

{[ ["Surface", "240 m²"], ["Durée", "9 mois"], ["Classe CPE", "F → B"], ].map(([k, v]) => (
{k}
{v}
))}
Voir l'étude complète
{p.title}
); } function ProjectsGrid() { const T = window.TERREXO; const featured = T.projects.slice(1, 7); const isMobile = useMobile(640); const isTablet = useMobile(1024); return (
Quelques chantiers
récents.} lead="Du Belair à Esch-sur-Alzette, en passant par Mersch et Echternach. Chaque maison a son tempérament." action={Toutes les réalisations } />
{featured.map(p => )}
); } function ProcessTeaser() { const T = window.TERREXO; const isMobile = useMobile(640); const isTablet = useMobile(1024); return (
Six étapes,
aucune surprise.} lead="On a toujours détesté les devis flous et les chantiers qui glissent. Notre méthode tient sur une page." action={Voir le détail } />
{T.process.map((step) => (
{step.step} {step.duration}
{step.label}
{!isMobile && (

{step.desc}

)}
))}
); } function Testimonials() { const T = window.TERREXO; const [idx, setIdx] = useStateH(0); const isMobile = useMobile(768); useEffectH(() => { const id = setInterval(() => setIdx(i => (i + 1) % T.testimonials.length), 6500); return () => clearInterval(id); }, []); const t = T.testimonials[idx]; return (
05 — Ils nous ont confié leur maison
" {t.quote} "
{t.name}
{t.where} · {t.project}
{T.testimonials.map((_, i) => (
); } function JournalTeaser() { const T = window.TERREXO; const isMobile = useMobile(640); const isTablet = useMobile(1024); return (
Notes d'atelier.} lead="Quelques textes longs sur l'artisanat, la rénovation au Luxembourg, et les choix qui durent." action={Tous les articles } />
{T.journal.map(j => (
{j.kicker} · {j.date}

{j.title}

{j.excerpt}

{j.readMin} min de lecture
))}
); } function FinalCTA() { const isMobile = useMobile(768); return (
{/* decorative grid */} {Array.from({ length: 20 }).map((_, i) => ( ))} {Array.from({ length: 20 }).map((_, i) => ( ))}
07 — Démarrer

Une visite,
un devis,
une décision.

On vient chez vous, on regarde, on écoute. Vous recevez un devis détaillé sous 10 jours. Aucune pression, aucune obligation.

Demander une visite +352 27 12 84 50
); } function HomePage() { useScrollReveal(); return ( <>