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

Manifesto Page

Templates

Manifesto Page

Design
Legal PagePress Page
Design
Live props
Appearance
design
typeface
dropCap
tone
ctaTone
Content
published
readingTime
signatureCount
Layout
showIndex
showProgress
showIntro
showSignatures
showSign
showCareers
header
footer
State
defaultSigned
Behavior
animateIn
locale
Code
import { ManifestoPage } from "@/components/templates/manifesto-page"

<ManifestoPage />
  1. Home
  2. Templates
  3. Manifesto Page
Pro

Manifesto Page

v1.0.0·Added in 1.8.0

A company manifesto as a typeset long read: a full-screen opening, eight numbered principles with drawn art, signatures and a hiring P.S.

The opening fills the first screen: the title rises in once and a hand-drawn underline draws under its last words, then Begin reading glides to the essay. A thin bar at the top of the window tracks the whole page. On desktop a sticky rail lists the principles, marks the one in the middle of the screen and fills a progress line; on tablets and phones a floating Principle 3 of 8 pill with a progress ring appears inside the principles and opens a bottom sheet with the list (Escape or a swipe closes it, a pick scrolls there after it closes). Every index link scrolls smoothly, updates the URL hash and moves focus to the principle's heading. Each principle has a Copy link button that copies the page URL with its #anchor, shows Copied for two seconds and announces it. Each chapter carries its own drawn element: a before and after of a noisy and a calm Monday, a margin note, a struck-through cut list, a search palette under its 100 ms budget, a 93% dot grid, a practice list, a display-size pull quote and a weekly loop. Sign the manifesto spins briefly, adds you to the faces and the count, and toggles back (aria-pressed). The founders' signatures, a hiring P.S. with links to careers and the team, and the footer close the page. Reduced motion keeps everything still and jumps instead of gliding.

Built with

The sections this page is made of. In the full-screen preview, hold Alt to outline each one on the page.

  • Marketing Headermarketing-header
  • Marketing Footermarketing-footer

Add to a project

npx wingo-ui@latest add manifesto-page

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

Usage

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

import Link from "next/link"
import { ManifestoPage } from "@/components/templates/manifesto-page"

export default function ManifestoRoute() {
  return (
    <ManifestoPage
      linkComponent={Link}
      design="editorial"
      typeface="serif"
      signatureCount={2481}
      onSign={async (signed) => {
        const response = await fetch("/api/manifesto/sign", { method: signed ? "POST" : "DELETE" })
        if (!response.ok) throw new Error("Could not save your signature")
      }}
    />
  )
}

Props

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

    The whole page's look. classic: huge sans type, outlined numerals, raised art panels, a sticky rail; editorial: a centered serif opening with an italic emphasis, serif headings and numerals, heavy rules between principles, flat art, a centered header and footer; bold: an inverted poster opening, giant solid numerals, thick rules, tiles, an inverted quote and sign panel, a pill header and a wordmark footer; minimal: a transparent header, quiet medium type, small mono numbers, no rail (the pill indexes at every width), outlined art and a simple footer. headerProps and footerProps still win.

  • typefacedefault "sans"
    "sans" | "serif"

    The reading text: Inter, or a system serif (New York on Apple devices, Iowan, Palatino or Georgia elsewhere; no font files).

  • principlesdefault "MANIFESTO_PRINCIPLES"
    ManifestoPrinciple[]

    { id, title, summary, paragraphs, art?, artAfter?, caption? } per chapter. id is the #anchor; art is one of quote, note, stat, list, cuts, compare, moment, cadence or { kind: "custom", node }, placed after artAfter paragraphs (default 2).

  • authorsdefault "MANIFESTO_AUTHORS"
    ManifestoAuthor[]

    { name, role, avatar?, signature? } for the byline and the closing signatures; signature is a list of SVG paths in a 240 x 80 box.

  • signersdefault "MANIFESTO_SIGNERS"
    string[]

    Names behind the faces next to the signature count.

  • introdefault "MANIFESTO_INTRO"
    string[]

    The paragraphs before the first principle; the first one carries the drop cap.

  • closingdefault "MANIFESTO_CLOSING"
    string[]

    The paragraphs above the signatures.

  • publisheddefault "2026-10-08"
    string

    ISO date (yyyy-mm-dd) in the byline, formatted with the locale.

  • readingTimedefault 9
    number

    Minutes, for the byline, the rail and the sheet.

  • signatureCountdefault 2481
    number

    How many people signed before this visitor.

  • labelsdefault "DEFAULT_MANIFESTO_PAGE_LABELS"
    Partial<ManifestoPageLabels>

    Every visible string; title plus titleEmphasis make the opening line.

  • hrefsdefault "DEFAULT_MANIFESTO_PAGE_HREFS"
    Partial<ManifestoPageHrefs>

    { careers, about }: the P.S. buttons.

  • showIndexdefault true
    boolean

    The sticky rail on desktop, the inline list after the intro, and the pill and sheet on smaller screens.

  • showProgressdefault true
    boolean

    The thin reading progress bar at the top of the window.

  • showIntrodefault true
    boolean

    The opening paragraphs before the first principle.

  • showSignaturesdefault true
    boolean

    The closing note with the founders' drawn signatures.

  • showSigndefault true
    boolean

    The Sign the manifesto panel with the faces and the count.

  • showCareersdefault true
    boolean

    The hiring P.S. with links to careers and the team.

  • dropCapdefault true
    boolean

    A large initial on the essay's first paragraph.

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

    The drawn underline, the progress bar and ring, the rail marker, the margin rule, the cut strokes and the highlighted dots.

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

    Sign the manifesto, See open roles and the header's Get started.

  • defaultSigneddefault false
    boolean

    Starts with the visitor already signed.

  • onSign
    (signed: boolean) => (void | Promise<unknown>)

    Runs when the visitor signs or takes it back; a promise keeps the button loading and a rejection keeps the old state. Without it: 700 ms, then the count updates.

  • onCopyLink
    (id: string, url: string) => void

    Runs after a Copy link press with the principle's id and the copied URL.

  • headerdefault true
    boolean

    The shared marketing header.

  • footerdefault true
    boolean

    The shared marketing footer.

  • headerProps
    Partial<MarketingHeaderProps>

    Overrides for the header, spread last.

  • footerProps
    Partial<MarketingFooterProps>

    Overrides for the footer, spread last.

  • animateIndefault true
    boolean

    The opening rises in and the underline draws once on mount; false keeps it still (thumbnails). Reduced motion always does.

  • localedefault "en-US"
    string

    Intl locale for the byline date and the signature count.

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

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

  • className
    string

    Classes for the root.

  • classNames
    Partial<Record<ManifestoPageSlot, string>>

    Classes for header, progress, hero, title, byline, index, pill, sheet, intro, principle, numeral, heading, body, art, closing, signatures, sign, careers and footer.

Parts

  • MANIFESTO_PAGE_SAMPLE

    constant

    All the sample content in one object: principles, authors, signers, intro and closing.

  • MANIFESTO_PRINCIPLES

    constant

    Eight principles, from Calm is a feature to Ship, then listen, each with its own drawn element.

  • MANIFESTO_AUTHORS

    constant

    Emma Carter and Liam Brooks, the co-founders, with drawn signatures.

  • MANIFESTO_SIGNERS

    constant

    Six names for the faces next to the signature count.

  • MANIFESTO_INTRO

    constant

    The two opening paragraphs.

  • MANIFESTO_CLOSING

    constant

    The two closing paragraphs above the signatures.

  • DEFAULT_MANIFESTO_PAGE_LABELS

    constant

    The English strings.

  • DEFAULT_MANIFESTO_PAGE_HREFS

    constant

    The default link targets: /careers and /about.

  • MANIFESTO_PAGE_DESIGNS

    constant

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

  • ManifestoPageProps

    type

    Props of ManifestoPage.

  • ManifestoPageDesign

    type

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

  • ManifestoPageTypeface

    type

    "sans" | "serif".

  • ManifestoPageSlot

    type

    The keys of classNames.

  • ManifestoPrinciple

    type

    One chapter: id, title, summary, paragraphs and its art.

  • ManifestoArt

    type

    The drawn element of a chapter, a union on kind.

  • ManifestoAuthor

    type

    A byline author with an optional drawn signature.

  • ManifestoNotification

    type

    One notification row of the compare art.

  • ManifestoPageLabels

    type

    The strings labels can override.

  • ManifestoPageHrefs

    type

    The link targets hrefs can override.

Examples

Open

Editorial design

design="editorial" with a serif reading face: a centered serif opening, italic numerals, heavy rules and flat art.

Open

Bold design

design="bold": an inverted poster opening, giant solid numerals, tiles and an inverted pull quote and sign panel.

Open

Minimal design

design="minimal": quiet type, small mono numbers, no rail; the Principle 3 of 8 pill indexes the essay at every width.

Open

Brand orange

tone and ctaTone brand: an orange underline, progress, rail marker and cut strokes, with orange Sign and careers buttons.

Open

Inside a site layout

Without header and footer, already signed, no drop cap and no hiring P.S., for a page that sits in an existing layout.

Dependencies

lucide-reactmotionmarketing-headermarketing-footeravatarbuttondrawerkbdmotionnavigationtonesui-config

Files

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

See also

About PageBlog Post PageCareers PageTable Of Contents
PreviousLegal PageNext Press Page