Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Split Panel Team Picker CTA Block for React

A split CTA where visitors pick the engineer they want to talk to from four choice cards with initials, role and availability, a Shine Button that names their choice, and a closing band of assurances.

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 split call to action for booking a consultation, for React with Base UI, here for Fathom, a fictional engineering studio. The copy side carries a quiet outline badge, a headline, a sentence and three outcomes. Behind a split divider, the other side is a tinted panel with a radio group of four choice cards: each shows an avatar with initials, a name, a role and when the engineer is free, with a status dot. Nothing is selected at first; choosing a card turns the disabled "Book a session" Shine Button into a link that says "Book with Maya", and a note under it says what happens next. A closing band of three assurances finishes the block under a rule that runs from rail to rail. It's built from Radio Group, Field, Avatar, Status, Badge, Guides and Shine Button, with Lucide icons, Tailwind CSS and a CSS entrance that stays still under reduced motion. Made for services, agencies and platforms that sell time with a named expert.

FAQ

How do I change the people and their availability?

The TEAM array at the top of the file holds each engineer's id, first name, full name, initials, role, availability text and status tone (success, warning or info). Availability is plain text ("Free today"), so feed it from your calendar tool when the page is built, or when it loads; the block doesn't format dates. To show photos, put an AvatarImage before the AvatarFallback: the initials stay as the fallback while it loads.

Where does the book button go?

Before a choice the Shine Button is disabled and reads "Book a session", with the note under it asking to choose someone. Once a card is chosen it becomes a link to #<id> labelled "Book with <first name>": point each engineer's href at their booking page or at one page that reads the id. Because the choice only changes the link, nothing is sent from this block.

How do the choice cards work for keyboard and screen reader users?

The cards are one radio group named by the heading "Who would you like to talk to?" and described by the note under the button. Tab enters the group, the arrow keys move and select, and each radio is named by its whole card: name, availability and role. The avatars are hidden from assistive technology so the initials aren't read, and the status dot is decorative because the availability is written next to it. The chosen card is marked by a filled radio and a stronger border, in the foreground colour, so the Shine Button stays the one accent on the block.

Why is nothing selected at first?

Preselecting a person would book someone the visitor never chose. With no default, the radio group shows its possible states honestly and the button asks for a choice. If you want one preselected, pass its id as the initial choice.

How does it fit on a phone?

Below the large breakpoint the panels stack, copy first, and the choice cards sit directly under the headline so the button lands on the first screen. The supporting sentence and the three outcomes are shown from the sm breakpoint up, and the assurances in the closing band stay at every size, as three short columns. Role names wrap instead of truncating so nothing is cut at 320 pixels.

Does it work in right-to-left layouts?

Yes: the radios, avatars and availability use logical properties and flex order, so each card mirrors, and the divider between the panels moves to the other side.

  • Pro

    A split CTA for a habit app between solid rails: copy and a Shine Button that emails the link beside a phone, in a hairline frame, whose screen is a scannable QR code.

  • Pro

    A split CTA that gates a PDF: an email form and Shine Button beside a stack of paper pages in a hairline frame, the cover blurred and locked, with a closing band of chapters. Submitting unlocks the cover and offers a download with progress.

  • Pro

    A reverse split CTA built around an editable address bar in a browser frame: type a name, see whether it is available and watch the page mirror it before you claim it with a Shine Button.

  • Pro

    Split Avatar Grid Hero

    Logos and social proof

    A compact split team hero: a headline, a Shine Button, a second action and a line of team facts beside a two-by-two grid of large avatars with names and roles in cells that share hairlines.

  • Pro

    A split hero for month-end close software: the pitch, a Shine Button and an outline button beside a customer's five-star testimonial in a card in a card, with the two results it names.

  • Pro

    Centered Founder Avatars Hero

    Logos and social proof

    A centered hero led by its founders: a headline, a Shine Button and an outline button, then the three founders as separate hairline cells with avatar, role and background, and a line of backers.