import { ResizableDialog, ResizableDialogContent, ResizableDialogHeader, ResizableDialogTitle, ResizableDialogDescription, ResizableDialogFooter, } from "@/components/ui/resizable-dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Camera, X } from "lucide-react"; import { ProfileFormData } from "@/types/profile"; // 알림 모달 컴포넌트 interface AlertModalProps { isOpen: boolean; onClose: () => void; title: string; message: string; type?: "success" | "error" | "info"; } function AlertModal({ isOpen, onClose, title, message, type = "info" }: AlertModalProps) { const getTypeColor = () => { switch (type) { case "success": return "text-green-600"; case "error": return "text-destructive"; default: return "text-primary"; } }; return ( {title}

{message}

); } interface ProfileModalProps { isOpen: boolean; user: any; formData: ProfileFormData; selectedImage: string; isSaving: boolean; departments: Array<{ deptCode: string; deptName: string; }>; alertModal: { isOpen: boolean; title: string; message: string; type: "success" | "error" | "info"; }; onClose: () => void; onFormChange: (field: keyof ProfileFormData, value: string) => void; onImageSelect: (event: React.ChangeEvent) => void; onImageRemove: () => void; onSave: () => void; onAlertClose: () => void; } /** * 프로필 수정 모달 컴포넌트 */ export function ProfileModal({ isOpen, user, formData, selectedImage, isSaving, departments, alertModal, onClose, onFormChange, onImageSelect, onImageRemove, onSave, onAlertClose, }: ProfileModalProps) { return ( <> 프로필 수정
{/* 프로필 사진 섹션 */}
{selectedImage && selectedImage.trim() !== "" ? ( 프로필 사진 미리보기 ) : (
{formData.userName?.substring(0, 1)?.toUpperCase() || "U"}
)}
{selectedImage && selectedImage.trim() !== "" ? ( ) : null}
{/* 사용자 정보 폼 */}
onFormChange("userName", e.target.value)} placeholder="이름을 입력하세요" />
onFormChange("email", e.target.value)} placeholder="이메일을 입력하세요" />
onFormChange("positionName", e.target.value)} placeholder="직급을 입력하세요" />
{/* 알림 모달 */} ); }