/* Pagina /forgot-password — pede email, dispara senha temp por email.
   Anti-enumeration: sempre mostra mesma mensagem, exista o email ou nao. */

const { useState: fp_useState } = React;


window.C7_ForgotPasswordPage = function ForgotPasswordPage() {
    const [email, setEmail]     = fp_useState('');
    const [loading, setLoading] = fp_useState(false);
    const [done, setDone]       = fp_useState(false);
    const [err, setErr]         = fp_useState(null);
    const [tsToken, setTsToken] = fp_useState(null);
    const [tsReset, setTsReset] = fp_useState(0);

    async function submit(e) {
        e.preventDefault();
        if (!email || loading || !tsToken) return;
        setLoading(true);
        setErr(null);
        try {
            await window.C7_API.post('/auth/forgot-password',
                { email: email.trim(), turnstile_token: tsToken });
            setDone(true);
        } catch (e) {
            setErr(e.message || 'erro');
            setTsToken(null);
            setTsReset(n => n + 1);
            setLoading(false);
        }
    }

    const Turnstile = (window.C7_Forms && window.C7_Forms.Turnstile) || null;

    const AppFooter = (window.C7_Layout && window.C7_Layout.AppFooter) || null;

    return (
        <div className="standalone-shell">
            <div className="standalone-center">
                <div className="forgot-card">
                    <h1>Recuperar senha</h1>

                    {done ? (
                        <>
                            <p>
                                Se houver uma conta com este e-mail, você
                                receberá em breve uma mensagem com uma <strong>nova
                                senha temporária</strong>.
                            </p>
                            <p>
                                Use a senha temporária pra entrar e, no
                                primeiro login, você será solicitado a definir
                                uma nova senha definitiva.
                            </p>
                            <a href="#/login" className="forgot-btn">Voltar pro login</a>
                        </>
                    ) : (
                        <form onSubmit={submit}>
                            <p>
                                Digite o e-mail cadastrado. Vamos enviar uma
                                senha temporária pra você usar no próximo login.
                            </p>
                            <label>
                                <span>E-mail cadastrado</span>
                                <input type="email" value={email}
                                       onChange={(e) => setEmail(e.target.value)}
                                       autoComplete="email" required autoFocus />
                            </label>
                            {err && <div className="forgot-error">{err}</div>}
                            {Turnstile && <Turnstile on_token={setTsToken} reset_signal={tsReset} />}
                            <button type="submit" className="forgot-btn"
                                    disabled={!email || loading || !tsToken}>
                                {loading ? 'enviando…' : 'Enviar nova senha'}
                            </button>
                            <div className="forgot-foot">
                                <a href="#/login">Voltar</a>
                            </div>
                        </form>
                    )}
                </div>
            </div>
            {AppFooter && <AppFooter />}
        </div>
    );
};
