Progress Bars

A minimal textured bar chart with vertical and horizontal layouts, shipping a line fill and a dot matrix fill. Each item needs only a value, with an optional label and tooltip.

82%

dashboard

64%

api

38%

database

71%

security

49%

launch

Installation

Progress Bars is published as a shadcn registry item. The CLI drops the file into your project, installs its dependencies, and adds any primitives it relies on.

$npx shadcn@latest add https://akoder.xyz/r/progress-bars.json

Or register the @akoder namespace once in components.json to install by name:

"registries": { "@akoder": "https://akoder.xyz/r/{name}.json" }

Usage

import { ProgressBars } from "@/components/ui/progress-bars";
 
const milestones = [
  { id: "dashboard", label: "dashboard", value: 82 },
  { id: "api", label: "api", value: 64 },
  { id: "launch", label: "launch", value: 49 },
];
 
export function MilestoneProgress() {
  return <ProgressBars items={milestones} />;
}

An item only needs a value. label and tooltip are optional.

Horizontal rows

<ProgressBars items={milestones} orientation="horizontal" />

Dot variant

DotProgress takes exactly the same props and draws the same bars, except the completed portion is filled with a matrix of dots instead of etched rules.

import { DotProgress } from "@/components/ui/progress-bars";
 
<DotProgress items={milestones} />
<DotProgress items={milestones} orientation="horizontal" />

Props

ProgressBars

PropTypeDefaultNotes
itemsProgressBarItem[]requiredEach item has id and value, plus optional label and tooltip.
orientation"vertical" | "horizontal""vertical"Vertical draws a scaled chart; horizontal draws compact rows.
maxnumber100Largest possible value. Values outside 0..max are clipped.
showScalebooleantrueScale and guide lines, vertical orientation only.
showValuesbooleantrueFormatted value beside or above each bar.
showTooltipbooleantrueHover and keyboard-focus tooltips.
formatValue(value, max) => stringpercentageFormats values and scale labels.
heightnumber240Vertical plot height in pixels.
animatebooleantrueGrows bars once when they enter the viewport.
ariaLabelstring"progress bars"Accessible name for the chart.
classNamestringExtra classes for the root.

DotProgress accepts the identical prop set; only the fill texture differs.

Notes & features

Manual installation

Copy components/ui/progress-bars.tsx into your project. Install motion, add the shadcn tooltip primitive with npx shadcn@latest add tooltip, and mount TooltipProvider once near your application root.

examples

Explore different presets, palettes, and configurations.

Compact rows

A horizontal layout keeps status lists easy to scan in dense surfaces.

research

86%

prototype

62%

release

34%

Example 1 of 4: Compact rows