Waveform Scrubber

An audio seek bar that owns no clock: position in, seeks out, so it drops onto any transport you already have.

Remix

0

Bookmarks

0

Installs

0

Views

75 lines
"use client"

import * as React from "react"
import { Pause, Play, SkipBack } from "lucide-react"
import { WaveformScrubber, makePeaks } from "@/components/ui/waveform-scrubber"

const DURATION = 224

/**
 * The scrubber owns no clock, so the demo brings one: a plain rAF transport
 * standing in for whatever audio element this would really be wired to.
 */
export default function DemoWaveformScrubber() {
  const peaks = React.useMemo(() => makePeaks(170, 21), [])
  const [position, setPosition] = React.useState(38)
  const [playing, setPlaying] = React.useState(false)

59 more lines behind a plan

Previews are free to watch. Reading and copying the full source needs a plan.

See plans
Checks
Dependencies
lucide-react
License
MIT License
Published
9/13/2026

Similar components

That's all 6 components

Explore more

Part of Flux Motion — browse the full library on Nuxus.