Progress

free

Progress shows how far a task or value has advanced, as a line or a circular gauge.

Storage used62 GB of 100 GB
62%
import Progress from '@/components/ui/progress';

export default function UsageDemo() {
  return (

Installation

Add this component with the NateUI CLI.

npx nateui@latest add Progress

Examples

Basic

45%
import Progress from '@/components/ui/progress';

export default function BasicDemo() {
  return (

Circle

80%
import Progress from '@/components/ui/progress';

export default function CircleDemo() {
  return (

Size

50%
50%
import Progress from '@/components/ui/progress';

export default function SizeDemo() {
  return (

Color

38%
74%
92%
import Progress from '@/components/ui/progress';

export default function ColorDemo() {
  return (

Custom Info

68%
completed
import { PiCheckCircle, PiWarning } from 'react-icons/pi'
import Progress from '@/components/ui/progress';

export default function CustomInfoDemo() {

Gap

75%
import Progress from '@/components/ui/progress';

export default function GapDemo() {
  return (

Controlled

40%
40%
import { useState } from 'react';
import { PiMinus, PiPlus } from 'react-icons/pi'
import Button from '@/components/ui/button';
import Progress from '@/components/ui/progress';

API

Progress renders a line or circle indicator driven by percent. The line variant grows a bar and places its label beside it; the circle variant draws a gauge and centers its label. size applies to the line; width, gapDegree, gapPosition, strokeWidth, and strokeLinecap shape the circle.

PropDescriptionTypeDefault
variantIndicator shape to render.'line' | 'circle''line'
percentCompletion value from 0 to 100.number0
showInfoWhether the percentage label is shown.booleantrue
customInfoReplaces the default ${percent}% label.string | ReactNode-
sizeLine thickness. Applies to the line variant only.'sm' | 'md''md'
strokeClassClass applied to the filled indicator. Defaults to the primary color.string-
trailClassClass applied to the unfilled track.string-
widthDiameter of the circle, in pixels or a CSS size. Circle only.string | number120
gapDegreeSize of the gap in the circle ring, in degrees (0–360). Circle only.number0
gapPositionWhere the ring gap sits. Circle only.GapPosition'top'
strokeWidthThickness of the circle ring stroke. Circle only.number6
strokeLinecapShape of the circle stroke ends. Circle only.StrokeLinecap'round'
classNameClass names applied to the progress root.string-
refRef forwarded to the root element.Ref<HTMLDivElement>-
...nativePropsNative div props applied to the root element.ComponentProps<'div'>-

Types

type GapPosition = 'top' | 'right' | 'bottom' | 'left';
type StrokeLinecap = 'round' | 'square';