/* Hero — 5 variations switchable via `variant` prop (1–5) */ const HERO_PHOTO_DEFAULT = "https://images.unsplash.com/photo-1559925393-8be0ec4767c8?w=900&q=80"; const HERO_PHOTO_ALT = "https://images.unsplash.com/photo-1521334884684-d80222895322?w=900&q=80"; const HERO_PHOTO_BAKERY = "https://images.unsplash.com/photo-1545205597-3d9d02c29597?w=1200&q=80"; const HERO_INDUSTRIES = [ { word: "cafés", color: "#0F8C5F", photo: "https://images.unsplash.com/photo-1495474472287-4d71bcdd2085?w=1200&q=80", // clean latte still life tagline: "— open the door, find them online.", }, { word: "bars", color: "#E68A19", photo: "https://images.unsplash.com/photo-1470337458703-46ad1756a187?w=1200&q=80", // minimal bar with bottles tagline: "— the new local, on the front page.", }, { word: "beauty clinics", color: "#E04E66", photo: "https://images.unsplash.com/photo-1540555700478-4be289fbecef?w=1200&q=80", // minimal linen + perfume tagline: "— book a treatment in one tap.", }, { word: "boutiques", color: "#8B5CF6", photo: "https://images.unsplash.com/photo-1490481651871-ab68de25d43d?w=1200&q=80", // minimal hanging clothes tagline: "— a shop window that's always open.", }, { word: "bakeries", color: "#0E7490", photo: "https://images.unsplash.com/photo-1568254183919-78a4f43a2877?w=1200&q=80", // minimal bread on linen tagline: "— today's bake, on every search.", }, { word: "yoga studios", color: "#A21CAF", photo: "https://images.unsplash.com/photo-1545205597-3d9d02c29597?w=1200&q=80", // yoga mat minimal tagline: "— class schedule, beautifully presented.", }, ]; function HeroCTAs({ small }) { const cls = small ? "btn btn-sm" : "btn btn-lg"; return (
Get a quote See the plans
); } function HeroVariant1() { return (
Web design · Ireland & EU

A considered website
for your small business.

Two subscription plans. Hosting, domain, and SEO included. Built and maintained by a two-person studio so you can focus on the work that actually matters.

Based in Ireland · serving businesses across the EU
made with care
); } /* ============================================================ V2 — Production hero Asymmetric two-column on desktop, stacked on mobile. Big floating browser mock with rotating-industry headline. ============================================================ */ function HeroVariant2() { const sectionRef = React.useRef(null); const [industryIdx, setIndustryIdx] = React.useState(0); // Rotate the industry word every 2.4s with a soft crossfade React.useEffect(() => { if (window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches) return; const id = setInterval(() => { setIndustryIdx(i => (i + 1) % HERO_INDUSTRIES.length); }, 2400); return () => clearInterval(id); }, []); // Cursor-aware spotlight (desktop, fine pointer only) React.useEffect(() => { const el = sectionRef.current; if (!el) return; if (window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches) return; if (window.matchMedia && window.matchMedia("(pointer: coarse)").matches) return; let raf = 0; let pendingX = 50, pendingY = 30; const onMove = (e) => { const r = el.getBoundingClientRect(); pendingX = ((e.clientX - r.left) / r.width) * 100; pendingY = ((e.clientY - r.top) / r.height) * 100; if (!raf) raf = requestAnimationFrame(() => { el.style.setProperty("--mx", pendingX + "%"); el.style.setProperty("--my", pendingY + "%"); raf = 0; }); }; el.addEventListener("pointermove", onMove); return () => { el.removeEventListener("pointermove", onMove); if (raf) cancelAnimationFrame(raf); }; }, []); const cur = HERO_INDUSTRIES[industryIdx]; return (
{/* Layered ambient background */}
); } function HeroVariant3() { return (
Subscription web design

Your business,
beautifully online.

One monthly subscription. The website, the hosting, the SEO — all sorted.

); } function HeroVariant4() { return (
Sonal Studio · est. 2026

The two-person studio
behind your next website.

We design, build, and look after websites for small businesses across Ireland and the EU. Two plans. Price on request. No surprises.

); } function HeroVariant5() { return (
Issue No. 01 · 2026

made for small businesses.

A boutique web-design studio. Two subscriptions, carefully maintained sites, the technical headaches handled.

); } function Hero({ variant = 1 }) { switch (variant) { case 2: return ; case 3: return ; case 4: return ; case 5: return ; default: return ; } } window.Hero = Hero;