"use client" import type React from "react" import { useState } from "react" import { useAuth } from "@/contexts/auth-context" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@/components/ui/dialog" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Alert, AlertDescription } from "@/components/ui/alert" import { CheckCircle, AlertTriangle, Loader2 } from "lucide-react" interface RegisterDialogProps { open: boolean onOpenChange: (open: boolean) => void } export function RegisterDialog({ open, onOpenChange }: RegisterDialogProps) { const { register } = useAuth() const [formData, setFormData] = useState({ name: "", email: "", password: "", confirmPassword: "", department: "", }) const [isLoading, setIsLoading] = useState(false) const [error, setError] = useState("") const [success, setSuccess] = useState(false) const departments = ["HQBU", "ITBU", "MBU1", "MBU2", "SBU", "財務部", "人資部", "法務部"] const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setError("") if (formData.password !== formData.confirmPassword) { setError("密碼確認不符") return } if (formData.password.length < 6) { setError("密碼至少需要6個字符") return } setIsLoading(true) try { await register({ name: formData.name, email: formData.email, password: formData.password, department: formData.department, }) setSuccess(true) setTimeout(() => { setSuccess(false) onOpenChange(false) setFormData({ name: "", email: "", password: "", confirmPassword: "", department: "", }) }, 2000) } catch (err) { setError("註冊失敗,請稍後再試") } finally { setIsLoading(false) } } return ( 註冊帳號 填寫以下資訊創建您的帳號 {success ? (

註冊成功!

您的帳號已創建,現在可以登入使用。

) : (
{error && ( {error} )}
setFormData({ ...formData, name: e.target.value })} required />
setFormData({ ...formData, email: e.target.value })} required />
setFormData({ ...formData, password: e.target.value })} required />
setFormData({ ...formData, confirmPassword: e.target.value })} required />
)}
) }