"use client" import { useState, useEffect } from "react" import { Button } from "@/components/ui/button" import { Slider } from "@/components/ui/slider" import { Card, CardContent } from "@/components/ui/card" import { Music, MicOffIcon as MusicOff, Volume2, VolumeX, ChevronDown } from "lucide-react" import { backgroundMusicManager } from "@/lib/background-music" interface HeaderMusicControlProps { mobileSimplified?: boolean } export default function HeaderMusicControl({ mobileSimplified = false }: HeaderMusicControlProps) { const [isPlaying, setIsPlaying] = useState(false) const [volume, setVolume] = useState(30) const [showControls, setShowControls] = useState(false) const [musicInfo, setMusicInfo] = useState(null) useEffect(() => { // 同步全局音樂管理器的狀態 const syncState = () => { const state = backgroundMusicManager.getState() const info = backgroundMusicManager.getMusicInfo() setIsPlaying(state.isPlaying) setVolume(Math.round(state.volume * 100)) setMusicInfo(info) } // 初始同步 syncState() // 定期同步狀態 const stateSync = setInterval(syncState, 1000) return () => { clearInterval(stateSync) } }, []) const toggleMusic = async () => { const currentState = backgroundMusicManager.getState() if (currentState.isPlaying) { backgroundMusicManager.stop() setIsPlaying(false) } else { await backgroundMusicManager.start() setIsPlaying(true) } } const handleVolumeChange = (newVolume: number[]) => { const vol = newVolume[0] setVolume(vol) backgroundMusicManager.setVolume(vol / 100) } // 手機版簡化模式 - 只顯示播放/暫停按鈕 if (mobileSimplified) { return ( ) } return (
{/* 音量控制下拉面板 */} {showControls && (
背景音樂音量
{volume}%
{/* 音樂資訊 */} {musicInfo && (
Just Relax
放鬆背景音樂
)}
)} {/* Header 音樂控制按鈕組 */}
{/* 音量控制按鈕 */} {/* 音樂播放/暫停按鈕 */}
) }