diff --git a/src/app/music/page.tsx b/src/app/music/page.tsx index 7dc0b39..f51fdc8 100644 --- a/src/app/music/page.tsx +++ b/src/app/music/page.tsx @@ -183,6 +183,74 @@ function AudioSpectrumCanvas({ ); } + +const VINYL_NEEDLE_SVG = `url('data:image/svg+xml;utf8,')`; + +function VinylTurntable({ + cover, + title, + isPlaying, + className = '', +}: { + cover?: string; + title: string; + isPlaying: boolean; + className?: string; +}) { + return ( +
+
+
+
+
+
+ {cover ? ( + {title} { + e.currentTarget.style.display = 'none'; + }} + /> + ) : ( + + + + )} +
+
+
+
+ ); +} + // 扩展 Window 接口以支持 Document PiP API declare global { interface Window { @@ -216,6 +284,7 @@ export default function MusicPage() { const [showPlayer, setShowPlayer] = useState(false); const [loading, setLoading] = useState(false); const [showLyrics, setShowLyrics] = useState(false); + const [mobileLyricsView, setMobileLyricsView] = useState<'lyrics' | 'vinyl'>('lyrics'); const [musicProxyEnabled, setMusicProxyEnabled] = useState(() => { if (typeof window === 'undefined') return true; return (window as any).RUNTIME_CONFIG?.MUSIC_PROXY_ENABLED !== false; @@ -1928,7 +1997,99 @@ export default function MusicPage() { return (
<> -