Patterns
Progress
Bar, gradient (with sheen), striped (moving), segmented (steps), indeterminate; and a ring with the number inside.
64%
92%
45%
64%
82%
✓
progress.tsx
"use client";
import { Progress, ProgressRing } from "@waveinno/ui";
export default function ProgressExample() {
return (
<div className="grid gap-6 lg:grid-cols-[1fr_auto]">
<div className="max-w-xl space-y-4">
<Progress value={64} label="Profile complete" showValue />
<Progress value={92} tone="danger" size="md" label="Capacity" showValue />
<Progress value={72} variant="gradient" size="md" label="Onboarding" showValue />
<Progress value={45} variant="striped" tone="success" size="lg" label="Uploading" showValue />
<Progress value={60} variant="segmented" segments={5} size="md" label="Setup, step 3 of 5" />
<Progress label="Syncing" />
</div>
<div className="flex items-center gap-5">
<ProgressRing value={64} gradient size={84} label="Profile" />
<ProgressRing value={82} tone="warning" size={64} label="Occupancy" />
<ProgressRing value={100} tone="success" size={48} thickness={5} label="Done">
✓
</ProgressRing>
</div>
</div>
);
}Import#
Everything comes from the package root. The example above uses:
your-component.tsx
import { Progress, ProgressRing } from "@waveinno/ui";Props#
Read from the source of this version, so they match the code exactly.
<Progress>
src/components/ui/progress.tsx| Prop | Type | Default | Description |
|---|---|---|---|
value | number | — | 0–100; undefined = indeterminate. |
tone | Tone | "info" | |
className | string | — | |
label | string | — | |
variant | "bar" | "gradient" | "striped" | "segmented" | "bar" | |
size | keyof typeof heights | "sm" | |
segments | number | 5 | |
showValue | boolean | false |
<ProgressRing>
src/components/ui/progress.tsx| Prop | Type | Default | Description |
|---|---|---|---|
valuerequired | number | — | |
size | number | 64 | |
thickness | number | 6 | |
tone | Tone | "info" | |
gradient | boolean | false | Draw the arc in the brand gradient instead of the tone. |
label | string | — | |
children | React.ReactNode | — | |
className | string | — |
Install#
If the project does not have the package yet, add it, then follow the setup for Next.js or Vite once.
$ npm install @waveinno/ui