Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Editorial Testimonial Block for React

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.

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 long-form quote that reads like a feature in a magazine, for React with Base UI. A compact left-aligned header announces the story and carries one Shine Button, "Read the full story". Beneath it the quote runs in serif type across two columns on wide screens, divided by a hairline, opening with a large drop cap that inks in as the page loads. The page is framed by hairline corners with + marks, and a rule inside it separates an em-dash byline (initials avatar, name, role and company) from the quote, with the publication it ran in. On a phone the columns become one. The fictional product is Tessera, a design system. It's built from Drop Cap Text, Avatar, Guides and Shine Button, with CSS transitions only and your theme's tokens. For a single customer story told at length, an about page, or the long scroll of a landing page where one thoughtful voice carries the section.

FAQ

How do I change the quote, the byline and the publication?

Edit OPENING, BODY, AUTHOR and PUBLICATION at the top of the file. OPENING is the first paragraph, which gets the drop cap; BODY is the rest, each paragraph in three parts so a figure such as "80%" can sit in a bdi and keep its sign in right-to-left text. Add paragraphs freely: the columns balance themselves.

How does the drop cap work?

It's the first letter of the opening paragraph, sunk three lines with the CSS initial-letter property (Firefox floats it instead) and inked in from the top once on load. The paragraph stays one piece of text, so screen readers read it whole and search finds it. With reduced motion, or without JavaScript, the cap is simply there.

How do the columns behave?

From the medium breakpoint the quote uses CSS columns: the text flows down the first column and into the second, with a hairline between them. Below it, and at 320 pixels, it's a single column. Paragraphs may split across the two columns, as they do in print.

How do screen readers read it?

The heading is the section's h2. The quote is a figure with a blockquote of ordinary paragraphs, and the figcaption holds the byline and a cite with the publication. The avatar is hidden since the name is written beside it, and the frame's corner marks are decoration. Reading order is the page order, whatever the columns do visually.

Does it work in right-to-left languages?

Yes. Each paragraph takes its own direction, the drop cap opens from the right, the column order reverses, and the byline and the publication swap ends.

Do I need to name a publication?

No. The cite line is optional: delete it and the byline stays. Only name a publication that did run the quote, since the line says so.

How is the Shine Button built on each library?

The header's button is the block's only primary control, a link to the full story. On Base UI, the button renders its link with render={<a href="#" />} and nativeButton={false}.

  • 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 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.

  • 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

    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

    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

    A compact start-aligned hero with a headline, a Shine Button and an outline action over a closing band that holds one customer's quote, large, beside their rating, name, role and the number it is about.