import { useState, useEffect } from 'react'; import { useFadeInRef } from '../../hooks/useFadeIn'; import HexCanvas from './HexCanvas'; import ScrollStory from './ScrollStory'; import BottomIllustration from './BottomIllustration'; import { TickerValue } from '../ui/TickerValue'; import { ChevronIcon } from '../ui/icons/ChevronIcon'; import { LogoIcon } from '../ui/icons/LogoIcon'; import type { FeatureMeta } from '../../types'; export default function HomePage({ onOpenDashboard, onOpenPricing, theme = 'light', features = [], hidePricing, }: { onOpenDashboard: () => void; onOpenPricing: () => void; theme?: 'light' | 'dark'; features?: FeatureMeta[]; hidePricing?: boolean; }) { const [statsActive, setStatsActive] = useState(false); useEffect(() => { const timer = setTimeout(() => setStatsActive(true), 300); return () => clearTimeout(timer); }, []); const whyRef = useFadeInRef(); const ctaRef = useFadeInRef(); return (
House hunting? Make your biggest investment your smartest move.
So many options — choosing the right one can feel overwhelming. Our interactive map makes it simple: select your must-haves and instantly see the areas that fit.
{step.description}
| Listing portals | {'\u201CCheck my postcode\u201D'} | Area guides | Perfect Postcode | |
|---|---|---|---|---|
|
{row.feature}
{row.subtitle && (
{row.subtitle}
)}
|
{[row.listings, row.postcode, row.guides].map((has, j) => (
{has ? '\u2713' : '\u2717'} | ))}✓ |
Listings only show what's on the market right now — a tiny, random slice. They tell you nothing about the area, or potential opportunities. We flip the search: start with what matters to you, and the right places reveal themselves.
Don't leave it to chance.