feedback · conformant
LinearProgress
LinearProgressLinearProgressProps
Linear progress
Determinate at a few fractions and self-animating indeterminate. See WavyProgress for the Material 3 Expressive traveling-wave treatment.
Determinate
Custom max
Indeterminate
import { LinearProgress, Surface, Text } from '@language-lit/material3-expressive'
export function LinearProgressExample() {
return (
<Surface
as="section"
aria-labelledby="linear-progress-example-title"
color="surface-container-low"
shape="extra-large"
className="linear-progress-example"
>
<Text as="h2" id="linear-progress-example-title" variant="titleLarge" emphasis="emphasized">
Linear progress
</Text>
<Text as="p" variant="bodyMedium">
Determinate at a few fractions and self-animating indeterminate. See
WavyProgress for the Material 3 Expressive traveling-wave treatment.
</Text>
<Text as="p" variant="labelLarge">Determinate</Text>
<LinearProgress aria-label="Download progress, empty" value={0} />
<LinearProgress aria-label="Download progress, low" value={0.05} />
<LinearProgress aria-label="Download progress, mid" value={0.45} />
<LinearProgress aria-label="Download progress, high" value={0.98} />
<LinearProgress aria-label="Download progress, complete" value={1} />
<Text as="p" variant="labelLarge">Custom max</Text>
<LinearProgress aria-label="Download progress, custom max" value={150} max={200} />
<Text as="p" variant="labelLarge">Indeterminate</Text>
<LinearProgress aria-label="Loading" />
</Surface>
)
}LinearProgress renders a straight, horizontal progress bar. Pass value
for determinate progress, or omit it entirely for a continuously animating
indeterminate bar — the same contract a native <progress> element uses.
import { LinearProgress } from '@language-lit/material3-expressive'
import '@language-lit/material3-expressive/styles.css'
<LinearProgress aria-label="Download progress" value={0.4} />
<LinearProgress aria-label="Loading" />Contract
value(a number in[0, max]) renders determinate progress with an accuratearia-valuenow. Omittingvaluerenders indeterminate mode: a continuously animating pair of bars with noaria-valuenowat all, signaling a busy/indeterminate state to assistive technology.maxdefaults to1.aria-label/aria-labelledbyprovide the required accessible name —LinearProgresshas no visible label of its own.inline-sizedefaults to100%(full-width, like a native<progress>element); set it via ordinary CSS on the root or a wrapping container.- For the Material 3 Expressive traveling-wave treatment, see
WavyProgress.
Tokens and boundaries
Colors, geometry, and motion timing come entirely from --m3e-comp-linear- progress-* CSS custom properties, scoped by Material3Provider.
LinearProgress injects no runtime styles, uses no requestAnimationFrame
loop (indeterminate motion is pure CSS @keyframes), and imports no Next.js, Vite, router, animation library, or private application code.