'use client' import { useState } from "react"; import { Music } from "lucide-react"; import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerTrigger, } from "~/components/ui/drawer"; import { Slider } from "~/components/ui/slider"; import { useMusicPlayer } from "./MusicPlayerProvider"; import PlayerControls from "./PlayerControls"; function formatTime(seconds: number) { if (!Number.isFinite(seconds)) return "0:00"; const m = Math.floor(seconds / 60); const s = Math.floor(seconds % 60); return `${m}:${s.toString().padStart(2, "0")}`; } /** * Global, persistent mini-player: a floating button (shown once something is * loaded) that opens a drawer with the transport controls and a scrubber, so * playback can be controlled from any page while it keeps running in the * background. */ export default function MusicMiniPlayer() { const { currentTrack, isPlaying, currentTime, duration, seek } = useMusicPlayer(); const [open, setOpen] = useState(false); if (!currentTrack) return null; return ( {currentTrack.title}
{formatTime(currentTime)} seek(v ?? 0)} /> {formatTime(duration)}
); }