'use client';

import { useState } from "react";

type Props = {
  open: boolean;
  onClose: () => void;
  onSubmit?: (payload: { email: string; code: string; newPassword: string }) => void;
};

export default function ChangePasswordModal({ open, onClose, onSubmit }: Props) {
  const [email, setEmail] = useState("xrlms2025@gmail.com");
  const [code, setCode] = useState("");
  const [newPassword, setNewPassword] = useState("");
  const [confirmPassword, setConfirmPassword] = useState("");
  const [error, setError] = useState<string | null>(null); // 인증번호 오류 등

  if (!open) return null;

  const handleSubmit = () => {
    setError(null);
    if (!code) {
      setError("인증번호를 입력해 주세요.");
      return;
    }
    if (!newPassword || !confirmPassword) {
      setError("새 비밀번호를 입력해 주세요.");
      return;
    }
    if (newPassword !== confirmPassword) {
      setError("새 비밀번호가 일치하지 않습니다.");
      return;
    }
    onSubmit?.({ email, code, newPassword });
    onClose();
  };

  return (
    <div
      className="fixed inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-[2px]"
      role="dialog"
      aria-modal="true"
    >
      <div className="w-[480px] rounded-[12px] border border-[#dee1e6] bg-white shadow-[0_10px_30px_rgba(0,0,0,0.06)]">
        {/* header */}
        <div className="flex items-center justify-between p-6">
          <h2 className="text-[20px] font-bold leading-[1.5] text-[#333c47]">비밀번호 변경</h2>
          <button
            type="button"
            aria-label="닫기"
            onClick={onClose}
            className="inline-flex size-6 items-center justify-center text-[#333c47] hover:opacity-80"
          >
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" className="size-[15.2px]">
              <path fillRule="evenodd" d="M6.225 4.811a1 1 0 0 1 1.414 0L12 9.172l4.361-4.361a1 1 0 1 1 1.414 1.414L13.414 10.586l4.361 4.361a1 1 0 0 1-1.414 1.414L12 12l-4.361 4.361a1 1 0 1 1-1.414-1.414l4.361-4.361-4.361-4.361a1 1 0 0 1 0-1.414z" clipRule="evenodd" />
            </svg>
          </button>
        </div>

        {/* body */}
        <div className="flex flex-col gap-[10px] px-6">
          <div className="flex flex-col gap-2">
            <label className="w-[100px] text-[15px] font-semibold leading-[1.5] text-[#6c7682]">아이디 (이메일)</label>
            <div className="flex items-center gap-3">
              <input
                type="email"
                value={email}
                onChange={(e) => setEmail(e.target.value)}
                className="h-10 flex-1 rounded-[8px] border border-[#dee1e6] bg-white px-3 text-[16px] leading-[1.5] text-[#333c47] placeholder-[#b1b8c0] outline-none"
                placeholder="이메일"
              />
              <button
                type="button"
                className="h-10 w-[136px] rounded-[8px] bg-[#f1f3f5] px-3 text-[16px] font-semibold leading-[1.5] text-[#333c47]"
              >
                인증번호 재전송
              </button>
            </div>
          </div>
          <div className="flex flex-col gap-2">
            <div className="w-[100px] text-[15px] font-semibold leading-[1.5] text-[#6c7682]">인증번호</div>
            <div className="flex items-center gap-3">
              <input
                type="text"
                value={code}
                onChange={(e) => setCode(e.target.value)}
                className="h-10 flex-1 rounded-[8px] border border-[#dee1e6] bg-white px-3 text-[16px] leading-[1.5] text-[#333c47] placeholder-[#b1b8c0] outline-none"
                placeholder="인증번호 6자리"
              />
              <button
                type="button"
                className="h-10 w-[136px] rounded-[8px] bg-[#f1f3f5] px-3 text-[16px] font-semibold leading-[1.5] text-[#4c5561]"
              >
                인증번호 확인
              </button>
            </div>
            {error ? (
              <p className="px-1 text-[13px] font-semibold leading-[1.4] text-[#f64c4c]">
                {error}
              </p>
            ) : null}
          </div>
          <div className="flex flex-col gap-2">
            <label className="text-[15px] font-semibold leading-[1.5] text-[#6c7682]">새 비밀번호</label>
            <input
              type="password"
              value={newPassword}
              onChange={(e) => setNewPassword(e.target.value)}
              className="h-10 rounded-[8px] border border-[#dee1e6] bg-neutral-50 px-3 text-[16px] leading-[1.5] text-[#333c47] placeholder-[#b1b8c0] outline-none"
              placeholder="새 비밀번호"
            />
          </div>
          <div className="flex flex-col gap-2">
            <label className="text-[15px] font-semibold leading-[1.5] text-[#6c7682]">
              새 비밀번호 확인
            </label>
            <input
              type="password"
              value={confirmPassword}
              onChange={(e) => setConfirmPassword(e.target.value)}
              className="h-10 rounded-[8px] border border-[#dee1e6] bg-neutral-50 px-3 text-[16px] leading-[1.5] text-[#333c47] placeholder-[#b1b8c0] outline-none"
              placeholder="새 비밀번호 확인"
            />
          </div>
        </div>

        {/* footer */}
        <div className="flex items-center justify-center gap-3 p-6">
          <button
            type="button"
            onClick={onClose}
            className="h-12 w-[136px] rounded-[10px] bg-[#f1f3f5] px-4 text-[16px] font-semibold leading-[1.5] text-[#4c5561]"
          >
            취소
          </button>
          <button
            type="button"
            onClick={handleSubmit}
            className="h-12 w-[136px] rounded-[10px] bg-[#8598e8] px-4 text-[16px] font-semibold leading-[1.5] text-white"
          >
            비밀번호 변경
          </button>
        </div>
      </div>
    </div>
  );
}


