Skip to content

Progress

Displays task completion progress with accessible progressbar semantics.

Source Code

Progress is backed by @areia/slots and automatically wires the label, value, track, and indicator slots after mount.

Uploading
import ilha from "ilha";
import { Progress } from "areia";

export default ilha.render(() => (
  <Progress label="Uploading" value={45} />
));

Import

import { Progress } from "areia";

Usage

Loading project
import ilha from "ilha";
import { Progress } from "areia";

export default ilha.render(() => (
  <Progress label="Loading project" value={60} />
));

Examples

Determinate

Pass a numeric value to render determinate progress. The indicator width is computed from min, max, and value.

Importing data
import ilha from "ilha";
import { Progress } from "areia";

export default ilha.render(() => (
  <Progress label="Importing data" value={72} />
));

Indeterminate

Use value: null when the total amount of work is unknown.

Syncing
import ilha from "ilha";
import { Progress } from "areia";

export default ilha.render(() => (
  <Progress label="Syncing" value={null} />
));

Custom Range

Storage used
import ilha from "ilha";
import { Progress } from "areia";

export default ilha.render(() => (
  <Progress
    label="Storage used"
    min={0}
    max={500}
    value={125}
  />
));

Without Value Text

Processing
import ilha from "ilha";
import { Progress } from "areia";

export default ilha.render(() => (
  <Progress label="Processing" value={35} showValue={false} />
));

Custom Styling

Use trackClass, indicatorClass, and valueClass to style internal parts.

Deployment
import ilha from "ilha";
import { Progress } from "areia";

export default ilha.render(() => (
  <Progress
    label="Deployment"
    value={80}
    trackClass="h-3 bg-areia-surface-muted"
    indicatorClass="bg-emerald-500"
    valueClass="text-emerald-600"
  />
));

API

Progress(input)

PropTypeDefaultDescription
valuenumber | nullnullCurrent progress value. null renders indeterminate progress.
minnumber0Minimum value.
maxnumber100Maximum value.
labelunknownVisible label rendered in data-slot="progress-label".
showValuebooleantrueWhether to render data-slot="progress-value".
trackClassstringAdditional classes for the track.
indicatorClassstringAdditional classes for the indicator.
valueClassstringAdditional classes for the value text.
onValueChange(value: number | null) => voidCalled when the controller value changes.

Slots

Progress renders these data slots:

  • progress
  • progress-label
  • progress-track
  • progress-indicator
  • progress-value

The root and parts receive status attributes from the slot controller:

  • data-indeterminate
  • data-progressing
  • data-complete
  • data-state