Skip to content
WingoUI
ComponentsTemplatesDocsPricingAI agentsBlogChangelogContact
Components
Buttons & Actions
ButtonButton GroupCopy ButtonDelete ButtonTheme ToggleToggleToggle Group
Inputs
Avatar UploadCalendarCheckboxColor PickerComboboxCountry SelectCron PickerCurrency InputDate PickerDate Range PickerDate Time PickerDuration PickerEmail InputEmoji PickerFile UploadFilter BuilderInputInput GroupListboxMasked InputMention InputMonth PickerMulti SelectNumber InputOTP InputPassword InputPhone InputRadio GroupRatingSearch InputSegmented ControlSelectSignature PadSliderSwitchTag InputTextareaTime PickerTimezone SelectTree Select
Forms
Address InputBooking WidgetCSV 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 GalleryImage LightboxLocation MapPDF ViewerPowerPoint ViewerQR CodeStep PlayerVideo Player
AI Kit
Agent Status CardChat MessageChat ThreadChat WidgetConversation ListFluid OrbGrid RevealMatrix OrbModel PickerPrompt InputReasoning IndicatorRule BuilderSuggestion ChipsTool Call TimelineUsage MeterVoice InputWorkflow Canvas
Text & Effects
Background PatternGravity LettersMarqueeTerminalText 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 FlowOrder History PagePost Listing WizardPricing PageProfile PageRegister PageSettings PageUsers Admin Page
Templates
About PageAcademy PageAccessibility PageAffiliate PageAgency PageAI Product PageAppointment Booking 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 PageHome Services PageImpact PageIntegration Detail PageIntegrations PageJob Detail PageLanding PageLaunch PageLegal PageManifesto PagePortfolio PagePress PageProduct Tour PagePromo PageReal Estate PageReferral PageResearch Report PageRestaurant PageRoadmap PageROI Calculator PageSecurity PageSolutions PageStartups PageStatus PageStorefront PageSwitch PageTemplate Gallery PageTravel PageWaitlist PageYear in Review Page
Hooks & Utilities
AI ChatChart kitCommerceDate utilsFile exportFile typesFiltersForm validationHapticsInvoicingMotion presetsNavigationNumber formatRelative timeRomanian locationsSpreadsheetText matchTonesUIProvideruseClipboarduseConsentuseControllableStateuseCooldownuseDebounceuseKeyboardInsetuseLocaleuseLongPressuseMediaControlsuseMediaQueryuseOverflowItemsusePersistedStateuseScrollEdgesuseScrollStateuseSelectionuseShortcutuseStickToBottom
GalleryTheme

AI Kit

Matrix Orb

AI Kit

Matrix Orb React component for Tailwind CSS v4

Grid RevealModel Picker
Live props
State
state
levelBuilt-in envelope
Appearance
size240px
color
dots11
spread0.74
dotScale0.6
Behavior
speed1
Content
showLabel
Code
import MatrixOrb from "@/components/ui/matrix-orb"

<MatrixOrb />
  1. Home
  2. Components
  3. AI Kit
  4. Matrix Orb
Free

Matrix Orb React component for Tailwind CSS v4

v1.0.1·Updated in 1.2.1

A React AI voice orb drawn as a dot matrix on canvas that animates through idle, listening and thinking states.

Switch the orb between its idle, listening and thinking states. Idle breathes softly, listening ripples out from the center and blooms with the level, thinking sends bright spots orbiting through the grid. Changing state mid-animation blends from whatever is on screen while the orb springs to its new scale, and the caption below updates for screen readers. Honors prefers-reduced-motion by drawing a still frame per state.

Matrix Orb is a free React component in the React AI components category, written in TypeScript for React 19 and Tailwind CSS v4. It installs as source with npx wingo-ui@latest add matrix-orb, together with UIProvider.

Add to a project

Requirements: React 19 and Tailwind CSS v4, in Next.js (App Router or Pages), Vite or React Router. Installation guide · Next.js setup · Vite setup

npx wingo-ui@latest add matrix-orb

Usage

Import MatrixOrb from @/components/ui/matrix-orb.

"use client"

import { useState } from "react"
import MatrixOrb, { type MatrixOrbState } from "@/components/ui/matrix-orb"

export function Demo() {
  const [state, setState] = useState<MatrixOrbState>("idle")

  return (
    <MatrixOrb
      state={state}
      onClick={() => setState(state === "idle" ? "listening" : "idle")}
      className="cursor-pointer"
    />
  )
}

// drive the bloom yourself with any value from 0 to 1
// <MatrixOrb state="listening" level={level} />

Props

  • statedefault "idle"
    "idle" | "listening" | "thinking"

    Which animation the orb plays. Changes blend in place instead of restarting the loop.

  • sizedefault 240
    number

    Diameter of the orb in pixels. The dot grid spans 74% of it and the canvas tracks devicePixelRatio, so zooming stays sharp.

  • colordefault "#F75001"
    string

    Any CSS color for the dots.

  • dotsdefault 11
    number

    How many dots across the grid. Rounded, with a minimum of 3; dots outside the circle are skipped so the outline stays round.

  • speeddefault 1
    number

    How fast the ripples and orbiters move: 1 is the original pace, 0 holds still. Changing it bends the motion without a restart.

  • spreaddefault 0.74
    number

    Share of the canvas the dot grid covers, 0.2 to 1.

  • dotScaledefault 0.6
    number

    Largest dot radius as a share of the spacing between dots; above 0.5 neighbours touch at full intensity.

  • showLabeldefault true
    boolean

    Shows the state caption under the orb. Hidden, it stays in the page as a screen reader status.

  • leveldefault 0
    number

    How far the orb blooms while listening, 0 to 1 (clamped), for example a live microphone level. Leave it out and a built-in envelope drives the bloom.

  • labels
    Partial<Record<MatrixOrbState, string>>

    Caption under the orb, per state. Missing keys fall back to "Idle", "Listening" and "Thinking".

  • className
    string

    Extra classes merged onto the root element (data-slot="matrix-orb", with data-state set to the current state). Other div props are spread onto it too.

Examples

Driving the bloom with level

Pass level (0 to 1), for example a live microphone volume, and the listening bloom follows it. Leave it out and a built-in envelope animates it instead.

A voice assistant turn

Ask, and the orb listens, thinks while the answer loads, then rests while the reply shows below it.

Colors and density

Any CSS color for the dots, and dots from a coarse 7 to a fine 17 across.

Small inline status

At 48px with fewer, bigger dots it works as a compact thinking indicator next to a line of text.

Dependencies

ui-config

Files

  • components/ui/matrix-orb.tsx

FAQ

Is the React Matrix Orb component free?

Yes. The source is free and needs no account: copy it from the Code tab or install it with the CLI.

How do I install Matrix Orb?

Run npx wingo-ui@latest add matrix-orb. It also adds the Wingo UI item it builds on (UIProvider). With shadcn, run npx shadcn@latest add https://wingo-ui.com/r/matrix-orb.json.

See also

Fluid OrbVoice InputReasoning IndicatorGrid RevealAgent Status Card

Used in

Voice InputAgent Status Card

More React AI components

Workflow CanvasModel PickerChat MessageChat ThreadChat WidgetConversation List
All 17 React AI components
PreviousGrid RevealNext Model Picker
Idle