Reader Letters, Printed In Full

Replies

Letters we did not expect to get

These arrived as replies to an issue, not as testimonials. They are printed with permission and with nothing trimmed except the addresses.

I have been quoting projects for eleven years and I have never once written down what the number was made of. I did it your way for the last three, and two of them closed at the price on the page. The third told me it was too expensive, which is also useful, and took about four minutes to find out.
Maria Santos

Maria Santos

Independent, Lisbon

Received 12 March

We printed your handover checklist and taped it to the wall, which was meant to be a joke. Four months later it is still there and the support queue after our last launch was the shortest it has ever been. Nobody on the team thinks it is a joke now.
Alex Turner

Alex Turner

Studio of five, Rotterdam

Received 4 February

About this block

Reader Letters, Printed In FullPRO

Two long replies set as letters rather than pull quotes, each running at full length on a hairline and signed off with the sender's portrait, where they work and the date it arrived.

Testimonial47: Reader Letters, Printed In Full

Two long replies set as letters rather than pull quotes, each running at full length on a hairline and signed off with the sender's portrait, where they work and the date it arrived.

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/testimonial47?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

This installs the block to components/beste/block/testimonial47.tsx and the badge6 component it uses for the eyebrow (installed to components/beste/component/badge6.tsx).

Quick start

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

tsx
import { Testimonial47, testimonial47Demo } from "@/components/beste/block/testimonial47";

export default function RepliesPage() {
  return <Testimonial47 {...testimonial47Demo} />;
}

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

tsx
import { Testimonial47 } from "@/components/beste/block/testimonial47";

export default function RepliesPage() {
  return (
    <Testimonial47
      eyebrow="Replies"
      heading="Letters we did not expect to get"
      description="These arrived as replies to an issue, not as testimonials."
      letters={[
        {
          body: "I did it your way for the last three quotes and two of them closed at the price on the page.",
          name: "Maria Santos",
          role: "Independent, Lisbon",
          received: "Received 12 March",
          avatar: { src: "/people/maria.jpg", alt: "Maria Santos" },
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstring–Badge6 label above the hairline rule
headingstring–Section heading under the rule
descriptionstring–Supporting paragraph
lettersLetter[][]One letter per column
classNamestring–Extra classes for the outer section
ts
type Letter = {
  body: string;
  name: string;
  role: string;
  received: string;
  avatar?: Avatar;
};

type Avatar = {
  src: string;
  alt: string;
};

Behavior notes

  • The body is not truncated and carries no quotation marks of its own, which is what makes it read as a letter rather than as a pulled line.
  • Each entry is a figure with a blockquote and a figcaption, so the attribution stays tied to the quote in the markup.
  • received is free text, so it can carry a date, a channel or both.
  • Two columns from md up. The layout is built for a small number of long replies rather than a wall of short ones.

More Testimonial blocks

View all Testimonial
PRO

testimonial53

Portrait and Long Quote

PRO

testimonial48

Client Stories

PRO

testimonial41

Editorial Quote Proof

Get Pro access