Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Text-Only Testimonial Block for React

A customer letter set as plain prose with no card and no avatar, beside a header with one Shine Button and a hairline divider: a salutation, two paragraphs and a closing, signed by a name that writes itself in.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

A testimonial that's a letter, for React with Base UI. The section is a split between the page's rails. On the start side sits a header, "Re: our first year on Stonework" (Stonework is a fictional component kit), one sentence about the letter and a Shine Button that links to the full story, the only primary control. A hairline divider, with plus marks where it meets the page's top rule, separates it from the letter: a salutation, two paragraphs in the customer's own voice and a closing line, set as prose in a narrow serif column. There's no card, no avatar and no stars, just the words, and under them a signature that writes itself in a word at a time, with the signer's role beneath. Below lg the header sits above the letter and a hairline with plus marks runs between them. It's built from Prose, Writing Text, Shine Button and Guides, with CSS animation only and your theme's tokens. For a founder's note, a thank-you from a long-standing customer, or any page where plain words feel more honest than a design.

FAQ

How do I change the letter and the signature?

Edit LETTER and SIGNER at the top of the file. LETTER holds the salutation, the paragraphs and the closing; add or remove paragraphs freely. SIGNER is the name that gets written in and the role under it. The header copy and the button are in the component below them.

How is the split drawn?

The page column is a two-column grid from lg (five parts for the header, seven for the letter). The letter's cell has lg:border-s for the divider and a Guides marks="start" rules="none" sides={false} that puts a plus mark where the divider meets the top rule; both cells carry their own vertical padding, so the divider runs the full height of the section. The header sits at the top of its cell and the button at its foot, so the title never drifts.

How does the signature write itself?

Writing Text lifts each word of the name into place in turn, once, as the page loads, in italic serif type at a slight angle. It's real text: screen readers read the name once, and search and copy find it. With reduced motion, or without JavaScript, the signature is simply there from the first frame.

How do screen readers read it?

The heading is the section's h2. The letter is a figure with a blockquote of ordinary paragraphs, and the figcaption holds the signature and the signer's role. The animation never hides anything from assistive technology.

Does it work in right-to-left languages?

Yes. Every paragraph is in a bdi, the prose follows the reading direction, the split swaps sides with its divider and plus marks, and the signature's tilt mirrors.

  • Pro

    A statement quote in serif type between hairlines, with its author and cited source beneath, a Copy quote button that copies the quote together with its attribution, and one Shine Button.

  • Pro

    A magazine-style testimonial: a compact header with a Shine Button, then one long quote in two serif columns that open with a drop cap, on a page framed by hairline corners with + marks, with an em-dash byline and the publication it appeared in.

  • Pro

    A pull quote from a retailer's checkout case study between two double rules, in serif type with its opening quotation mark hanging into the margin and a small-caps attribution.

  • Pro

    Interview Testimonials

    Chats and posts

    A customer interview as a Q&A transcript in a split: a rail with the headline, the interviewee and a Shine Button beside five ruled exchanges, each with its answer set as a quote and a chip with the time it was said.

  • Pro

    Case Study Testimonial

    Results and figures

    A customer case study for a freight-tracking app, split by a hairline divider: the headline, a Shine Button and an at-a-glance list beside Challenge, Solution and Result bands with a headline figure and a pull quote.

  • Pro

    A giant centred quote set as typography in a ruled band, with small avatar and icon chips sitting between its words like inline pictures, and a footer band that splits into the author and a Shine Button to the full story.