WingoUI
Buttons & Actions
ButtonButton GroupCopy ButtonDelete ButtonTheme ToggleToggleToggle Group
Inputs
Avatar UploadCalendarCheckboxColor PickerComboboxCron PickerCurrency InputDate PickerDate Range PickerDate Time PickerDuration PickerEmail InputFile UploadFilter BuilderInputInput GroupListboxMasked InputMention InputMonth PickerMulti SelectNumber InputOTP InputPassword InputPhone InputRadio GroupRatingSearch InputSegmented ControlSelectSignature PadSliderSwitchTag InputTextareaTime Picker
Forms
Address InputCSV ImportFieldForm WizardInline EditInvoice line itemsRich Text EditorSchema Builder
Navigation
Back To TopBounce SidebarBreadcrumbCommand MenuGlobal SearchGooey NavHook SidebarNav MenuNav TabsPaginationProximity SidebarScroll ProgressSidebarStepsTable Of ContentsTabsTopbarUser MenuWorkspace Switcher
Overlays
Alert DialogContext MenuDialogDrawerDropdown MenuFamily DrawerHover CardPopoverSheetShortcuts DialogTooltipTour
Feedback
AlertBannerCookie ConsentEmoji ReactionEmpty StateNotification BellNotification CenterProgressRoute ProgressSkeletonSpinnerToast
Data Display
Approval FlowAvatarBadgeCalendar ViewCode BlockComment ThreadContact cardCountdownDescription ListDiff ViewerFile ListFile managerFolderGanttJSON ViewerKbdLog ViewerMarkdownPresenceSchedulerTagTimelineTree View
Tables & Lists
Audit LogData TableDeal PipelineEditable GridKanbanListMembers tablePermissions MatrixTableTask ListVirtual List
Charts & Stats
Animated CounterArea chartBar chartDonut chartFunnel chartGaugeGitHub ActivityHeatmap calendarLeaderboardLine chartRadial barSparklineStat CardTrackerTrend badge
Layout
AccordionApp ShellCardCollapsibleDetail LayoutEntity HeaderPage HeaderScroll AreaSeparatorSettings LayoutSplit ViewToolbar
Media
Audio PlayerCarouselCSV ViewerDOCX EditorDOCX ViewerExcel ViewerFile SystemImage CropperImage LightboxLocation MapPDF ViewerPowerPoint ViewerQR CodeStep PlayerVideo Player
AI Kit
Agent Status CardChat MessageChat ThreadConversation ListFluid OrbGrid RevealMatrix OrbModel PickerPrompt InputReasoning IndicatorRule BuilderSuggestion ChipsTool Call TimelineUsage MeterVoice InputWorkflow Canvas
Text & Effects
Gravity Letters
Mobile
Action SheetBottom Tab BarFABHaptic ButtonHero HeaderInstall PromptLarge Title HeaderNotification BannerOnboarding CarouselPicker WheelPull To RefreshSlide To ConfirmSticky CTA BarSwipe DeckSwipeable Tabs
Commerce
Cart drawerCategory pickerCheckout stepsCoupon inputFavorite buttonFilter panelListing cardListing gridOrder trackerPricePrice rangePricing tableProduct galleryQuantity stepperReviewsSeller card
Marketing Sections
App Download SectionBlog Cards SectionCTA SectionFAQ SectionFeature GridFeature ShowcaseHero SectionIntegrations SectionLogo CloudMarketing FooterMarketing HeaderMarketing SectionNewsletter SectionPricing SectionStats SectionSteps SectionTeam SectionTestimonials SectionTimeline SectionVideo Section
Blocks
Admin Dashboard PageAdmin ShellAI Chat PageAutomation Builder PageCheckout PageCRM Contact PageCRM Pipeline PageError PagesInbox PageInvoice PageKPI DashboardListing Detail PageLogin PageMarketplace Home PageMarketplace Search PageMarketplace ShellMobile App HomeOnboarding FlowPost Listing WizardPricing PageRegister PageSettings PageUsers Admin Page
Templates
About PageAcademy PageAccessibility PageAffiliate PageAI Product PageBlog PageBlog Post PageCareers PageChangelog PageCommunity PageCompare PageContact PageCustomer Story PageCustomers PageDemo Booking PageDevelopers PageDocs Home PageDownload PageEnterprise PageEvents PageExperts PageFAQ PageFeature PageGlossary PageHelp Article PageHelp Center PageIntegration Detail PageIntegrations PageJob Detail PageLanding PageLaunch PageLegal PageManifesto PagePress PageProduct Tour PageReferral PageRoadmap PageROI Calculator PageSecurity PageSolutions PageStartups PageStatus PageTemplate Gallery PageWaitlist PageYear in Review Page
Hooks & Utilities
AI ChatChart kitCommerceDate utilsFile exportFile typesFiltersForm validationHapticsInvoicingMotion presetsNavigationNumber formatRelative timeRomanian locationsSpreadsheetText matchTonesUIProvideruseClipboarduseConsentuseControllableStateuseCooldownuseDebounceuseKeyboardInsetuseLocaleuseLongPressuseMediaControlsuseMediaQueryuseOverflowItemsusePersistedStateuseScrollEdgesuseScrollStateuseSelectionuseShortcutuseStickToBottom
GalleryTheme

Templates

Startups Page

Templates

Startups Page

Design
Solutions PageStatus Page
Design
Live props
Appearance
design
alternate
tone
ctaTone
radius
Behavior
maxTeam
requireWorkEmail
minUseCase
animateIn
locale
State
defaultSeats
defaultPlan
defaultCategory
accepted
Layout
stepsLayout
testimonialsLayout
ctaVariant
showAnnouncement
showBackers
showLogos
showEligibility
showIncluded
showPerks
showSteps
showTestimonials
showApply
showFaq
showCta
header
footer
Code
import { StartupsPage } from "@/components/templates/startups-page"

<StartupsPage />
  1. Home
  2. Templates
  3. Startups Page
Pro

Startups Page

v1.0.0·Added in 1.8.0

A startup program page: a drawn credits pass, a live eligibility checker, savings calculator, partner perks and an application form.

The hero rises in once on mount beside a drawn Acme for Startups pass ($10,000 in credits, 12 months of Business, a credits-left bar) that tilts into place over a soft glow, with a review time chip and an unlocked perk floating around it on wide screens. Apply in 5 minutes jumps to the form, Check eligibility to the checker. The checker asks how much the company raised and how old it is (segmented controls), the team size (a slider) and whether it already pays for Acme (a switch); the rule chips and the tier card update live: Seed (an inverted card with the value counting to $10,000), Pre-seed, or Not eligible yet with the reasons and links to sales and pricing. Apply for Seed carries the stage and team size into the form and scrolls there. In the savings calculator the team size slider and the Pro / Business switch roll the year-one savings, the credits-used bar and the breakdown. The perks marketplace filters by category with a chip row (scrollable on phones) and recounts the total; Claim on a locked perk opens an inline note with an Apply link, and with accepted it reveals the partner code with a copy button. The application form checks every field (website format, work email on blur, a 20-character minimum for the use case), shows each error under its field and focuses the first; while onApply runs the button spins, a rejection shows an error, then a success panel shows the application ID (copyable), a summary and the next steps. Founder quotes, steps, FAQ (one answer 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.

  • Marketing Sectionmarketing-section
  • Marketing Headermarketing-header
  • Marketing Footermarketing-footer
  • Logo Cloudlogo-cloud
  • Steps Sectionsteps-section
  • Testimonials Sectiontestimonials-section
  • FAQ Sectionfaq-section
  • CTA Sectioncta-section

Add to a project

npx wingo-ui@latest add startups-page

Pro item: the CLI needs a Pro account. See plans

Usage

// app/(marketing)/startups/page.tsx
"use client"

import Link from "next/link"
import { StartupsPage } from "@/components/templates/startups-page"

export default function StartupsRoute() {
  return (
    <StartupsPage
      linkComponent={Link}
      ctaTone="brand"
      onApply={async (values) => {
        const response = await fetch("/api/startups/apply", { method: "POST", body: JSON.stringify(values) })
        if (!response.ok) throw new Error("Could not send the application")
        const { id } = await response.json()
        return id
      }}
    />
  )
}

Props

  • designdefault "classic"
    "classic" | "bold" | "minimal"

    The whole page's look. classic follows the layout props: a split hero with the pass on the right over a dotted glow; bold: a pill header, a giant stage title on a gradient mesh, rounder panels, logo tiles, step cards, a quote wall, FAQ cards, an image band and a wordmark footer; minimal: a transparent header, a centered stacked hero, no glow or floating chips, outlined flat panels, no gray bands and a simple footer. The *Props overrides still win.

  • backersdefault "STARTUPS_BACKERS"
    StartupsBacker[]

    The hero's Founders from row: { name, icon?, className? } accelerators and funds drawn as text wordmarks.

  • logosdefault "STARTUPS_LOGOS"
    LogoCloudItem[]

    Startups in the program for the logo strip: { name, icon?, href?, className? }.

  • tiersdefault "STARTUPS_TIERS"
    Record<StartupsTierId, StartupsTier>

    seed, pre-seed and ineligible: { name, headline, description, plan?, months?, credits, includes }. The hero pass and the calculator use seed.

  • pricesdefault "STARTUPS_PRICES"
    Record<"pro" | "business", number>

    Per user per month in USD for the calculator: { pro: 12, business: 24 }.

  • benefitsdefault "STARTUPS_BENEFITS"
    StartupsBenefit[]

    The four tiles under the calculator: { id, icon?, title, description }.

  • perksdefault "STARTUPS_PERKS"
    StartupsPerk[]

    Partner offers: { id, partner, icon?, category, offer, description, value (USD), code }.

  • perkCategoriesdefault "STARTUPS_PERK_CATEGORIES"
    StartupsPerkCategory[]

    The filter chips, { value, label }; only categories that hold perks show.

  • fundingOptionsdefault "STARTUPS_FUNDING_OPTIONS"
    StartupsOption[]

    The checker's funding answers; the values none, under-500k, 500k-5m and over-5m drive the rules.

  • ageOptionsdefault "STARTUPS_AGE_OPTIONS"
    StartupsOption[]

    The checker's company age answers; over-5 is not eligible.

  • stagesdefault "STARTUPS_STAGES"
    StartupsOption[]

    The form's funding stage select, { value, label, hint? }; the hint shows under the field once picked.

  • teamSizesdefault "STARTUPS_TEAM_SIZES"
    StartupsOption[]

    The form's team size select; values like "6-15" let the checker preselect the bucket.

  • stepsdefault "STARTUPS_STEPS"
    StepsSectionItem[]

    How it works: { icon?, title, description, meta? }.

  • testimonialsdefault "STARTUPS_TESTIMONIALS"
    Testimonial[]

    Founder quotes: { quote, name, role?, company?, companyIcon?, metric? }.

  • faqdefault "STARTUPS_FAQ"
    FaqItem[]

    { question, answer } pairs about the program.

  • labelsdefault "DEFAULT_STARTUPS_PAGE_LABELS"
    Partial<StartupsPageLabels>

    Every visible string; the ones with numbers in them are functions.

  • hrefsdefault "DEFAULT_STARTUPS_PAGE_HREFS"
    Partial<StartupsPageHrefs>

    { apply, eligibility, perks, sales, pricing, privacy }: the in-page anchors, contact, pricing and the privacy policy.

  • defaultAnswersdefault "{ funding: "500k-5m", age: "1-3", teamSize: 12, paying: false }"
    Partial<StartupsAnswers>

    The checker's answers on load.

  • maxTeamdefault 50
    number

    The biggest team the program takes: the checker's rule and the calculator's slider end.

  • defaultSeatsdefault 12
    number

    The calculator's team size on load.

  • defaultPlandefault "business"
    "pro" | "business"

    The calculator's plan on load.

  • defaultCategorydefault "all"
    string

    The perks filter on load: all or a category value.

  • accepteddefault false
    boolean

    The startup is in the program: perks show unlocked and Claim reveals each partner's code with a copy button.

  • requireWorkEmaildefault true
    boolean

    Refuses free mail domains (gmail.com, outlook.com...) in the form.

  • minUseCasedefault 20
    number

    The shortest How will you use Acme? answer, in characters; the field's hint says so. 0 drops the rule.

  • stepsLayoutdefault "horizontal"
    "horizontal" | "cards" | "vertical"

    How it works as a numbered row, numbered tiles or a timeline rail. Applies to the classic design.

  • testimonialsLayoutdefault "featured"
    "featured" | "grid" | "carousel" | "marquee"

    Founder quotes as one big quote and two small, a masonry grid, a swipeable rail or 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.

  • showAnnouncementdefault true
    boolean

    The strip above the header bar.

  • showBackersdefault true
    boolean

    The hero's Founders from wordmarks.

  • showLogosdefault true
    boolean

    The strip of startups in the program.

  • showEligibilitydefault true
    boolean

    The eligibility checker.

  • showIncludeddefault true
    boolean

    What you get: the savings calculator and the benefit tiles.

  • showPerksdefault true
    boolean

    The perks marketplace.

  • showStepsdefault true
    boolean

    How it works.

  • showTestimonialsdefault true
    boolean

    The founder quotes.

  • showApplydefault true
    boolean

    The application form.

  • showFaqdefault true
    boolean

    The FAQ.

  • showCtadefault true
    boolean

    The closing call to action.

  • alternatedefault true
    boolean

    Gray 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 pass, slider and switch fills, the credits bars, benefit icons, checks and unlocked Claim buttons.

  • ctaTonedefault "neutral"
    "neutral" | "brand" | "success" | "warning" | "danger" | "info"

    Apply in 5 minutes, the tier's Apply button, Submit application, the header's Get started and the closing band; brand is the marketing orange.

  • radiusdefault "md"
    "none" | "sm" | "md" | "lg" | "full"

    The corners of the form fields.

  • headerdefault true
    boolean

    The marketing header; off inside a site layout.

  • footerdefault true
    boolean

    The marketing footer with its newsletter form.

  • headerProps
    Partial<MarketingHeaderProps>

    Passed to MarketingHeader.

  • footerProps
    Partial<MarketingFooterProps>

    Passed to MarketingFooter.

  • logosProps
    Partial<LogoCloudProps>

    Overrides for the LogoCloud.

  • stepsProps
    Partial<StepsSectionProps>

    Overrides for the StepsSection.

  • testimonialsProps
    Partial<TestimonialsSectionProps>

    Overrides for the TestimonialsSection.

  • faqProps
    Partial<FaqSectionProps>

    Overrides for the FaqSection.

  • ctaProps
    Partial<CtaSectionProps>

    Overrides for the CtaSection.

  • onApply
    (values: StartupsApplication) => (void | Promise<unknown>)

    The application: { company, website, email, stage, teamSize, backer, useCase }. A promise keeps Submit loading, a rejection shows an error, and a string it resolves with becomes the application ID. Without it the form waits 900 ms and shows the success panel.

  • onClaim
    (perk: StartupsPerk) => void

    A partner code was revealed (accepted only).

  • onTierChange
    (tier: StartupsTierId) => void

    The checker's answers moved the startup to another tier.

  • onSubscribe
    (email: string) => (void | Promise<unknown>)

    The footer newsletter; a rejected promise shows an error.

  • animateIndefault true
    boolean

    The hero rises in once, the pass tilts into place and the quotes drift; false keeps the page still (thumbnails). Reduced motion always does.

  • localedefault "en-US"
    string

    Intl locale for the USD amounts and counters.

  • linkComponentdefault "<a>"
    (props: LinkComponentProps) => ReactNode

    The router link for every link on the page (next/link in an app).

  • className
    string

    Classes for the root.

  • classNames
    Partial<Record<StartupsPageSlot, string>>

    Classes for header, hero, title, offer, backers, logos, eligibility, result, included, calculator, benefit, perks, perk, steps, testimonials, apply, form, success, faq, cta and footer.

Parts

  • STARTUPS_PAGE_SAMPLE

    constant

    All the sample content in one object: backers, logos, tiers, prices, benefits, perks, categories, checker and form options, steps, testimonials and faq.

  • STARTUPS_TIERS

    constant

    Seed (12 months of Business, $10,000), Pre-seed (6 months of Pro, $2,500) and Not eligible yet.

  • STARTUPS_PRICES

    constant

    Pro $12 and Business $24 per user per month.

  • STARTUPS_LIMITS

    constant

    { maxTeam: 50 }.

  • STARTUPS_DEFAULT_ANSWERS

    constant

    The checker's starting answers: $500k to $5M raised, 1 to 3 years old, 12 people, not paying.

  • STARTUPS_BACKERS

    constant

    Five fictional accelerators and funds: Foundry Labs, Northstar Ventures, Seedwell, Arcadia Capital and Tidewater.

  • STARTUPS_LOGOS

    constant

    Eight fictional startups in the program.

  • STARTUPS_BENEFITS

    constant

    Credits, Business for a year, partner perks and founder support.

  • STARTUPS_PERKS

    constant

    Twelve partner offers across cloud, analytics, payroll, legal, design and dev tools.

  • STARTUPS_PERK_CATEGORIES

    constant

    The six perk categories.

  • STARTUPS_FUNDING_OPTIONS

    constant

    None, under $500k, $500k to $5M and $5M or more.

  • STARTUPS_AGE_OPTIONS

    constant

    Under 1 year, 1 to 3, 3 to 5 and 5 or more years.

  • STARTUPS_STAGES

    constant

    Bootstrapped, Pre-seed, Seed and Series A, each with a hint.

  • STARTUPS_TEAM_SIZES

    constant

    1 to 5, 6 to 15, 16 to 30 and 31 to 50 people.

  • STARTUPS_STEPS

    constant

    Apply in 5 minutes, reviewed in 48 hours, credits applied.

  • STARTUPS_TESTIMONIALS

    constant

    Six founder quotes with startup names and stages.

  • STARTUPS_FAQ

    constant

    Six questions about the rules, accelerators, paying customers, year two, perks and upgrades.

  • getStartupsEligibility

    function

    The checker's rules: (answers, maxTeam = 50) => { tier, reasons }. Over $5M raised, 5+ years old or a team over maxTeam is not eligible; $500k to $5M is Seed, less is Pre-seed.

  • DEFAULT_STARTUPS_PAGE_LABELS

    constant

    The English strings.

  • DEFAULT_STARTUPS_PAGE_HREFS

    constant

    The default link targets.

  • STARTUPS_PAGE_DESIGNS

    constant

    The design names, classic first: ["classic", "bold", "minimal"].

  • StartupsPageProps

    type

    Props of StartupsPage.

  • StartupsPageDesign

    type

    "classic" | "bold" | "minimal".

  • StartupsTier

    type

    One tier of the program.

  • StartupsTierId

    type

    "seed" | "pre-seed" | "ineligible".

  • StartupsAnswers

    type

    The checker's answers: { funding, age, teamSize, paying }.

  • StartupsEligibility

    type

    What getStartupsEligibility returns.

  • StartupsApplication

    type

    The form's values passed to onApply.

  • StartupsPerk

    type

    One partner offer.

  • StartupsPageLabels

    type

    The strings labels can override.

  • StartupsPageHrefs

    type

    The link targets hrefs can override.

Examples

Open

Bold design

design="bold": a giant stage title on a gradient mesh, rounder panels, logo tiles, step cards, a quote wall and a wordmark footer.

Open

Minimal design

design="minimal": a transparent header, a centered hero with a flat pass, outlined panels, no gray bands and a simple footer.

Open

Accepted startup in brand orange

accepted with tone and ctaTone brand: perks show unlocked and Claim reveals each partner code with a copy button.

Open

Not eligible yet

defaultAnswers past the rules: the checker opens on Not eligible yet with the reasons and links to sales and pricing.

Open

Review queue down

An onApply that rejects: fill the form and submit to see the error banner while every value stays in place.

Dependencies

lucide-reactmotionmarketing-sectionmarketing-headermarketing-footerlogo-cloudsteps-sectiontestimonials-sectionfaq-sectioncta-sectionanimated-counteravatarbuttoncopy-buttonfieldinputsegmented-controlselectsliderswitchtextareamotionnavigationtonesui-config

Files

  • components/templates/startups-page.tsx
  • components/templates/startups-page-data.ts

See also

Enterprise PageAffiliate PagePricing PageLanding PageSteps Section
PreviousSolutions PageNext Status Page