Open Symbolsnpm

Presets and options

Thirteen presets are public at 0.x. Each one is defined by what it communicates, mirroring the SF Symbols vocabulary, and the engine chooses per-layer motion from the icon's composition and salience tiers. Pass a preset key as effect, or { name, options } to tune it.

PresetKindCommunicatesRequires
appear publicentry (settles visible)an element being introduced into view—
disappear publicexit (settles hidden)an element being removed from view—
drawOn publicentry (settles visible)being drawn into being (handwriting); progressa stroke layer
drawOff publicexit (settles hidden)being un-drawn / erased / undonea stroke layer
metaphorical publicone-shot (settles)the icon's own signature meaning, enactedan authored icon or layer metaphor
bounce publicone-shot (settles)an action occurred or needs to take place—
wiggle publicone-shot (settles)a change or call to action a person might overlook—
rotate publicone-shot (settles)a task in progress / real-world rotation—
pulse publicloop (indefinite; gate with isActive)ongoing activity until a condition is met—
breathe publicloop (indefinite; gate with isActive)a living, present, ongoing state—
scale publicone-shot (settles)selection focus / pressed feedback, held—
variableColor publicvalue-drivenprogress, strength, or connecting — a sequence of stagesvariable-step layers (signal bars, Wi-Fi arcs, …)
progress publicvalue-drivena value advancing along a patha variableValueBehavior on the icon
replace experimentaltransition between two iconsa shift in functionality / the next available actiona family mapping between the two icons; out of the public contract at 0.x (type kept, no docs, no Lottie export)

Options

Every option is optional. An option a preset does not read is ignored rather than rejected, so a spec built from a runtime string still type-checks. The per-preset scorecard (pnpm scorecard) measures whether each option actually changes the engine output; on this branch all 61 applicable contracts hold.

OptionTypeHonoured byNotes
scope"wholeSymbol" | "byLayer" | "individually"all except progressbyLayer staggers along the composition's spatial order; individually plays one layer at a time.
directionup | down | left | right | center | up-left … | cw | ccw | preferredappear, metaphorical, bounce, wiggle, scale (up/down), rotate (cw/ccw/preferred)Directions a preset does not read are inert, not errors.
anglenumber (degrees)wiggleCustom wiggle axis.
repeatnumber | "infinite"one-shots and loopsLoops are already indefinite; use isActive to stop them.
repeatDelaynumber (ms)repeating one-shotsRest at the settled pose between plays.
speednumber (multiplier)all time-driven presetsTiming only. Scorecard: speedHonored 100% where applicable.
intensitynumber 0–2appear, disappear, metaphorical, bounce, wiggle, pulse, breathe, scaleMagnitude, not timing. Inert on visibility-only presets (drawOn/Off, variableColor) and on rotate, whose angle defines the endpoint.
frequencynumberwiggle, pulse, breathe, variableColorLoop rate.
valuenumber 0–1variableColor, progressRuntime datum; also the `value` prop.
reversingbooleanvariableColorPing-pong instead of wrap.
inactive"dim" | "hide"variableColorTreatment of unlit steps.
style"plain" | "pulse"breatheDeepens the opacity component.
delaynumber (ms)allStart offset.
spring{ stiffness?, damping? }spring-driven presetsOverrides the config palette for one invocation.
amplitude, decay, hold, easing, maxvariouspreset-specificEditor-grade tuning knobs; documented in the API reference.

Weight

weight is a number: the stroke width in viewBox units on the 24-unit grid. Omitted, it follows the size curve (DEFAULT_WEIGHT_CURVE): 1.25 at 16 px, 1.5 at 24 px, 2.0 at 48 px. Strokes scale with the rendered size (weight × size ÷ 24 CSS px), matching Hugeicons. Named weights are an internal convenience of this demo and are not part of the public API.

Rendering mode

Icons render monochrome: every layer paints with currentColor, so an icon takes the colour of the text around it. renderingMode="monochrome" (the default) is the only supported value at 0.x — multi-tone rendering is not part of this release on any platform.