ComponentsUpdated Sep 9, 2026
Progress
Determinate progress with a label and value laid out on a two-column grid. Built on Base UI Progress, so it is announced correctly.
Source: packages/ui/src/components/progress
import { Progress } from '@highlight/ui'Change the props; the preview and the snippet update together.
Exporting transcript
Props
40
0
100
Custom format
<Progress value={40}> <Progress.Label>Exporting transcript</Progress.Label> <Progress.Value /> <Progress.Track> <Progress.Indicator /> </Progress.Track></Progress>Label and Value sit on the first row, Track below.
Exporting transcript
import { useEffect, useState } from 'react'import { Progress } from '@highlight/ui' export default function ProgressBasic() { const [value, setValue] = useState(20) useEffect(() => { const timer = setInterval(() => { setValue((current) => (current >= 100 ? 0 : Math.min(100, current + 15))) }, 1200) return () => clearInterval(timer) }, []) return ( <Progress value={value} className="w-64"> <Progress.Label>Exporting transcript</Progress.Label> <Progress.Value /> <Progress.Track> <Progress.Indicator /> </Progress.Track> </Progress> )}min and max set the range; Value takes a render function for custom formatting.
Storage
Download
import { Progress } from '@highlight/ui' export default function ProgressCustom() { return ( <div className="flex w-64 flex-col gap-6"> <Progress value={68}> <Progress.Label>Storage</Progress.Label> <Progress.Value /> <Progress.Track className="h-2 rounded-full"> <Progress.Indicator className="bg-brand rounded-full" /> </Progress.Track> </Progress> <Progress value={320} min={0} max={500}> <Progress.Label className="text-success-subtle">Download</Progress.Label> <Progress.Value className="text-success-subtle">{(_, raw) => `${raw} / 500 MB`}</Progress.Value> <Progress.Track className="bg-success/10"> <Progress.Indicator className="bg-success" /> </Progress.Track> </Progress> </div> )}The root, then any compound sub-components. Every part accepts className and forwards the rest of its props to the element or Base UI part beneath it.
Progress- Base UI Progress.Root. value and max set the fill; null is indeterminate.
Progress.Label- Text label, left column.
Progress.Value- Formatted value, right column. Children may be a (formatted, raw) => ReactNode function.
Progress.Track- The rail.
Progress.Indicator- The filled portion.