About this set
A two-panel login that asks for the email first and the password second, the pattern used when some accounts sign in through SSO or passkeys and the service has to know who is signing in before it knows how. Panel one holds an email field and a Next button. Panel two greets the person, shows the email in a pill with an initial avatar and a Change button, and asks for the password with a forgotten-password link below. A short script handles the swap: it copies the typed email into the pill and into a hidden username field in the second form, so password managers save and fill the right pair, hides one panel with the hidden attribute, shows the other and moves focus to the password field. Change reverses it and returns focus to the email. In a real product you would check the email with your server in the Next handler and choose the second step from the answer. The Bootstrap version uses .card, .form-control and .btn, and the Tailwind version is the same script with utility classes.
What’s included
- Email and password on separate panels with one card
- Email pill with avatar initial and a Change button
- Hidden username field so password managers save the pair
- Focus moves to the new panel's field on each step
- About 20 lines of dependency-free JavaScript
Accessibility
Both fields have visible labels and correct autocomplete tokens (username, current-password). When a panel changes, focus moves to the first field of the new panel, so keyboard and screen reader users are not left on hidden content. The Change button is named Change email address, and every control shows a focus outline or ring.
Customise it
Colours are --lf-brand, --lf-ink, --lf-muted and --lf-edge on .lf (plain CSS and Bootstrap) or the --color-* theme values (Tailwind). The avatar colours are #ddd6fe and #5b21b6 on .lf-av or its utilities.




















