Contributor Wall

Built with them

The people who told us what to change

Every one of these is a practising clinician, manager, or receptionist. None of them work here and none of them were paid.

118

practices in the feedback group

412

changes shipped from their reports

31

features we dropped after they said no

Portrait of Elena Rourke

Elena Rourke

Bramble Health, Bristol

Designed the waiting list backfill after describing her Monday in detail

64 reports

Portrait of Tom Ashby

Tom Ashby

Kingsway Clinic, Leeds

Argued us out of a settings page nobody needed, twice

48 reports

Portrait of Dr Amelia Frost

Dr Amelia Frost

Harbour Practice, Southampton

Rewrote the clinical note template in a shared document over one weekend

39 reports

Portrait of Maya Coleman

Maya Coleman

Bramble Health, Bristol

Timed every reception task with a stopwatch so we could argue with data

27 reports

Portrait of Idris Warren

Idris Warren

Norwich Care Collective

Broke the multi-site rota in nine ways before anybody else saw it

22 reports

Portrait of Sara Okonjo

Sara Okonjo

Fenwick Group, Sheffield

Made the case for insurer reconciliation that changed the whole billing plan

18 reports

If you would rather shape the thing than wait for it, the feedback group meets fortnightly and has room.

Join the group
About this block

Contributor WallPRO

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.

Social53: Contributor Wall

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.

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.

Upgrade Now

Installation

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

bash
npx shadcn add "https://ui.beste.co/r/social53?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/social53?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/social53.tsx plus the badge23 and button21 components it uses for the eyebrow and the closing action.

Quick start

The installed file exports social53Demo alongside the block: the exact props behind the preview above. Spread it to get a working wall in one line.

tsx
import { Social53, social53Demo } from "@/components/beste/block/social53";

export default function ContributorsPage() {
  return <Social53 {...social53Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Social53 } from "@/components/beste/block/social53";

export default function ContributorsPage() {
  return (
    <Social53
      badge={{ label: "Built with them" }}
      heading="The people who told us what to change"
      description="None of them work here and none of them were paid."
      stats={[
        { value: "118", label: "practices in the feedback group" },
        { value: "412", label: "changes shipped from their reports" },
        { value: "31", label: "features we dropped after they said no" },
      ]}
      contributors={[
        {
          name: "Elena Rourke",
          practice: "Bramble Health, Bristol",
          avatar: { src: "/people/elena.jpg", alt: "Portrait of Elena Rourke" },
          contribution: "Designed the waiting list backfill after describing her Monday in detail",
          count: "64",
          countLabel: "reports",
        },
      ]}
      closing="If you would rather shape the thing than wait for it, the group has room."
      button={{ label: "Join the group", href: "/community" }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }–Eyebrow above the hairline rule, rendered through Badge23
headingstring–Section heading in the left column of the header
descriptionstring–Supporting paragraph, right-aligned from md up
statsStat[][]Programme figures on a hairline row
contributorsContributor[][]Named people, three across from lg
closingstring–Invitation beside the closing action
button{ label: string; href: string }–Closing action
classNamestring–Extra classes for the outer section
ts
type ActionLink = {
  label: string;
  href: string;
};

type Contributor = {
  name: string;
  practice: string;
  avatar: { src: string; alt: string };
  contribution: string;
  count: string;
  countLabel: string;
};

type Stat = {
  value: string;
  label: string;
};

Behavior notes

  • contribution is required and is written as a specific act rather than a role, for example "Argued us out of a settings page nobody needed". A wall of names with no attribution is the pattern this block exists to avoid.
  • The third stat in the demo counts features dropped after feedback, which is the number that makes the other two credible. Passing only flattering figures undercuts the section.
  • Cards are flex flex-col with the contribution marked flex-1, so the report counts align along the bottom across every card in a row.
  • The count line splits into a tabular-nums figure and a muted unit, so a column of two-digit and three-digit counts still lines up.
  • The matrix lines are the gap, not borders: gap-px over a bg-border container with bg-card cells, clipped by the container's overflow-hidden.
  • Card headers use min-w-0 with truncate on both lines, so a long practice name ellipsizes rather than pushing the portrait out of the row.
  • Cards are not links. This is a credit wall rather than a directory, so nothing sends a reader to an individual's page.

More Social blocks

View all Social
PRO

social59

Community Notes Wall

PRO

social56

Referral Programme

FREE

social48

Community Channels

Get Pro access