shadcn.io is not affiliated with official shadcn/ui
Two Column Testimonials Block for React
A testimonials section split by a solid divider: a pinned intro column with the heading and a Shine Button beside five customer quotes set as ruled rows, the first one larger.
Installation
Overview
A testimonials section for pages where the quotes are the content. On wide screens the heading, a short summary and the Shine Button sit in a column at the start that stays pinned while five quotes scroll past at the end, so the pitch is always in view next to the proof. The quotes are ruled rows rather than cards, the first set larger, and the divider between the two columns runs up to the page's top rule, where a + mark joins them. Below the lg breakpoint the intro leads, a rule separates it from the rows, and nothing is sticky. It's built from Avatar, Shine Button and Guides, with CSS transitions only and your theme's tokens. For product pages, customer story hubs and any page with enough quotes to need a column of their own.
FAQ
How does the intro column stay in view?
The intro is sticky with a top-16 offset on lg screens and up, and it aligns to the top of its grid cell with self-start. The sticky box sticks only while the quote column beside it is taller, so keep at least four or five quotes. Sticky positioning stops working under any ancestor with overflow: hidden or overflow: auto, so don't wrap the section in one.
How do I change the quotes?
Edit the TESTIMONIALS array at the top of the file. Each entry has a name, role, company, quote and the initials shown in the avatar. Quotes can run from one to three sentences, and the rows simply grow. The first quote is set larger; change that in the index === 0 check. Keep the quotes real and ask each customer for permission before publishing their words.
How do screen readers read it?
The heading is the section's h2. The quotes are a list named "Customer quotes", and each one is a figure with a blockquote and a figcaption for the name and role. The initials avatars are decorative and hidden, because the name is written beside them.
How does it fit a phone?
Below lg the grid becomes a single column: the heading, summary and button come first, then the rows in the same order as on desktop. The reading order and the tab order are the same at every width. At 320px nothing scrolls sideways, and long role lines wrap.
Does it work in right-to-left languages?
Yes. The columns swap sides and the divider moves to the other edge, and the quote sits in a bdi so its quotation marks stay at the ends of the sentence.
How do I point the button at my page?
Change the href of the call to action in the intro. Say where it goes in its label, such as "Browse all customer stories". It's a Shine Button, the one primary control in the block, and a diagonal band of light crosses it once on hover or focus (it fades in instead with reduced motion).
On Base UI, the link renders through render={<a href="…" />} with nativeButton={false}.
Related
- Pro
Three Column Testimonials
Quote gridsThree customer quotes with no card chrome: a centred header over one closing band of three columns, each a large initials avatar over a centred quote, divided by hairlines.
- Pro
Duo Testimonials
Results and figuresTwo customer quotes from two different segments in one ruled band, split by a column that states the verdict they share as one big figure derived from both of their numbers, under a compact header with a Shine Button.
- Pro
Mini Cards Testimonials
Quote gridsEight square tiles in a hairline grid, each holding a one-line customer quote at the top and its author at the foot, with the one Shine Button in the header row.
- Pro
Kanban Testimonials
Walls and lanesCustomer quotes sorted into three theme lanes with a count on each header, in one ruled band: a board of tinted lanes with raised cards on desktop, swipeable lanes in a named scroll area on a phone.
- Pro
Centered Testimonial Card Grid Hero
TestimonialsA centred showcase hero with a headline, a Shine Button and an outline action over a wall of six customer quotes in cells that share their hairlines, a snap carousel on a phone.
- Pro
Accordion Testimonials
Rows and listsCustomer stories as accordion rows beside a side header, on the page's drafting lines: each row shows the person, a one-line summary and a rating, and opens one at a time to read the full quote.