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

AI Product Page

Templates

AI Product Page

Design
Affiliate PageBlog Page
Design
Live props
Appearance
design
glow
tone
ctaTone
State
defaultPrompt
defaultSeats
Behavior
streaming
animateIn
locale
Layout
ctaVariant
alternate
showLogos
showCapabilities
showSteps
showTrust
showQuote
showPricing
showFaq
showCta
header
footer
Code
import { AiPage } from "@/components/templates/ai-page"

<AiPage />
  1. Home
  2. Templates
  3. AI Product Page
Pro

AI Product Page

v1.0.0·Added in 1.8.0

An AI product page: a streaming assistant mockup with prompt chips, a capability bento, how it works, privacy, add-on pricing and an FAQ.

The hero holds a drawn Acme workspace with an Acme AI panel beside a doc. The first answer types itself out once when the mockup comes into view, with a light sweeping under the panel header. Pick a prompt chip (Summarize this doc, Draft a project plan, Find blockers, Write release notes; a scrollable row on phones) and the assistant thinks, then streams a new answer: bullet points, a plan table with owners, or task cards with Blocked and At risk pills. Type your own question in the composer and press Enter: words like plan, blockers or release pick the matching answer, anything else gets a workspace answer with sources; while it streams the send button turns into Stop. Under a finished answer, Insert into doc drops a summary callout into the doc and other actions confirm with Done; the copy button copies the answer. The capability cards link to their pages, and the Translate card's language pills switch the sample sentence. In How it works, Approve buttons toggle to Approved. The admin panel's switches flip, and the numbers count up once when they scroll in. In pricing, drag the seat slider (or use the arrow keys) and the monthly total rolls; Add Acme AI spins, then confirms with the trial details and Change seats. The FAQ opens one answer at a time. Reduced motion shows answers at once and 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
  • Hero Sectionhero-section
  • Logo Cloudlogo-cloud
  • FAQ Sectionfaq-section
  • CTA Sectioncta-section

Add to a project

npx wingo-ui@latest add ai-page

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

Usage

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

import Link from "next/link"
import { AiPage } from "@/components/templates/ai-page"

export default function AiRoute() {
  return (
    <AiPage
      linkComponent={Link}
      onAddAi={async (seats) => {
        const response = await fetch("/api/billing/add-ons", {
          method: "POST",
          headers: { "Content-Type": "application/json" },
          body: JSON.stringify({ addOn: "ai", seats }),
        })
        if (!response.ok) throw new Error("Could not add Acme AI")
      }}
    />
  )
}

Props

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

    The whole page's look. classic: the knobs below, a soft glow and dot field behind a centered hero, raised cards, gray bands; bold: a pill header, huge start-aligned heavy type on a grid, a deeper mockup shadow, flat tiles, an inverted numbers band and quote, FAQ cards, a scene band and a wordmark footer; minimal: a transparent header, no glow, an outlined mockup and cards, no gray bands, a ghost FAQ, a plain closing band and a simple footer. The *Props overrides still win.

  • defaultPromptdefault "summarize"
    string

    The id of the prompt answered in the mockup on load.

  • defaultSeatsdefault 10
    number

    Where the add-on's seat slider starts (1 to 100).

  • streamingdefault true
    boolean

    Answers think for a moment, then type out word by word; false shows them at once.

  • onPromptChange
    (id: string) => void

    Called with the prompt id when a chip is picked.

  • onAsk
    (question: string) => (AiAnswer | Promise<AiAnswer>)

    Answers a typed question (a promise keeps the assistant thinking). Without it, a prompt whose keywords match answers, else a workspace answer from aiPageFallbackAnswer.

  • onAddAi
    (seats: number) => (void | Promise<unknown>)

    Add Acme AI with the slider's seat count; a promise keeps the button loading, a rejection shows labels.addFailed. Without it the page waits 900 ms and confirms.

  • ctaVariantdefault "inverted"
    "inverted" | "soft" | "split"

    The closing band: a solid band, a gray band, or copy beside the actions. Applies to the classic design.

  • glowdefault true
    boolean

    The soft light and dot field behind the hero, in the tone. Applies to the classic design.

  • alternatedefault true
    boolean

    Gray bands on every other section. Applies to the classic and bold designs.

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

    The glow, the active chip, the assistant's accents, icon tiles, checks and the announcement badge.

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

    The hero's Try Acme AI free, Add Acme AI, the closing band and Get started in the header.

  • promptsdefault "AI_PAGE_PROMPTS"
    AiPrompt[]

    { id, label, icon?, prompt, thinking?, keywords?, answer } chips over the mockup; an answer is { blocks, sources?, action?, insert? } with text, heading, bullets, table and tasks blocks.

  • docdefault "AI_PAGE_DOC"
    AiDoc

    The drawn app beside the assistant: workspace, sidebar, the doc's title, goal, milestones and notes.

  • capabilitiesdefault "AI_PAGE_CAPABILITIES"
    AiCapability[]

    { id, title, description, icon?, visual?, href? } bento cards; visual picks a drawing (write, summarize, automate, ask, translate).

  • stepsdefault "AI_PAGE_STEPS"
    AiStep[]

    { id, kind, kicker, title, description, icon?, details } How it works cards; kind draws sources, a reasoning checklist or actions to approve.

  • trustPointsdefault "AI_PAGE_TRUST_POINTS"
    AiTrustPoint[]

    { title, description, icon? } privacy promises.

  • trustStatsdefault "AI_PAGE_TRUST_STATS"
    AiTrustStat[]

    { value, decimals?, prefix?, suffix?, label } numbers that count up.

  • adminSettingsdefault "AI_PAGE_ADMIN_SETTINGS"
    AiAdminSetting[]

    { id, label, description, defaultChecked? } switches in the drawn admin panel; an empty array hides it.

  • addOndefault "AI_PAGE_ADDON"
    AiAddOn

    { name, price, monthlyPrice, description, features }: the add-on card with the seat calculator.

  • businessdefault "AI_PAGE_BUSINESS"
    AiBundlePlan

    { name, price, description, features, href }: the inverted plan that includes Acme AI.

  • quotedefault "AI_PAGE_QUOTE"
    AiQuote

    { quote, name, role, company, avatar?, href?, metrics? }: the customer quote and its results.

  • faqdefault "AI_PAGE_FAQ"
    FaqItem[]

    Questions of the FAQ (FaqSection items).

  • logosdefault "AI_PAGE_LOGOS"
    LogoCloudItem[]

    Customer wordmarks under the hero.

  • hrefsdefault "DEFAULT_AI_PAGE_HREFS"
    Partial<AiPageHrefs>

    { primary, secondary, announcement, privacy, cta, ctaSecondary }: where the hero, privacy and closing links go.

  • labelsdefault "DEFAULT_AI_PAGE_LABELS"
    Partial<AiPageLabels>

    Every visible string; billedYearly, seatsValue and addedDescription are functions.

  • showLogosdefault true
    boolean

    The customer logos under the hero.

  • showCapabilitiesdefault true
    boolean

    The capability bento.

  • showStepsdefault true
    boolean

    How it works.

  • showTrustdefault true
    boolean

    The privacy promises, admin panel and numbers.

  • showQuotedefault true
    boolean

    The customer quote.

  • showPricingdefault true
    boolean

    The add-on and Business cards.

  • showFaqdefault true
    boolean

    The FAQ.

  • showCtadefault true
    boolean

    The closing band.

  • headerdefault true
    boolean

    The marketing header; off inside a site layout.

  • footerdefault true
    boolean

    The marketing footer.

  • headerProps
    Partial<MarketingHeaderProps>

    Passed to MarketingHeader.

  • footerProps
    Partial<MarketingFooterProps>

    Passed to MarketingFooter.

  • logosProps
    Partial<LogoCloudProps>

    Passed to LogoCloud, spread last.

  • faqProps
    Partial<FaqSectionProps>

    Passed to FaqSection, spread last.

  • ctaProps
    Partial<CtaSectionProps>

    Passed to CtaSection, spread last.

  • animateIndefault true
    boolean

    The hero rises in on mount, the first answer streams once and the numbers count up; off in thumbnails and under reduced motion.

  • localedefault "en-US"
    string

    Intl locale for prices and numbers.

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

    The router link for the header, footer and inner links (next/link in an app).

  • className
    string

    Classes for the root.

  • classNames
    Partial<Record<AiPageSlot, string>>

    Classes for header, hero, playground, logos, capabilities, steps, trust, quote, pricing, faq, cta and footer.

Parts

  • AI_PAGE_SAMPLE

    constant

    All the sample content in one object: prompts, doc, capabilities, steps, trustPoints, trustStats, adminSettings, addOn, business, quote, faq and logos.

  • AI_PAGE_PROMPTS

    constant

    Four prompts with their answers: a summary, a plan table, blocker cards and release notes.

  • AI_PAGE_DOC

    constant

    The Acme 3.0 launch plan doc and the Northwind sidebar.

  • AI_PAGE_CAPABILITIES

    constant

    Write, Summarize, Automate, Ask your workspace and Translate.

  • AI_PAGE_STEPS

    constant

    Context, Reasoning and Action.

  • AI_PAGE_TRUST_POINTS

    constant

    Four privacy promises.

  • AI_PAGE_TRUST_STATS

    constant

    0% used for training, 99.95% uptime, 4.2 hrs saved, 12,000+ teams.

  • AI_PAGE_ADMIN_SETTINGS

    constant

    Three admin switches.

  • AI_PAGE_ADDON

    constant

    The $8 add-on ($10 monthly) and its features.

  • AI_PAGE_BUSINESS

    constant

    The $24 Business plan with Acme AI included.

  • AI_PAGE_QUOTE

    constant

    Priya Shah, Head of Operations at Stark Logistics, with three results.

  • AI_PAGE_FAQ

    constant

    Six questions about training, models, permissions, price, admin controls and languages.

  • AI_PAGE_LOGOS

    constant

    The customer wordmarks (LOGO_CLOUD_SAMPLE).

  • aiPageFallbackAnswer

    function

    (question: string) => AiAnswer: the workspace answer for a typed question that matches no prompt.

  • DEFAULT_AI_PAGE_LABELS

    constant

    The English strings.

  • DEFAULT_AI_PAGE_HREFS

    constant

    Where the hero, privacy and closing links go.

  • AI_PAGE_DESIGNS

    constant

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

  • AiPageDesign

    type

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

  • AiPageProps

    type

    Props of AiPage.

  • AiPageLabels

    type

    Every visible string.

  • AiPageHrefs

    type

    { primary, secondary, announcement, privacy, cta, ctaSecondary }.

  • AiPageSlot

    type

    The classNames keys, from header to footer.

  • AiPrompt

    type

    { id, label, icon?, prompt, thinking?, keywords?, answer }: a prompt chip and its answer.

  • AiAnswer

    type

    { blocks, sources?, action?, insert? }: what the assistant says.

  • AiAnswerBlock

    type

    One piece of an answer: text, heading, bullets, table ({ columns, rows }) or tasks.

  • AiAnswerTask

    type

    { title, owner, note, status, tone }: a task card in an answer.

  • AiDoc

    type

    The drawn app's sidebar and doc.

  • AiCapability

    type

    One bento card.

  • AiCapabilityVisual

    type

    "write" | "summarize" | "automate" | "ask" | "translate".

  • AiStep

    type

    One How it works card.

  • AiStepKind

    type

    "sources" | "reasoning" | "actions": the drawing inside a step.

  • AiTrustPoint

    type

    { title, description, icon? }.

  • AiTrustStat

    type

    { value, decimals?, prefix?, suffix?, label }.

  • AiAdminSetting

    type

    { id, label, description, defaultChecked? }.

  • AiAddOn

    type

    { name, price, monthlyPrice, description, features }.

  • AiBundlePlan

    type

    { name, price, description, features, href }.

  • AiQuote

    type

    { quote, name, role, company, avatar?, href?, metrics? }.

Examples

Open

Bold design

design="bold": huge start-aligned type on a grid, a deeper mockup shadow, flat capability tiles, an inverted numbers band and an inverted quote.

Open

Minimal design

design="minimal": a transparent header, no glow, an outlined mockup and cards, no gray bands and a simple footer.

Open

Brand accents, opening on blockers

tone and ctaTone brand: the glow, the assistant and Add Acme AI turn orange, and the mockup opens on Find blockers.

Open

Inside a site layout, no streaming

No header or footer, answers appear at once, without logos or the quote, and 25 seats on the slider.

Open

When adding fails

onAddAi rejects: after the spinner the add-on card keeps the seats and shows the error above Add Acme AI.

Dependencies

motionlucide-reactmarketing-sectionmarketing-headermarketing-footerhero-sectionlogo-cloudfaq-sectioncta-sectionanimated-counteravatarbuttonsliderswitchnavigationmotiontonesui-config

Files

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

See also

Feature PageLanding PageAI Chat PagePricing PageHero Section
PreviousAffiliate PageNext Blog Page