A hiring page's team voices on a dark section. Once a quote is in, the lead card offers a link to that team's open roles through `children`. The controls take the section's white text, with no extra setup.
registry/demos/relay-carousel-careers-demo.tsx
import { RelayCarousel, RelayCarouselItem } from "@/components/ui/relay-carousel";
const team = [
{
name: "Sofía Herrera",
role: "Product Designer, 3 years",
team: "Design",
city: "Lisbon",
quote:
"I joined for the craft and stayed for the critiques. Nobody here is precious about their pixels, and the work is better for it.",
photo: "1521999693742-4717d76f97cc",
alt: "A designer sketching at her desk under a lamp late at night",
},
{
name: "Daniel Mensah",
role: "Staff Engineer, 5 years",
team: "Platform",
city: "Accra",
quote:
"We ship small and often, and on-call is a rota, not a hero story. A Friday deploy here is just another deploy.",
photo: "1719400471588-575b23e27bd7",
alt: "An engineer working late in a dark room lit by screens of code",
},
{
name: "Hana Kobayashi",
role: "Support Lead, 2 years",
team: "Support",
city: "Remote",
quote:
"Support isn't a queue to clear. When three customers trip on the same thing, I open the issue and watch it get fixed that week.",
photo: "1588873281272-14886ba1f737",
alt: "A support lead gesturing to a customer on a laptop video call",
},
{
name: "Marcus Feld",
role: "Data Scientist, 4 years",
team: "Data",
city: "Berlin",
quote:
"Questions arrive with context and the time to answer them properly. I spend my weeks on analysis, not on dashboards nobody opens.",
photo: "1758876022473-d3d8513f15d3",
alt: "Two colleagues talking in front of a wall of sticky notes",
},
{
name: "Aisha Rahman",
role: "Engineering Manager, 6 years",
team: "Mobile",
city: "London",
quote:
"Focus weeks sounded like a perk when I joined. They turned out to be how we plan, and my team has never shipped calmer.",
photo: "1768471125958-78556538fadc",
alt: "An engineering manager working quietly in a studio full of plants",
},
{
name: "Tomás Ibarra",
role: "Brand Designer, 1 year",
team: "Brand",
city: "Mexico City",
quote:
"In my first month I redrew the icon set and nobody asked me to wait my turn. The bar is high, and so is the trust.",
photo: "1761122827167-159d1d272313",
alt: "A designer in a cap sketching icons on a tablet at his desk",
},
];
const photo = (id: string) =>
`https://images.unsplash.com/photo-${id}?auto=format&fit=crop&w=880&h=840&q=80`;
export function RelayCarouselCareersDemo() {
return (
<div className="flex min-h-[var(--demo-height,auto)] w-full flex-col justify-center overflow-hidden rounded-2xl bg-zinc-950 py-14 text-white sm:py-20">
<RelayCarousel
aria-labelledby="relay-careers-heading"
heading={
<h2
id="relay-careers-heading"
className="text-[2rem] leading-[1.02] font-semibold tracking-[-0.035em] text-balance @2xl:text-5xl"
>
Ask the people
<br />
<span className="text-zinc-500">who build Okto.</span>
</h2>
}
>
{team.map((person) => (
<RelayCarouselItem
key={person.name}
name={person.name}
role={person.role}
label={`${person.team} · ${person.city}`}
quote={person.quote}
image={photo(person.photo)}
alt={person.alt}
>
<a
href="#open-roles"
aria-label={`Open roles in ${person.team}`}
className="group/link grid size-9 place-items-center rounded-full bg-white text-zinc-950 transition-transform duration-200 ease-out outline-white hover:scale-105 focus-visible:outline-2 focus-visible:outline-offset-2 active:scale-95"
>
<svg
aria-hidden
viewBox="0 0 16 16"
fill="none"
stroke="currentColor"
strokeWidth="1.6"
strokeLinecap="round"
strokeLinejoin="round"
className="size-4 transition-transform duration-200 ease-out group-hover/link:translate-x-px group-hover/link:-translate-y-px"
>
<path d="M5 11 11 5M6 5h5v5" />
</svg>
</a>
</RelayCarouselItem>
))}
</RelayCarousel>
</div>
);
}
Live preview, examples and props: https://keyframeui.com/components/relay-carousel#relay-carousel-careers-demo