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

Developers Page

Templates

Developers Page

Design
Demo Booking PageDocs Home Page
Design
Live props
Content
response
Appearance
design
codeTheme
alternate
tone
ctaTone
Layout
heroLayout
showSurfaces
showTerminal
showEndpoints
showReliability
showCommunity
showCta
header
footer
State
defaultLanguage
Behavior
animateIn
locale
Code
import { DevelopersPage } from "@/components/templates/developers-page"

<DevelopersPage />
  1. Home
  2. Templates
  3. Developers Page
Pro

Developers Page

v1.0.0·Added in 1.8.0

A developer platform page: a code editor hero with language tabs, API surfaces, a live CLI terminal, endpoint explorer, uptime and limits.

The hero rises in once on mount. Get an API key spins for a moment, then shows a test key once with a copy button; the install pill copies its command and follows the selected language. In the code editor the TypeScript, Python, Go and cURL tabs swap the request (arrow keys move between tabs), the copy button copies the snippet, and Run sends a pretend request: the response dims, then comes back with a fresh latency that is announced to screen readers. Long lines scroll sideways inside the code panes, never the page, and each pane is focusable for keyboard scrolling. Every API surface card is one link. The CLI terminal plays its lines in sequence the first time it scrolls into view (deploy, then live webhook events) and the replay button runs it again; reduced motion and animateIn={false} show it complete. The endpoint explorer filters by resource with pill tabs and by text with the search field (press / to focus it); rows link to the reference and an empty result offers to clear the filters. The p95 latency ticks while on screen, the 90-day uptime bars show a tooltip per day, and the changelog entries and community cards are single links. The editor and terminal stay dark in both themes unless codeTheme is auto.

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 developers-page

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

Usage

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

import Link from "next/link"
import { DevelopersPage } from "@/components/templates/developers-page"

export default function DevelopersRoute() {
  return (
    <DevelopersPage
      linkComponent={Link}
      onCreateKey={async () => {
        const response = await fetch("/api/keys", { method: "POST", body: JSON.stringify({ mode: "test" }) })
        if (!response.ok) throw new Error("Could not create a key")
        const { secret } = (await response.json()) as { secret: string }
        return secret
      }}
    />
  )
}

Props

  • snippetsdefault "DEVELOPERS_SNIPPETS"
    DevelopersSnippet[]

    The editor tabs: { value, label, filename, language, method?, install, code }; install feeds the hero pill.

  • responsedefault "DEVELOPERS_RESPONSE"
    string

    The JSON in the response pane.

  • surfacesdefault "DEVELOPERS_SURFACES"
    DevelopersSurface[]

    API surface cards: { id, title, description, meta?, href, visual } with visual rest, graphql, webhooks, oauth, sdks or cli.

  • endpointGroupsdefault "DEVELOPERS_ENDPOINT_GROUPS"
    DevelopersEndpointGroup[]

    The explorer's filter tabs: { value, label }; the first one is the starting filter, value all matches every endpoint.

  • endpointsdefault "DEVELOPERS_ENDPOINTS"
    DevelopersEndpoint[]

    { method, path, description, group, scope?, href } rows of the endpoint explorer.

  • terminaldefault "DEVELOPERS_TERMINAL"
    DevelopersTerminalLine[]

    The CLI terminal: { kind: comment | command | output | success | event | blank, text?, status?, time? }.

  • statsdefault "DEVELOPERS_STATS"
    DevelopersStat[]

    { id, value, decimals?, prefix?, suffix?, label, description? } figures; the one with id latency ticks live.

  • rateLimitsdefault "DEVELOPERS_RATE_LIMITS"
    DevelopersRateLimit[]

    { plan, perMinute, burst, webhooks } rows; perMinute 0 reads as Custom.

  • regionsdefault "DEVELOPERS_REGIONS"
    DevelopersRegion[]

    { id, name, latency } median latency per region under the uptime bars.

  • changelogdefault "DEVELOPERS_CHANGELOG"
    DevelopersChangelogEntry[]

    { version, date, kind, title, description, href } API releases, newest first.

  • communitydefault "DEVELOPERS_COMMUNITY"
    DevelopersCommunityLink[]

    { id, icon: github | discord | calendar, title, description, meta, action, href } cards.

  • labelsdefault "DEFAULT_DEVELOPERS_PAGE_LABELS"
    Partial<DevelopersPageLabels>

    Every visible string: the hero, editor, section headings, CLI steps, explorer, limits and CTA copy.

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

    The whole page's look. classic follows the layout props; bold: a pill header, a split hero with heavy type beside the editor, rounder cards, an inverted CLI band, an image band CTA and a wordmark footer; minimal: a transparent header, no grid or glow, code that follows the page theme, flat outlined cards, no gray bands, a plain CTA and a simple footer. ctaProps, headerProps and footerProps still win.

  • heroLayoutdefault "centered"
    "centered" | "split"

    centered: the copy over a wide editor with request and response side by side; split: copy left, editor right. Applies to the classic design.

  • codeThemedefault "dark"
    "dark" | "auto"

    dark keeps the editor and terminal dark in both themes; auto lets them follow the page. Applies to the classic and bold designs.

  • defaultLanguagedefault "typescript"
    string

    The snippet tab on load (a snippet value).

  • language
    string

    The active snippet tab, controlled.

  • onLanguageChange
    (language: string) => void

    Called with the snippet value when a tab is picked.

  • showSurfacesdefault true
    boolean

    The API surface cards.

  • showTerminaldefault true
    boolean

    The CLI section with the terminal.

  • showEndpointsdefault true
    boolean

    The endpoint explorer.

  • showReliabilitydefault true
    boolean

    The numbers, uptime bars and rate limits.

  • showCommunitydefault true
    boolean

    The API changelog and community cards.

  • showCtadefault true
    boolean

    The closing call to action.

  • alternatedefault true
    boolean

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

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

    Accents: the announcement badge, the glow behind the editor, the drawn visuals, step numbers and the terminal prompt.

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

    Get an API key, the header's Get started and the closing band; brand is the marketing orange.

  • headerdefault true
    boolean

    The marketing header; off inside a site layout.

  • footerdefault true
    boolean

    The marketing footer with its newsletter form.

  • headerProps
    Partial<MarketingHeaderProps>

    Passed to MarketingHeader.

  • footerProps
    Partial<MarketingFooterProps>

    Passed to MarketingFooter.

  • ctaProps
    Partial<CtaSectionProps>

    Overrides for the closing CtaSection (variant, hrefs, checklist...).

  • onCreateKey
    () => (string | void | Promise<string | void>)

    The hero's Get an API key. The button spins while a promise runs; resolve with the key to show it once with a copy button, reject to show an error. Without it the page waits 900 ms and shows a test key.

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

    The footer newsletter; a rejected promise shows an error. Without it the form waits 900 ms and confirms.

  • animateIndefault true
    boolean

    The hero rises in, the terminal plays its lines and the latency ticks; false keeps the page still and complete (thumbnails). Reduced motion always does.

  • localedefault "en-US"
    string

    Intl locale for the numbers, rate limits and changelog 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<DevelopersPageSlot, string>>

    Classes for header, hero, editor, surfaces, surface, terminal, endpoints, reliability, community, cta and footer.

Parts

  • DEVELOPERS_PAGE_SAMPLE

    constant

    All the sample content in one object: snippets, response, surfaces, endpoints, terminal, stats, limits, regions, changelog and community.

  • DEVELOPERS_SNIPPETS

    constant

    Creating a task in TypeScript, Python, Go and cURL.

  • DEVELOPERS_RESPONSE

    constant

    The task JSON the API answers with.

  • DEVELOPERS_SURFACES

    constant

    Six cards: REST API, GraphQL, Webhooks, OAuth apps, Official SDKs and Acme CLI.

  • DEVELOPERS_ENDPOINT_GROUPS

    constant

    All, Tasks, Docs, Projects and Webhooks.

  • DEVELOPERS_ENDPOINTS

    constant

    Twelve endpoints across tasks, docs, projects and webhook endpoints.

  • DEVELOPERS_TERMINAL

    constant

    acme deploy, then acme listen with four live events.

  • DEVELOPERS_STATS

    constant

    Uptime, p95 latency, monthly requests and edge regions.

  • DEVELOPERS_RATE_LIMITS

    constant

    Free, Pro, Business and Enterprise limits.

  • DEVELOPERS_REGIONS

    constant

    Six regions with their median latency.

  • DEVELOPERS_CHANGELOG

    constant

    Four API releases: new, improved, fixed and deprecated.

  • DEVELOPERS_COMMUNITY

    constant

    GitHub, Discord and office hours.

  • DEFAULT_DEVELOPERS_PAGE_LABELS

    constant

    The English strings, including the three CLI steps.

  • DEVELOPERS_PAGE_DESIGNS

    constant

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

  • DevelopersPageProps

    type

    Props of DevelopersPage.

  • DevelopersPageDesign

    type

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

  • DevelopersPageLabels

    type

    The strings labels can override.

  • DevelopersSnippet

    type

    One editor tab: { value, label, filename, language, method?, install, code }.

  • DevelopersEndpoint

    type

    One endpoint row.

  • DevelopersTerminalLine

    type

    One terminal line.

Examples

Open

Bold design

design="bold": a pill header, a split hero with heavy type beside the editor, an inverted CLI band and a wordmark footer.

Open

Minimal design

design="minimal": no grid or glow, code that follows the page theme, outlined cards, no gray bands and a simple footer.

Open

Brand orange

tone and ctaTone brand: an orange glow behind the editor, orange step numbers and prompt, and an orange key button and closing band.

Open

Python first, split hero

The copy beside the editor, Python selected on load and code that follows the page theme.

Open

API landing, short

Hero, endpoints and the closing band only, inside a site layout without header and footer.

Dependencies

lucide-reactmotionmarketing-sectionmarketing-headermarketing-footercta-sectionanimated-counterbadgebuttoncopy-buttonsearch-inputtabstrackeruse-controllable-statemotionnavigationtonesui-config

Files

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

See also

Docs Home PageIntegration Detail PageIntegrations PageCode BlockStatus Page
PreviousDemo Booking PageNext Docs Home Page