Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Split Light Speech Bubble CTA Block for React

A split call to action built as a short chat: the headline at the start, and at the end a customer's quote in a bubble, answered by a reply bubble that holds the Shine Button to start free.

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 closing section that turns a testimonial into a conversation, for React with Base UI. Between solid rails, the start side holds the headline and a sentence about Laneboard (a fictional team handoff board); a solid divider that meets the top rule separates it from a conversation in a hairline frame with + marks on its corners. A customer's words sit in a muted chat bubble with their initials and role; below it, on the other side, an outlined reply bubble answers "Same results?" and holds the Shine Button, "Start free". The quote fades up first and the reply a beat later. It's built from Guides, Bubble, Message, Avatar and Shine Button, with CSS transitions only and your theme's tokens. On a phone the conversation stacks under the headline with a rule between, and the button stays on the first screen. For landing pages and pricing pages where a peer's quote makes the strongest opening, and a call to action phrased as the natural answer reads better than a bare button.

FAQ

How do I change the quote and the reply?

Edit CUSTOMER at the top of the file: quote, name, role and initials. The reply text and its button are written in the second BubbleContent. Keep the reply to a few words, phrased as an answer to the quote ("Same results? Start free"), and ask the customer before you quote them.

How do screen readers read it?

The customer's message is a figure with a blockquote and a figcaption for the name and role; the initials avatar is hidden since the name is written. The reply reads "Same results?" and then a single link, "Start free". The section's h2 comes first, and the frame and rules are decoration.

Does it work in right-to-left languages?

Yes. The two columns swap sides with the page direction, and inside the conversation the customer's bubble moves to the end side and the reply to the start side. The quote sits in a bdi so its marks stay put.

How do I show a photo instead of initials?

Add an AvatarImage with the photo's src and an empty alt inside the Avatar, before the AvatarFallback. The initials stay as the fallback while it loads or if it fails.

When should I use this instead of the dark quote block?

Use the speech bubble for a casual, peer-to-peer tone, where the call to action is the reply to what the customer said. Use the dark quote block when the endorsement should read as a statement, with its key phrase highlighted.

  • Pro

    A split call to action led by one customer quote, with a marker stroke drawn across its key phrase and the author beneath in the wide cell, and the headline and a Shine Button to the full story in the narrow one.

  • Pro

    A reverse split CTA for a support assistant between solid rails: an ask-me chat window in a hairline frame at the start (pick a question, watch the assistant type, read its answer) and the headline, a sentence and the Shine Button at the end.

  • Pro

    A card-in-card call to action built on a rating summary: a headline and a Shine Button over a band with a big score and foreground stars beside a five-to-one star histogram, all figures worked out from the counts.

  • Pro

    A reverse split hero that opens with a customer quote: a tinted panel on the start side in three ruled bands (quote, author, two results), and the headline and a Shine Button at the end.

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

  • Pro

    A centred statement for a community, closed by a band of six members on shared hairlines: each cell a link that opens a hover card with the member's role, status and join date, under one Shine Button.