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

Community Page

Templates

Community Page

Design
Changelog PageCompare Page
Design
Live props
Appearance
design
alternate
tone
ctaTone
radius
Content
now
online
Behavior
live
minIdea
animateIn
locale
State
defaultTab
defaultRegion
Layout
threadLimit
chapterLimit
ctaVariant
showAnnouncement
showStats
showForum
showChapters
showAmbassadors
showShowcase
showConduct
showCta
header
footer
Code
import { CommunityPage } from "@/components/templates/community-page"

<CommunityPage />
  1. Home
  2. Templates
  3. Community Page
Pro

Community Page

v1.0.0·Added in 1.8.0

A community hub: a drawn live chat hero, member stats, forum highlights, a dot map of local chapters, ambassadors and member builds.

The hero rises in once beside a drawn #show-and-tell chat: messages with a timeline attachment and reactions, a typing indicator, member avatars with presence dots floating on two orbits, and (on wider screens) a meetup card, a Solved thread and a welcome chip drifting around it. The online count and the 🎉 reactions tick up every few seconds while the hero is on screen, and the Members stat ticks with them. The stats count up the first time they scroll in. In the forum, Trending, New and Unanswered tabs (arrow keys move between them) switch the thread list; every thread is one link with its category dot, author, relative time, Solved, Planned or No replies yet badge, participants and reply and like counts. The chapters map is a dot grid of the continents with a pin per chapter: click a pin (or hover or focus a chapter card) to show the chapter's leaders, members and next meetup in the callout. The region chips (a scrollable row on phones) filter the chapter cards and dim the other pins; Show more reveals the rest of the cards. Join on a chapter toggles to Joined (aria-pressed) and counts you in. The ambassador form checks name, email (on blur too), city and a 30-character minimum for the idea, 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 thanks the applicant by first name with the next steps. Member builds are cards with drawn previews, each one link, next to a champions leaderboard with medals and rank changes. The closing band takes a newsletter signup. 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
  • Stats Sectionstats-section
  • CTA Sectioncta-section

Add to a project

npx wingo-ui@latest add community-page

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

Usage

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

import Link from "next/link"
import { CommunityPage } from "@/components/templates/community-page"

export default function CommunityRoute() {
  return (
    <CommunityPage
      linkComponent={Link}
      ctaTone="brand"
      onApply={async (values) => {
        const response = await fetch("/api/community/ambassadors", { method: "POST", body: JSON.stringify(values) })
        if (!response.ok) throw new Error("Could not send the application")
      }}
      onJoinChapter={(chapter, joined) => {
        void fetch(`/api/community/chapters/${chapter.id}`, { method: joined ? "POST" : "DELETE" })
      }}
    />
  )
}

Props

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

    The whole page's look. classic: a split hero over a dotted glow, a divided stats row, gray bands and a split newsletter band; bold: a pill header, a giant stage title on a gradient mesh, an inverted stats band, rounder cards, a drawn newsletter band and a wordmark footer; minimal: a transparent header, a centered stacked hero without floating cards, outlined flat cards, no gray bands, a plain closing band and a simple footer. statsProps and ctaProps still win.

  • statsdefault "COMMUNITY_STATS"
    StatsSectionItem[]

    The stats row under the hero: { value, label, description?, prefix?, suffix?, decimals? }. With live, the first one ticks.

  • forumCategoriesdefault "COMMUNITY_FORUM_CATEGORIES"
    CommunityForumCategory[]

    { value, label, color, threads, href }: the dot color and label on each thread and the side list.

  • threadsdefault "COMMUNITY_THREADS"
    CommunityThread[]

    { id, title, excerpt, category, author, postedAt, replies, likes, participants, status?, href }. Trending ranks threads with replies by likes and replies, New sorts by date, Unanswered keeps the ones with no replies.

  • regionsdefault "COMMUNITY_REGIONS"
    CommunityRegion[]

    The chapter filter chips, { value, label }; only regions with chapters show.

  • chaptersdefault "COMMUNITY_CHAPTERS"
    CommunityChapter[]

    { id, city, country, region, lat, lon, members, leaders, timeZone, nextMeetup?, isNew?, href }. lat and lon place the pin; the meetup shows in the chapter's time zone.

  • ambassadorsdefault "COMMUNITY_AMBASSADORS"
    CommunityAmbassador[]

    Featured ambassadors: { id, name, city, specialty, meetups, since }.

  • perksdefault "COMMUNITY_PERKS"
    CommunityPerk[]

    What ambassadors get: { id, icon?, title, description }.

  • showcasedefault "COMMUNITY_SHOWCASE"
    CommunityShowcaseItem[]

    Member builds: { id, kind, title, description, author, uses, likes, preview, previewItems?, href }. preview picks the drawn mini scene: board, okr, calendar, flow or sync.

  • championsdefault "COMMUNITY_CHAMPIONS"
    LeaderboardItem[]

    Champions of the month for the Leaderboard: { id, name, value (points), description?, previousRank? }.

  • principlesdefault "COMMUNITY_PRINCIPLES"
    CommunityPrinciple[]

    The code of conduct summary: { id, icon?, title, description }.

  • labelsdefault "DEFAULT_COMMUNITY_PAGE_LABELS"
    Partial<CommunityPageLabels>

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

  • hrefsdefault "DEFAULT_COMMUNITY_PAGE_HREFS"
    Partial<CommunityPageHrefs>

    { forum, discord, ask, chapters, events, templates, conduct, report, privacy, announcement, pill }.

  • nowdefault "2026-10-12T15:00:00Z"
    string

    The ISO moment thread times count from ("5 hr. ago"), fixed so the server and the browser agree; an invalid value shows plain dates.

  • onlinedefault 1284
    number

    Members online in the hero before the live ticks.

  • livedefault true
    boolean

    The online count, the 🎉 reactions and the first stat tick up every few seconds while the hero is on screen.

  • defaultTabdefault "trending"
    "trending" | "new" | "unanswered"

    The forum tab on load.

  • threadLimitdefault 5
    number

    Threads per forum tab.

  • defaultRegiondefault "all"
    string

    The chapter filter on load: all or a region value.

  • chapterLimitdefault 6
    number

    Chapter cards before the Show more button; 0 shows every chapter.

  • defaultJoined
    string[]

    Chapter ids the visitor already joined.

  • minIdeadefault 30
    number

    The shortest What would you organize? answer, in characters. 0 drops the rule.

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

    The newsletter band: copy beside the form on a raised panel, a solid band or a gray band. Applies to the classic design.

  • showAnnouncementdefault true
    boolean

    The Summit strip above the header bar.

  • showStatsdefault true
    boolean

    The stats row under the hero.

  • showForumdefault true
    boolean

    Forum highlights.

  • showChaptersdefault true
    boolean

    The chapters map and list.

  • showAmbassadorsdefault true
    boolean

    The ambassadors program and its form.

  • showShowcasedefault true
    boolean

    Member builds and the champions leaderboard.

  • showConductdefault true
    boolean

    The code of conduct summary.

  • showCtadefault true
    boolean

    The newsletter band.

  • alternatedefault true
    boolean

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

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

    Accents: the hero glow and pill tag, the active reaction, map pins, perk icons, the Ambassador badge and leaderboard bars.

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

    Join the forum, Ask the community, Send application, the header's Get started and the newsletter button; 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.

  • headerProps
    Partial<MarketingHeaderProps>

    Passed to MarketingHeader.

  • footerProps
    Partial<MarketingFooterProps>

    Passed to MarketingFooter.

  • statsProps
    Partial<StatsSectionProps>

    Overrides for the StatsSection.

  • ctaProps
    Partial<CtaSectionProps>

    Overrides for the CtaSection.

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

    The ambassador application: { name, email, city, idea }. A promise keeps the button loading and a rejection shows an error. Without it the form waits 900 ms and shows the success panel.

  • onJoinChapter
    (chapter: CommunityChapter, joined: boolean) => void

    A chapter was joined or left.

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

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

  • animateIndefault true
    boolean

    The hero rises in, the scene floats, the counts tick and the stats count up; false keeps the page still (thumbnails). Reduced motion always does.

  • localedefault "en-US"
    string

    Intl locale for counts, relative thread times and meetup dates.

  • 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<CommunityPageSlot, string>>

    Classes for header, hero, title, scene, stats, forum, thread, chapters, map, chapter, ambassadors, ambassador, form, success, showcase, build, champions, conduct, cta and footer.

Parts

  • COMMUNITY_PAGE_SAMPLE

    constant

    All the sample content in one object: now, stats, forum categories, threads, regions, chapters, ambassadors, perks, showcase, champions and principles.

  • COMMUNITY_NOW

    constant

    The fixed moment the sample thread times count from: 2026-10-12T15:00:00Z.

  • COMMUNITY_STATS

    constant

    48,213 members, 3,420 posts this week, 112 countries and 64 chapters.

  • COMMUNITY_FORUM_CATEGORIES

    constant

    Show and tell, Templates, Automations, Integrations and API, Help and how-to, Feedback and ideas.

  • COMMUNITY_THREADS

    constant

    Ten forum threads, three of them still unanswered.

  • COMMUNITY_REGIONS

    constant

    Americas, Europe, Africa and Asia Pacific.

  • COMMUNITY_CHAPTERS

    constant

    Twelve chapters from New York to Sydney, each with leaders and the next meetup.

  • COMMUNITY_AMBASSADORS

    constant

    Four featured ambassadors.

  • COMMUNITY_PERKS

    constant

    Six ambassador perks: plan, meetup budget, Summit, early access, the team, swag.

  • COMMUNITY_SHOWCASE

    constant

    Six member builds: templates, automations and an integration.

  • COMMUNITY_CHAMPIONS

    constant

    The five champions of the month with points and last month's rank.

  • COMMUNITY_PRINCIPLES

    constant

    The four code of conduct principles.

  • DEFAULT_COMMUNITY_PAGE_LABELS

    constant

    The English strings.

  • DEFAULT_COMMUNITY_PAGE_HREFS

    constant

    The default link targets.

  • COMMUNITY_PAGE_DESIGNS

    constant

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

  • CommunityPageProps

    type

    Props of CommunityPage.

  • CommunityPageDesign

    type

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

  • CommunityThread

    type

    One forum thread.

  • CommunityForumCategory

    type

    One forum category with its dot color.

  • CommunityForumTab

    type

    "trending" | "new" | "unanswered".

  • CommunityChapter

    type

    One local chapter with its map position and next meetup.

  • CommunityMeetup

    type

    A chapter's next meetup: { title, startsAt, venue, going }.

  • CommunityRegion

    type

    A chapter region: { value, label }.

  • CommunityAmbassador

    type

    One featured ambassador.

  • CommunityPerk

    type

    One ambassador perk.

  • CommunityShowcaseItem

    type

    One member build.

  • CommunityPrinciple

    type

    One code of conduct principle.

  • CommunityApplication

    type

    The ambassador form's values passed to onApply.

  • CommunityPageLabels

    type

    The strings labels can override.

  • CommunityPageHrefs

    type

    The link targets hrefs can override.

Examples

Open

Bold design

design="bold": a giant stage title on a gradient mesh, an inverted stats band, rounder cards and a wordmark footer.

Open

Minimal design

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

Open

Brand orange, Europe first

tone and ctaTone brand, the chapters filtered to Europe and London already joined.

Open

Unanswered threads, inverted band

The forum opens on Unanswered so members see where help is needed; the newsletter sits on a solid band.

Open

Application queue down

An onApply that rejects: fill the ambassador form and send it to see the error while every value stays.

Dependencies

lucide-reactmotionmarketing-sectionmarketing-headermarketing-footerstats-sectioncta-sectionavatarbadgebuttonfieldinputleaderboardtabstextareamotionnavigationtonesui-config

Files

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

See also

Events PageBlog PageCustomers PageLeaderboardStats Section
PreviousChangelog PageNext Compare Page