All components

Components · Controls

Icon

Eighteen icons for learning apps. Each moves once, in its own way, when something happens.

Try itChange the motion setting at the top to feel each personality.

Use it

<Icon name="heart" play={likes} />
<Icon name="check" playOnMount />

How it moves

Icons move only when something happens: a press, a change of state, a finish. They never loop and never move on their own. Each icon has one motion, chosen for what it means, and that motion follows the personality like everything else: the timing and easing come from the role, and the size of the movement is scaled by --ss-motion-energy, measured in the icon's own 24 by 24 grid so it stays in proportion at any size.

IconMotionRoleWhat moves
check, xdrawstate-change, sequenceEach stroke draws itself, one stagger apart
star, play, pause, trophypopcelebrationGrows past the celebration scale with a small turn, dips, and settles
heartbeatcelebrationTwo beats, the second smaller
flameflickercelebrationStretches up from its base and sways, like catching
lightbulbglowattentionThe bulb lifts a little and three rays draw out, then fade
lockshacklestate-changeThe shackle drops and snaps shut
lock-openunlockstate-changeThe shackle springs up and swings open
bellswingattentionRings from its top, swinging less each time, the clapper a beat behind
bookmarkdropenterDrops into place and squashes as it lands
volume-2wavesenter, sequenceThe sound waves draw outward, one after the other
arrow-right, chevron-downnudgenavigationPoints the way twice
plusturnstate-changeA quarter turn, landing where it started
menustaggerenter, sequenceThe lines slide in one after another

Rules:

Reduced motion: energy is 0, so nothing travels, turns, or grows. Strokes that draw appear complete, and the icon simply shows its new state.

Screen readers: icons are hidden by default, because the text next to them says what they mean. Give an icon a label only when it stands alone.

Shapes: Lucide 1.49.0, ISC License (see LICENSE-lucide.txt). The lightbulb rays are ours.

CSS variables used: --ss-motion-energy, --ss-motion-sequence-stagger, and the duration, easing, scale, and spring variables of the state-change, celebration, attention, enter, and navigation roles.