import { useEffect, useState } from "react"; import { Bar, Frame, Group, Terminal, Text, useTerminal } from "react-dom-curse"; import { theme } from "~/utils/theme"; const formatDurationMSS = (duration: number) => { const minutes = Math.floor(duration / 60); const seconds = duration % 60; return `${minutes}:${seconds.toString().padStart(2, "0")}`; }; export const MusicPlayer = (props: { title: string; artist: string; album: string; duration: number; }) => { const { terminal } = useTerminal(); const [played, setPlayed] = useState(0); useEffect(() => { const interval = setInterval(() => { setPlayed(x => Math.min(props.duration, x + 1)); }, 1000); return () => clearInterval(interval); }, [setPlayed, props.duration]); const time = `${formatDurationMSS(played)}/${formatDurationMSS( props.duration, )}`; return ( {props.title} ยท {props.artist} {props.album} {time} Playback ); };