site logo SVELTE ANIMATED ICON

Templates Catalog

Every animation template with a live preview, its loop/one-shot nature, and line/fill suitability.

The complete list of template ids. Every template ships in the core TEMPLATES array and is reachable by id; you don’t need to import them.

Browse them live on the home route - each card lets you swap templates, variants, sizes, and triggers.

The list

idWhat it doesLoops well?Best on
drawStrokes each path from start to endOKregular, light
native-drawSame idea, slower and smootherOKregular, light
cascadeShapes pop in one after anothernomixed
popEach shape scales 0 → 1.25 → 1 with a staggernoanything
spinWhole icon rotates 360° around its centeryessymmetric icons
jellySquish + wobble: 1 → 1.18/.82 → .9/1.1 → 1.05/.95 → 1yesfriendly UI
orbitEach shape rotates from -120° into placeOKlayered icons
assembleShapes converge to final position from offsetsnocomposed icons
traceOutline first, then fillOKline → fill transition
tadaScale + rotate accent (the Mac “+1” feel)nocelebratory
flip3D Y-axis flip (rotateY)OKtoggleable state
swingPendulum sway: rotate ±20°yesarrow-like
waveSequential opacity sweep, staggered by indexyesmulti-path icons
marchStrokes march along the path (stroke-dashoffset animation)yesline icons
boilBubbling organic motionyescloud, fire, drop
glitchRapid translate/jitteryesstatus / debug
wipeReveal mask slides across the iconOKline icons, hero moments
riseFade + translateY from belownoentrances
irisCircular scale from center, perpetualyesloading indicators
splitShape breaks apart and rejoinsOKplayful
dropFall + settle (translate + bounce)nodrop, pin, download
stampSlam into place (overshoot then settle)noconfirmations

Suitability shorthand

Each template declares a for field on its IconTemplate record:

  • for: 'line' - needs a stroke. Looks wrong on solid fill icons. (draw, march, wipe.)
  • for: 'fill' - best on solid silhouettes. (pop, tada, stamp.)
  • (omitted) - geometry-agnostic. Works on both. (cascade, spin, jelly, orbit, wave, glitch, iris, split, boil, drop, rise, flip, swing, assemble, trace, native-draw.)

The for field is informational - there’s no runtime guard against pairing draw with a fill icon, you’ll just see a hollow outline drawn over an invisible (no-stroke) shape. The catalog table above mixes both signals into a single recommendation.

Looping shorthand

The “Loops well?” column is a recommendation, not a rule. loop={true} forces any template to repeat - see Loop for the full picture.

Discovering ids at runtime

If you want to render a template picker UI:

<script>
  import { TEMPLATE_IDS } from 'svelte-animated-icon';
  let template = $state(TEMPLATE_IDS[0]);
</script>

<select bind:value={template}>
  {#each TEMPLATE_IDS as id}
    <option value={id}>{id}</option>
  {/each}
</select>

<Gear {template} />

TEMPLATE_IDS is the canonical ordered list of ids; TEMPLATES is the full { id, label, for?, run } records. See Core Exports and Types.