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

Glossary Page

Templates

Glossary Page

Design
Feature PageHelp Article Page
Design
Live props
Appearance
design
tone
ctaTone
Layout
layout
showTermOfTheDay
showPopular
showLetters
showCategories
showExamples
showResources
showCta
header
footer
Content
termOfTheDay
updated
State
defaultQuery
defaultCategory
defaultActiveTerm
Behavior
searchShortcut
animateIn
locale
Code
import { GlossaryPage } from "@/components/templates/glossary-page"

<GlossaryPage />
  1. Home
  2. Templates
  3. Glossary Page
Pro

Glossary Page

v1.0.0·Added in 1.8.0

An A to Z glossary of teamwork terms: instant search, a sticky letter rail, topic filters and entries with drawn In Acme examples.

Press / anywhere to focus the big search. Matches drop down as you type, best name matches first with the typed letters marked; Arrow Up and Down move the highlight, Enter (or a click) opens that term and scrolls to it, and Escape clears the field. The list below filters with the same query and shows how many terms match, with Clear filters. The Popular chips and the Term of the day card jump straight to their entry. A sticky A to Z rail sits under the header: letters without terms are disabled, the letter under the rail lights up as you scroll, and a tap scrolls to that letter (on phones the rail scrolls sideways and keeps the active letter in view). Topic chips (Agile, Planning, Metrics...) filter the list and show live counts. In the split layout the list sits beside a sticky detail panel on desktop: click a term or walk the list with the arrow keys and the panel swaps to it, with the longer explanation, an In Acme drawing (a burndown, a Kanban column over its WIP limit, a RACI matrix, a Gantt with the critical path...), related terms, Previous and Next and Copy link; below 1024px the same entry opens in a bottom sheet (a side panel on tablets). In the list layout each entry expands in place. Related chips jump to their term, Copy link copies the URL with the term's #anchor and announces it, and opening the page with #sprint opens and scrolls to Sprint. Every target is 44px on touch; reduced motion 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
  • Marketing Sectionmarketing-section

Add to a project

npx wingo-ui@latest add glossary-page

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

Usage

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

import Link from "next/link"
import { GlossaryPage } from "@/components/templates/glossary-page"
import { GLOSSARY_TERMS } from "@/components/templates/glossary-page-data"

export default function GlossaryRoute() {
  return (
    <GlossaryPage
      linkComponent={Link}
      layout="split"
      terms={GLOSSARY_TERMS}
      termOfTheDay="critical-path"
      onCopyLink={(id) => console.log("copied", id)}
    />
  )
}

Props

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

    The whole page's look. classic: a split hero over a dot grid with a raised Term of the day card, raised panels and a gray resources band; editorial: a centered serif opening, a dictionary-style entry of the day between heavy rules, italic serif letters, flat panels, a centered header and footer; minimal: a transparent header, quiet medium type, small mono letters, outlined panels, no bands and a simple footer. headerProps and footerProps still win.

  • layoutdefault "split"
    "split" | "list"

    split: the list beside a sticky detail panel from 1024px, a bottom sheet (side panel on tablets) below; list: one column of entries that expand in place.

  • termsdefault "GLOSSARY_TERMS"
    GlossaryTerm[]

    { id, term, aka?, category, definition, body, example?, related?, keywords? } per entry. id is the #anchor; example is { visual?, text } where visual names one of the drawn illustrations; related holds other ids. Sorted A to Z with the locale.

  • categoriesdefault "GLOSSARY_CATEGORIES"
    GlossaryCategory[]

    { value, label, description? } for the topic chips and tags.

  • populardefault "GLOSSARY_POPULAR"
    string[]

    Term ids for the Popular chips under the search.

  • termOfTheDaydefault "wip-limit"
    string

    The id featured in the hero card.

  • resourcesdefault "GLOSSARY_RESOURCES"
    GlossaryResource[]

    { kind, title, description, action, href } for the Put these terms to work cards.

  • labelsdefault "DEFAULT_GLOSSARY_PAGE_LABELS"
    Partial<GlossaryPageLabels>

    Every visible string.

  • hrefsdefault "DEFAULT_GLOSSARY_PAGE_HREFS"
    Partial<GlossaryPageHrefs>

    { signUp, contact }: the final call to action.

  • query
    string

    The search text, controlled. Pair it with onQueryChange.

  • defaultQuerydefault ""
    string

    The starting search text while uncontrolled; it filters the list.

  • onQueryChange
    (query: string) => void

    Every change of the search text.

  • category
    string

    The selected topic value or "all", controlled.

  • defaultCategorydefault "all"
    string

    The starting topic while uncontrolled.

  • onCategoryChange
    (category: string) => void

    Runs when a topic chip is picked.

  • activeTerm
    string | null

    The open term's id, controlled (null: none).

  • defaultActiveTermdefault "null"
    string | null

    The starting open term while uncontrolled. In the split layout the panel shows the first term when none is open.

  • onActiveTermChange
    (id: string | null) => void

    Runs when a term opens or closes.

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

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

  • searchShortcutdefault "/"
    string

    Focuses the search from anywhere; an empty string binds nothing.

  • updateddefault "2026-10-12"
    string

    ISO date (yyyy-mm-dd) of the last edit, shown in the hero eyebrow and formatted with the locale.

  • showTermOfTheDaydefault true
    boolean

    The Term of the day card with its drawing.

  • showPopulardefault true
    boolean

    The Popular chips under the search.

  • showLettersdefault true
    boolean

    The sticky A to Z rail.

  • showCategoriesdefault true
    boolean

    The topic chips with counts.

  • showExamplesdefault true
    boolean

    The drawn In Acme example in each entry.

  • showResourcesdefault true
    boolean

    The Put these terms to work cards.

  • showCtadefault true
    boolean

    The final call to action.

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

    The active letter, the selected topic, the row marker and the highlights inside the drawings.

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

    Get started free and the header's Get started.

  • 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 hero rises in once on mount; false keeps it still (thumbnails). Reduced motion always does.

  • localedefault "en-US"
    string

    Intl locale for the A to Z sort, the counts and the Updated date.

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

    Classes for header, hero, title, search, results, popular, today, rail, categories, list, group, letter, term, detail, sheet, visual, related, empty, resources, cta and footer.

Parts

  • GlossaryIllustration

    component

    One of the drawn In Acme mini UIs on its own (decorative, aria-hidden, painted with the --tone vars). Takes div props.

    • visual
      GlossaryVisual

      burndown, burnup, kanban, raci, gantt, velocity, okr, sprint, backlog, roadmap, standup, retro, doc, automation, estimate or flow.

  • GLOSSARY_PAGE_SAMPLE

    constant

    All the sample content in one object: terms, categories, popular, termOfTheDay and resources.

  • GLOSSARY_TERMS

    constant

    44 teamwork, agile and productivity terms, from Agile to Workflow, each with a longer explanation and an In Acme example.

  • GLOSSARY_CATEGORIES

    constant

    Agile, Planning, Metrics, Collaboration, Docs and Automation.

  • GLOSSARY_POPULAR

    constant

    The ids behind the Popular chips.

  • GLOSSARY_TERM_OF_THE_DAY

    constant

    The default featured id, "wip-limit".

  • GLOSSARY_RESOURCES

    constant

    The three Put these terms to work cards: templates, academy and guides.

  • GLOSSARY_VISUALS

    constant

    The names of the drawn illustrations.

  • DEFAULT_GLOSSARY_PAGE_LABELS

    constant

    The English strings.

  • DEFAULT_GLOSSARY_PAGE_HREFS

    constant

    The default link targets: /sign-up and /contact.

  • GLOSSARY_PAGE_DESIGNS

    constant

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

  • GlossaryPageProps

    type

    Props of GlossaryPage.

  • GlossaryPageDesign

    type

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

  • GlossaryPageLayout

    type

    "split" | "list".

  • GlossaryPageSlot

    type

    The keys of classNames.

  • GlossaryTerm

    type

    One entry: id, term, aka, category, definition, body, example, related and keywords.

  • GlossaryExample

    type

    An entry's In Acme example: an optional drawing and a sentence.

  • GlossaryVisual

    type

    The names of the drawn illustrations.

  • GlossaryCategory

    type

    A topic: value, label and an optional description.

  • GlossaryResource

    type

    One Put these terms to work card.

  • GlossaryIllustrationProps

    type

    Props of GlossaryIllustration.

  • GlossaryPageLabels

    type

    The strings labels can override.

  • GlossaryPageHrefs

    type

    The link targets hrefs can override.

Examples

Open

Editorial design

design="editorial": a centered serif opening, a dictionary-style term of the day between heavy rules and italic serif letters.

Open

Minimal design

design="minimal": a transparent header, quiet type, mono letters, outlined panels and no gray bands.

Open

Expandable list

layout="list": one column of entries that expand in place, with Sprint open from the start.

Open

Brand orange

tone and ctaTone brand: orange active letter, topic chip, row marker, drawing highlights and call to action.

Open

Filtered, inside a site layout

Without header and footer, the Metrics topic preselected and no term of the day.

Dependencies

lucide-reactmotionmarketing-headermarketing-footermarketing-sectionavatarbuttondrawerempty-statekbdsearch-inputuse-controllable-stateuse-media-querymotionnavigationtext-matchtonesui-config

Files

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

See also

Help Center PageFAQ PageDocs Home PageSearch InputDrawer
PreviousFeature PageNext Help Article Page