Ridgeline
Density curves stacked like a range of hills: each ridge is a stage-black fill with a bone top line, so nearer ridges hide the ones behind.
$149 once · every Pro piece
Point at a ridge and it heats, an accent top line over a faint wash, while the others’ lines step back; the fills never fade, so nothing behind bleeds through. A shared crosshair reads every ridge at the same x into the right gutter with rolling numbers, and the header rolls to the hovered ridge’s value and share. Left and Right move along x, Up and Down between ridges. Ridges rise one after another on mount, front first. Options: smooth densities or binned steps, one shared amplitude or each ridge filling its row, sorting by mean or peak, median ticks, bone gradient or textured fills, column grid or dots, and loading and empty states.
Install
npx shadcn@latest add @obsyde/ridgelineNeeds your licence key · Get Pro
Usage
Import it from where the CLI puts it, or copy the files below by hand.
import { Ridgeline } from '@/components/obsyde/ember/ridgeline/Ridgeline';
export function Example() {
return (
<Ridgeline />
);
}
Files
What you get with Pro: plain React, TypeScript and CSS, with no dependencies.
ember/ridgeline/Ridgeline.tsxcomponentember/ridgeline/ridgeline.cssstylesember/ridgeline/RidgelineDemo.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/Grid.tsxsharedember/viz-kit/demo.tsxsharedember/viz-kit/demo.csssharedember/viz-kit/Axis.tsxshared
API
| Prop | Type | Default |
|---|---|---|
accentAccent | 'ember' | 'volt' | 'arc' | 'ember' |
ridgesRidges | number | 7 |
overlapOverlap | number | 2.2 |
modeMode | 'density' | 'histogram' | 'density' |
scaleScale | 'shared' | 'own' | 'shared' |
sortSort | 'none' | 'mean' | 'peak' | 'none' |
mediansMedians | boolean | false |
hoverToneHover tone | 'bone' | 'accent' | 'bone' |
fillFill | 'stage' | 'gradient' | 'pattern' | 'stage' |
crosshairCrosshair | 'solid' | 'dashed' | 'gradient' | 'none' | 'solid' |
patternPattern | 'none' | 'diagonal-up' | 'diagonal-down' | 'dots' | 'vertical' | 'crosshatch' | 'none' |
backgroundBackground | 'none' | 'grid' | 'dots' | 'none' |
revealReveal | 'rise' | 'sweep' | 'fade' | 'none' | 'rise' |
statusStatus | 'ready' | 'loading' | 'empty' | 'ready' |
heightHeight | number | 320 |
seedSeed | number | 12 |