+
+
+
+ Settings
+
+
+ Passkeys
+
+ {list.length}
+
+
+
+
+
+
+ {list.length === 0 ? (
+
+
+
+ No passkeys enrolled yet
+
+
+ Add one to sign in with Face ID, Touch ID, or fingerprint on this
+ device.
+
+
+ ) : (
+
+ {list.map((p) => (
+ -
+
+
+
+
+
+ {p.name}
+
+
+ Added {relativeTime(p.createdAt)}
+
+
+
+
+ ))}
+
+ )}
+
+
{
+ if (!addPending) setAddOpen(false);
+ }}
+ onSubmit={submitAdd}
+ title="Add passkey"
+ submitLabel="Continue"
+ pending={addPending}
+ error={addError}
+ >
+
+ setDeviceName(e.target.value)}
+ disabled={addPending}
+ autoComplete="off"
+ spellCheck={false}
+ placeholder="iPhone 15"
+ className={inputClass}
+ />
+
+
+ Your browser will prompt for Face ID, Touch ID, or fingerprint.
+
+
+
+
{
+ if (!removePending) setRemoveTarget(null);
+ }}
+ onConfirm={submitRemove}
+ title="Remove passkey?"
+ message={
+ <>
+ Remove the passkey{" "}
+
+ {removeTarget?.name ?? ""}
+
+ ? You’ll lose the ability to sign in from this device until you
+ enroll it again.
+ {removeError && (
+
+ {removeError}
+
+ )}
+ >
+ }
+ confirmLabel="Remove"
+ destructive
+ pending={removePending}
+ />
+
+ setToast(null)} />
+
+ );
+}