Asked for a pricing page before lunch. Shipped it after lunch. I did not open Figma once, which felt illegal.
From the community
Unedited, in their own words, gathered from the places where people talk about their work.
Asked for a pricing page before lunch. Shipped it after lunch. I did not open Figma once, which felt illegal.
The motion is the part I keep noticing. Nothing bounces. Headlines just arrive.
Rebuilt our whole marketing site over a weekend with an agent and this library. Client thought we hired a studio.
The changelog section alone saved me a day. Version on the left, changes on the right, done.
Every section reads the theme, so the site stays one thing as it grows. That is rarer than it sounds.
Reduced motion works everywhere. My partner uses it and finally stopped complaining about my sites.
A wall of short community posts in three masonry columns, each a muted card with an avatar, name, handle, a linked timestamp and the note itself, settling in with a small stagger. The header carries a serif headline that settles in word by word and a sliding-marker pill at its right end.
Short community posts laid out as a masonry wall: avatar, name, handle and a linked timestamp over the note itself, in three columns that fill by height rather than by row.
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/social59?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/social59?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/social59.tsx plus the button22 sliding-marker pill and the text1 word stagger it uses.
The installed file exports social59Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.
import { Social59, social59Demo } from "@/components/beste/block/social59";
export default function Page() {
return <Social59 {...social59Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Social59 } from "@/components/beste/block/social59";
export default function Page() {
return (
<Social59
eyebrow="From the community"
heading="Notes people left along the way."
description="Unedited, in their own words."
buttons={[{ label: "Join the conversation", href: "/community", tone: "outline" }]}
notes={[
{
name: "Phoebe Bridgers",
handle: "@phoebe",
avatar: { src: "/people/one.jpg", alt: "Portrait" },
text: "Asked for a pricing page before lunch. Shipped it after lunch.",
time: "2h",
href: "/posts/1",
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
eyebrow | string | – | Small-caps line above the heading |
heading | string | – | Section heading, through Text1 |
description | string | – | Paragraph under the heading |
buttons | ActionButton[] | [] | Pill actions at the right end of the header |
notes | Note[] | [] | The wall, in order |
className | string | – | Extra classes for the outer <section> |
type Note = {
name: string;
handle: string;
avatar: { src: string; alt: string };
text: string;
time: string;
href: string;
};
type ActionButton = {
label: string;
href: string;
tone?: "primary" | "light" | "dark" | "outline";
};break-inside-avoid, which is what stops a note being split across a column boundary.index % 3 rather than the raw index, so all three columns begin arriving together instead of the third column lagging by a full sweep.social53
A community credit section opening on three hairline figures, then naming each contributor in a hairline matrix of cards with their practice, what they changed, and how many reports they filed.
social57
A community gallery laid out as a masonry of customer photographs at mixed heights, each captioned with what is happening and the practice it came from.
social47
A social proof wall with an eyebrow over a hairline rule, a two-column heading, and a masonry of bordered quote cards each with a name and handle.
social58
A masonry of what readers wrote back, disagreements included, filtered by platform pills whose counts come from the responses themselves, over a hairline row of accounts to follow.