Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Social Post Style Testimonials Block for React

Six customer testimonials styled as social posts in cells with overshooting lines: initials avatar, verified tick, handle and age, the post and compact reply, share and like counts, with a Shine Button in the header.

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

Customer love in the format developers trust most: someone posting on their own time. A compact header says what the posts are about (Tarnwick, a made-up component kit) and holds the one Shine Button, "Join the conversation". Below it six posts sit in cells with solid hairlines that run a little past their corners, with a + mark on each cell's top corner, three columns on desktop and two on a tablet. Each has the author's initials avatar, their name with a verified tick where it applies, a handle and how long ago they posted, the post itself, and three counts for replies, shares and likes written the compact way, like 1.3K. On a phone the first three show and a ghost button reveals the other three. The cells fade up one after another on load. It's built from Avatar, Button, Shine Button and Guides with lucide icons, CSS only and your theme's tokens. For developer-tool landing pages, where public endorsements carry weight.

FAQ

How do I change the posts and numbers?

Edit POSTS at the top of the file (six by default; FIRST sets how many show on a phone before the button): each has the post text, the author's name, handle, initials and verified flag, a relative time, and integer replies, shares and likes. The counts are formatted by one Intl.NumberFormat fixed to US English in compact form, so 1284 shows as 1.3K and the same on the server and in the browser. Use numbers that are true: this block shows them as social proof.

What does the verified tick mean?

It is a flag in the data and nothing verifies it. Turn it on only for authors whose account you have confirmed is theirs. The tick is drawn from your theme's foreground colour, so it works in any theme, and a screen reader hears "Verified account" after the name.

Can I use real posts from a social network?

You can, with permission and under that network's display rules. Replace the data with your own, keep the author's real handle and the real post text, and do not add a network's logo or name unless its guidelines ask for it. The block has no logo of its own on purpose, so it stays neutral.

How do screen readers read a post?

Each post is a figure: the author's name, a verified note, the handle and the age form its caption, and the post is a blockquote. The counts are a small list that reads, for example, "62 replies, 247 shares, 1.3K likes". The avatar and the icons are hidden because the words are right there.

How does it fit a phone?

It is three columns from lg, two from sm and one below. On a phone only the first three posts show, so the section stays short: the "Show 3 more posts" button reveals the rest, announces whether the list is expanded and keeps its place. A long name or handle is cut with an ellipsis in its own line, and the post wraps in full, down to 320 pixels.

What about reduced motion?

The header and the cells fade up once on load using CSS transitions, 70 milliseconds apart. With reduced motion everything is there from the first paint.

How do I point the button at my page?

Change the href of the call to action in the header. Say where it goes in its label, such as "Join the conversation". 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}.

  • Pro

    Customer posts about a component kit in a two-column feed, each in a cell with its own lines; hover or focus an @handle for a profile card with a bio, a follower count and a working Follow button, with a link-preview row under every post.

  • Pro

    A launch-week chat in a split: the headline and a Shine Button in a rail, and four messages ruled apart by hairlines, each with celebrate, love and ship-it reaction pills that really toggle and count.

  • Pro

    A reverse split on drafting lines: a group chat of five dispatchers in a hairline frame, alternating message bubbles with a name, role and relative time above each, beside a header and one Shine Button.

  • Pro

    A reverse split: a notification window in a hairline frame where customer praise arrives as unread rows, with a new-count badge, rows that mark themselves read and a Mark all as read button, beside a header with a Shine Button.

  • Pro

    A 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

    An email-style thread for a tracing tool that turns a sceptic into an advocate, in a framed window beside a hairline divider: a subject line, earlier messages folded behind a disclosure row, the two latest open, and a Shine Button.