Components
Progress
Thin bar to communicate a job's completion. Pair with a value label — a bare bar without a number is guesswork.
When to useto show how far along a determinate job is (upload, batch, backfill), or that something is running when the duration is unknown.
Import
import { Progress, ProgressLabel, ProgressValue } from "@ravnhq/efni/progress"Default
<Progress value={0} />
<Progress value={35} />
<Progress value={62} />
<Progress value={100} />With label and value
MB-4472 · in flight
MB-4451 · completed
<Progress value={62}>
<ProgressLabel>MB-4472 · in flight</ProgressLabel>
<ProgressValue />
</Progress>Indeterminate
Refreshing…
<Progress value={null}>
<ProgressLabel>Refreshing…</ProgressLabel>
</Progress>Guidelines
Do
- Always show a numeric value when the progress is determinate.
- Use indeterminate (value={null}) when duration is unknown — it beats a fake percentage.
- Prefer inline Progress inside a table row over a modal spinner.
Don't
- Don't stack multiple indeterminate bars — one is a status, three is chaos.
- Don't use Progress for tiny durations (<300ms) — the animation itself becomes the delay.
- Don't reuse it as a bar chart — use a real chart component when the value is data, not status.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
value | number | null | — | The current value. The component is indeterminate when value is null. |
…props | ProgressPrimitive.Root.Props | — | Everything Progress passes to the element it renders. |