Confidential sessions for a team that never switched off
Eight monthly hours, booked directly by staff, never reported back. Within a year the studio stopped losing its senior designers to burnout.
Eight monthly hours, booked directly by staff, never reported back. Within a year the studio stopped losing its senior designers to burnout.
Seven in the morning, along the river, for anyone coming off nights. Attendance was the surprise: over half the ward, most weeks.
Two case studies side by side under a serif heading that settles in word by word: each with a photograph drifting inside its frame, a small-caps client and sector line, a serif title, a summary, and a ruled foot pairing a serif result figure with a read link.
Two case studies side by side: each carries a photograph that drifts inside its frame, a client and sector rule, a serif title, a summary, and a ruled foot pairing the headline result with a read link.
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/showcase51?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/showcase51?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/showcase51.tsx plus the button22 sliding-marker pill and the text1 word stagger it uses.
The installed file exports showcase51Demo alongside the block: the exact props behind the preview above. Spread it to get a working case study section in one line.
import { Showcase51, showcase51Demo } from "@/components/beste/block/showcase51";
export default function Page() {
return <Showcase51 {...showcase51Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Showcase51 } from "@/components/beste/block/showcase51";
export default function Page() {
return (
<Showcase51
eyebrow="Case studies"
heading="Two companies, two years, and what changed."
button={{ label: "Bring us to your team", href: "/workplace", tone: "outline" }}
studies={[
{
client: "A design studio of forty",
sector: "Creative",
title: "Confidential sessions for a team that never switched off",
summary: "Eight monthly hours, booked directly by staff, never reported back.",
result: { value: "0", label: "Burnout departures in the second year" },
href: "/cases/studio",
image: { src: "/rooms/table.jpg", alt: "A calm room with a long stone table" },
},
]}
labels={{ read: "Read the case" }}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
eyebrow | string | – | Small-caps line above the heading |
heading | string | – | Section heading, rendered as an h2 through Text1 |
button | ActionButton | – | Pill action beside the heading |
studies | Study[] | [] | Case studies, two across from md |
labels | { read?: string } | {} | Read link wording; the link is dropped when unset |
className | string | – | Extra classes for the outer <section> |
type Study = {
client: string;
sector: string;
title: string;
summary: string;
result: { value: string; label: string };
href: string;
image: { src: string; alt: string };
};
type ActionButton = {
label: string;
href: string;
tone?: "primary" | "light" | "dark" | "outline";
};mt-auto, so both feet sit on the same line however uneven the summaries above them are; that is what makes the two figures comparable at a glance.result.value is a free string, so "0", "58%" and "3x" all render as given with no parsing and no count-up.client and sector are printed either side of a dot as separate spans, so a long client name wraps without stranding the dot.motion-safe:, so the affordance is dropped for reduced motion while the link keeps working.h3 under the section h2, and the grid is two across from md, so a third study wraps to a new row rather than compressing the pair.showcase7
Two-column section combining product image with large customer quote, author avatar, name, and role. Perfect for social proof sections alongside product visuals.
showcase5
Two-column comparison layout with product images, feature checklists, and visual differentiation between your product and competitors. Perfect for competitive positioning sections.
showcase45
A showcase of alternating split rows, each pairing an image tile that floats a live product micro-asset with an eyebrow, a light heading, a paragraph, and a checked bullet list.