Progress

An element that shows either determinate or indeterminate progress.

Preview Component

Please note, the API of this component is currently in a preview phase and is subject to change.

No preview available for progress

Anatomy

To set up the progress correctly, you’ll need to understand its anatomy and how we name its parts.

Each part includes a data-part attribute to help identify them in the DOM.

Examples

Learn how to use the Progress component in your project. Let’s take a look at the most basic example:

import { Progress } from '@ark-ui/react'

const Basic = () => (
  <Progress.Root>
    <Progress.Label>Label</Progress.Label>
    <Progress.ValueText />
    <Progress.Indicator state="loading" />
    <Progress.Track>
      <Progress.Range />
    </Progress.Track>
  </Progress.Root>
)

Setting the initial value

To set the progress’s initial value, set the defaultValue prop to a number.

import { Progress } from '@ark-ui/react'

const InitialValue = () => (
  <Progress.Root defaultValue={70}>
    <Progress.Label>Label</Progress.Label>
    <Progress.ValueText />
    <Progress.Track>
      <Progress.Range />
    </Progress.Track>
  </Progress.Root>
)

Specifying the maximum

By default, the maximum is 100. If that’s not what you want, you can easily specify a different bound by changing the value of the max prop.

For example, to show the user a progress to 30, you can use:

import { Progress } from '@ark-ui/react'

const Max = () => (
  <Progress.Root defaultValue={20} max={30}>
    <Progress.Label>Label</Progress.Label>
    <Progress.ValueText />
    <Progress.Track>
      <Progress.Range />
    </Progress.Track>
  </Progress.Root>
)

Changing the orientation

By default, the progress is assumed to be horizontal. To change the orientation to vertical, set the orientation property in the machine’s context to vertical.

Don’t forget to change the styles of the vertical progress by specifying its height

import { Progress } from '@ark-ui/react'

const Vertical = () => (
  <Progress.Root orientation="vertical">
    <Progress.Label>Label</Progress.Label>
    <Progress.ValueText />
    <Progress.Track>
      <Progress.Range />
    </Progress.Track>
  </Progress.Root>
)

Using as a circular progress

You can use the Progress component as a circular progress by replacing Progress.Track and Progress.Range with Progress.CircleTrack and Progress.CircleRange.

Remember to add Progress.Circle as a container for range and track.

Story not available

API Reference

Root

PropTypeDefault
asChild
boolean
defaultValue
number
dir
'ltr' | 'rtl'"ltr"
getRootNode
() => Node | ShadowRoot | Document
id
string
max
number
min
number
orientation
Orientation"horizontal"
translations
IntlTranslations
value
number

Label

PropTypeDefault
asChild
boolean

Range

PropTypeDefault
asChild
boolean

Track

PropTypeDefault
asChild
boolean

Circle

PropTypeDefault
asChild
boolean

Indicator

PropTypeDefault
state
ProgressState
asChild
boolean

ValueText

PropTypeDefault
asChild
boolean

CircleRange

PropTypeDefault
asChild
boolean

CircleTrack

PropTypeDefault
asChild
boolean