Who comes here
Each one has its own page, its own fee and its own practitioner. Pick the one that sounds closest and read it properly.
Four hairline cards, each a whole link opening with a round portrait, then a quiet label, a serif title, a line of who it is for and an arrow that lifts on hover.
Four hairline cards, each a whole link opening with a round portrait above a label, a serif title and a line of who it is for.
Upgrade to Pro
Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.
Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.
Radix flavor
npx shadcn add "https://ui.beste.co/r/usecase57?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/usecase57?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/usecase57.tsx plus the button22 sliding-marker pill and the text1 word stagger it uses.
The installed file exports usecase57Demo alongside the block: the exact props behind the preview above. Spread it to get a working linked Audience Cards in one line.
import { Usecase57, usecase57Demo } from "@/components/beste/block/usecase57";
export default function Page() {
return <Usecase57 {...usecase57Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Usecase57 } from "@/components/beste/block/usecase57";
export default function Page() {
return (
<Usecase57
eyebrow="Who comes here"
heading="Four rooms, four reasons to be in one."
description="Each one has its own page, fee and practitioner."
button={ label: "Not sure which", href: "/contact", tone: "outline" }
audiences={[
{
label: "On your own",
title: "Individuals",
description: "Weekly therapy with one steady practitioner.",
href: "/individuals",
portrait: { src: "/people/one.jpg", alt: "Portrait" },
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
eyebrow | string | – | Small-caps line above the heading |
heading | string | – | Section heading, rendered as an h2 through Text1 |
description | string | – | Intro paragraph under the heading |
button | ActionButton | – | Pill action beside the heading |
audiences | Audience[] | [] | Linked cards, four across from lg |
className | string | – | Extra classes for the outer <section> |
type Audience = {
label: string;
title: string;
description: string;
href: string;
portrait: Image;
};
type Image = { src: string; alt: string };
type ActionButton = {
label: string;
href: string;
tone?: "primary" | "light" | "dark" | "outline";
};Link, portrait included, so an audience is a single destination rather than a card with a link in it.size-16 frame with no parallax: faces are held still while landscape photographs elsewhere in the set drift.label is a sentence-case line rather than a second small-caps eyebrow, keeping one uppercase line in the section.h-full, with the arrow pushed down by the margin above it.blur(24px) on decode, with a complete check for cached files.0.1 per card, so four arrive in order across the row.usecase61
Three case studies, each card a whole link: a photograph drifting inside its frame, a serif figure with the span it covers, the story in two sentences and an attribution facing an arrow that lifts on hover.
usecase62
Three route cards ordered from slowest to quickest, each one a whole link with a pace label, a serif title, a paragraph and a dotted pair of details; the middle route inverts to ink to mark the usual choice.
usecase41
A use-case section with an eyebrow over a hairline rule, a two-column heading, and three bordered role cards with an icon chip, a role label, a title, a description, and an arrow link.
usecase60
Two ruled directories side by side under their own small-caps headings, every row a link carrying a serif label, a line of context and an arrow that lifts as the row tints on hover.