v0.1 public beta early access on GitHub
Home / Components / waveform

WaveformiOS

Audio scrubber that renders playback position as a filled amplitude waveform — the podcast and audiobook signature. Scrubbing rides an invisible Slider, so tap-to-seek, drag, per-step haptics, and adjustable accessibility come free.

$ npx lumioui add waveform
import { Waveform } from "@/components/ui/waveform/waveform";
Props11
value? number Controlled position (min..max). Omit for uncontrolled via defaultValue, or pass `value` alone for a static progress display.
defaultValue? number Uncontrolled initial position.
onValueChange? (value: number) => void
min? number
max? number
bars? number Bar count. Default 44.
scrubbable? boolean Tap/drag to scrub via an invisible Slider layered over the bars. Default true — set false for a purely visual progress read-out.
className? string Extra classes on the outer container (height, width).
barClassName? string Extra classes on every bar.
fillClassName? string Filled (played) portion color. Default `bg-foreground`.
trackClassName? string Unfilled portion color. Default `bg-foreground/25`.
Waveformwaveform.tsx
waveform/waveform.tsx open

Audio scrubber that renders playback position as a filled amplitude waveform — the podcast and audiobook signature. Scrubbing rides an invisible Slider, so tap-to-seek, drag, per-step haptics, and adjustable accessibility come free.