Skip to content

Sunburst

A hierarchy as rings around a centre, one grey step per depth, cut apart by 2px gaps, sweeping on clockwise.

$149 once · every Pro piece

Customize

Point at a segment and every arc on the path from the centre out to it grows outward a few pixels, cumulatively, while the segment heats to the accent and unrelated branches step back to a quarter (or keep the quieter heat mode, where the path warms in place). Click a segment with parts and it becomes the centre: the angular window and the ring depth run on springs, so every arc morphs into place; click the centre or a breadcrumb pill to go back up. The centre rolls on per-digit mass and reads as a sentence (“24% of Beta · 3 parts”). Options: a legend of the current level that follows the drill and highlights both ways, a hatch per top-level branch, loading and empty states. Arrow keys walk the rings, Enter zooms in, Backspace zooms out.

Install

npx shadcn@latest add @obsyde/sunburst

Needs your licence key · Get Pro

Usage

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

import { Sunburst } from '@/components/obsyde/ember/sunburst/Sunburst';

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

Files

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

  • ember/sunburst/Sunburst.tsxcomponent
  • ember/sunburst/sunburst.cssstyles
  • ember/sunburst/SunburstDemo.tsxdemo
  • ember/viz-kit/viz-kit.cssshared
  • ember/viz-kit/size.tsshared
  • ember/viz-kit/shape.tsshared
  • ember/viz-kit/scale.tsshared
  • ember/viz-kit/roll.tsshared
  • ember/shared/rolling-number.cssshared
  • ember/shared/spring.tsshared
  • ember/shared/accent.tsshared
  • ember/viz-kit/patterns.tsxshared
  • ember/viz-kit/motion.tsshared
  • ember/viz-kit/Legend.tsxshared
  • ember/viz-kit/focus.tsshared
  • ember/shared/ember.cssshared
  • ember/viz-kit/touch.tsshared

API

PropTypeDefault
accentAccent'ember' | 'volt' | 'arc''ember'
zoomZoom'none' | 'Alpha' | 'Beta' | 'Gamma' | 'Delta' | 'Epsilon''none'
hoverHover'grow' | 'heat''grow'
legendLegend'none' | 'list' | 'row''none'
patternPattern'none' | 'per-branch''none'
breadcrumbBreadcrumbbooleantrue
branchesBranchesnumber5
ringsRingsnumber3
sizeSizenumber340
statusStatus'ready' | 'loading' | 'empty''ready'
seedSeednumber3