Brightpixels®ish

BRIGHTPIXELS 1.5.0 / ACTION LAB

ONE TOUCH.
CHAIN REACTION.

Hold. Release. Light the entire operation.

Starting light…
MANUAL OVERRIDE

APPLY HUMAN
PRESSURE.

One small button. An unreasonable response.

Hold for 0.7 seconds, then release. Keyboard: hold Space or Enter.

Awaiting your extremely valuable input.

01 / INPUTRECEIVED ↗Human detected.
02 / APPROVALPROBABLY ✓Confidence was cheaper.
03 / OUTPUTEXCESSIVE ✳Working as overdesigned.

CHARGE → SIMULATED SAVE → LIGHT WAVE → HDR CONFETTI

Try each helper Save / swipe / drag / sparks

PROMISE FEEDBACK

WORK. THEN GLOW.

Loading follows a simulated request. The result chooses the light.

No request running.

SWIPE TO CONFIRM

SLIDE INTO POWER.

Keyboard: arrows or End, then Enter.

Your thumb has clearance.

DRAG-DRIVEN LIGHT

MOVE THE ENERGY.

Arrows adjust; Enter releases. Escape cancels. Page scroll still works.

ELEMENT EMITTERS

SPARK THE EDGES.

The engine reads the current card position on every burst.

Use it in your project Zero new runtime dependencies
import { brightenSurface } from 'brightpixels';
import { bindHold, trackAction } from 'brightpixels/interactions';
import { createParticleEffects } from 'brightpixels/particles';

const light = brightenSurface(card);
const particles = createParticleEffects();
const hold = bindHold(button, {
  surface: light,
  onComplete: () => {
    trackAction(light, save()).then(() => {
      particles.burstFrom(button, { count: 120 });
    }).catch(showError);
  },
});
// On unmount: hold.destroy(); light.destroy(); particles.destroy();

HDR on compatible displays. Neon fallback elsewhere. Reduced motion gets static feedback. Full API ↗