Skip to content

Radial Stack

Stacked bars standing out from a ring, one per category, sorted by total so the dial reads as a spiral from the largest at 12 o’clock round to the smallest.

$149 once · every Pro piece

Customize

Layers darken toward the centre and brighten outward. Short codes sit on the spokes, rotated to read outward, and compact value rings give the scale in the gap at the top. Bars rise in a clockwise cascade. Point at a bar or step with the arrow keys: the others step back and the centre rewrites itself as a sentence with rolling digits, naming the largest layer and its share; point at a layer and that series isolates round the whole dial. One category can be pinned hot. Legend toggles restack on springs.

Install

npx shadcn@latest add @obsyde/radial-stack

Needs your licence key · Get Pro

Usage

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

import { RadialStack } from '@/components/obsyde/ember/radial-stack/RadialStack';

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

Files

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

  • ember/radial-stack/RadialStack.tsxcomponent
  • ember/radial-stack/radial-stack.cssstyles
  • ember/radial-stack/RadialStackDemo.tsxdemo
  • ember/viz-kit/viz-kit.cssshared
  • ember/viz-kit/state-messages.tsxshared
  • 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/radial.tsxshared
  • ember/viz-kit/radial.cssshared
  • ember/shared/ember.cssshared
  • ember/viz-kit/touch.tsshared
  • ember/viz-kit/motion.tsshared
  • ember/viz-kit/focus.tsshared
  • ember/viz-kit/keyboard.tsshared
  • ember/viz-kit/patterns.tsxshared
  • ember/viz-kit/Legend.tsxshared
  • ember/viz-kit/demo.tsxshared
  • ember/viz-kit/demo.cssshared

API

PropTypeDefault
accentAccent'ember' | 'volt' | 'arc''ember'
pointsCategoriesnumber40
seriesSeriesnumber5
sortSort by totalbooleantrue
highlightPin onebooleantrue
ringsValue ringsbooleantrue
legendLegend'row' | 'none''row'
patternPattern'none' | 'series''none'
statusStatus'ready' | 'loading' | 'empty''ready'
sizeSizenumber520
seedSeednumber8