---
name: progress
category: feedback
summary: "Determinate / indeterminate progress bar"
subpath: "@42/core/progress"
---

Progress bar with determinate and indeterminate (loading) modes. Sets
`role="progressbar"` + value attributes and exposes the percentage as the
`--c42-progress-percent` custom property so CSS can size the indicator.

```html
<div data-c42-progress>
  <div data-c42-progress-track>
    <div data-c42-progress-indicator></div>
  </div>
  <span data-c42-progress-label></span>
</div>
```

```ts
import { Progress } from '@42/core/progress';
const p = new Progress(root, { value: 40, max: 100, label: 'Upload' });
p.setValue(75);
p.setIndeterminate(true);
```

Options: `value` (default 0), `min` (default 0), `max` (default 100), `indeterminate`, `label`
Methods: `setValue(n)`, `setMax(n)`, `setIndeterminate(boolean)`, `getValue()`
Events: `progress:change` → `{ value, min, max, percent, indeterminate }`
