Sent in by practices, published with their permission. None of these were staged and none of them feature our logo on a wall.
Go-live morning, and nothing on fire
Bramble Health, Bristol
The handover that used to be a phone call
Kingsway Clinic, Leeds
Month-end, closed before lunch
Harbour Practice, Southampton
First multi-site roundtable, twelve chairs
Bristol
Notes written in the room, not after it
Kingsway Clinic, Leeds
Half seven, before the first arrival
Bramble Health, Bristol
Have one worth sending? We publish with a credit and never without asking, and we will take the photograph down the day you want it down.
Send us a photographA 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.
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.
Free block
This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.
Radix flavor
npx shadcn add "https://ui.beste.co/r/social57"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/social57"This installs the block to components/beste/block/social57.tsx plus the badge23 and button21 components it uses for the eyebrow and the closing action.
The installed file exports social57Demo alongside the block: the exact props behind the preview above. Spread it to get a working gallery in one line.
import { Social57, social57Demo } from "@/components/beste/block/social57";
export default function GalleryPage() {
return <Social57 {...social57Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Social57 } from "@/components/beste/block/social57";
export default function GalleryPage() {
return (
<Social57
badge={{ label: "In the wild" }}
heading="Photographs from rooms we did not decorate"
description="Sent in by practices, published with their permission."
frames={[
{
src: "/wall/go-live.jpg",
alt: "A clinician smiling in a bright clinic",
caption: "Go-live morning, and nothing on fire",
place: "Bramble Health, Bristol",
tall: true,
},
{
src: "/wall/handover.jpg",
alt: "Two colleagues talking in a corridor",
caption: "The handover that used to be a phone call",
place: "Kingsway Clinic, Leeds",
},
]}
closing="Have one worth sending? We publish with a credit and never without asking."
button={{ label: "Send us a photograph", href: "/contact" }}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string } | – | Eyebrow above the hairline rule, rendered through Badge23 |
heading | string | – | Section heading in the left column of the header |
description | string | – | Supporting paragraph, right-aligned from md up |
frames | Frame[] | [] | Photographs with captions, laid out as a masonry |
closing | string | – | Permission policy beside the closing action |
button | { label: string; href: string } | – | Outline submission action |
className | string | – | Extra classes for the outer section |
type ActionLink = {
label: string;
href: string;
};
type Frame = {
src: string;
alt: string;
caption: string;
place: string;
tall?: boolean;
};columns-1 sm:columns-2 lg:columns-3) rather than a grid, which is what lets frames of different heights pack without leaving gaps. Each figure carries break-inside-avoid so a photograph and its caption never split across a column.tall switches a frame from h-64 to h-96. The demo balances three tall and three short frames, which is what keeps the three columns roughly level at the bottom.lg that is exactly two per column.figure and figcaption pairs, so captions stay associated with their images.caption and place are separate, so the caption can describe the moment while the credit stays factual. Both are required, since publishing a customer photograph without a credit is what the closing note promises not to do.social59
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.
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.
social48
A community section listing four linked places to join as full-width hairline rows, each with an icon tile, a description, a light membership figure, and an arrow that shifts on hover.
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.