/* global React */ const { useState, useEffect, useRef } = React; // ===== Icons ===== const IconArrow = ({ size = 14 }) => ( ); const IconLeaf = () => ( ); const IconPath = () => ( ); const IconHouse = () => ( ); // ===== Hero scene — pure SVG so day/night truly transforms ===== function HeroScene({ mode }) { // Coordinates roughly tuned for a 1600x900 viewBox return ( {/* Sky gradients */} {/* Ground gradients */} {/* House body */} {/* Roof */} {/* Bollard glow filter */} {/* Window glow */} {/* Façade wash glow */} {/* Tree uplight */} {/* === Sky === */} {/* Stars (night only) */} {Array.from({ length: 40 }).map((_, i) => { const x = (i * 137) % 1600; const y = (i * 53) % 380; const r = 0.6 + ((i * 7) % 10) / 12; return ; })} {/* Distant tree line */} {/* Ground / lawn */} {/* Driveway curve */} {/* === Tree (left) === */} {/* Tree uplight pool — visible only at night */} {/* Uplight glow on tree foliage at night */} {/* === House === */} {/* Façade wash pools at base */} {/* Main body */} {/* Stone base */} {/* Right wing */} {/* Left wing */} {/* Main roof gable */} {/* Right wing roof */} {/* Left wing roof */} {/* Center dormer */} {/* Windows */} {[ { x: 90, y: 110, w: 30, h: 50 }, { x: 140, y: 110, w: 30, h: 50 }, { x: 320, y: 110, w: 30, h: 50 }, { x: 370, y: 110, w: 30, h: 50 }, { x: 90, y: 180, w: 30, h: 50 }, { x: 140, y: 180, w: 30, h: 50 }, { x: 320, y: 180, w: 30, h: 50 }, { x: 370, y: 180, w: 30, h: 50 }, { x: 410, y: 160, w: 24, h: 44 }, { x: 450, y: 160, w: 24, h: 44 }, { x: 15, y: 170, w: 24, h: 44 }, { x: 50, y: 170, w: 24, h: 44 }, ].map((w, i) => ( ))} {/* Front door */} {/* Window glow halos at night */} {[100, 150, 330, 380].map((x) => ( ))} {/* === Driveway bollards (path lights) === */} {[ { x: 240, y: 840, scale: 1.2 }, { x: 360, y: 800, scale: 1.1 }, { x: 480, y: 770, scale: 1.0 }, { x: 600, y: 740, scale: 0.95 }, { x: 1000, y: 740, scale: 0.95 }, { x: 1120, y: 770, scale: 1.0 }, { x: 1240, y: 800, scale: 1.1 }, { x: 1360, y: 840, scale: 1.2 }, ].map((b, i) => ( {/* Light pool on ground */} {/* Bollard post */} {/* Bollard head */} {/* Glow point */} ))} {/* === Walkway lights to door === */} {[ { x: 700, y: 600 }, { x: 740, y: 580 }, { x: 780, y: 565 }, { x: 880, y: 565 }, { x: 920, y: 580 }, { x: 960, y: 600 }, ].map((b, i) => ( ))} {/* Hedges */} {[ { x: 530, y: 555, w: 360, h: 26 }, { x: 920, y: 558, w: 100, h: 22 }, ].map((h, i) => ( ))} {/* Atmospheric vignette layer */} ); } // ===== Nav ===== function Nav({ lightsOn, setLightsOn }) { const [scrolled, setScrolled] = useState(false); const [menuOpen, setMenuOpen] = useState(false); useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 40); window.addEventListener("scroll", onScroll); return () => window.removeEventListener("scroll", onScroll); }, []); // Lock body scroll when mobile menu is open useEffect(() => { document.body.style.overflow = menuOpen ? "hidden" : ""; return () => { document.body.style.overflow = ""; }; }, [menuOpen]); const closeMenu = () => setMenuOpen(false); return ( ); } // ===== Hero ===== function Hero({ headline, sub, lightsOn, setLightsOn }) { return (
Estate at sunset illuminated by Ridge
Ridge Outdoor Lighting · Beauty After Dark
Bespoke Outdoor Lighting · Greater DFW Area

{sub}

Request a Consultation Explore Services

Scroll
); } // ===== Marquee ===== function Marquee() { const items = [ "Accent & Façade Lighting", "Garden & Landscape", "Path & Driveway", "Smart Controls", "Service & Maintenance", "Hand-aimed After Dark", ]; const all = [...items, ...items]; return (
{all.map((item, i) => ( {item} ))}
); } // ===== Services ===== function Services() { const services = [ { num: "01", icon: , title: "Accent & Façade Lighting", desc: "Reveal the craftsmanship of your home's exterior — stone, siding, entryways, and architectural details — with restraint and intention.", tags: ["Up-lighting", "Façade wash", "Well lights", "Accent spots"], }, { num: "02", icon: , title: "Landscape & Garden", desc: "Sculpt evening light through specimen trees, ornamental beds, and planted borders. Soft, layered, and tuned to the seasons.", tags: ["Ground spots", "Garden bed", "Specimen", "Seasonal scenes"], }, { num: "03", icon: , title: "Path & Driveway", desc: "Discreet bollards and flush pavers guide the approach without drawing the eye — safe footing, gracious arrival.", tags: ["Bollards", "Step lights", "Driveway markers", "Wayfinding"], }, ]; return (
— 01 / Disciplines

Three disciplines.
One quiet hand.

Every Ridge installation begins with a property walk. We design with the eye, not the spreadsheet — pairing fixtures, beam spreads, and color temperatures to flatter what's already beautiful about your home.

{services.map((s) => (
— {s.num}
{s.icon}

{s.title}

{s.desc}

{s.tags.map((t) => {t})}
))}
); } // ===== About / Editorial ===== function About() { return (
— 02 / On the House

We light homes
we'd want to live in.

Ridge was founded on a simple conviction: a beautifully built home deserves to be seen from the moment the sun sets. Our work is quiet, professional, and made to last — designed to transform your property after dark.

We work directly with homeowners throughout the Greater DFW area. Every system is custom designed, hand-aimed on site, and supported for the life of the install.

DFW
Service Area
15yr
Fixture Warranty
1:1
Owner-led Design
); } // ===== Process ===== function Process() { const steps = [ { num: "i", title: "Walk the Property", desc: "We meet on site — camera, sketchpad, no quoting yet. Just looking, listening, and learning your home." }, { num: "ii", title: "Design the Scenes", desc: "A custom plan: fixtures, optics, color temperature, zones, and a controls strategy tailored to your property." }, { num: "iii", title: "Hand-aim After Dark", desc: "Every fixture is positioned and aimed in person, the night of install. Nothing is set-and-forget." }, { num: "iv", title: "Tend Year-Round", desc: "Seasonal re-aiming, lamp swaps, and a service line you can actually call. Lifetime relationship." }, ]; return (
— 03 / How We Work

The Ridge
method.

No catalog systems. No subcontracted installers. Four steps, the same on every property — small enough to feel personal, structured enough to scale to a thirty-acre estate.

{steps.map((s) => (
{s.num}

{s.title}

{s.desc}

))}
); } // ===== Contact ===== function Contact() { const [submitted, setSubmitted] = useState(false); const [sending, setSending] = useState(false); const [error, setError] = useState(null); const [form, setForm] = useState({ name: "", email: "", phone: "", scope: "", message: "" }); const onSubmit = (e) => { e.preventDefault(); setSending(true); setError(null); fetch("https://formspree.io/f/tony@ridgeoutdoorlighting.com", { method: "POST", headers: { "Content-Type": "application/json", "Accept": "application/json" }, body: JSON.stringify({ name: form.name, email: form.email, phone: form.phone, scope: form.scope, message: form.message, _subject: "New consultation request from " + form.name, }), }) .then((res) => { if (res.ok) { setSubmitted(true); } else { setError("Something went wrong — please try again or call us directly."); } }) .catch(() => { setError("Something went wrong — please try again or call us directly."); }) .finally(() => setSending(false)); }; const setField = (k) => (e) => setForm({ ...form, [k]: e.target.value }); return (
— 04 / Begin a Project

Tell us about
your home.

We accept a small number of new commissions each season. Share a few details and we'll be in touch within two business days to schedule a property walk.

Web
ridgeoutdoorlighting.com
Service
Greater DFW Area · Private Estates
{submitted ? (

Thank you.

We've received your inquiry and will be in touch within two business days. In the meantime, please feel free to reach Tony directly.

) : (