shadcn.io is not affiliated with official shadcn/ui
Split Panel Waveform Visual CTA Block for React
A reverse split call to action for a podcast: a decorative waveform on a tinted panel flush to the rails, beside a Shine Button for the latest episode, four ways to subscribe and a feed address to copy.
Installation
Overview
A split call to action that turns "subscribe" into a short list, for React with Base UI, between solid rails. At the start, a tinted panel runs flush to the rails and draws a waveform from a row of bars in a foreground tone, with the latest episode named in plain text underneath. Past a solid divider that meets the top rule sit a quiet badge, a headline, a short pitch, the Shine Button (the only primary control) for the latest episode, four ways to follow the show (a podcast app, a music app, a feed reader and email) as ruled link rows with a title, a one-line description and an arrow, and a read-only feed address with a copy button for apps that ask for it. The copy comes first in the DOM and on phones, so the button lands on the first screen, and the waveform panel follows. It's built from Shine Button, Badge, Clipboard, Copy Button and Guides, with CSS transitions for the entrance and your theme's tokens for every colour. For podcasts, video series, newsletters and any show with an RSS feed and more than one place to follow it.
FAQ
How do I change the ways to subscribe?
Edit CHANNELS at the top of the file: each entry has a title, a one-line description and an href. The links are # placeholders. Point each at the deep link or page for that app, and add or remove rows without touching the layout. The same FEED_URL constant feeds the address field and the copy button.
Is the waveform real audio?
No, it's decoration. The bars are heights listed in BARS, drawn with CSS, and they grow from the baseline once on load. There is no play button, because nothing here plays: the latest episode is plain text under the waveform, and the Shine Button is the link to it. The waveform is hidden from screen readers, and the bars stay still with reduced motion.
How does the feed address work?
It's a read-only field named "Feed address", so assistive technology reads the address and a visitor can select it. The button beside it copies the same string, swaps its icon for a check for three seconds and a polite status says "Copied", or "Couldn't copy" if the clipboard refuses. The address is always laid out left to right, on right-to-left pages too.
How do the link rows read to a screen reader?
Each row is one link: the title and the description are its text, and a hidden ", subscribe" follows the title so four links never read as bare names. The arrow is decoration and mirrors on right-to-left pages. Each row has a focus ring and underlines its title on hover.
Why does the latest episode show no date?
A date typed into a block goes stale. The panel shows the episode's number, title and length instead, and the pitch says "every Tuesday", which stays true. If your site knows the date, add it from your data when you render the block.
What happens on a small screen?
The panels stack, with the copy first and the waveform panel after it under a ruled line; on large screens the panel moves to the start. The bars share the panel's width and the link rows and the feed field take the full width, so nothing scrolls sideways at 320 pixels.
Related
- Pro
Split Panel Terminal Cursor CTA
Code and commandsA split call to action for a web app starter: the pitch and a Shine Button at the start, a dark terminal pane filling the end column that waits at a prompt until you press Enter.
- Pro
Split Panel Phone QR Code CTA
Product previewsA 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
Copy Link Share CTA
Forms and captureA band call to action for a referral programme that follows your theme: the pitch beside a read-only invite field with a Shine Button that copies it, real email and system share links, and a closing band counting invites.
- Pro
Inset Code Snippet Copy CTA
Code and commandsA card-in-card call to action for a data SDK, split by a hairline: the headline, one sentence and a Shine Button at the start, and a three-line quickstart snippet with a copy button on every line and a Copy all button at the end.
- Pro
Split Layout Music Player Hero
Mobile and mediaA compact split hero for an audio product: copy and a Shine Button beside a narrow music player on a tinted panel behind a divider, with a waveform and a queue.
- Pro
Centered Newsletter Archive Hero
Signup and waitlistA centered newsletter hero with an email signup that confirms in place, over the four latest issues as links in one hairline grid between the rails.