Notification Channel Picker
A centered set of notification-channel cards, each with an icon, label, and short description, that visitors can tap to choose how they'd like to be notified at launch. Selecting a card toggles a real, per-card selected state and updates a running selected-count badge below the grid.
Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its badge dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/notification-channel-picker.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/coming-soon/comingsoon11.tsx instead.
Usage
The file also exports comingsoon11Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.
import { ComingSoon11, comingsoon11Demo } from "@/components/blocks/coming-soon/comingsoon11"; export default function Page() { return <ComingSoon11 {...comingsoon11Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| eyebrow | string | "Coming soon" | Small label above the heading. |
| heading | string | "Choose how we notify you" | Section heading. |
| description | string | "Pick the channels you'd like to hear from us on..." | Section subheading. |
| channels | NotificationChannel[] | none | Channel cards to render, in display order (icon is assigned by position, not by data). |
| defaultSelected | string[] | [] | Channel ids selected on initial render. |
| className | string | none | Extra classes for the outer section element. |
Types
export interface NotificationChannel { id: string; label: string; description: string; }
Behavior notes
- `"use client"`. Clicking a card is real interactivity: it toggles that channel's id in a `useState<Set<string>>`, updates the card's selected styling and `aria-pressed`, and the "N channels selected" badge below recomputes from that same state.
- Each card's icon is picked from a fixed, hardcoded array by array position (Mail/MessageSquare/AtSign/Smartphone), not passed in per-item as a prop, since a component reference can't cross the client-component boundary.
- No data is actually submitted anywhere; this only tracks in-memory selection for the demo.
More Coming Soon Blocks
View all →countdown-timer-launch
Countdown Timer Launch
A centered launch page with a live days/hours/minutes/seconds countdown to a target date.
development-progress-milestones
Development Progress Milestones
A centered launch page with an overall progress bar and a milestone tracker list with status badges.
social-connect-launch
Social Connect Launch
A centered coming-soon page with pill-style outline buttons linking out to Twitter, GitHub, LinkedIn, and email.
animated-icons-preview
Animated Icons Preview
A centered coming-soon page with a row of bobbing icon tiles and a pulsing build-status indicator.
sneak-peek-feature-grid
Sneak Peek Feature Grid
A centered coming-soon page with a grid of blurred feature cards teased behind a lock icon overlay.
waitlist-with-avatars
Waitlist with Avatars
A centered coming-soon page with a working waitlist signup form, stacked subscriber avatars, and a live join count.