@adonis-agora/authkit-server 0.66.0 → 0.66.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/host/views/account/apps.edge +2 -2
- package/build/host/views/account/confirm.edge +1 -1
- package/build/host/views/account/login.edge +2 -2
- package/build/host/views/account/mfa.edge +5 -5
- package/build/host/views/account/security.edge +17 -17
- package/build/host/views/account/tokens.edge +3 -3
- package/build/host/views/forgot.edge +1 -1
- package/build/host/views/login.edge +2 -2
- package/build/host/views/maintenance.edge +1 -1
- package/build/host/views/mfa-challenge.edge +2 -2
- package/build/host/views/otp-unlock.edge +1 -1
- package/build/host/views/partials/styles.edge +2 -1
- package/build/host/views/reset.edge +1 -1
- package/build/host/views/signup.edge +3 -3
- package/build/src/host/augmentations.d.ts +20 -0
- package/build/src/host/augmentations.js +20 -0
- package/build/src/host/ui-dist/assets/{index-CkCQ94la.js → index-D9CYQnZR.js} +2 -2
- package/build/src/host/ui-dist/index.html +1 -1
- package/build/src/observability/telescope/data_providers.js +2 -2
- package/package.json +19 -18
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
@end
|
|
31
31
|
|
|
32
32
|
@if(!supported)
|
|
33
|
-
<div class="rounded-xl bg-white p-6 text-sm text-gray-500 shadow-
|
|
33
|
+
<div class="rounded-xl bg-white p-6 text-sm text-gray-500 shadow-xs ring-1 ring-black/5">
|
|
34
34
|
{{ t('account.apps.not_supported') }}
|
|
35
35
|
</div>
|
|
36
36
|
@else
|
|
37
|
-
<div class="overflow-hidden rounded-xl bg-white shadow-
|
|
37
|
+
<div class="overflow-hidden rounded-xl bg-white shadow-xs ring-1 ring-black/5">
|
|
38
38
|
@if(apps.length === 0)
|
|
39
39
|
<p class="p-6 text-sm text-gray-500">{{ t('account.apps.empty') }}</p>
|
|
40
40
|
@else
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
</head>
|
|
6
6
|
<body class="min-h-screen bg-gray-100 flex items-center justify-center p-4">
|
|
7
7
|
<div class="w-full max-w-sm">
|
|
8
|
-
<div class="rounded-2xl bg-white p-8 shadow-
|
|
8
|
+
<div class="rounded-2xl bg-white p-8 shadow-xs ring-1 ring-black/5">
|
|
9
9
|
<div class="mx-auto w-full space-y-6">
|
|
10
10
|
<h1 class="text-xl font-semibold text-gray-900">{{ t('account.confirm.title') }}</h1>
|
|
11
11
|
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
|
|
21
21
|
<label for="email" class="mt-6 mb-1 block text-sm font-medium text-gray-700">{{ t('account.login.email_label') }}</label>
|
|
22
22
|
<input id="email" name="email" type="email" required autofocus
|
|
23
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
23
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden transition focus:border-gray-900" />
|
|
24
24
|
|
|
25
25
|
<label for="password" class="mt-4 mb-1 block text-sm font-medium text-gray-700">{{ t('account.login.password_label') }}</label>
|
|
26
26
|
<input id="password" name="password" type="password" required
|
|
27
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
27
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden transition focus:border-gray-900" />
|
|
28
28
|
|
|
29
29
|
<button type="submit"
|
|
30
30
|
class="mt-6 w-full rounded-lg bg-gray-900 py-2.5 text-sm font-semibold text-white transition hover:opacity-90">
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
@end
|
|
36
36
|
|
|
37
37
|
@if(enrolling)
|
|
38
|
-
<div class="rounded-xl bg-white p-6 shadow-
|
|
38
|
+
<div class="rounded-xl bg-white p-6 shadow-xs ring-1 ring-black/5">
|
|
39
39
|
<p class="text-sm text-gray-600">
|
|
40
40
|
{{ t('account.mfa.enroll_intro') }}
|
|
41
41
|
</p>
|
|
@@ -51,14 +51,14 @@
|
|
|
51
51
|
<input type="hidden" name="_csrf" value="{{ csrfToken }}">
|
|
52
52
|
<label for="code" class="mb-1 block text-sm font-medium text-gray-700">{{ t('account.mfa.confirm_code_label') }}</label>
|
|
53
53
|
<input id="code" name="code" inputmode="numeric" pattern="[0-9]*" maxlength="6" autofocus
|
|
54
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-center text-lg tracking-[0.4em] outline-
|
|
54
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-center text-lg tracking-[0.4em] outline-hidden focus:border-gray-900" />
|
|
55
55
|
<button type="submit" class="mt-4 w-full rounded-lg bg-gray-900 py-2.5 text-sm font-semibold text-white">
|
|
56
56
|
{{ t('account.mfa.activate') }}
|
|
57
57
|
</button>
|
|
58
58
|
</form>
|
|
59
59
|
</div>
|
|
60
60
|
@elseif(enabled)
|
|
61
|
-
<div class="rounded-xl bg-white p-6 shadow-
|
|
61
|
+
<div class="rounded-xl bg-white p-6 shadow-xs ring-1 ring-black/5">
|
|
62
62
|
<p class="text-sm text-gray-700">
|
|
63
63
|
{{{ t('account.mfa.enabled_html') }}}
|
|
64
64
|
</p>
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
</form>
|
|
71
71
|
</div>
|
|
72
72
|
@else
|
|
73
|
-
<div class="rounded-xl bg-white p-6 shadow-
|
|
73
|
+
<div class="rounded-xl bg-white p-6 shadow-xs ring-1 ring-black/5">
|
|
74
74
|
<p class="text-sm text-gray-700">
|
|
75
75
|
{{ t('account.mfa.disabled_intro') }}
|
|
76
76
|
</p>
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
|
|
86
86
|
@if(passkeysSupported)
|
|
87
87
|
{{-- Passkeys / chaves de acesso (WebAuthn) — 2º fator alternativo ao TOTP. --}}
|
|
88
|
-
<div class="mt-6 rounded-xl bg-white p-6 shadow-
|
|
88
|
+
<div class="mt-6 rounded-xl bg-white p-6 shadow-xs ring-1 ring-black/5">
|
|
89
89
|
<h2 class="text-base font-semibold text-gray-900">{{ t('mfa.passkey.section_title') }}</h2>
|
|
90
90
|
<p class="mt-1 text-sm text-gray-600">{{ t('mfa.passkey.section_intro') }}</p>
|
|
91
91
|
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
@end
|
|
33
33
|
|
|
34
34
|
@if(profileSupported)
|
|
35
|
-
<div class="mb-6 rounded-xl bg-white p-6 shadow-
|
|
35
|
+
<div class="mb-6 rounded-xl bg-white p-6 shadow-xs ring-1 ring-black/5">
|
|
36
36
|
<h2 class="mb-1 text-sm font-semibold text-gray-900">{{ t('account.profile.section') }}</h2>
|
|
37
37
|
<p class="mb-4 text-xs text-gray-500">{{ t('account.profile.intro') }}</p>
|
|
38
38
|
<form method="POST" action="{{ accountPaths?.security ?? '/account/security' }}/profile" enctype="multipart/form-data" class="space-y-4">
|
|
@@ -45,20 +45,20 @@
|
|
|
45
45
|
<div>
|
|
46
46
|
<label class="mb-1 block text-sm font-medium text-gray-700">{{ t('account.profile.name_label') }}</label>
|
|
47
47
|
<input name="name" type="text" value="{{ name }}" maxlength="255"
|
|
48
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
48
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden focus:border-gray-900" />
|
|
49
49
|
</div>
|
|
50
50
|
@if(avatarUploadSupported)
|
|
51
51
|
<div>
|
|
52
52
|
<label class="mb-1 block text-sm font-medium text-gray-700">{{ t('account.profile.avatar_upload_label') }}</label>
|
|
53
53
|
<input name="avatar" type="file" accept="image/jpeg,image/png,image/webp"
|
|
54
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
54
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden focus:border-gray-900" />
|
|
55
55
|
<p class="mt-1 text-xs text-gray-500">{{ t('account.profile.avatar_upload_hint') }}</p>
|
|
56
56
|
</div>
|
|
57
57
|
@end
|
|
58
58
|
<div>
|
|
59
59
|
<label class="mb-1 block text-sm font-medium text-gray-700">{{ t('account.profile.avatar_label') }}</label>
|
|
60
60
|
<input name="avatarUrl" type="url" value="{{ avatarUrl }}"
|
|
61
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
61
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden focus:border-gray-900" />
|
|
62
62
|
</div>
|
|
63
63
|
<button type="submit" class="rounded-lg bg-gray-900 px-4 py-2 text-sm font-semibold text-white">
|
|
64
64
|
{{ t('account.profile.submit') }}
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
@end
|
|
69
69
|
|
|
70
70
|
@if(!supported)
|
|
71
|
-
<div class="rounded-xl bg-white p-6 text-sm text-gray-500 shadow-
|
|
71
|
+
<div class="rounded-xl bg-white p-6 text-sm text-gray-500 shadow-xs ring-1 ring-black/5">
|
|
72
72
|
{{ t('account.security.not_supported') }}
|
|
73
73
|
</div>
|
|
74
74
|
@else
|
|
@@ -88,19 +88,19 @@
|
|
|
88
88
|
</div>
|
|
89
89
|
@end
|
|
90
90
|
|
|
91
|
-
<div class="mb-6 rounded-xl bg-white p-6 shadow-
|
|
91
|
+
<div class="mb-6 rounded-xl bg-white p-6 shadow-xs ring-1 ring-black/5">
|
|
92
92
|
<h2 class="mb-4 text-sm font-semibold text-gray-900">{{ t('account.security.password_section') }}</h2>
|
|
93
93
|
<form method="POST" action="{{ accountPaths?.security ?? '/account/security' }}/password" class="space-y-4">
|
|
94
94
|
<input type="hidden" name="_csrf" value="{{ csrfToken }}">
|
|
95
95
|
<div>
|
|
96
96
|
<label class="mb-1 block text-sm font-medium text-gray-700">{{ t('account.security.current_password_label') }}</label>
|
|
97
97
|
<input name="currentPassword" type="password" required
|
|
98
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
98
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden focus:border-gray-900" />
|
|
99
99
|
</div>
|
|
100
100
|
<div>
|
|
101
101
|
<label class="mb-1 block text-sm font-medium text-gray-700">{{ t('account.security.new_password_label') }}</label>
|
|
102
102
|
<input name="newPassword" type="password" required minlength="8"
|
|
103
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
103
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden focus:border-gray-900" />
|
|
104
104
|
</div>
|
|
105
105
|
<button type="submit" class="rounded-lg bg-gray-900 px-4 py-2 text-sm font-semibold text-white">
|
|
106
106
|
{{ t('account.security.change_password_submit') }}
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
</form>
|
|
109
109
|
</div>
|
|
110
110
|
|
|
111
|
-
<div class="rounded-xl bg-white p-6 shadow-
|
|
111
|
+
<div class="rounded-xl bg-white p-6 shadow-xs ring-1 ring-black/5">
|
|
112
112
|
<h2 class="mb-1 text-sm font-semibold text-gray-900">{{ t('account.security.email_section') }}</h2>
|
|
113
113
|
<p class="mb-4 text-xs text-gray-500">{{ t('account.security.email_intro') }}</p>
|
|
114
114
|
<form method="POST" action="{{ accountPaths?.security ?? '/account/security' }}/email" class="space-y-4">
|
|
@@ -116,12 +116,12 @@
|
|
|
116
116
|
<div>
|
|
117
117
|
<label class="mb-1 block text-sm font-medium text-gray-700">{{ t('account.security.new_email_label') }}</label>
|
|
118
118
|
<input name="newEmail" type="email" required
|
|
119
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
119
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden focus:border-gray-900" />
|
|
120
120
|
</div>
|
|
121
121
|
<div>
|
|
122
122
|
<label class="mb-1 block text-sm font-medium text-gray-700">{{ t('account.security.email_password_label') }}</label>
|
|
123
123
|
<input name="currentPassword" type="password" required
|
|
124
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
124
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden focus:border-gray-900" />
|
|
125
125
|
</div>
|
|
126
126
|
<button type="submit" class="rounded-lg bg-gray-900 px-4 py-2 text-sm font-semibold text-white">
|
|
127
127
|
{{ t('account.security.change_email_submit') }}
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
@end
|
|
132
132
|
|
|
133
133
|
@if(sessionsSupported)
|
|
134
|
-
<div class="mt-6 rounded-xl bg-white p-6 shadow-
|
|
134
|
+
<div class="mt-6 rounded-xl bg-white p-6 shadow-xs ring-1 ring-black/5">
|
|
135
135
|
<h2 class="mb-1 text-sm font-semibold text-gray-900">{{ t('account.security.sessions_section') }}</h2>
|
|
136
136
|
<p class="mb-4 text-xs text-gray-500">{{ t('account.security.sessions_intro') }}</p>
|
|
137
137
|
@if(sessions.length === 0)
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
<p class="text-sm font-medium text-emerald-900">{{ trustedDevicesRevoked }}</p>
|
|
163
163
|
</div>
|
|
164
164
|
@end
|
|
165
|
-
<div class="mt-6 rounded-xl bg-white p-6 shadow-
|
|
165
|
+
<div class="mt-6 rounded-xl bg-white p-6 shadow-xs ring-1 ring-black/5">
|
|
166
166
|
<h2 class="mb-1 text-sm font-semibold text-gray-900">{{ t('account.security.trusted_devices_section') }}</h2>
|
|
167
167
|
<p class="mb-4 text-xs text-gray-500">{{ t('account.security.trusted_devices_intro') }}</p>
|
|
168
168
|
<form method="POST" action="{{ accountPaths?.security ?? '/account/security' }}/trusted-devices/revoke">
|
|
@@ -175,7 +175,7 @@
|
|
|
175
175
|
@end
|
|
176
176
|
|
|
177
177
|
@if(exportSupported)
|
|
178
|
-
<div class="mt-6 rounded-xl bg-white p-6 shadow-
|
|
178
|
+
<div class="mt-6 rounded-xl bg-white p-6 shadow-xs ring-1 ring-black/5">
|
|
179
179
|
<h2 class="mb-1 text-sm font-semibold text-gray-900">{{ t('account.export.section') }}</h2>
|
|
180
180
|
<p class="mb-4 text-xs text-gray-500">{{ t('account.export.intro') }}</p>
|
|
181
181
|
<a href="{{ accountPaths?.security ?? '/account/security' }}/export"
|
|
@@ -191,7 +191,7 @@
|
|
|
191
191
|
<p class="text-sm font-medium text-red-900">{{ deleteError }}</p>
|
|
192
192
|
</div>
|
|
193
193
|
@end
|
|
194
|
-
<div class="mt-6 rounded-xl bg-white p-6 shadow-
|
|
194
|
+
<div class="mt-6 rounded-xl bg-white p-6 shadow-xs ring-1 ring-red-200">
|
|
195
195
|
<h2 class="mb-1 text-sm font-semibold text-red-700">{{ t('account.delete.section') }}</h2>
|
|
196
196
|
<p class="mb-4 text-xs text-gray-500">{{ t('account.delete.intro') }}</p>
|
|
197
197
|
<form method="POST" action="{{ accountPaths?.security ?? '/account/security' }}/delete" class="space-y-4">
|
|
@@ -199,12 +199,12 @@
|
|
|
199
199
|
<div>
|
|
200
200
|
<label class="mb-1 block text-sm font-medium text-gray-700">{{ t('account.delete.confirm_password_label') }}</label>
|
|
201
201
|
<input name="currentPassword" type="password"
|
|
202
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
202
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden focus:border-red-600" />
|
|
203
203
|
</div>
|
|
204
204
|
<div>
|
|
205
205
|
<label class="mb-1 block text-sm font-medium text-gray-700">{{ t('account.delete.confirm_email_label') }}</label>
|
|
206
206
|
<input name="confirmEmail" type="email" placeholder="{{ email }}"
|
|
207
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
207
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden focus:border-red-600" />
|
|
208
208
|
</div>
|
|
209
209
|
<button type="submit" class="rounded-lg bg-red-600 px-4 py-2 text-sm font-semibold text-white hover:bg-red-700">
|
|
210
210
|
{{ t('account.delete.submit') }}
|
|
@@ -32,16 +32,16 @@
|
|
|
32
32
|
@end
|
|
33
33
|
|
|
34
34
|
<form method="POST" action="{{ accountPaths?.tokens ?? '/account/tokens' }}"
|
|
35
|
-
class="mb-6 flex gap-2 rounded-xl bg-white p-4 shadow-
|
|
35
|
+
class="mb-6 flex gap-2 rounded-xl bg-white p-4 shadow-xs ring-1 ring-black/5">
|
|
36
36
|
<input type="hidden" name="_csrf" value="{{ csrfToken }}">
|
|
37
37
|
<input name="name" placeholder="{{ t('account.tokens.name_placeholder') }}"
|
|
38
|
-
class="flex-1 rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
38
|
+
class="flex-1 rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden focus:border-gray-900" />
|
|
39
39
|
<button type="submit" class="rounded-lg bg-gray-900 px-4 text-sm font-semibold text-white">
|
|
40
40
|
{{ t('account.tokens.create') }}
|
|
41
41
|
</button>
|
|
42
42
|
</form>
|
|
43
43
|
|
|
44
|
-
<div class="overflow-hidden rounded-xl bg-white shadow-
|
|
44
|
+
<div class="overflow-hidden rounded-xl bg-white shadow-xs ring-1 ring-black/5">
|
|
45
45
|
@if(tokens.length === 0)
|
|
46
46
|
<p class="p-6 text-sm text-gray-500">{{ t('account.tokens.empty') }}</p>
|
|
47
47
|
@else
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
<div class="mt-6">
|
|
27
27
|
<label for="email" class="mb-1 block text-sm font-medium text-gray-700">{{ t('forgot.email_label') }}</label>
|
|
28
28
|
<input id="email" name="email" type="email" required autofocus
|
|
29
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
29
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden transition focus:border-gray-900 focus:ring-2 focus:ring-gray-900" />
|
|
30
30
|
</div>
|
|
31
31
|
|
|
32
32
|
{{-- Bot protection: container do widget (config-trusted; HTML do host renderizado raw). --}}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
<label for="email" class="mb-1 block text-sm font-medium text-gray-700">{{ t('login.email_label') }}</label>
|
|
23
23
|
<input id="email" name="email" type="email" required autofocus
|
|
24
24
|
autocomplete="{{ authMethods && authMethods.passkeyAutofill ? 'username webauthn' : 'username' }}"
|
|
25
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
25
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden transition focus:border-gray-900 focus:ring-2 focus:ring-gray-900" />
|
|
26
26
|
</div>
|
|
27
27
|
|
|
28
28
|
<button type="submit"
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
<div class="mt-6">
|
|
109
109
|
<label for="password" class="mb-1 block text-sm font-medium text-gray-700">{{ t('login.password_label') }}</label>
|
|
110
110
|
<input id="password" name="password" type="password" required autofocus
|
|
111
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
111
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden transition focus:border-gray-900 focus:ring-2 focus:ring-gray-900" />
|
|
112
112
|
</div>
|
|
113
113
|
|
|
114
114
|
{{-- Bot protection: container do widget (config-trusted; HTML do host renderizado raw). --}}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
<form method="POST" action="/auth/interaction/{{ uid }}/identifier" class="mt-3 space-y-3">
|
|
20
20
|
<input type="hidden" name="_csrf" value="{{ csrfToken }}">
|
|
21
21
|
<input name="email" type="email" required autofocus placeholder="{{ t('login.email_label') }}"
|
|
22
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
22
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden transition focus:border-gray-900 focus:ring-2 focus:ring-gray-900" />
|
|
23
23
|
<button type="submit"
|
|
24
24
|
class="w-full rounded-lg bg-gray-800 py-2 text-sm font-medium text-white transition hover:bg-gray-700">
|
|
25
25
|
{{ t('login.identifier_submit') }}
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
<label for="code" class="mb-1 block text-sm font-medium text-gray-700">{{ t('mfa_challenge.code_label') }}</label>
|
|
24
24
|
<input id="code" name="code" inputmode="numeric" autocomplete="one-time-code"
|
|
25
25
|
pattern="[0-9]*" maxlength="6" autofocus
|
|
26
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-center text-lg tracking-[0.4em] outline-
|
|
26
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-center text-lg tracking-[0.4em] outline-hidden transition focus:border-gray-900 focus:ring-2 focus:ring-gray-900" />
|
|
27
27
|
</div>
|
|
28
28
|
|
|
29
29
|
@if(trustedDevicesEnabled)
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
<form method="POST" action="/auth/interaction/{{ uid }}/mfa" class="mt-3">
|
|
63
63
|
<input type="hidden" name="_csrf" value="{{ csrfToken }}">
|
|
64
64
|
<input name="recoveryCode" placeholder="xxxxx-xxxxx"
|
|
65
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
65
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden focus:border-gray-900" />
|
|
66
66
|
<button type="submit"
|
|
67
67
|
class="mt-3 w-full rounded-lg border border-gray-300 py-2.5 text-sm font-semibold text-gray-700 transition hover:bg-gray-50">
|
|
68
68
|
{{ t('mfa_challenge.recovery_submit') }}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
</head>
|
|
5
5
|
<body class="min-h-screen bg-gray-100 flex items-center justify-center p-4">
|
|
6
6
|
<div class="w-full max-w-sm">
|
|
7
|
-
<div class="rounded-2xl bg-white p-8 shadow-
|
|
7
|
+
<div class="rounded-2xl bg-white p-8 shadow-xs ring-1 ring-black/5 text-center">
|
|
8
8
|
@if(ok)
|
|
9
9
|
<div class="mb-4 flex justify-center">
|
|
10
10
|
<span class="inline-flex h-12 w-12 items-center justify-center rounded-full bg-emerald-100 text-emerald-600">
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
{{-- Gerado por scripts/build_host_css.mjs — não editar à mão. --}}
|
|
2
|
-
<style>*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.visible{visibility:visible}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-6{margin-left:1.5rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-12{height:3rem}.h-16{height:4rem}.h-20{height:5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-48{height:12rem}.h-6{height:1.5rem}.h-px{height:1px}.min-h-screen{min-height:100vh}.w-12{width:3rem}.w-16{width:4rem}.w-24{width:6rem}.w-3{width:.75rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-6{width:1.5rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(243 244 246/var(--tw-divide-opacity,1))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.whitespace-nowrap{white-space:nowrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity,1))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-gray-900{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.object-cover{-o-object-fit:cover;object-fit:cover}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tracking-\[0\.4em\]{letter-spacing:.4em}.tracking-wide{letter-spacing:.025em}.tracking-widest{letter-spacing:.1em}.text-amber-50{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity,1))}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity,1))}.text-emerald-900{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.opacity-50{opacity:.5}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-amber-200{--tw-ring-opacity:1;--tw-ring-color:rgb(253 230 138/var(--tw-ring-opacity,1))}.ring-black{--tw-ring-opacity:1;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity,1))}.ring-black\/5{--tw-ring-color:rgba(0,0,0,.05)}.ring-blue-200{--tw-ring-opacity:1;--tw-ring-color:rgb(191 219 254/var(--tw-ring-opacity,1))}.ring-emerald-200{--tw-ring-opacity:1;--tw-ring-color:rgb(167 243 208/var(--tw-ring-opacity,1))}.ring-gray-900{--tw-ring-opacity:1;--tw-ring-color:rgb(17 24 39/var(--tw-ring-opacity,1))}.ring-red-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 202 202/var(--tw-ring-opacity,1))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.last\:border-0:last-child{border-width:0}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.focus\:border-gray-900:focus{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.focus\:border-red-600:focus{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-gray-900:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(17 24 39/var(--tw-ring-opacity,1))}</style>
|
|
2
|
+
<style>/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
3
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-800:oklch(47.3% .137 46.201);--color-green-50:oklch(98.2% .018 155.826);--color-green-700:oklch(52.7% .154 150.069);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-blue-50:oklch(97% .014 254.604);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-medium:500;--font-weight-semibold:600;--tracking-wide:.025em;--tracking-widest:.1em;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}button:not(:disabled),[role=button]:not(:disabled){cursor:pointer}}@layer components;@layer utilities{.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.my-4{margin-block:calc(var(--spacing) * 4)}.my-6{margin-block:calc(var(--spacing) * 6)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-48{height:calc(var(--spacing) * 48)}.h-px{height:1px}.min-h-screen{min-height:100vh}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-48{width:calc(var(--spacing) * 48)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-sm{max-width:var(--container-sm)}.flex-1{flex:1}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-100>:not(:last-child)){border-color:var(--color-gray-100)}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-blue-300{border-color:var(--color-blue-300)}.border-emerald-300{border-color:var(--color-emerald-300)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-900{border-color:var(--color-gray-900)}.border-red-300{border-color:var(--color-red-300)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-600{background-color:var(--color-red-600)}.bg-white{background-color:var(--color-white)}.object-cover{object-fit:cover}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.4em\]{--tw-tracking:.4em;letter-spacing:.4em}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-all{word-break:break-all}.text-amber-600{color:var(--color-amber-600)}.text-amber-800{color:var(--color-amber-800)}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-emerald-900{color:var(--color-emerald-900)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-700{color:var(--color-green-700)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-red-900{color:var(--color-red-900)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-amber-200{--tw-ring-color:var(--color-amber-200)}.ring-black\/5{--tw-ring-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.ring-black\/5{--tw-ring-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.ring-blue-200{--tw-ring-color:var(--color-blue-200)}.ring-emerald-200{--tw-ring-color:var(--color-emerald-200)}.ring-gray-900{--tw-ring-color:var(--color-gray-900)}.ring-red-200{--tw-ring-color:var(--color-red-200)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.select-none{-webkit-user-select:none;user-select:none}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media (hover:hover){.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}}.focus\:border-gray-900:focus{border-color:var(--color-gray-900)}.focus\:border-red-600:focus{border-color:var(--color-red-600)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-gray-900:focus{--tw-ring-color:var(--color-gray-900)}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}</style>
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<div class="mt-6">
|
|
19
19
|
<label for="password" class="mb-1 block text-sm font-medium text-gray-700">{{ t('reset.password_label') }}</label>
|
|
20
20
|
<input id="password" name="password" type="password" required minlength="8"
|
|
21
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
21
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden transition focus:border-gray-900 focus:ring-2 focus:ring-gray-900" />
|
|
22
22
|
</div>
|
|
23
23
|
|
|
24
24
|
<button type="submit"
|
|
@@ -28,13 +28,13 @@
|
|
|
28
28
|
<div class="mt-6">
|
|
29
29
|
<label for="fullName" class="mb-1 block text-sm font-medium text-gray-700">{{ t('signup.name_label') }}</label>
|
|
30
30
|
<input id="fullName" name="fullName" type="text" required
|
|
31
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
31
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden transition focus:border-gray-900 focus:ring-2 focus:ring-gray-900" />
|
|
32
32
|
</div>
|
|
33
33
|
|
|
34
34
|
<div class="mt-4">
|
|
35
35
|
<label for="email" class="mb-1 block text-sm font-medium text-gray-700">{{ t('signup.email_label') }}</label>
|
|
36
36
|
<input id="email" name="email" type="email" required
|
|
37
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
37
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden transition focus:border-gray-900 focus:ring-2 focus:ring-gray-900" />
|
|
38
38
|
</div>
|
|
39
39
|
|
|
40
40
|
{{-- Cadastro passwordless: sem campo de senha. O login vem por magic link. --}}
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
<div class="mt-4">
|
|
43
43
|
<label for="password" class="mb-1 block text-sm font-medium text-gray-700">{{ t('signup.password_label') }}</label>
|
|
44
44
|
<input id="password" name="password" type="password" required minlength="8"
|
|
45
|
-
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-
|
|
45
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-hidden transition focus:border-gray-900 focus:ring-2 focus:ring-gray-900" />
|
|
46
46
|
</div>
|
|
47
47
|
@end
|
|
48
48
|
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Carrega as augmentations de tipo do AdonisJS usadas pelos controllers do host-kit.
|
|
3
|
+
*
|
|
4
|
+
* Estes pacotes adicionam propriedades ao `HttpContext`/`HttpRequest` do core via
|
|
5
|
+
* `declare module '@adonisjs/core/http'`, mas a augmentation só é carregada quando
|
|
6
|
+
* o módulo que a declara é referenciado na compilação. Usamos `import type {} from`
|
|
7
|
+
* para carregar APENAS os tipos/augmentations dos subpaths que as declaram — assim
|
|
8
|
+
* `ctx.session`, `ctx.request.csrfToken` e `ctx.ally` ficam tipados sem casts, e a
|
|
9
|
+
* importação é COMPLETAMENTE apagada no build (zero efeito em runtime).
|
|
10
|
+
*
|
|
11
|
+
* Importante: precisa ser `import type {}` (não `import 'specifier'`). Um import de
|
|
12
|
+
* side-effect comum permaneceria no JS emitido e quebraria o boot de hosts sem o
|
|
13
|
+
* peer opcional `@adonisjs/ally` (social login) com ERR_MODULE_NOT_FOUND.
|
|
14
|
+
*
|
|
15
|
+
* - `@adonisjs/session/session_middleware` → `HttpContext.session`
|
|
16
|
+
* - `@adonisjs/shield/shield_middleware` → `HttpRequest.csrfToken`
|
|
17
|
+
* - `@adonisjs/ally/ally_provider` → `HttpContext.ally` (peer opcional)
|
|
18
|
+
* - `@adonisjs/core/providers/vinejs_provider` → `HttpRequest.validateUsing`
|
|
19
|
+
* - `@adonisjs/auth/initialize_auth_middleware` → `HttpContext.auth` (peer opcional)
|
|
20
|
+
*/
|
|
1
21
|
/**
|
|
2
22
|
* Identificador NÃO-SENSÍVEL da API key admin que autenticou a request (R6),
|
|
3
23
|
* anexado pelo `adminApiGuard`. Usado pela trilha de auditoria REST para saber
|
|
@@ -1 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Carrega as augmentations de tipo do AdonisJS usadas pelos controllers do host-kit.
|
|
3
|
+
*
|
|
4
|
+
* Estes pacotes adicionam propriedades ao `HttpContext`/`HttpRequest` do core via
|
|
5
|
+
* `declare module '@adonisjs/core/http'`, mas a augmentation só é carregada quando
|
|
6
|
+
* o módulo que a declara é referenciado na compilação. Usamos `import type {} from`
|
|
7
|
+
* para carregar APENAS os tipos/augmentations dos subpaths que as declaram — assim
|
|
8
|
+
* `ctx.session`, `ctx.request.csrfToken` e `ctx.ally` ficam tipados sem casts, e a
|
|
9
|
+
* importação é COMPLETAMENTE apagada no build (zero efeito em runtime).
|
|
10
|
+
*
|
|
11
|
+
* Importante: precisa ser `import type {}` (não `import 'specifier'`). Um import de
|
|
12
|
+
* side-effect comum permaneceria no JS emitido e quebraria o boot de hosts sem o
|
|
13
|
+
* peer opcional `@adonisjs/ally` (social login) com ERR_MODULE_NOT_FOUND.
|
|
14
|
+
*
|
|
15
|
+
* - `@adonisjs/session/session_middleware` → `HttpContext.session`
|
|
16
|
+
* - `@adonisjs/shield/shield_middleware` → `HttpRequest.csrfToken`
|
|
17
|
+
* - `@adonisjs/ally/ally_provider` → `HttpContext.ally` (peer opcional)
|
|
18
|
+
* - `@adonisjs/core/providers/vinejs_provider` → `HttpRequest.validateUsing`
|
|
19
|
+
* - `@adonisjs/auth/initialize_auth_middleware` → `HttpContext.auth` (peer opcional)
|
|
20
|
+
*/
|
|
1
21
|
export {};
|