Slider / range
Single value: drag the thumb, or tab to it and use the arrows
Stepped: snaps to ticks; the value bubble rides the thumb on hover / focus / drag
Range: two thumbs (min / max) that can't cross; each is its own labeled slider
Sampling: the real Local Engine knob ranges (Sampling.kt); value is mono, accent when set
Disabled: inert, still legible
Sizes: sm and md
Track + fill + thumb are all var(--token). The track is a recessed well, the fill is the plain cyan accent, the thumb is a lifted disc (neutral shadow + catch-light, never a glow). Only transform / shadow / brightness move; no fill tweens. The island is live.
Parameters
Section titled “Parameters”The single-thumb slider has a settled shape on every platform: the Swift tab documents
the NockerlSlider wrapper from NockerlDesign, and the Kotlin tab the Material Slider
used for the sampling knobs. The two-thumb range is where the platforms still diverge.
- Range slider: the two-thumb range is the least settled surface on this page. The Kotlin tab composes Material’s
RangeSliderfor the shape rather than mirroring a screen, and the Swift tab carries it as a follow-up (SwiftUI has no native rangeSlider). The value bubble and explicit tick marks are also designed originally here. - Swift look:
NockerlSliderwraps the nativeSliderand tints it cyan (accentPrimary) with a persistent Nockerl label; the recessed-well / lifted catch-light disc treatment is still the target the platforms should converge on. - Temperature range: the real
SAMPLING_KNOB_SPECS(Sampling.kt) uses 0.1 to 2.0 step 0.05, not the rounder “0 to 2 step 0.1”; the demo + code use the shipped values. - Look: Android uses Material’s default thumb/track; the recessed well + lifted catch-light disc is the Nockerl treatment the platforms should converge on.