Podcast Launch Teaser

Podcast cover artwork with a studio microphoneSeason 1
New Podcast

In the Making

A weekly show about the messy middle of building things, hosted by our founders. First season drops the week we launch.

Listen onSpotifyAppleYouTube

First episodes

  • 01Why we almost didn't start38 min
  • 02Pricing is a feeling44 min
  • 03The week everything broke51 min
About this block

Podcast Launch TeaserPRO

A two-column podcast-launch section with an accent-badged square cover image beside a square eyebrow, show title, description, a dark seal subscribe button, platform links, and a ruled list of first episodes.

ComingSoon42: Podcast Launch Teaser

A Polaris two-column podcast-launch section with an accent-badged square cover image beside a square eyebrow, a show title, a description, a dark seal subscribe button with a Mic icon, a row of platform links, and a ruled numbered list of first episodes.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/comingsoon42?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/comingsoon42?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/comingsoon42.tsx.

Quick start

The installed file exports comingsoon42Demo alongside the block: the exact props behind the preview above. Spread it to get a working podcast teaser in one line.

tsx
import { ComingSoon42, comingsoon42Demo } from "@/components/beste/block/comingsoon42";

export default function Page() {
  return <ComingSoon42 {...comingsoon42Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { ComingSoon42 } from "@/components/beste/block/comingsoon42";

export default function Page() {
  return (
    <ComingSoon42
      label="New Podcast"
      labels={{
        imageBadge: "Season 1",
        episodesTitle: "First episodes",
        listenCaption: "Listen on",
      }}
      heading="In the Making"
      description="A weekly show about the messy middle of building things."
      button={{ label: "Subscribe Now", href: "/subscribe" }}
      platforms={[
        { label: "Spotify", href: "/on/spotify" },
        { label: "Apple", href: "/on/apple" },
      ]}
      episodes={[
        { title: "Why we almost didn't start", length: "38 min" },
        { title: "Pricing is a feeling", length: "44 min" },
      ]}
      image={{ src: "/cover.jpg", alt: "Podcast cover artwork" }}
    />
  );
}

Props

PropTypeDefaultDescription
labelstringSquare eyebrow rendered above the heading via Badge6
labelsComingSoon42Labels{}Cover badge, episodes-list title, and listen-on caption
headingstringShow title
descriptionstringSupporting paragraph under the title
buttonActionLinkDark seal subscribe link with a Mic icon via Button1
platformsActionLink[][]Inline platform links joined by a middot separator
episodesEpisodeItem[][]Ruled numbered list of first episodes
imageImageItemSquare cover image on the left with an optional accent badge
classNamestringExtra classes for the outer <section>
ts
type EpisodeItem = {
  title: string;
  length: string;
};

type ActionLink = {
  label: string;
  href: string;
};

type ImageItem = {
  src: string;
  alt: string;
};

type ComingSoon42Labels = {
  imageBadge?: string;
  episodesTitle?: string;
  listenCaption?: string;
};

Behavior notes

  • The cover renders on the left only when image is set, as a plain <img> covering a square frame; labels.imageBadge overlays a bg-primary pill in the top-left corner when present.
  • The button renders as a real navigation via Button1 asChild wrapping a Next.js <Link href={button.href} /> with a Mic icon and the dark tone, so it points at a URL rather than firing a handler.
  • The platforms row renders each entry as a Next.js <Link> and joins them with a literal middot separator, prefixed by labels.listenCaption, only when the array is non-empty.
  • The episodes list renders only when non-empty, with each row drawn under border-t rules and numbered with a zero-padded index (01, 02), the title, and the length.
  • Every region is optional and every string is plain text with no inline markup parsing, so any HTML passed in shows as escaped text.

More Coming Soon blocks

View all Coming Soon
PRO

comingsoon33

Video Teaser Reveal

A full-bleed image pre-launch teaser with a dark overlay, a monospace parenthetical eyebrow, a central play button that opens the teaser video in a modal, a heading and supporting line, and a light outline waitlist pill button.

PRO

comingsoon53

Next Issue Magazine

A two-column coming-soon section styled as a magazine launch with an accent-badged cover image, a masthead, a square eyebrow, a heading, a numbered contents list, and a working email subscribe form.

PRO

comingsoon63

Product Pre-Order Teaser

A product launch coming-soon section with a full-height product image beside a monospace parenthetical eyebrow, a product name, a tagline, a ship date, a working notify email form, and a spec grid.

PRO

comingsoon18

Launch Season Reveal

A full-bleed image pre-launch hero with a dark overlay, a monospace parenthetical eyebrow, a small kicker, an oversized launch-date headline, a supporting line, and a light outline pill notify button.

PRO

comingsoon25

Launch Day Announcement

An editorial launch-date announcement with a square eyebrow, a kicker, an oversized date headline paired with a supporting note and a dark seal remind-me button, above a three-column ruled list of launch facts.

PRO

comingsoon40

New Location Opening

A two-column location-launch section with an accent-badged image tile beside a square eyebrow, a city heading, a supporting line, a ruled details grid of opening facts, and a dark seal notify button.