Vanilla Breeze

Icons Pack

Material Symbols Outlined variable icon font. Context-aware weight and optical size. Attractor animations via data-vb-attract.

TypeFull (theme + effects + JS)
Theme CSSpacks/icons.theme.css
Effects CSSpacks/icons.effects.css
Effects JSpacks/icons.effects.js
Full bundlepacks/icons.full.css + packs/icons.full.js
Font weight~3.8MB (full set) — subset for production

Coexistence with icon-wc

This pack coexists with the existing <icon-wc> SVG icon system. Use whichever fits your needs:

Loading

Basic Usage

Context-Aware Sizing

Icons automatically adjust weight and optical size based on their context:

ContextWeightOptical Size
h1, h260048
h3, h450040
buttonInherits text weight24
small, caption40020

Icon Axes (Custom Properties)

PropertyRangeDefaultEffect
--vb-icon-fill0–10Outline to filled
--vb-icon-weight100–700400Stroke weight
--vb-icon-grad−50–2000Grade (weight without spacing shift)
--vb-icon-opsz20–4824Optical size

Attractor Animations

Add data-vb-attract to animate an icon. Animations respect prefers-reduced-motion.

TypeMeaningIterations
pulseSomething happened here3
beatNew/unread content3
bounceCall to action3
wiggleError/warning3
breatheActive/live signalInfinite

Declarative Triggers

Use data-vb-attract-on for event-driven attractors without JS:

JS API

Whimsy can also be enabled declaratively: <body data-vb-whimsy>

Demo