Event Detail With Countdown
Opens on a full-bleed photo band with a real live countdown (days/hours/minutes/seconds) overlaid into the bottom of the photo. Below that: the event pitch and heading, two CTA buttons, a hairline table of practical facts (date, location, format), and a short speaker list with initials avatars. Perfect for a single event's detail/landing page.
Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its button, avatar, avatar-initials, media-slot dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/event-detail-with-countdown.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/event/event10.tsx instead.
Usage
The file also exports event10Demo, 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 { Event10, event10Demo } from "@/components/blocks/event/event10"; export default function Page() { return <Event10 {...event10Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| eyebrow | string | "Join us" | Small label above the heading. |
| heading | string | "Two days of talks, workshops, and the best hallway track in tech" | Event pitch heading. |
| description | string | "A single-track conference for builders who want less slideware and more shipped code." | Supporting copy under the heading. |
| targetDate | string | none | ISO date string the countdown counts down to. |
| photo | MediaSlotImage | none | Full-bleed photo for the top band. |
| primaryCtaLabel | string | "Get your ticket" | Primary CTA button label. |
| primaryCtaHref | string | "#" | Primary CTA link target. |
| secondaryCtaLabel | string | "View schedule" | Secondary CTA button label. |
| secondaryCtaHref | string | "#" | Secondary CTA link target. |
| facts | EventFact[] | none | Practical facts rendered as a hairline-divided table (date, location, format, etc). |
| speakers | EventSpeaker[] | none | Speakers rendered as a short list with initials avatars. |
| className | string | none | Extra classes for the outer section element. |
Types
type MediaSlotImage = { src: string; alt: string }; interface EventFact { label: string; value: string; } interface EventSpeaker { name: string; role: string; }
Behavior notes
- The countdown uses the exact live-timer pattern from ComingSoon1: remaining starts at null and renders "--" placeholders on both server and first client render, then a useEffect seeds a setInterval tick every second from Date.now(), so server/client markup always matches and there is no hydration mismatch.
- Both CTA buttons are decorative links (render={<Link href="#" />}), not real registration/checkout actions.
- The facts table and speaker list are static, prop-driven content with no interactivity of their own.
More Event Blocks
View all →conference-hero-with-image
Conference Hero with Image
Split hero with a featured photo, date badge, location, attendee stat, and dual CTAs.
minimal-event-hero
Minimal Event Hero
Centered, image-free hero with an oversized heading, date/location line, and two CTAs.
event-hero-with-ticket-pricing
Event Hero with Ticket Pricing
Centered hero with an early-bird price, a strikethrough original price, and a deadline note.
event-hero-with-social-proof
Event Hero with Social Proof
Hero with a heading, a 3-stat strip (attendees/speakers/countries), and a trusted-by company row.
personal-schedule-builder
Personal Schedule Builder
Interactive session picker that lets attendees build their own conference agenda.
team-discount-calculator
Team Discount Calculator
Live quantity stepper that applies tiered group discounts to a seat total.