import { Section } from "../ui/Section"; import { SectionHeading } from "../ui/SectionHeading"; import { ButtonLink } from "../ui/ButtonLink"; import { Reveal } from "../ui/Reveal"; import { Stagger, StaggerItem } from "../ui/Stagger"; import { Logo } from "../ui/Logo"; import { CountUp } from "../ui/CountUp"; import { STUDIO } from "@/lib/site"; import { games } from "@/lib/games"; import { TEAM } from "@/lib/studio"; /** * Who is behind the game. * * Two columns rather than another full-width text block: the copy on the left, * a brand plate on the right. The figures are counted from the real data, so * the home page cannot claim a team size or a catalogue the rest of the site * contradicts. */ export function StudioIntro() { const foundingYear = Number(STUDIO.foundingDate); const facts = [ { value: TEAM.length, from: 0, label: "People" }, { value: games.length, from: 0, label: games.length > 1 ? "Worlds in progress" : "World in progress", }, // A year counting up from zero reads as a random number for most of the // animation. Rolling the last dozen keeps it legible as a date throughout. { value: foundingYear, from: foundingYear - 12, label: "Founded" }, ]; return (
A SMALL TEAM,
BIG HORIZONS. } lead="We build worlds where every horizon hides a story. Hand-crafted games made to be lived in, not just played through. Each one a different summit, a different climb." /> {/* The three figures land one after the other, each one starting to count as it arrives — three counters running at once is a slot machine. */} {facts.map((fact) => (

{fact.label}

))}
MEET THE TEAM
{/* Brand plate. Deliberately not a team photo: only one member has been shot so far, and a single face cannot stand in for the studio. */}
); }