"use client" import { useEffect, useState } from "react" import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog" import { Button } from "@/components/ui/button" import { AlertTriangle, Clock, CheckCircle } from "lucide-react" interface TimeWarningModalProps { isOpen: boolean onClose: () => void type: 'warning' | 'timeout' | 'success' title: string message: string showCountdown?: boolean countdownSeconds?: number } export function TimeWarningModal({ isOpen, onClose, type, title, message, showCountdown = false, countdownSeconds = 0 }: TimeWarningModalProps) { const [remainingSeconds, setRemainingSeconds] = useState(countdownSeconds) useEffect(() => { if (isOpen && showCountdown && remainingSeconds > 0) { const timer = setInterval(() => { setRemainingSeconds(prev => { if (prev <= 1) { clearInterval(timer) onClose() return 0 } return prev - 1 }) }, 1000) return () => clearInterval(timer) } }, [isOpen, showCountdown, remainingSeconds, onClose]) useEffect(() => { if (isOpen) { setRemainingSeconds(countdownSeconds) } }, [isOpen, countdownSeconds]) const getIcon = () => { switch (type) { case 'warning': return case 'timeout': return case 'success': return default: return } } const getBgColor = () => { switch (type) { case 'warning': return 'bg-yellow-50 border-yellow-200' case 'timeout': return 'bg-red-50 border-red-200' case 'success': return 'bg-green-50 border-green-200' default: return 'bg-yellow-50 border-yellow-200' } } return (
{getIcon()}
{title}

{message}

{showCountdown && remainingSeconds > 0 && (
{remainingSeconds}
秒後自動關閉
)}
) }