import { useForm, Head } from '@inertiajs/react';
import * as Icon from '@/Components/ClassRoom/Icons';

type Props = {
  roomKey: string;
  title: string;
  hasToken: boolean;
};

/** دروازه ورود: دانش‌آموز باید توکن شخصی خود را وارد کند. */
export default function TokenGate({ roomKey, title, hasToken }: Props) {
  const form = useForm({ token: '' });

  const submit = (e: React.FormEvent) => {
    e.preventDefault();
    form.post(`/class-room/${roomKey}/token`);
  };

  const onChange = (value: string) => {
    let v = value.toUpperCase().replace(/[^A-Z0-9]/g, '').slice(0, 8);
    if (v.length > 4) v = `${v.slice(0, 4)}-${v.slice(4)}`;
    form.setData('token', v);
  };

  return (
    <div className="rm-gate" dir="rtl">
      <Head title={`ورود به کلاس ${title}`} />
      <form className="rm-gate-card rm-gate-form" onSubmit={submit}>
        <span className="rm-gate-icon rm-gate-icon--lock"><Icon.Lock size={30} /></span>
        <h2>ورود به کلاس «{title}»</h2>
        <p>توکن شخصی خود را وارد کنید. توکن مخصوص شماست — استفاده از توکن دیگران برای مدرسه ثبت می‌شود.</p>

        <input
          className="rm-token-input"
          dir="ltr"
          placeholder="XXXX-XXXX"
          autoFocus
          value={form.data.token}
          onChange={(e) => onChange(e.target.value)}
        />
        {form.errors.token && <p className="rm-gate-error">{form.errors.token}</p>}

        {!hasToken && (
          <p className="rm-gate-warn">
            برای شما هنوز توکنی صادر نشده — از معلم یا مدیر مدرسه بخواهید توکن کلاس را صادر و به شما بدهد.
          </p>
        )}

        <button className="rm-btn-primary rm-gate-btn" type="submit" disabled={form.processing || form.data.token.length < 9} data-no-spin>
          ورود به کلاس
        </button>
        <a href="/dashboard" className="rm-btn-ghost rm-gate-btn">بازگشت به پنل</a>
      </form>
    </div>
  );
}
