Skip to content

Ember Dust

A density scatter without bins. Every point is a faint speck of light added onto a canvas, so overlaps accumulate luminance and the dense regions glow on their own, from ash through bone; only the densest region in view crosses into the accent.

$149 once · every Pro piece

Customize

On entry the field ignites and the hot core catches last. The pointer leaves an afterglow that cools over about a second while a panel reads the points nearby and the density, and a caret rides the density legend. Zoom with the wheel or a pinch, drag to pan, double-click or press 0 to reset: the view travels on springs and re-normalises so the hottest region in view is always the one that burns. Arrows pan and +/- zoom from the keyboard.

Install

npx shadcn@latest add @obsyde/dust

Needs your licence key · Get Pro

Usage

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

import { EmberDust } from '@/components/obsyde/ember/dust/EmberDust';

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

Files

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

  • ember/dust/EmberDust.tsxcomponent
  • ember/dust/ember-dust.cssstyles
  • ember/dust/EmberDustDemo.tsxdemo
  • ember/viz-kit/viz-kit.cssshared
  • ember/viz-kit/Tooltip.tsxshared
  • ember/viz-kit/focus.tsshared
  • ember/viz-kit/patterns.tsxshared
  • ember/viz-kit/roll.tsshared
  • ember/shared/rolling-number.cssshared
  • ember/shared/spring.tsshared
  • ember/shared/accent.tsshared
  • ember/viz-kit/scale.tsshared
  • ember/viz-kit/motion.tsshared
  • ember/viz-kit/chart.tsxshared
  • ember/shared/ember.cssshared
  • ember/viz-kit/touch.tsshared
  • ember/viz-kit/keyboard.tsshared
  • ember/viz-kit/size.tsshared
  • ember/viz-kit/state-messages.tsxshared
  • ember/viz-kit/Legend.tsxshared
  • ember/viz-kit/demo.tsxshared
  • ember/viz-kit/demo.cssshared

API

PropTypeDefault
accentAccent'ember' | 'volt' | 'arc''ember'
pointsPointsnumber6000
speckSpeck sizenumber1.4
afterglowAfterglowbooleantrue
zoomZoombooleantrue
legendLegend'gradient' | 'none''gradient'
tooltipTooltip'panel' | 'none''panel'
backgroundBackground'grid' | 'dots' | 'none''grid'
revealReveal'ignite' | 'none''ignite'
statusStatus'ready' | 'loading' | 'empty''ready'
heightHeightnumber340
seedSeednumber7