Launch Page
v1.0.0Added in 1.8.0
A keynote-style product launch page: giant hero with a tilted drawn app, countdown or live state, keynote, what's new, launch week and FAQ.
The hero rises in once on mount over a drawn Acme 3.0 app in the new timeline view, leaning back in perspective with an AI summary, a Cmd K search and a sync toast floating around it (both themes). In the live phase the pill links to the launch post, Try Acme 3.0 goes to sign-up and Watch the keynote scrolls to the keynote. In the upcoming phase a countdown ticks to the keynote (dashes until the clock is known after hydration, then a done message at zero) and the Remind me form validates the email, spins and confirms inline; the closing band repeats the form. The keynote poster and its chapter list open a dialog with a drawn walkthrough (arrow keys skip chapters). Five what's new chapters alternate copy and a drawn mini app (timeline drag, AI summary, offline sync, search palette, automation flow). The numbers roll up once when they scroll into view. Launch week cards mark past days Shipped and the current day Today; those cards are single links to their post. Quotes, the free upgrade panel, FAQ answers (one open at a time) and the footer newsletter follow. Reduced motion keeps everything still.
Built with
The sections this page is made of. In the full-screen preview, hold Alt to outline each one on the page.
Add to a project
npx wingo-ui@latest add launch-pagePro item: the CLI needs a Pro account. See plans
Usage
// app/(marketing)/launch/page.tsx
"use client"
import Link from "next/link"
import { LaunchPage } from "@/components/templates/launch-page"
export default function LaunchRoute() {
return (
<LaunchPage
linkComponent={Link}
phase="upcoming"
keynoteAt="2026-10-19T17:00:00Z"
ctaTone="brand"
onRemind={async (email) => {
const response = await fetch("/api/remind", { method: "POST", body: JSON.stringify({ email }) })
if (!response.ok) throw new Error("Could not save the reminder")
}}
/>
)
}Props
phasedefault"live""upcoming" | "live"upcoming: a countdown to the keynote and a Remind me form, a two-minute preview in place of the keynote, every launch day still ahead and a reminder form in the closing band. live: Available now, Try Acme 3.0 and Watch the keynote, the full keynote with chapters and Shipped / Today days.
designdefault"classic""classic" | "bold" | "minimal"The whole page's look. classic follows the layout props; bold: a pill header, a giant start-aligned stage title on a gradient mesh, solid countdown tiles, feature tiles with the visual on top, an inverted numbers band, a quote wall, FAQ cards, an image band and a wordmark footer; minimal: a transparent header, no glow, a flat shot without floating cards, outlined panels, no gray bands, extra air and a simple footer. The *Props overrides still win.
keynoteAtdefault"2026-10-19T17:00:00Z"Date | number | stringWhen the keynote starts, for the countdown in the upcoming phase. A fixed default keeps server and client markup equal.
nowDate | numberPins the countdown's clock (screenshots, tests). Left out, the live clock takes over after hydration.
todaydefault"2026-10-21"stringISO date of the current launch week day in the live phase: earlier days read Shipped, this one Today, later ones Coming.
featuresdefault"LAUNCH_FEATURES"LaunchFeature[]The what's new chapters: { id, icon?, eyebrow, title, description, points?, href?, visual? }; visual is timeline, summaries, offline, search, automations or any node.
statsdefault"LAUNCH_STATS"StatsSectionItem[]{ value, decimals?, prefix?, suffix?, label, description? } figures for the numbers band.
scheduledefault"LAUNCH_SCHEDULE"LaunchDay[]Launch week: { id, date (yyyy-mm-dd), title, description, icon?, href? } per day.
keynoteChaptersdefault"LAUNCH_KEYNOTE_CHAPTERS"VideoSectionChapter[]The keynote's chapters: { title, description?, start (seconds), scene? }.
keynoteDurationdefault1560numberThe keynote's length in seconds.
testimonialsdefault"LAUNCH_TESTIMONIALS"Testimonial[]{ quote, name, role?, company?, companyIcon?, rating?, metric? } beta customer quotes.
plansdefault"LAUNCH_PLANS"LaunchPlan[]The upgrade panel: { id, name, price, includes, featured? } per plan.
faqdefault"LAUNCH_FAQ"FaqItem[]{ question, answer } pairs about the launch.
labelsdefault"DEFAULT_LAUNCH_PAGE_LABELS"Partial<LaunchPageLabels>Every visible string, with live and upcoming variants where the phase changes the copy.
hrefsdefault"DEFAULT_LAUNCH_PAGE_HREFS"Partial<LaunchPageHrefs>{ try, sales, pricing, notes, post }: sign-up, contact, pricing, release notes and the launch post.
featuresLayoutdefault"zigzag""zigzag" | "tiles"The what's new chapters as alternating rows of copy and visual, or tiles with the visual on top (the first one wide). Applies to the classic design.
testimonialsLayoutdefault"grid""grid" | "wall" | "marquee"The quotes as a three column masonry grid, a dense wall or two drifting rows. Applies to the classic design.
ctaVariantdefault"inverted""inverted" | "soft" | "split"The closing band: a solid band, a gray band, or copy beside the buttons on a raised panel. Applies to the classic design.
showAnnouncementdefaulttruebooleanThe strip above the header bar.
showKeynotedefaulttruebooleanThe keynote (or preview) player.
showFeaturesdefaulttruebooleanThe what's new chapters.
showStatsdefaulttruebooleanThe numbers.
showScheduledefaulttruebooleanThe launch week days.
showTestimonialsdefaulttruebooleanThe beta customer quotes.
showUpgradedefaulttruebooleanThe free upgrade panel with the plans.
showFaqdefaulttruebooleanThe FAQ.
showCtadefaulttruebooleanThe closing call to action.
tiltdefaulttruebooleanThe product shot leans back in perspective from 768px. Applies to the classic design.
alternatedefaulttruebooleanGray bands on every other visible section. Applies to the classic and bold designs.
tonedefault"neutral""neutral" | "brand" | "success" | "warning" | "danger" | "info"Accents across the page: the hero glow, the drawn app, chapter icons and checks, the play button, numbers, the Today card and badges.
ctaTonedefault"neutral""neutral" | "brand" | "success" | "warning" | "danger" | "info"Try Acme 3.0, Remind me, See pricing, the header's Get started and the closing band; brand is the marketing orange.
headerdefaulttruebooleanThe marketing header; off inside a site layout.
footerdefaulttruebooleanThe marketing footer with its newsletter form.
headerPropsPartial<MarketingHeaderProps>Passed to MarketingHeader.
footerPropsPartial<MarketingFooterProps>Passed to MarketingFooter.
keynotePropsPartial<VideoSectionProps>Overrides for the keynote VideoSection (media for a real video, layout, radius...).
statsPropsPartial<StatsSectionProps>Overrides for the StatsSection.
testimonialsPropsPartial<TestimonialsSectionProps>Overrides for the TestimonialsSection.
faqPropsPartial<FaqSectionProps>Overrides for the FaqSection.
ctaPropsPartial<CtaSectionProps>Overrides for the CtaSection.
onRemind(email: string) => (void | Promise<unknown>)The Remind me forms of the upcoming phase; a rejected promise shows an error. Without it the form waits 900 ms and confirms.
onKeynoteOpenChange(open: boolean) => voidRuns when the keynote dialog opens or closes.
onSubscribe(email: string) => (void | Promise<unknown>)The footer newsletter; a rejected promise shows an error.
animateIndefaulttruebooleanThe hero rises in once and the numbers roll up; false keeps the page still (thumbnails). Reduced motion always does.
localedefault"en-US"stringIntl locale for the numbers, the countdown and the launch week dates.
linkComponentdefault"<a>"(props: LinkComponentProps) => ReactNodeThe router link for every link on the page (next/link in an app).
classNamestringClasses for the root.
classNamesPartial<Record<LaunchPageSlot, string>>Classes for header, hero, pill, title, countdown, remind, shot, keynote, features, feature, visual, stats, schedule, day, testimonials, upgrade, faq, cta and footer.
Parts
LAUNCH_PAGE_SAMPLE
constantAll the sample content in one object: features, stats, schedule, keynote chapters, testimonials, plans and faq.
LAUNCH_FEATURES
constantFive chapters: timeline view, AI summaries, offline mode, search and Automations 2.0.
LAUNCH_STATS
constantFour figures: 2x faster, 40% fewer clicks, 120 ms search and 214 improvements.
LAUNCH_SCHEDULE
constantLaunch week, Monday Oct 19 to Friday Oct 23, 2026.
LAUNCH_KEYNOTE_CHAPTERS
constantFive keynote chapters over 26 minutes.
LAUNCH_TESTIMONIALS
constantSix beta customer quotes.
LAUNCH_PLANS
constantWhat Free, Pro and Business get of the release.
LAUNCH_FAQ
constantFive questions about price, rollout, upgrading, AI privacy and offline devices.
DEFAULT_LAUNCH_PAGE_LABELS
constantThe English strings.
DEFAULT_LAUNCH_PAGE_HREFS
constantThe default link targets.
LAUNCH_PAGE_DESIGNS
constantThe design names, classic first: ["classic", "bold", "minimal"].
LaunchPageProps
typeProps of LaunchPage.
LaunchPageDesign
type"classic" | "bold" | "minimal".
LaunchPagePhase
type"upcoming" | "live".
LaunchFeature
typeOne what's new chapter.
LaunchDay
typeOne launch week day.
LaunchPlan
typeOne plan row of the upgrade panel.
LaunchPageLabels
typeThe strings labels can override.
LaunchPageHrefs
typeThe link targets hrefs can override.
Examples
Before the keynote
phase="upcoming": a countdown to Oct 19, a Remind me form that validates and confirms, the two-minute preview and a reminder form in the closing band.
Bold design
design="bold": a giant stage title on a gradient mesh, feature tiles, a numbers band, a quote wall and a wordmark footer.
Minimal design
design="minimal": a transparent header, a flat shot with no glow, outlined panels, no gray bands and a simple footer.
Brand orange countdown
The bold design before the keynote with tone and ctaTone brand: orange countdown tiles, accents and Remind me button.
Last day of launch week
today on Friday: four days shipped, the API day highlighted; feature tiles and drifting quotes on the classic design.
Dependencies
Files
- components/templates/launch-page.tsx
- components/templates/launch-page-data.ts