Diverging Bars
Bars grow away from a highlighted midline, up and down or left and right.
$149 once · every Pro piece
Mirrored, it sets two periods back to back, today above and yesterday below: the current hour is the one hot pair, and hours still to come show yesterday as a hatched ghost so the shape of the day ahead is already there. Signed, it shows gains and losses either side of zero. The midline is a 2px gap with a hairline in it, so the halves never touch. Point at a period or step with the arrow keys: the rest step back, the header totals roll to that period and a panel reads both values and the change. An optional range meter underneath slides a caret through the day's low to high.
Install
npx shadcn@latest add @obsyde/diverging-barsNeeds your licence key · Get Pro
Usage
Import it from where the CLI puts it, or copy the files below by hand.
import { DivergingBars } from '@/components/obsyde/ember/diverging-bars/DivergingBars';
export function Example() {
return (
<DivergingBars mode="mirror" />
);
}
Files
What you get with Pro: plain React, TypeScript and CSS, with no dependencies.
ember/diverging-bars/DivergingBars.tsxcomponentember/diverging-bars/diverging-bars.cssstylesember/diverging-bars/DivergingBarsDemo.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/Grid.tsxsharedember/viz-kit/demo.tsxsharedember/viz-kit/demo.csssharedember/viz-kit/Axis.tsxshared
API
| Prop | Type | Default |
|---|---|---|
accentAccent | 'ember' | 'volt' | 'arc' | 'ember' |
modeMode | 'mirror' | 'signed' | 'mirror' |
orientationOrientation | 'vertical' | 'horizontal' | 'vertical' |
hoursDoneHours done | number | 24 |
rangeMeterRange meter | boolean | false |
legendLegend | 'row' | 'none' | 'row' |
tooltipTooltip | 'panel' | 'none' | 'panel' |
patternPattern | 'none' | 'diagonal-up' | 'diagonal-down' | 'dots' | 'vertical' | 'crosshatch' | 'none' |
backgroundBackground | 'grid' | 'dots' | 'none' | 'grid' |
statusStatus | 'ready' | 'loading' | 'empty' | 'ready' |
valueLabelsValue labels | boolean | false |
heightHeight | number | 260 |
seedSeed | number | 6 |