# Progress Show either determinate or indeterminate progress of an operation over time. ## Import ``` Copyts import { Progress } from "@kobalte/core/progress"; // or import { Root, Label, ... } from "@kobalte/core/progress"; // or (deprecated) import { Progress } from "@kobalte/core"; ``` ``` Copyts import { Progress } from "@kobalte/core/progress"; // or import { Root, Label, ... } from "@kobalte/core/progress"; // or (deprecated) import { Progress } from "@kobalte/core"; ``` ## Features - Exposed to assistive technology as a progress bar via ARIA. - Labeling support for accessibility. - Internationalized number formatting as a percentage or value. - Determinate and indeterminate progress support. ## Anatomy The progress consists of: - **Progress:** The root container for a progress bar. - **Progress.Label:** An accessible label that gives the user information on the progress. - **Progress.ValueLabel:** The accessible label text representing the current value in a human-readable format. - **Progress.Track:** The component that visually represents the progress track. - **Progress.Fill:** The component that visually represents the progress value. ``` Copytsx ``` ``` Copytsx ``` ## Example Loading... 80% index.tsxstyle.css ``` Copytsx import { Progress } from "@kobalte/core/progress"; import "./style.css"; function App() { return (
Loading...
); } ``` ``` Copytsx import { Progress } from "@kobalte/core/progress"; import "./style.css"; function App() { return (
Loading...
); } ``` ## Usage ### Custom value scale By default, the `value` prop represents the current percentage of progress, as the minimum and maximum values default to 0 and 100, respectively. Alternatively, a different scale can be used by setting the `minValue` and `maxValue` props. Loading... 50% ``` Copytsx
Loading...
``` ``` Copytsx
Loading...
``` ### Custom value label The `getValueLabel` prop allows the formatted value used in `Progress.ValueLabel` and ARIA to be replaced with a custom string. It receives the current value, min and max values as parameters. Processing... 3 of 10 tasks completed ``` Copytsx `${value} of ${max} tasks completed`} class="progress" >
Processing...
``` ``` Copytsx `${value} of ${max} tasks completed`} class="progress" >
Processing...
``` ### Progress bar fill width We expose a CSS custom property `--kb-progress-fill-width` which corresponds to the percentage of progression (ex: 80%). If you are building a linear progress bar, you can use it to set the width of the `Progress.Fill` component in CSS. ## API Reference ### Progress `Progress` is equivalent to the `Root` import from `@kobalte/core/progress` (and deprecated `Progress.Root`). | Prop | Description | | --- | --- | | value | `number`
The progress value. | | minValue | `number`
The minimum progress value. | | maxValue | `number`
The maximum progress value. | | indeterminate | `boolean`
Whether the progress is in an indeterminate state. | | getValueLabel | `(params: { value: number; min: number; max: number }) => string`
A function to get the accessible label text representing the current value in a human-readable format. If not provided, the value label will be read as a percentage of the max value. | | Data attribute | Description | | --- | --- | | data-progress='loading' | Present when the progress is not complete (`value` < `maxValue`). | | data-progress='complete' | Present when the progress is complete (`value` === `maxValue`). | | data-indeterminate | Present when the progress is in an indeterminate state. | `Progress.Label`, `Progress.ValueLabel`, `Progress.Track` and `Progress.Fill` shares the same data-attributes. ## Rendered elements | Component | Default rendered element | | --- | --- | | `Progress` | `div` | | `Progress.Label` | `span` | | `Progress.ValueLabel` | `div` | | `Progress.Track` | `div` | | `Progress.Fill` | `div` | Previous[←Popover](https://kobalte.dev/docs/core/components/popover)Next[Radio Group→](https://kobalte.dev/docs/core/components/radio-group)