MD3 React

Progress indicator

Linear and circular progress, including the new wavy variants.
import { LinearProgress } from "@brijbyte/md3-react/linear-progress";
import { CircularProgress } from "@brijbyte/md3-react/circular-progress";
@import "@brijbyte/md3-react/linear-progress.css";
@import "@brijbyte/md3-react/circular-progress.css";

Users need to know something is happening, whether that's a six-second upload or an open-ended background sync. Both components render a rounded active indicator separated from its track by a small gap: pass a value for a determinate readout of how much has completed, or omit it to signal an unspecified wait instead.

Linear

<LinearProgress value={42} aria-label="Downloading" />
x
x

The track always ends in a small stop indicator, so users can tell where 100% is even mid-animation. For a more expressive look, pass wavy — the active indicator's amplitude ramps up just after the start and back down just before the end, flattening to a straight line at both edges so the wave never looks cut off.

When you don't know how long a task will take, omit value (or pass null) to switch to the indeterminate animation: two independently moving bars travel along the track, with no fixed track or stop indicator to imply an endpoint that doesn't exist.

x
x

Circular

<CircularProgress value={42} aria-label="Downloading" />
x
x

Circular progress fits tighter spaces than a linear bar, like inline next to a button label. Indeterminate mode spins continuously while its arc grows and shrinks, with no track visible. wavy carries the same expressive treatment into this shape, morphing the active indicator between a plain ring and a many-pointed star as its amplitude ramps.

x
x

Accessibility

Screen reader users get the same progress information as sighted users, with no extra wiring on your part. Both components render role="progressbar" (via Base UI's Progress.Root) with aria-valuemin/aria-valuemax/aria-valuenow set automatically from value/max, and omitting value marks the indicator indeterminate for assistive tech. Pass aria-label to describe what's in progress.