VibeUI
ComponentsDocs
VibeUI

Components with taste, that you own. Copy the source, retint the tokens, keep every line.

Library

  • All components
  • Signature pieces
  • Text effects
  • Footers

Docs

  • Introduction
  • Installation
  • Theming
  • CLI

Project

  • GitHub
  • Agents and MCP
  • Issues
  • MIT license
© 2026 VibeUI · MIT licensed
  1. Components
  2. Feedback
  3. Progress

Progress

Determinate progress bar with an optional label and percentage.

FeedbackServer-safe
Uploading assets12%
Static64%

Install

bash
npx @agents-npm-packages/vibeui add progress --dir ./src/components/ui

Import

tsx
import { Progress } from "@/components/ui/progress"

API

Generated from the component's TypeScript types, so it always matches the source. * marks a required prop.

<Progress>

PropTypeDefaultDescription
value*number—Controlled value.
classNamestring—Extra classes, merged with the component's own.
labelstring—Visible label.

Source

src/components/ui/progress.tsx
import { cn } from "@/lib/utils";

/** Determinate progress bar with an optional label and percentage. */
export function Progress({
  value,
  className,
  label,
}: {
  value: number;
  className?: string;
  label?: string;
}) {
  const clamped = Math.max(0, Math.min(100, value));

  return (
    <div className={cn("w-full", className)}>
      {label ? (
        <div className="mb-2 flex items-center justify-between text-[13px]">
          <span className="font-medium text-ink-soft">{label}</span>
          <span className="font-mono text-xs tabular-nums text-muted">
            {Math.round(clamped)}%
          </span>
        </div>
      ) : null}
      <div
        role="progressbar"
        aria-valuenow={clamped}
        aria-valuemin={0}
        aria-valuemax={100}
        aria-label={label}
        className="h-1.5 w-full overflow-hidden rounded-full bg-surface-sunken"
      >
        <div
          className="h-full origin-left animate-grow-x rounded-full bg-accent transition-[width] duration-700 ease-out"
          style={{ width: `${clamped}%` }}
        />
      </div>
    </div>
  );
}

Exports Progress. Peer dependencies: clsx, tailwind-merge.

PreviousNotificationNextProgress Ring