'use client';

import { useState } from 'react';
import { forgotPassword } from '@/app/actions/auth-reset';
import { toast } from 'sonner';
import Link from 'next/link';
import { Mail, ArrowRight, Sparkles, ArrowLeft } from 'lucide-react';
import { useLanguage } from '@/lib/i18n';

export default function ForgotPasswordPage() {
  const { t } = useLanguage();
  const [isSubmitting, setIsSubmitting] = useState(false);
  const [isDone, setIsDone] = useState(false);

  const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
    e.preventDefault();
    setIsSubmitting(true);
    const formData = new FormData(e.currentTarget);
    const result = await forgotPassword(formData.get('email') as string);
    setIsSubmitting(false);

    if (result.error) {
      toast.error(result.error);
    } else {
      setIsDone(true);
    }
  };

  if (isDone) {
    return (
      <div className="bg-white dark:bg-[var(--background)]/50 border border-[var(--border)] p-8 md:p-10 rounded-[48px] shadow-2xl">
        <div className="space-y-6 text-center">
          <div className="w-12 h-12 mx-auto rounded-2xl bg-[var(--color-brand-accent)]/10 flex items-center justify-center">
            <Mail size={24} className="text-[var(--color-brand-accent)]" />
          </div>
          <div className="space-y-2">
            <h1 className="text-2xl font-serif font-bold">{t('auth.checkYourEmail')}</h1>
            <p className="text-[var(--muted-foreground)] text-sm">
              {t('auth.resetEmailSent')}
            </p>
          </div>
          <Link href="/login" className="block">
            <button className="w-full bg-[var(--foreground)] text-[var(--background)] py-4 rounded-2xl font-bold uppercase tracking-[0.2em] text-[10px] flex items-center justify-center gap-3 transition-all hover:shadow-xl hover:shadow-black/10 active:scale-[0.98]">
              <ArrowLeft size={14} />
              {t('auth.returnToLogin')}
            </button>
          </Link>
        </div>
      </div>
    );
  }

  return (
    <div className="bg-white dark:bg-[var(--background)]/50 border border-[var(--border)] p-8 md:p-10 rounded-[48px] shadow-2xl">
      <div className="space-y-8">
        <div className="text-center space-y-2">
          <h1 className="text-2xl md:text-3xl font-serif font-bold">
            {t('auth.forgotPasswordTitle')}
          </h1>
          <p className="text-[var(--muted-foreground)] text-sm font-light">
            {t('auth.forgotPasswordDescription')}
          </p>
        </div>

        <form onSubmit={handleSubmit} className="space-y-4">
          <div className="space-y-1.5">
            <label className="text-[10px] uppercase tracking-widest font-bold text-[var(--muted-foreground)] px-4">
              {t('auth.email')}
            </label>
            <div className="relative group">
              <div className="absolute left-4 top-1/2 -translate-y-1/2 text-[var(--muted-foreground)] group-focus-within:text-[var(--color-brand-accent)] transition-colors">
                <Mail size={16} />
              </div>
              <input
                className="w-full bg-slate-50 dark:bg-white/5 border border-[var(--border)] rounded-2xl py-4 pl-12 pr-4 text-sm outline-none focus:border-[var(--color-brand-accent)] focus:ring-4 ring-[var(--color-brand-accent)]/5 transition-all"
                id="email"
                name="email"
                type="email"
                required
                placeholder="name@example.com"
              />
            </div>
          </div>

          <button
            type="submit"
            disabled={isSubmitting}
            className="w-full bg-[var(--foreground)] text-[var(--background)] py-4 rounded-2xl font-bold uppercase tracking-[0.2em] text-[10px] flex items-center justify-center gap-3 transition-all hover:shadow-xl hover:shadow-black/10 active:scale-[0.98] disabled:opacity-50"
          >
            {isSubmitting ? (
              <Sparkles size={16} className="animate-spin" />
            ) : (
              <>
                {t('auth.sendResetLink')}
                <ArrowRight size={14} />
              </>
            )}
          </button>
        </form>

        <div className="text-center">
          <Link
            href="/login"
            className="text-xs text-[var(--muted-foreground)] hover:text-[var(--color-brand-accent)] transition-colors flex items-center justify-center gap-1"
          >
            <ArrowLeft size={12} />
            {t('auth.backToLogin')}
          </Link>
        </div>
      </div>
    </div>
  );
}
