2FA setup
auth-2fa-setup
Authenticator setup with verify step.
{{--
Auth 2FA setup — QR placeholder, backup codes note and OTP verification.
--}}
<section class="border-b border-dashed border-edge">
<neura::container size="md" class="py-16 lg:py-20">
<div class="mx-auto max-w-md">
<div class="mb-8">
<neura::brand href="#" name="Neura" align="left" />
<neura::heading level="h1" size="2xl" class="mt-6 tracking-tight">
{{ __('Set up two-factor authentication') }}
</neura::heading>
<neura::text size="sm" class="mt-2 text-fg-secondary">
{{ __('Scan the QR code with your authenticator app, then enter a code to confirm.') }}
</neura::text>
</div>
<neura::card class="p-6 sm:p-8">
<div
class="mx-auto flex aspect-square w-44 items-center justify-center rounded-2xl border border-dashed border-edge bg-surface-inset/50">
<div class="text-center">
<neura::icon name="qr-code" class="mx-auto size-10 text-fg-muted" />
<neura::text size="xs" class="mt-2 font-mono uppercase tracking-[0.14em] text-fg-muted">
{{ __('QR code') }}
</neura::text>
</div>
</div>
<neura::text size="xs" align="center" class="mt-4 font-mono text-fg-muted">
{{ __('Manual key') }} · ABCD-EFGH-IJKL-MNOP
</neura::text>
<div class="mt-6 rounded-xl border border-dashed border-edge bg-surface-inset/40 px-4 py-3">
<neura::text size="sm" class="font-medium text-fg">{{ __('Save your backup codes') }}</neura::text>
<neura::text size="xs" class="mt-1 text-fg-secondary text-pretty">
{{ __('Store these codes somewhere safe. Each one can be used once if you lose access to your authenticator.') }}
</neura::text>
<ul class="mt-3 grid grid-cols-2 gap-2 font-mono text-xs tabular-nums text-fg-secondary">
@foreach (['9F2A-41C8', 'B7E1-03D9', 'C4A0-88F2', 'D1B6-55E0'] as $code)
<li class="rounded-lg border border-dashed border-edge px-2 py-1.5 text-center">{{ $code }}</li>
@endforeach
</ul>
</div>
<neura::separator class="my-6" />
<form class="space-y-5" action="#" method="POST" onsubmit="return false;">
<neura::field>
<neura::label>{{ __('Verification code') }}</neura::label>
<neura::otp name="code" length="6" />
<neura::description>{{ __('Enter the 6-digit code from your authenticator app.') }}</neura::description>
</neura::field>
<neura::button type="submit" variant="primary" class="w-full" size="lg">
{{ __('Enable 2FA') }}
</neura::button>
</form>
</neura::card>
</div>
</neura::container>
</section>