Skip to content

Circle Pack

A hierarchy as nested circles, packed tight with an even gap between siblings and a clear inset inside each parent.

$149 once · every Pro piece

Customize

Every group names itself along its top arc, in a band the layout keeps free, so a label never sits on a circle. Leaves take one grey ramp by value across the whole chart, with ink picked for contrast, and show their name (and value, where there is room) only when it fits. Click a circle and the camera springs in until it fills the stage; the breadcrumb, a click on the background, or Esc springs back out one level. Hover a leaf and it lifts hot while everything else steps back; hover a group and the group stays lit. The legend keys the groups: hover isolates, click removes a group and the pack re-settles. Tab in: arrows walk the circles in view, Enter zooms in, Esc zooms out.

Install

npx shadcn@latest add @obsyde/circle-pack

Needs your licence key · Get Pro

Usage

Import it from where the CLI puts it, or copy the files below by hand.

import { CirclePack } from '@/components/obsyde/ember/circle-pack/CirclePack';

export function Example() {
  return (
    <CirclePack />
  );
}

Files

What you get with Pro: plain React, TypeScript and CSS, with no dependencies.

  • ember/circle-pack/CirclePack.tsxcomponent
  • ember/circle-pack/circle-pack.cssstyles
  • ember/circle-pack/pack.tsmodule
  • ember/circle-pack/CirclePackDemo.tsxdemo
  • ember/viz-kit/viz-kit.cssshared
  • ember/viz-kit/Tooltip.tsxshared
  • ember/viz-kit/focus.tsshared
  • ember/viz-kit/patterns.tsxshared
  • ember/viz-kit/roll.tsshared
  • ember/shared/rolling-number.cssshared
  • ember/shared/spring.tsshared
  • ember/shared/accent.tsshared
  • ember/viz-kit/scale.tsshared
  • ember/viz-kit/motion.tsshared
  • ember/viz-kit/chart.tsxshared
  • ember/shared/ember.cssshared
  • ember/viz-kit/touch.tsshared
  • ember/viz-kit/keyboard.tsshared
  • ember/viz-kit/size.tsshared
  • ember/viz-kit/state-messages.tsxshared
  • ember/viz-kit/stage.tsxshared
  • ember/viz-kit/stage.cssshared
  • ember/viz-kit/Legend.tsxshared
  • ember/viz-kit/demo.tsxshared
  • ember/viz-kit/demo.cssshared

API

PropTypeDefault
accentAccent'ember' | 'volt' | 'arc''ember'
groupsGroupsnumber5
depthDepthnumber3
patternPattern'none' | 'diagonal-up' | 'diagonal-down' | 'dots' | 'vertical' | 'crosshatch''none'
labelsLeaf labelsbooleantrue
paddingPaddingnumber3
legendLegend'row' | 'none''row'
tooltipTooltip'panel' | 'none''panel'
statusStatus'ready' | 'loading' | 'empty''ready'
heightHeightnumber440
seedSeednumber7