+ {step === "loading" &&
Generating secret…
}
+
+ {step === "scan" && setup && (
+
+
+
+
+ Open Google Authenticator / 1Password / Authy / etc. and scan
+ this code. Then click Next.
+
+
+ Can't scan? Type this manually
+
+ {formatSecretForDisplay(setup.secret_base32)}
+
+
+
+
+
+ )}
+
+ {step === "confirm" && (
+
+ )}
+
+ {step === "recovery" && (
+
+
+ ⚠️ Save these codes now. Each one logs you in
+ once if you lose access to your authenticator app. They are
+ shown only this time — Passman keeps only a
+ hash on the server, so this list cannot be recovered later.
+
+
+ {recoveryCodes.map((c, i) => (
+
+ {c}
+
+ ))}
+
+
+
+
+
+
+ )}
+
+ {err && step !== "confirm" &&
{err}
}
+