Skip to content

Progress

Determinate or indeterminate progress, measured on a hairline track.

Live — this one is real

Processing artwork42%

Usage

import { useState } from "react";
import { Progress } from "mizu-ui";

export function Example() {
  const [value, setValue] = useState(42);
  return (
    <>
      <Progress label="Processing artwork" value={value} />
      <input
        type="range"
        aria-label="Demo progress"
        value={value}
        onChange={(e) => setValue(Number(e.target.value))}
      />
    </>
  );
}

Source & setup

Import mizu-ui/styles.css once. Fonts are optional via mizu-ui/fonts.css. Override --mizu-* tokens or use className for local styling. Uses native React and CSS; install the package peers for root imports.

Inspect status/Feedback.tsx

Source is included in the npm package under src/status/Feedback.tsx.

Open full source ↗

Props

PropTypeDefaultDescription
valuenumber | undefined—Omit for indeterminate progress.
maxnumber100Completion value.
label / showValuestring / boolean—Accessible label and visible percentage.

Accessibility

Native progress announces its value. Omitted value represents an unknown completion amount.

Motion

CSS transitions explain state changes. Reduced motion removes travel.

Works alongside