← All work

Vale

Curated luxury real estate with a 300vh cross-fading hero and animated asking prices

Template
Vale
Sector
Luxury Real Estate
Year
2026
Built with
Astro 6, React 19, Tailwind CSS v4
Pages
11
Open the live demo
Vale

Vale is a curated-luxury real-estate template for boutique agencies that represent a handful of properties rather than a whole market. Eleven routes cover the home, a property archive and per-property pages with an eight-row spec panel, features list, gallery and enquiry CTA, a neighbourhoods index and detail pages, a journal, about, services, contact and 404. The hero is a 300vh sticky sequence: three featured residences cross-fade on a smoothstep curve tied to scroll progress, each with an editorial panel whose asking price counts up in USD. Further down, the neighbourhoods section pins and scrolls horizontally with containerAnimation-linked parallax on every panel. Three skins, Parchment & Brass, Midnight Estate and Slate Modern, switch from a floating control and persist in localStorage.

What’s inside

  • 11 routes, Home, Properties, Property detail, Neighbourhoods, Neighbourhood detail, Journal, Journal post, About, Services, Contact, 404
  • 300vh sticky hero, three featured residences cross-fade on a hand-written smoothstep curve driven by ScrollTrigger progress at scrub 0.6
  • Asking prices count up to their real value with a GSAP tween formatted live through Intl.NumberFormat USD
  • Pinned horizontal neighbourhoods rail, panels scroll sideways while each image scales down through a containerAnimation-linked ScrollTrigger
  • SplitText line reveals on the agency statement, philosophy strip, testimonial and closing CTA band
  • Featured listings with clip-path inset(0 0 100% 0) card reveals plus scrub parallax on every image

The signature

The home page opens on a 300vh sticky stage holding three featured residences. Instead of a hard swap, each layer’s opacity is computed from a smoothstep curve against the ScrollTrigger progress value, so the properties dissolve into one another across overlapping 0.28–0.36 and 0.62–0.70 windows while their images drift in opposite directions. When a layer crosses 80% opacity its editorial panel fires a GSAP tween that counts the asking price up from zero, formatted live as USD.

See it live

The demo is public: https://fpsjago.github.io/vale/. 11 pages, built with Astro 6, React 19, TypeScript, Tailwind CSS v4, GSAP, Lenis.