Pyramid
A population (butterfly) chart: two sides grow outward from a centre spine that carries the age bands, oldest on top.
$149 once · every Pro piece
Customize
2005
2015
2025
percent
count
five
ten
row
none
pill
panel
none
grid
none
ready
loading
empty
A comparison year sits behind the bars as borderless ghost fills, so growth reads as bar beyond ghost and decline as ghost beyond bar. The median band is marked on the spine by the one hot caret. Point at a row or step with the arrow keys: both sides stay while the rest step back, the band label brightens and each side's value sits in a pill at the end of its bar. Switching the year morphs every bar over 500ms.
Install
npx shadcn@latest add @obsyde/pyramidNeeds your licence key · Get Pro
Usage
Import it from where the CLI puts it, or copy the files below by hand.
import { Pyramid } from '@/components/obsyde/ember/pyramid/Pyramid';
export function Example() {
return (
<Pyramid />
);
}
Files
What you get with Pro: plain React, TypeScript and CSS, with no dependencies.
ember/pyramid/Pyramid.tsxcomponentember/pyramid/pyramid.cssstylesember/pyramid/PyramidDemo.tsxdemoember/viz-kit/viz-kit.csssharedember/viz-kit/Tooltip.tsxsharedember/viz-kit/focus.tssharedember/viz-kit/patterns.tsxsharedember/viz-kit/roll.tssharedember/shared/rolling-number.csssharedember/shared/spring.tssharedember/shared/accent.tssharedember/viz-kit/scale.tssharedember/viz-kit/motion.tssharedember/viz-kit/chart.tsxsharedember/shared/ember.csssharedember/viz-kit/touch.tssharedember/viz-kit/keyboard.tssharedember/viz-kit/size.tssharedember/viz-kit/States.tsxsharedember/viz-kit/shape.tssharedember/viz-kit/marks.tsxsharedember/viz-kit/Legend.tsxsharedember/viz-kit/demo.tsxsharedember/viz-kit/demo.cssshared
API
| Prop | Type | Default |
|---|---|---|
accentAccent | 'ember' | 'volt' | 'arc' | 'ember' |
yearYear | '2005' | '2015' | '2025' | '2025' |
yearSwitchYear switch | boolean | false |
compareCompare | boolean | true |
unitUnit | 'percent' | 'count' | 'percent' |
medianMedian caret | boolean | true |
bandsBands | 'five' | 'ten' | 'five' |
legendLegend | 'row' | 'none' | 'row' |
tooltipTooltip | 'pill' | 'panel' | 'none' | 'pill' |
patternPattern | 'none' | 'diagonal-up' | 'diagonal-down' | 'dots' | 'vertical' | 'crosshatch' | 'none' |
backgroundBackground | 'grid' | 'none' | 'grid' |
statusStatus | 'ready' | 'loading' | 'empty' | 'ready' |
seedSeed | number | 2 |