Help guide

Slide Router node

Updated June 21, 2026

Slide Router node

Product media placeholder

Replace this area with a screenshot or short walkthrough video during the media sweep.

Gestural N-stage routing with eased transitions. Owns its own discrete-index state and runs an internal eased clock between consecutive indices. 3 input triggers (`advance`, `retreat`, `seekTo`) replace the upstream `pulseCounter` chain — wire wheel / click / key gestures directly. Slide count auto-derives from `slidesSelector` (preferred) or is configured manually via `slideCount`. Emits a continuous `currentIndex` (lerped during transition), the latched `discreteIndex`, eased `transitionProgress`, and a `slideActivations` Float[N] channel.

Type slideRouterCategory inputsContext sharedDynamic ports noCompound no

Inputs

PortTypeDescription
advancefloatTrigger. Each rising edge bumps the slide index by +1. Wraps to 0 if `wrap` is on; clamps to last otherwise.
retreatfloatTrigger. Each rising edge bumps the slide index by -1. Wraps to last if `wrap` is on; clamps to 0 otherwise.
seekTofloatWireable absolute index. When finite and changed, snaps to that integer index (clamped to [0, slideCount-1]). Use NaN (the default) to mean "no seek" and let advance / retreat drive instead.

Outputs

PortTypeDescription
currentIndexfloatContinuous interpolated index. Lerps from prev to next via the eased clock during a transition; equals `discreteIndex` at rest. Wire to e.g. a `paletteLut` for a continuous colour sweep.
discreteIndexfloatMost-recent latched integer target. Use for "active slide" identity.
transitionProgressfloatEased 0..1 during a transition; 0 at rest. `isTransitioning` is just `progress > 0` — no separate boolean.
slideActivationsfloatArrayFloat[N] channel — entry i is slide i's activation 0..1. Use `floatArrayPick(index: i)` to fan out per-slide.

Parameters

ParameterTypeDefaultDescription
slidesSelectorelementSelector""CSS selector for the slide elements. `slideCount` auto-derives from `querySelectorAll(...).length` at bind. Preferred over manual `slideCount` for DOM-driven decks. Leave empty to use `slideCount` instead.
slideCountint-Manual slide count. Use only when `slidesSelector` is empty — e.g. for non-DOM decks driven by a state machine. min 1; max 256
transitionDurationMsfloat800Total transition time. Default 800. min 1
transitionEaseeasingCurve"easeInOutCubic"Easing curve for the transition ramp. Default `easeInOutCubic`.
wrapboolfalseWhen true, advance past the last slide loops to 0; retreat before 0 loops to last. Default false (clamp at endpoints).

Use cases

  • Full-screen wheel deck — `wheelGesture.pulse → slideRouter.advance`. No pulseCounter.
  • Nav-link deck — N `clickPulse` nodes per link with `value: <index>`, summed into `slideRouter.seekTo`.
  • Keyboard nav — `clickPulse(eventType: keydown)` filtering ArrowDown / ArrowUp into advance / retreat.
  • Per-slide colour drift — wire `slideRouter.slideActivations` through `floatArrayPick` then `paletteLut.color`.
  • Continuous parallax — wire `slideRouter.currentIndex` (the float lerp) into a `paletteLut.t = currentIndex / (slideCount-1)` for a continuous colour sweep instead of step-changes.

Related nodes

Envelope

Use slideRouter as the node type inside a graph node envelope. Add id, optional params, optional connections, and optional activeWhen based on the guide context.

Generated source

Registry faster-motion-docs/node-registry.jsonCategory page /help/faster-motion/faster-motion-node-category-inputs/

Was this guide helpful?

Sunny Arora

Written by

Sunny Arora

Get technical deep dives delivered to your inbox

Join creators and developers who get exclusive insights, tutorials, and behind-the-scenes content every week.

No spam. Unsubscribe anytime.

Continue Exploring

You might also enjoy