PRO

Cell Portrait

A portrait drawn as a grid of circles that join into capsules and thin bridges. The cells shrink from 36px to 7px while the joins reshuffle every 133ms, then the image colors in and the loop runs back out. Dark areas hold the most circles, so a face reads before any color arrives. Canvas 2D and GSAP, timed frame by frame against the reference recording.

Component
Install
npx shadcn@latest add @compronents/cell-portrait

Installs from ui.aryank.space. Needs a registry token and a one-time @compronents entry in components.json. The docs walk through both.

Files
Checking access…
API
PropTypeDefaultDescription
srcstringHosted demo illustrationPortrait image, served with CORS. A transparent PNG gives the exact silhouette; an opaque image has its background keyed out.
altstring"Portrait drawn as joined circles"Accessible label for the canvas.
backgroundstring"#2253E9"Frame color, also used to fill each shape in the outline phase.
strokestring"#FFFFFF"Outline and silhouette color.
cellFromnumber36Coarsest cell, in px on a 540px frame.
cellTonumber7Finest outline cell, in px on a 540px frame.
cellDetailnumber5Cell size while the image is in color.
speednumber1Multiplier on the six-second loop.
classNamestring—Additional root class. The component fills its parent.
styleCSSProperties—Additional root styling.
Customize
backgroundcolor

Frame color.

strokecolor

Outline color.

cellFromslider

Coarsest cell size.

cellToslider

Finest cell size.

speedslider

Loop speed.

Dependencies
gsap