import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { ResponsiveDialog, ResponsiveDialogBody, ResponsiveDialogContent, ResponsiveDialogHeader, ResponsiveDialogTitle, } from '@/components/ui/responsive-dialog' import { Loader2, Lock } from 'lucide-react' import { motion } from 'motion/react' import { useState } from 'react' interface PasswordDialogProps { open: boolean onOpenChange: (open: boolean) => void roomName: string onSubmit: (password: string) => void error: string | null isLoading: boolean } export function PasswordDialog({ open, onOpenChange, roomName, onSubmit, error, isLoading }: PasswordDialogProps) { const [password, setPassword] = useState('') // Reset password when dialog opens const handleOpenChange = (nextOpen: boolean) => { if (nextOpen) setPassword('') onOpenChange(nextOpen) } const handleSubmit = (e: React.FormEvent) => { e.preventDefault() if (!password.trim()) return onSubmit(password.trim()) } return ( 需要密码

房间「{roomName}」已设置密码保护

setPassword(e.target.value)} autoFocus className={error ? 'border-destructive' : ''} /> {error && ( {error} )}
) }