Components

Arc Gauge 360

Full-circle radial tick gauge with SVG-centered value text. The full-rotation companion to Arc Gauge.

Arc Gauge 360

Full-circle radial gauge. Ticks are distributed evenly around 360° (no overlap between first and last), and the value is rendered as an SVG <text> element anchored to the arc's geometric center (0, 0) — no matter the size.

Use this variant when you need a complete rotation; use arc-gauge for half-moon or partial sweeps where the value anchors to the arc's chord.

Preview
Open in
Loading preview...

Installation

Terminal
$npx shadcn@latest add @vandoko/arc-gauge-360

Usage

import { ArcGauge360 } from "@/components/arc-gauge-360";

export default function Page() {
  return <ArcGauge360 value={72} ticks={72} showValue />;
}

Formatted Value

<ArcGauge360
  value={0.86}
  max={1}
  ticks={60}
  showValue
  valueFormatter={(v) => `${Math.round(v * 100)}%`}
/>

Props

PropTypeDefaultNotes
valuenumberCurrent value (required)
maxnumber100Max value
ticksnumber72Total tick count (≥ 2). Evenly spaced around 360°
startAnglenumber-90Angle of first tick in degrees — -90 = 12 o'clock
radiusnumber140Arc radius (SVG units)
tickLengthnumber18Filled tick length
tickWidthnumber2Tick stroke width
fillColor / emptyColorstringtheme tokensOverride tick colors
showValuebooleanfalseRender centered numeric readout
valueFormatter(v, m) => stringFormat the readout + ARIA text
valueClassNamestringExtra classes on the centered <text>
valueFontSizenumberradius * 0.42SVG font size for the readout

Features

  • Full-circle distribution — Ticks divide 360 / ticks so the last tick never overlaps the first
  • SVG-centered value<text> at (0, 0) with textAnchor="middle" / dominantBaseline="central"
  • Theme-driven — Tick colors come from var(--foreground) / var(--muted-foreground)
  • Scalable value textvalueFontSize defaults to radius * 0.42, override as needed
  • Accessiblerole="meter" with aria-valuemin/max/now/text

Lineage

PropertyValue
Source@vandoko/arc-gauge-360
Curated2026-04-21
LicenseMIT
DependenciesNone

On this page