Small Multiples
A grid of tiny charts that share one crosshair.
$149 once · every Pro piece
Scrub any tile with a pointer, a finger or the arrow keys and every tile scrubs to the same row: a hairline and a dot ride each curve and each value rolls in its corner, while the day rolls in the header. Only the tile leading at that row runs hot, so the eye finds the leader without a legend. The y scale is shared, so shapes compare by size, or each tile’s own, and switching tweens every domain. Tiles can be areas, lines or bars, sorted by latest value, change or peak, with an average hairline, a shared band of normal, hatched fills, and loading and empty states.
Install
npx shadcn@latest add @obsyde/small-multiplesNeeds your licence key · Get Pro
Usage
Import it from where the CLI puts it, or copy the files below by hand.
import { SmallMultiples } from '@/components/obsyde/ember/small-multiples/SmallMultiples';
export function Example() {
return (
<SmallMultiples />
);
}
Files
What you get with Pro: plain React, TypeScript and CSS, with no dependencies.
ember/small-multiples/SmallMultiples.tsxcomponentember/small-multiples/small-multiples.cssstylesember/small-multiples/SmallMultiplesDemo.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/series.tsxsharedember/viz-kit/Grid.tsxsharedember/viz-kit/demo.tsxsharedember/viz-kit/demo.csssharedember/viz-kit/annotations.tsxshared
API
| Prop | Type | Default |
|---|---|---|
accentAccent | 'ember' | 'volt' | 'arc' | 'ember' |
countTiles | number | 6 |
typeType | 'area' | 'line' | 'bars' | 'area' |
sharedScaleShared scale | boolean | true |
scaleSwitchScale switch | boolean | false |
sortSort | 'none' | 'latest' | 'change' | 'peak' | 'none' |
hotHot tile | 'leader' | 'none' | 'leader' |
fillFill | 'gradient' | 'solid' | 'pattern' | 'gradient' |
averageAverage line | boolean | false |
bandBand of normal | boolean | false |
tileHeightTile height | number | 72 |
columnsColumns (0 = auto) | number | 0 |
crosshairCrosshair | 'solid' | 'dashed' | 'gradient' | 'none' | 'solid' |
patternPattern | 'none' | 'diagonal-up' | 'diagonal-down' | 'dots' | 'vertical' | 'crosshatch' | 'none' |
backgroundBackground | 'none' | 'grid' | 'dots' | 'none' |
curveCurve | 'monotone' | 'linear' | 'catmull' | 'step' | 'monotone' |
revealReveal | 'sweep' | 'cool' | 'rise' | 'fade' | 'none' | 'sweep' |
statusStatus | 'ready' | 'loading' | 'empty' | 'ready' |
pointsPoints | number | 30 |
seedSeed | number | 4 |