Skip to content
WingoUI
ComponentsTemplatesDocsPricingAI agentsBlogChangelog
Components
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 PickerTimezone Select
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 CardPopoverShare DialogSheetShortcuts DialogTooltipTour
Feedback
AlertBannerCookie ConsentEmoji ReactionEmpty StateNotification BellNotification CenterProgressRoute ProgressSetup ChecklistSkeletonSpinnerToast
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 chartRadar chartRadial barSparklineStat CardTrackerTrend badge
Layout
AccordionApp ShellCardCollapsibleDetail LayoutEntity HeaderPage HeaderScroll AreaSeparatorSettings LayoutSplit ViewToolbar
Media
Audio PlayerCarouselCSV ViewerDOCX EditorDOCX ViewerExcel ViewerFile SystemImage compareImage 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
Background PatternGravity LettersMarqueeText AnimateText Rotate
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 PageAPI Keys 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 PageBug Bounty PageCareers PageChangelog PageCommunity PageCompare PageContact PageCustomer Story PageCustomers PageDemo Booking PageDevelopers PageDocs Home PageDownload PageEnterprise PageEvents PageExperts PageFAQ PageFeature PageGlossary PageHelp Article PageHelp Center PageImpact PageIntegration Detail PageIntegrations PageJob Detail PageLanding PageLaunch PageLegal PageManifesto PagePress PageProduct Tour PagePromo PageReferral PageResearch Report PageRoadmap PageROI Calculator PageSecurity PageSolutions PageStartups PageStatus PageSwitch PageTemplate Gallery PageWaitlist PageYear in Review Page
Hooks & Utilities
AI ChatChart kitCommerceDate utilsFile exportFile typesFiltersForm validationHapticsInvoicingMotion presetsNavigationNumber formatRelative timeRomanian locationsSpreadsheetText matchTonesUIProvideruseClipboarduseConsentuseControllableStateuseCooldownuseDebounceuseKeyboardInsetuseLocaleuseLongPressuseMediaControlsuseMediaQueryuseOverflowItemsusePersistedStateuseScrollEdgesuseScrollStateuseSelectionuseShortcutuseStickToBottom
GalleryTheme

Templates

Impact Page

Templates

Impact Page React template for Tailwind CSS v4

Design
Help Center PageIntegration Detail Page
Design
Live props
Appearance
design
background
backgroundColor
bandBackground
bandColor
tone
ctaTone
Content
year
headcount
volunteerShare
contributionsEnd
State
defaultTeamSize
defaultRegion
Behavior
reportHref
applyHref
animateIn
locale
Layout
header
footer
showAnnouncement
showNav
showClimate
showCalculator
showNonprofits
showGiving
showPeople
showOpenSource
showCommitments
showShortfalls
showAssurance
showArchive
showCta
ctaVariant
Code
import { ImpactPage } from "@/components/templates/impact-page"

<ImpactPage />
  1. Home
  2. Templates
  3. Impact Page
Pro

Impact Page React template for Tailwind CSS v4

v1.0.0·Added in 1.9.0

A sustainability and social impact report: headline numbers, emissions charts, a carbon calculator, giving, people data and commitments.

The hero sets the report title beside a drawn landscape whose front ridge is the real emissions-per-user curve, and the four headline numbers roll up once (final in the server markup). Download the full report shows a spinner, then a confirmation (onDownload, or a 900 ms pretend). A sticky chapter nav under the header follows the chapter in view, scrolls its active chip into view on phones, jumps to a chapter on tap and shows reading progress as a thin bar. Every chart has a title, a note, a legend where there are two or more series and a View data toggle that swaps the drawing for its table (the table is always there for screen readers). Hover, tap or Tab to an emissions column, a quarter on the intensity line, a donut source, a giving segment, a map hub or a volunteering month for its values. The carbon calculator takes a team size (slider, arrow keys) and a region (a select, a bottom sheet on phones) and updates Acme vs self-hosted emissions, the yearly saving and a flight equivalence live, with the methodology in a disclosure. The nonprofit map filters by region from its legend. Commitments show a status chip with an icon, a progress bar and the deadline; the archive lists past reports.

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
  • CTA Sectioncta-section

Add to a project

npx wingo-ui@latest add impact-page

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

Usage

Import ImpactPage from @/components/templates/impact-page.

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

import Link from "next/link"
import { ImpactPage } from "@/components/templates/impact-page"

export default function ImpactRoute() {
  return (
    <ImpactPage
      linkComponent={Link}
      ctaTone="brand"
      onDownload={(href) => {
        window.open(href, "_blank")
      }}
    />
  )
}

Props

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

    The whole page's look. classic: a drawn landscape beside the copy, raised chart cards and gradient bands; editorial: a printed annual report with giant start-aligned type over a landscape panorama, numbered chapters, heavy rules, flat charts, a centered header and footer; minimal: centered and quiet, a small leaf rosette, hairline cards, no bands, a transparent header and a simple footer. ctaProps, headerProps and footerProps still win.

  • yeardefault 2026
    number

    The report year in the eyebrow, the announcement and the chart notes.

  • headlinesdefault "IMPACT_HEADLINES"
    ImpactHeadline[]

    { id, value, decimals?, prefix?, suffix?, label }: the hero's numbers.

  • emissionsdefault "IMPACT_EMISSIONS"
    ImpactEmissionsYear[]

    { year, scope1, scope2, scope3 } in tCO2e per fiscal year: the stacked columns and the climate heading's cut and growth.

  • targetPathdefault "IMPACT_TARGET_PATH"
    ImpactTargetPoint[]

    { year, value }: the dashed reduction path; the last point is labeled net zero.

  • intensitydefault "IMPACT_INTENSITY"
    ImpactIntensityPoint[]

    { period ("Q1 2022"), value } kg CO2e per active user: the line chart and the hero landscape's ridge.

  • energydefault "IMPACT_ENERGY"
    ImpactEnergySource[]

    { id, name, share, note }: the electricity mix donut.

  • scope3default "IMPACT_SCOPE3"
    ImpactCategory[]

    { id, name, value }: scope 3 by category in tCO2e.

  • nonprofitStatsdefault "IMPACT_NONPROFIT_STATS"
    ImpactNonprofitStats

    { organizations, seats, countries, value }: the program's totals.

  • regionsdefault "IMPACT_REGIONS"
    ImpactRegion[]

    { id, name, hubs: { id, city, lon, lat, organizations }[] }: the dot map and its region filter.

  • storiesdefault "IMPACT_STORIES"
    ImpactStory[]

    Featured nonprofits with a quote, a metric and a drawn mini app (ui.kind shifts, sites or plan).

  • eligibilitydefault "IMPACT_ELIGIBILITY"
    string[]

    The checklist on the application card.

  • pillarsdefault "IMPACT_PILLARS"
    ImpactPillar[]

    { id: equity | product | time, title, value, description }: the 1% pledge tiles.

  • givingdefault "IMPACT_GIVING"
    ImpactCategory[]

    { id, name, value } cash grants in USD: the proportional bar; the sum is the cash total in the copy.

  • headcountdefault 184
    number

    Employees, in the people heading.

  • representationdefault "IMPACT_REPRESENTATION"
    ImpactRepresentation[]

    { id, team, share, people }: women and non-binary people per team, against parity.

  • paydefault "IMPACT_PAY"
    ImpactPayGap[]

    { id, group, adjusted, unadjusted } cents per dollar: the pay equity dot plot.

  • volunteeringdefault "IMPACT_VOLUNTEERING"
    { month: string; hours: number }[]

    Paid volunteer hours per month (yyyy-mm).

  • volunteerSharedefault 71
    number

    Percent of employees who took at least one volunteer day.

  • peopleNotesdefault "IMPACT_PEOPLE_NOTES"
    string[]

    Numbered methodology footnotes under the people charts.

  • openSourcedefault "IMPACT_OPEN_SOURCE"
    ImpactOpenSourceStats

    { repos, contributors, stars, mergedPrs, sponsored }.

  • reposdefault "IMPACT_REPOS"
    ImpactRepo[]

    { id, name, description, language, stars, href }: the repository list.

  • contributionsdefault "IMPACT_CONTRIBUTIONS"
    ImpactContributionDay[]

    { date, value } merged pull requests per day: the heatmap.

  • contributionsEnddefault "2026-09-30"
    string

    The heatmap's last day (yyyy-mm-dd).

  • commitmentsdefault "IMPACT_COMMITMENTS"
    ImpactCommitment[]

    { id, title, due, status: done | on-track | at-risk, progress, detail }: the timeline, grouped by year.

  • shortfallsdefault "IMPACT_SHORTFALLS"
    ImpactShortfall[]

    { id, title, body, action }: where the company fell short and what changes.

  • reportsdefault "IMPACT_REPORTS"
    ImpactReport[]

    { id, year, title, size, format, href }: the archive below this year's report.

  • assuranceScopedefault "IMPACT_ASSURANCE_SCOPE"
    string[]

    What the auditor checked, as chips on the assurance card.

  • gridRegionsdefault "IMPACT_GRID_REGIONS"
    ImpactGridRegion[]

    { value, label, intensity } kg CO2e per kWh: the calculator's regions.

  • calculatorFactorsdefault "IMPACT_CALCULATOR_FACTORS"
    ImpactCalculatorFactors

    The calculator's per-seat assumptions, also printed in its methodology.

  • defaultTeamSizedefault 50
    number

    The calculator's team size on load (1 to 500).

  • defaultRegiondefault "us"
    string

    The calculator's region on load, a gridRegions value.

  • reportHrefdefault "/impact/acme-impact-report-2026.pdf"
    string

    The full report's address, handed to onDownload.

  • onDownload
    (href: string) => (void | Promise<unknown>)

    Runs with reportHref on Download the full report (hero, nav and archive). A returned promise keeps the buttons loading; a rejection shows an error. Without it: 900 ms, then a confirmation.

  • applyHrefdefault "/contact"
    string

    Where Apply now and the closing band's primary button go.

  • headerdefault true
    boolean

    The marketing header; off inside a site layout that has one.

  • footerdefault true
    boolean

    The marketing footer.

  • showAnnouncementdefault true
    boolean

    The strip above the header bar (labels.announcement).

  • showNavdefault true
    boolean

    The sticky chapter nav with the reading progress bar.

  • showClimatedefault true
    boolean

    Emissions by scope, intensity per user, electricity mix and scope 3 categories.

  • showCalculatordefault true
    boolean

    The carbon calculator for your team.

  • showNonprofitsdefault true
    boolean

    Program stats, the dot map, nonprofit stories and the application card.

  • showGivingdefault true
    boolean

    The 1% pledge tiles and where the cash went.

  • showPeopledefault true
    boolean

    Representation, pay equity, volunteering and the footnotes.

  • showOpenSourcedefault true
    boolean

    Open-source stats, the contributions heatmap and the repositories.

  • showCommitmentsdefault true
    boolean

    The 2030 commitments timeline.

  • showShortfallsdefault true
    boolean

    Where we fell short.

  • showAssurancedefault true
    boolean

    The independent assurance statement.

  • showArchivedefault true
    boolean

    Past reports and data downloads.

  • showCtadefault true
    boolean

    The closing band.

  • 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.

  • backgrounddefault "aurora"
    "plain" | "soft" | "glow" | "aurora" | "grid" | "dots"

    The main background: plain is the bare page color; the others tint the page and add a glow, an aurora, a grid or dots over the first screen. A design picks its own unless you set one (classic aurora, editorial soft, minimal plain).

  • backgroundColordefault "oklch(0.62 0.14 275)"
    string

    The tint and glow color of the main background.

  • bandBackgrounddefault "gradient"
    "muted" | "tinted" | "gradient" | "dots"

    The secondary background of the bands. Cards, fields and tiles inside a band are lifted one step above it, so they never share its color.

  • bandColordefault "oklch(0.62 0.14 275)"
    string

    The tint of tinted and gradient bands; defaults to backgroundColor.

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

    The active chapter chip, the reading progress bar, the calculator's slider and the eligibility checks (success when neutral).

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

    Download the full report, Apply now, the header's Get started and the closing band.

  • headerProps
    Partial<MarketingHeaderProps>

    Passed to MarketingHeader.

  • footerProps
    Partial<MarketingFooterProps>

    Passed to MarketingFooter.

  • ctaProps
    Partial<CtaSectionProps>

    Passed to the closing CtaSection, spread last.

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

    The footer newsletter; a rejected promise shows an error. Without it: 900 ms, then success.

  • animateIndefault true
    boolean

    The headline numbers roll up and the charts grow the first time they scroll into view (never under reduced motion). Everything is final in the server markup.

  • localedefault "en-US"
    string

    Intl locale for every number, percent, amount and month.

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

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

  • labelsdefault "DEFAULT_IMPACT_PAGE_LABELS"
    Partial<ImpactPageLabels>

    Every visible string; {placeholders} are filled from the data.

  • className
    string

    Classes for the root.

  • classNames
    Partial<Record<ImpactPageSlot, string>>

    Classes for header, hero, art, headlines, nav, chapter, panel, calculator, map, story, commitments, shortfalls, assurance, archive, cta and footer.

Parts

  • IMPACT_PAGE_DESIGNS

    constant

    The design names: classic, editorial, minimal.

  • DEFAULT_IMPACT_PAGE_LABELS

    constant

    Every default string, in English.

  • IMPACT_SAMPLE

    constant

    All the sample content in one object.

  • IMPACT_YEAR

    constant

    2026.

  • IMPACT_HEADLINES

    constant

    62% lower per-user emissions, 100% renewable, 18,400 seats, $1.2M donated.

  • IMPACT_EMISSIONS

    constant

    Scopes 1, 2 and 3 for 2022 to 2026: 8,380 down to 4,520 tCO2e.

  • IMPACT_TARGET_PATH

    constant

    50% below 2022 by 2027, 90% below by 2030.

  • IMPACT_INTENSITY

    constant

    kg CO2e per active user, Q1 2022 to Q3 2026.

  • IMPACT_ENERGY

    constant

    Wind, solar, hydro and certificates.

  • IMPACT_SCOPE3

    constant

    2026 scope 3 by category.

  • IMPACT_NONPROFIT_STATS

    constant

    2,140 organizations, 18,400 seats, 46 countries.

  • IMPACT_REGIONS

    constant

    Six regions with their city hubs.

  • IMPACT_STORIES

    constant

    Harbor Food Bank, Open Rivers Trust and Kijani Schools Network.

  • IMPACT_ELIGIBILITY

    constant

    Who can apply.

  • IMPACT_PILLARS

    constant

    1% of equity, product and time.

  • IMPACT_GIVING

    constant

    Where the $1.2M went.

  • IMPACT_HEADCOUNT

    constant

    184.

  • IMPACT_REPRESENTATION

    constant

    Women and non-binary people per team.

  • IMPACT_PAY

    constant

    Adjusted and unadjusted pay ratios.

  • IMPACT_VOLUNTEERING

    constant

    Volunteer hours per month, January to September 2026.

  • IMPACT_VOLUNTEER_SHARE

    constant

    71.

  • IMPACT_PEOPLE_NOTES

    constant

    The people footnotes.

  • IMPACT_OPEN_SOURCE

    constant

    Open-source totals.

  • IMPACT_REPOS

    constant

    Four public repositories.

  • IMPACT_CONTRIBUTIONS

    constant

    26 weeks of merged pull requests per day, from a fixed seed.

  • IMPACT_CONTRIBUTIONS_END

    constant

    2026-09-30.

  • IMPACT_COMMITMENTS

    constant

    Seven goals from 2025 to 2030.

  • IMPACT_SHORTFALLS

    constant

    Travel, AI compute and engineering representation.

  • IMPACT_REPORTS

    constant

    The archive: 2023 to 2025 reports and the 2026 data file.

  • IMPACT_ASSURANCE_SCOPE

    constant

    The assurance card's chips.

  • IMPACT_GRID_REGIONS

    constant

    Six grids with their carbon intensity.

  • IMPACT_CALCULATOR_FACTORS

    constant

    The calculator's assumptions.

  • IMPACT_LAND

    constant

    Rough continent outlines in lon / lat for the dot map.

  • ImpactPageDesign

    type

    classic | editorial | minimal.

  • ImpactChapter

    type

    The nav's chapters.

  • ImpactPageSlot

    type

    The classNames keys.

  • ImpactPageLabels

    type

    The labels object.

  • ImpactHeadline

    type

    One hero number.

  • ImpactEmissionsYear

    type

    One year of emissions by scope.

  • ImpactTargetPoint

    type

    One point of the reduction path.

  • ImpactIntensityPoint

    type

    One quarter of per-user emissions.

  • ImpactEnergySource

    type

    One electricity source.

  • ImpactCategory

    type

    A named amount (scope 3 categories, grants).

  • ImpactNonprofitStats

    type

    The program totals.

  • ImpactRegion

    type

    A region and its hubs.

  • ImpactHub

    type

    One city hub on the map.

  • ImpactStory

    type

    One featured nonprofit.

  • ImpactStoryUi

    type

    The drawn mini app of a story.

  • ImpactPillar

    type

    One pledge pillar.

  • ImpactRepresentation

    type

    One team's representation.

  • ImpactPayGap

    type

    One pay comparison.

  • ImpactOpenSourceStats

    type

    Open-source totals.

  • ImpactRepo

    type

    One repository.

  • ImpactContributionDay

    type

    One day of merged pull requests.

  • ImpactCommitment

    type

    One commitment.

  • ImpactCommitmentStatus

    type

    done | on-track | at-risk.

  • ImpactShortfall

    type

    One shortfall.

  • ImpactReport

    type

    One archived report.

  • ImpactGridRegion

    type

    A calculator region.

  • ImpactCalculatorFactors

    type

    The calculator's assumptions.

  • ImpactRing

    type

    A lon / lat outline.

Examples

Open

Editorial design

design="editorial": a printed annual report. Giant start-aligned type over a landscape panorama, numbered chapters, heavy rules and flat charts.

Open

Minimal design

design="minimal": centered and quiet. A small leaf rosette, hairline cards, no gray bands, a transparent header and a simple footer.

Open

Brand orange, split closing band

ctaTone="brand" on the download and apply buttons, tone="brand" on the chapter nav and slider, ctaVariant="split".

Open

Climate only, embedded

Without the marketing header and footer, only the climate chapter and the calculator: a sustainability page inside your docs site.

Dependencies

d3-scaled3-shapelucide-reactmotionmarketing-sectionmarketing-headermarketing-footercta-sectionanimated-counteravatarbuttonheatmap-calendarselectsliderchart-kitmotionnavigationtonesui-config

Files

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

See also

Year in Review PageCommunity PageAbout PageHeatmap calendarDonut chart
PreviousHelp Center PageNext Integration Detail Page