'use client'; // Plain progress bar — no waveform, no animation. Same playhead mechanics as // the canvas modes (clip-path via --p, click/drag to seek). Use when you want // a track scrubber without amplitude visualisation. import { useEffect, useState } from 'react'; import { alpha, useThemeColor } from '@djangocfg/ui-core/styles/palette'; import { usePlayerAudio, usePlayerControls } from '../../context/selectors'; import { usePlayheadLoop } from '../../hooks/usePlayheadLoop'; import { attachHover, attachSeek } from './waveformInteraction'; type Props = { height?: number; seekStartsPlayback?: boolean }; export function ProgressBar({ height = 4, seekStartsPlayback }: Props) { const audio = usePlayerAudio(); const controls = usePlayerControls(); const [container, setContainer] = useState(null); const fgHex = useThemeColor('primary'); const mutedHex = useThemeColor('muted-foreground'); usePlayheadLoop(audio, container, true); useEffect(() => { if (!container) return; const detachSeek = attachSeek(container, audio, { startsPlayback: seekStartsPlayback, onPlayRequest: () => void controls.play(), }); const detachHover = attachHover(container, audio); return () => { detachSeek(); detachHover(); }; }, [audio, container, controls, seekStartsPlayback]); return (