// Hero.jsx — cinematic full-bleed boutique-hotel hero with floating search. const { useState: useStateHero, useEffect: useEffectHero } = React; function HeroSearch({ onSearch }) { const { SEATTLE_NEIGHBORHOODS, PROPERTY_TYPES } = window.SantirmaData; const [where, setWhere] = useStateHero('All Seattle'); const [type, setType] = useStateHero('All'); const [budget, setBudget] = useStateHero('$2k – $4k'); const [whenOpen, setWhenOpen] = useStateHero(null); // 'where' | 'type' | 'budget' | null const budgets = ['Any budget', 'Under $2k', '$2k – $3k', '$2k – $4k', '$3k – $5k', '$5k+']; const Field = ({ label, value, options, onPick, openKey }) => { const open = whenOpen === openKey; return (
{open && (
{options.map(o => ( ))}
)}
); }; return (
); } function Hero({ onSearch, headlineVariant = 'better-places', emphasis = 'gold' }) { const { HERO_IMAGE } = window.SantirmaData; const [loaded, setLoaded] = useStateHero(false); useEffectHero(() => { const t = setTimeout(() => setLoaded(true), 60); return () => clearTimeout(t); }, []); const headlines = { 'better-places': ['Better Places.', 'Smarter Solutions.', 'Stronger Futures.'], 'rental-properties': ['Rental Properties.', 'Creative Solutions.', 'Lasting Value.'], 'your-home': ['Your Home.', 'Our Solutions.', 'Better Living.'], 'modern-living': ['Modern Living.', 'Trusted Solutions.', "Seattle’s Finest."], }; const lines = headlines[headlineVariant] || headlines['better-places']; const accent = emphasis === 'gold' ? 'var(--color-prestige-gold)' : '#F7F7F7'; return (
{/* Background image with ken-burns */}
{/* Layered protection gradient */}
{/* Side caption — boutique-hotel index card */}
Established Seattle · Vol. 01
{/* Content */}
A curated collection of Seattle rentals

{lines.map((line, i) => ( {line} ))}

Quality rental homes and creative housing solutions across Seattle’s most loved neighborhoods. Concierge service for renters. Honest stewardship for owners.

{/* Bottom row: search + trust */}
{[ ['142', 'Homes available'], ['98%', 'Renewal rate'], ['4.9', 'Resident rating'], ].map(([k, l]) => (
{k}
{l}
))}
); } window.SantirmaHero = Hero;