"use client"; import { Play, Pause, Shuffle, RotateCcw } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Slider } from "@/components/ui/slider"; import Panel from "@/components/Panel"; export type Speed = "slow" | "normal" | "fast" | "turbo"; interface PlaybackControlsProps { isPlaying: boolean; onTogglePlay: () => void; onShuffle: () => void; onReset: () => void; arraySize: number; onArraySizeChange: (n: number) => void; speed: Speed; onSpeedChange: (s: Speed) => void; stepIndex: number; stepCount: number; onScrub: (i: number) => void; labels: { play: string; pause: string; shuffle: string; reset: string; arraySize: string; elements: string; speed: string; speedSlow: string; speedNormal: string; speedFast: string; speedTurbo: string; }; disabled?: boolean; } const SPEEDS: Speed[] = ["slow", "normal", "fast", "turbo"]; export default function PlaybackControls({ isPlaying, onTogglePlay, onShuffle, onReset, arraySize, onArraySizeChange, speed, onSpeedChange, stepIndex, stepCount, onScrub, labels, disabled, }: PlaybackControlsProps) { const speedLabel: Record = { slow: labels.speedSlow, normal: labels.speedNormal, fast: labels.speedFast, turbo: labels.speedTurbo, }; return (
{SPEEDS.map((s) => ( ))}
{stepCount > 0 && (
onScrub(Number(e.target.value))} className="w-full accent-primary h-1.5 cursor-pointer" />
)}
{labels.arraySize} {arraySize} {labels.elements}
onArraySizeChange(v[0])} min={5} max={100} step={1} disabled={disabled} />
); }