/* Tidewell — page sections (homepage + shared) */ const { useState: useStateS, useEffect: useEffectS, useMemo: useMemoS } = React; const LinkS = (props) => window.Link(props); /* ─────────── Top utility bar ─────────── */ function Topbar({ region }) { const r = window.REGION_DATA[region]; return (
Free freight on dealer orders 2K+
Dealers Spec sheets {r.phone}
); } /* ─────────── Header / nav ─────────── */ function Header({ region, setRegion }) { return (
Tidewell
Request Quote
); } /* ─────────── Reusable styled product card ─────────── */ function ProductCard({ p, featured, region }) { const { formatPrice } = window; return (
{p.name} { e.currentTarget.style.display = "none"; }} /> {p.n} / 10
{p.category} {p.short}
{p.name}
{p.short}
From {formatPrice(p.priceUSD, region)}
); } /* ─────────── Hero (homepage) ─────────── */ function Hero({ region, variant }) { const r = window.REGION_DATA[region]; // Editorial hero — night pool with cover & underwater light glow const heroPhoto = "images/filter-pump.jpg"; return (
North America Edition · Est. 2008

Pool equipment,
obsessively
engineered.

{r.tagline}. Ten product lines, one ecosystem — covers, heating, sanitation, filtration, lighting — built to spec, shipped from {region === "US" ? "Phoenix and Charlotte" : "Mississauga and Calgary"}, supported by a dealer network you can actually reach.

Browse the catalog Configure my pool
Established
2008
Pools shipped
42,180
Warranty
10years
Pool with automatic cover retracted, lit at night Toronto, ON · 9:18 PM
Water temp · in-pool sensor
{region === "US" ? "84 °F" : "29 °C"}
); } /* ─────────── Marquee compliance bar ─────────── */ function Marquee({ region }) { const r = window.REGION_DATA[region]; const items = [ "Designed in North America", `${r.certs.join(" · ")} certified`, "Free freight on dealer orders", "Ships in 5 business days", "10-year manufacturer warranty", "Built for −40° winters" ]; return ( ); } /* ─────────── Product grid (homepage section) ─────────── */ function ProductGrid({ region, cardStyle }) { return (
01 / Catalog

Ten product lines.
One ecosystem.

Every Tidewell product is built to work together — same controller bus, same plumbing dimensions, same warranty desk. Mix and match without an integration project.

{window.PRODUCTS.map((p) => ( ))}
View full catalog
); } /* ─────────── Certifications ─────────── */ function Certs({ region }) { const data = { US: [ { code: "UL", title: "UL Listed", desc: "All electrical components carry UL 1081 listing for pool equipment." }, { code: "ETL", title: "ETL / Intertek", desc: "Heat pumps and chlorinators independently verified to ANSI standards." }, { code: "NSF/50", title: "NSF-50 Materials", desc: "Pool fittings, filters and feeders certified for potable contact." }, { code: "APSP-7", title: "APSP-7 Safety", desc: "Suction-entrapment compliant. VGB Act covered. Drain covers ANSI/APSP-16." } ], CA: [ { code: "CSA", title: "CSA Certified", desc: "Every wired product carries a CSA mark — accepted by all provincial inspectors." }, { code: "cULus", title: "cULus Listing", desc: "Pumps and lights dual-listed for Canadian and US electrical codes." }, { code: "NSF/50", title: "NSF-50 Materials", desc: "Pool fittings certified for potable contact under NSF/ANSI 50." }, { code: "ULC", title: "ULC S102", desc: "Solar collector materials tested to ULC fire-spread for roof-mount." } ] }; const items = data[region]; return (
02 / Compliance

{region === "US" ? "Listed, tested, and inspector-ready." : "Certified for Canadian codes."}

{region === "US" ? "Tidewell publishes a full certification dossier for every SKU. Your code official will thank you." : "Tidewell maintains a complete compliance dossier for every SKU — accepted by every provincial inspector."}

Download spec library Find a licensed installer
{items.map(c => (
{c.code}

{c.title}

{c.desc}

))}
); } /* ─────────── Pool Planner ─────────── */ function Planner({ region }) { const r = window.REGION_DATA[region]; const [size, setSize] = useStateS(32); const [shape, setShape] = useStateS("Rectangle"); const [climate, setClimate] = useStateS(region === "CA" ? "Cold" : "Warm"); const [features, setFeatures] = useStateS(["Auto Cover", "Salt"]); useEffectS(() => { setClimate(region === "CA" ? "Cold" : "Warm"); }, [region]); function toggleFeature(f) { setFeatures(features.includes(f) ? features.filter(x => x !== f) : [...features, f]); } const baseUSD = useMemoS(() => { let total = 6000 + (size - 20) * 250; if (climate === "Cold") total += 4800; if (climate === "Hot") total += 3200; if (features.includes("Auto Cover")) total += 8400; if (features.includes("Manual Cover")) total += 1200; if (features.includes("Salt")) total += 1450; if (features.includes("Robotic")) total += 1650; if (features.includes("Lights")) total += 960; return total; }, [size, climate, features]); const displaySize = region === "US" ? `${size} ft` : `${(size * 0.305).toFixed(1)} m`; return (
03 / Configurator

Plan your pool
in 90 seconds.

Tell us the shape, the climate, and the toys. We send back an itemized quote — priced in {r.currency}, shipped to your nearest hub, with the right certifications for your inspector.

{["Rectangle", "Kidney", "Freeform", "Lap", "Infinity"].map(s => ( ))}
{displaySize} {r.unitSize === "ft" ? "feet" : "metres"}
setSize(parseInt(e.target.value, 10))} />
{["Cold", "Temperate", "Warm", "Hot"].map(c => ( ))}
{["Auto Cover", "Manual Cover", "Salt", "Robotic", "Lights"].map(f => ( ))}

Your Tidewell build

Indicative — final quote within one business day
{shape} pool · {displaySize}{window.formatPrice(6000 + (size - 20) * 250, region)}
{climate === "Cold" ? "Inverter heat pump" : climate === "Hot" ? "Solar heating array" : "Climate package"}{window.formatPrice(climate === "Cold" ? 4800 : climate === "Hot" ? 3200 : 0, region)}
{features.map(f => { const map = { "Auto Cover": 8400, "Manual Cover": 1200, "Salt": 1450, "Robotic": 1650, "Lights": 960 }; return (
{f}{window.formatPrice(map[f], region)}
); })}
Freight to {region === "US" ? "lower 48" : "Canada"}included
Estimated total
{window.formatPrice(baseUSD, region)} {r.currency}
Email me this quote
); } /* ─────────── Applications (homepage strip) ─────────── */ function ApplicationsStrip() { return (
04 / Applications

Pools we've shipped.

From Banff to Boston — every home is different. Browse recent Tidewell installs by climate, scale, and equipment loadout.

{window.APPLICATIONS.map((a, i) => (
{a.loc} Install photo

{a.name}

{a.year} {a.type}
{a.equipment}
))}
All installations
); } /* ─────────── Resources ─────────── */ function Resources() { return (
05 / Resources

Field notes & guides.

Buying guides, engineering deep-dives and install playbooks — written by the people who actually answer the warranty phone.

{window.RESOURCES.map((r, i) => (
{r.tag}

{r.title}

{r.date} · 6 min read
))}
); } /* ─────────── Footer ─────────── */ function Footer({ region, setRegion }) { const r = window.REGION_DATA[region]; return ( ); } Object.assign(window, { Topbar, Header, Hero, Marquee, ProductGrid, ProductCard, Certs, Planner, ApplicationsStrip, Resources, Footer });