Files
Bernard Siebens bf86654e72 Give every auth button an icon, and lay out the password and MFA screens
The button element now takes an `icon`, so a page gets one by passing
icon="name" rather than by hand-rolling its own button markup. Every button on
the account and MFA screens carries one; a test walks each page and asserts no
button is left bare.

Change password: labels dropped (allauth already sets a placeholder on each
field), the current password set apart from the new pair, help text kept on the
new password, and Forgot Password promoted from a bare link to an accent button.

MFA management: recovery-code actions are now ranked -- View is primary, Download
and Generate are outline. Generate silently invalidates the codes you already
hold, so it must not read as the obvious thing to click. Panel actions get
breathing room from the body text (card-actions mt-4).

Viewing recovery codes: Download and Generate sit side by side instead of
stacking.

TOTP activate: the code box loses its heading -- an otp field never takes a
visible label, the boxes say what they are -- and the authenticator secret gets
margin around it, since it is copied out by hand.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 23:53:35 +02:00

36 lines
1.3 KiB
HTML

{% extends "mfa/recovery_codes/base.html" %}
{% load i18n allauth %}
{% block content %}
{% element h1 %}
{% translate "Recovery Codes" %}
{% endelement %}
{% element p %}
{% blocktranslate %}You are about to generate a new set of recovery codes for your account.{% endblocktranslate %}
{% if unused_code_count %}
{% blocktranslate %}This action will invalidate your existing codes.{% endblocktranslate %}
{% endif %}
{% blocktranslate %}Are you sure?{% endblocktranslate %}
{% endelement %}
{% url 'mfa_generate_recovery_codes' as action_url %}
{% element form method="post" action=action_url no_visible_fields=True %}
{% slot body %}
{% csrf_token %}
{{ form.as_p }}
{% endslot %}
{% slot actions %}
{# Destructive when codes already exist: generating throws the old ones away. #}
{% setvar tags %}
{% if unused_code_count %}
danger
{% else %}
{% endif %}
{% endsetvar %}
{% element button type="submit" icon="refresh-cw" tags=tags %}
{% trans "Generate" %}
{% endelement %}
{% endslot %}
{% endelement %}
{% endblock content %}