payload-auth 1.3.4 → 1.4.0

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.
Files changed (39) hide show
  1. package/dist/better-auth/plugin/constants.d.ts +1 -0
  2. package/dist/better-auth/plugin/constants.d.ts.map +1 -1
  3. package/dist/better-auth/plugin/constants.js +3 -2
  4. package/dist/better-auth/plugin/helpers/check-passkey-plugin.d.ts.map +1 -1
  5. package/dist/better-auth/plugin/helpers/check-passkey-plugin.js +3 -2
  6. package/dist/better-auth/plugin/helpers/check-two-factor-plugin.d.ts +3 -0
  7. package/dist/better-auth/plugin/helpers/check-two-factor-plugin.d.ts.map +1 -0
  8. package/dist/better-auth/plugin/helpers/check-two-factor-plugin.js +6 -0
  9. package/dist/better-auth/plugin/helpers/check-username-plugin.d.ts.map +1 -1
  10. package/dist/better-auth/plugin/helpers/check-username-plugin.js +3 -2
  11. package/dist/better-auth/plugin/index.d.ts.map +1 -1
  12. package/dist/better-auth/plugin/index.js +16 -2
  13. package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -1
  14. package/dist/better-auth/plugin/lib/build-collections/users/index.js +7 -2
  15. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.d.ts +4 -0
  16. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.d.ts.map +1 -0
  17. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.js +344 -0
  18. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.scss +113 -0
  19. package/dist/better-auth/plugin/payload/exports/client.d.ts +2 -1
  20. package/dist/better-auth/plugin/payload/exports/client.d.ts.map +1 -1
  21. package/dist/better-auth/plugin/payload/exports/client.js +3 -2
  22. package/dist/better-auth/plugin/payload/exports/rsc.d.ts +2 -1
  23. package/dist/better-auth/plugin/payload/exports/rsc.d.ts.map +1 -1
  24. package/dist/better-auth/plugin/payload/exports/rsc.js +3 -2
  25. package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts.map +1 -1
  26. package/dist/better-auth/plugin/payload/views/admin-login/client.js +14 -5
  27. package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts.map +1 -1
  28. package/dist/better-auth/plugin/payload/views/admin-login/index.js +1 -3
  29. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.d.ts +5 -0
  30. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.d.ts.map +1 -0
  31. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.js +77 -0
  32. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts +10 -0
  33. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts.map +1 -0
  34. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js +44 -0
  35. package/dist/shared/form/components/submit.js +3 -1
  36. package/dist/shared/utils/value-or-default.d.ts +10 -0
  37. package/dist/shared/utils/value-or-default.d.ts.map +1 -0
  38. package/dist/shared/utils/value-or-default.js +12 -0
  39. package/package.json +7 -6
@@ -0,0 +1,344 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import "./index.scss";
4
+ import React, { useMemo, useState } from "react";
5
+ import { XIcon, Copy } from "lucide-react";
6
+ import { Button, Modal, toast, useModal, useTranslation, useFormFields, useField } from "@payloadcms/ui";
7
+ import { createAuthClient } from "better-auth/react";
8
+ import { twoFactorClient } from "better-auth/client/plugins";
9
+ import { Form, FormInputWrap } from "../../../../../shared/form/ui";
10
+ import { z } from "zod";
11
+ import { passwordField } from "../../../../../shared/form/validation";
12
+ import { QRCodeSVG } from "qrcode.react";
13
+ import { useAppForm } from "../../../../../shared/form";
14
+ const baseClass = 'two-factor-auth-modal';
15
+ export const TwoFactorAuth = ()=>{
16
+ const [totpURI, setTotpURI] = useState('');
17
+ const [backupCodes, setBackupCodes] = useState(null);
18
+ const [formState, setFormState] = useState('enable');
19
+ const { openModal, closeModal } = useModal();
20
+ const { t } = useTranslation();
21
+ const twoFactorEnabledField = useFormFields(([fields])=>fields.twoFactorEnabled);
22
+ const twoFactorEnabled = Boolean(twoFactorEnabledField?.value);
23
+ const { setValue: setTwoFactorEnabled } = useField({
24
+ path: 'twoFactorEnabled'
25
+ });
26
+ const authClient = useMemo(()=>createAuthClient({
27
+ plugins: [
28
+ twoFactorClient()
29
+ ]
30
+ }), []);
31
+ const copyURI = async ()=>{
32
+ if (!totpURI) return;
33
+ try {
34
+ await navigator.clipboard.writeText(totpURI);
35
+ toast.success('Copied');
36
+ } catch {
37
+ toast.error('Failed to copy');
38
+ }
39
+ };
40
+ // Form Schemas
41
+ const passwordSchema = z.object({
42
+ password: passwordField({
43
+ t
44
+ })
45
+ });
46
+ const otpSchema = z.object({
47
+ otp: z.string().length(6, 'Code must be 6 digits').refine((val)=>/^\d{6}$/.test(val), 'Code must be numeric')
48
+ });
49
+ const EnableForm = ()=>{
50
+ const [isLoading, setIsLoading] = useState(false);
51
+ const form = useAppForm({
52
+ defaultValues: {
53
+ password: ''
54
+ },
55
+ onSubmit: async ({ value })=>{
56
+ setIsLoading(true);
57
+ const { data, error } = await authClient.twoFactor.enable({
58
+ password: value.password
59
+ });
60
+ setIsLoading(false);
61
+ if (error) {
62
+ toast.error(error.message);
63
+ return;
64
+ }
65
+ setTotpURI(data.totpURI);
66
+ if (data && 'backupCodes' in data && data.backupCodes) {
67
+ setBackupCodes(Array.isArray(data.backupCodes) ? data.backupCodes : String(data.backupCodes).split(/\s+/).filter(Boolean));
68
+ } else {
69
+ setBackupCodes(null);
70
+ }
71
+ setFormState('verify');
72
+ },
73
+ validators: {
74
+ onSubmit: passwordSchema
75
+ }
76
+ });
77
+ return /*#__PURE__*/ _jsxs(Form, {
78
+ onSubmit: (e)=>{
79
+ e.preventDefault();
80
+ void form.handleSubmit();
81
+ },
82
+ className: "two-factor-enable-form",
83
+ children: [
84
+ /*#__PURE__*/ _jsx(FormInputWrap, {
85
+ className: "two-factor-enable-form__inputWrap",
86
+ children: /*#__PURE__*/ _jsx(form.AppField, {
87
+ name: "password",
88
+ children: (field)=>/*#__PURE__*/ _jsx(field.TextField, {
89
+ type: "password",
90
+ className: "password",
91
+ label: "Password",
92
+ required: true
93
+ })
94
+ })
95
+ }),
96
+ /*#__PURE__*/ _jsx(form.AppForm, {
97
+ children: /*#__PURE__*/ _jsx(form.Submit, {
98
+ label: "Enable",
99
+ loadingLabel: "Enabling"
100
+ })
101
+ })
102
+ ]
103
+ });
104
+ };
105
+ const VerifyForm = ()=>{
106
+ const [isLoading, setIsLoading] = useState(false);
107
+ const form = useAppForm({
108
+ defaultValues: {
109
+ otp: ''
110
+ },
111
+ onSubmit: async ({ value })=>{
112
+ setIsLoading(true);
113
+ const { data, error } = await authClient.twoFactor.verifyTotp({
114
+ code: value.otp
115
+ });
116
+ setIsLoading(false);
117
+ if (error) {
118
+ toast.error(error.message);
119
+ return;
120
+ }
121
+ if (data && 'backupCodes' in data && data.backupCodes) {
122
+ setBackupCodes(Array.isArray(data.backupCodes) ? data.backupCodes : String(data.backupCodes).split(/\s+/).filter(Boolean));
123
+ }
124
+ toast.success('Two‑factor verified & enabled');
125
+ setTwoFactorEnabled(true);
126
+ setFormState('backupCodes');
127
+ },
128
+ validators: {
129
+ onSubmit: otpSchema
130
+ }
131
+ });
132
+ return /*#__PURE__*/ _jsxs(Form, {
133
+ onSubmit: (e)=>{
134
+ e.preventDefault();
135
+ void form.handleSubmit();
136
+ },
137
+ className: "two-factor-verify-form",
138
+ children: [
139
+ /*#__PURE__*/ _jsx(FormInputWrap, {
140
+ className: "tf__inputWrap",
141
+ children: /*#__PURE__*/ _jsx(form.AppField, {
142
+ name: "otp",
143
+ children: (field)=>/*#__PURE__*/ _jsx(field.TextField, {
144
+ type: "text",
145
+ className: "text otp",
146
+ label: "6‑digit Code",
147
+ required: true
148
+ })
149
+ })
150
+ }),
151
+ /*#__PURE__*/ _jsx(form.AppForm, {
152
+ children: /*#__PURE__*/ _jsx(form.Submit, {
153
+ label: "Verify",
154
+ loadingLabel: "Verifying"
155
+ })
156
+ })
157
+ ]
158
+ });
159
+ };
160
+ const DisableForm = ()=>{
161
+ const form = useAppForm({
162
+ defaultValues: {
163
+ password: ''
164
+ },
165
+ onSubmit: async ({ value })=>{
166
+ await authClient.twoFactor.disable({
167
+ password: value.password
168
+ }, {
169
+ onSuccess () {
170
+ toast.success('Two‑factor disabled');
171
+ setTwoFactorEnabled(false);
172
+ closeModal('two-factor-auth-modal');
173
+ return undefined;
174
+ },
175
+ onError (ctx) {
176
+ toast.error(ctx.error.message);
177
+ }
178
+ });
179
+ },
180
+ validators: {
181
+ onSubmit: passwordSchema
182
+ }
183
+ });
184
+ return /*#__PURE__*/ _jsxs(Form, {
185
+ onSubmit: (e)=>{
186
+ e.preventDefault();
187
+ void form.handleSubmit();
188
+ },
189
+ className: "two-factor-disable-form mt-4",
190
+ children: [
191
+ /*#__PURE__*/ _jsx(FormInputWrap, {
192
+ className: "two-factor-disable-form__inputWrap",
193
+ children: /*#__PURE__*/ _jsx(form.AppField, {
194
+ name: "password",
195
+ children: (field)=>/*#__PURE__*/ _jsx(field.TextField, {
196
+ type: "password",
197
+ className: "password",
198
+ label: "Password",
199
+ required: true
200
+ })
201
+ })
202
+ }),
203
+ /*#__PURE__*/ _jsx(form.AppForm, {
204
+ children: /*#__PURE__*/ _jsx(form.Submit, {
205
+ label: "Disable Two‑Factor",
206
+ loadingLabel: "Disabling"
207
+ })
208
+ })
209
+ ]
210
+ });
211
+ };
212
+ return /*#__PURE__*/ _jsxs("div", {
213
+ className: "two-factor-auth-field",
214
+ children: [
215
+ twoFactorEnabled ? /*#__PURE__*/ _jsx(Button, {
216
+ onClick: ()=>{
217
+ setFormState('disable');
218
+ openModal('two-factor-auth-modal');
219
+ },
220
+ size: "medium",
221
+ buttonStyle: "pill",
222
+ children: "Disable Two-Factor"
223
+ }) : /*#__PURE__*/ _jsx(Button, {
224
+ onClick: ()=>{
225
+ setFormState('enable');
226
+ openModal('two-factor-auth-modal');
227
+ },
228
+ size: "medium",
229
+ buttonStyle: "pill",
230
+ children: "Enable Two-Factor"
231
+ }),
232
+ /*#__PURE__*/ _jsx(Modal, {
233
+ slug: "two-factor-auth-modal",
234
+ className: baseClass,
235
+ closeOnBlur: true,
236
+ children: /*#__PURE__*/ _jsxs("div", {
237
+ className: `${baseClass}__wrapper`,
238
+ children: [
239
+ /*#__PURE__*/ _jsx(Button, {
240
+ onClick: ()=>closeModal('two-factor-auth-modal'),
241
+ buttonStyle: "icon-label",
242
+ size: "small",
243
+ className: `${baseClass}__close-button`,
244
+ children: /*#__PURE__*/ _jsx(XIcon, {
245
+ size: 24
246
+ })
247
+ }),
248
+ /*#__PURE__*/ _jsxs("div", {
249
+ className: `${baseClass}__content`,
250
+ style: {
251
+ maxWidth: '38rem'
252
+ },
253
+ children: [
254
+ formState === 'enable' && /*#__PURE__*/ _jsxs(_Fragment, {
255
+ children: [
256
+ /*#__PURE__*/ _jsx("h2", {
257
+ children: "Enable Two‑Factor"
258
+ }),
259
+ /*#__PURE__*/ _jsx(EnableForm, {})
260
+ ]
261
+ }),
262
+ formState === 'verify' && /*#__PURE__*/ _jsxs(_Fragment, {
263
+ children: [
264
+ /*#__PURE__*/ _jsx("h2", {
265
+ children: "Verify Two‑Factor"
266
+ }),
267
+ /*#__PURE__*/ _jsxs("div", {
268
+ className: "two-factor-auth-modal__verify-block",
269
+ children: [
270
+ /*#__PURE__*/ _jsx("p", {
271
+ children: "Scan the QR code with your authenticator app or copy the URI."
272
+ }),
273
+ /*#__PURE__*/ _jsx("div", {
274
+ className: "two-factor-auth-modal__qrcode",
275
+ children: /*#__PURE__*/ _jsx(QRCodeSVG, {
276
+ value: totpURI,
277
+ size: 200
278
+ })
279
+ }),
280
+ /*#__PURE__*/ _jsxs(Button, {
281
+ size: "small",
282
+ buttonStyle: "transparent",
283
+ onClick: copyURI,
284
+ className: "two-factor-auth-modal__copy-btn",
285
+ children: [
286
+ /*#__PURE__*/ _jsx(Copy, {
287
+ size: 18,
288
+ className: "two-factor-auth-modal__copy-icon"
289
+ }),
290
+ " Copy URI"
291
+ ]
292
+ }),
293
+ /*#__PURE__*/ _jsx(VerifyForm, {})
294
+ ]
295
+ })
296
+ ]
297
+ }),
298
+ formState === 'backupCodes' && backupCodes && /*#__PURE__*/ _jsxs(_Fragment, {
299
+ children: [
300
+ /*#__PURE__*/ _jsx("h2", {
301
+ children: "Backup Codes"
302
+ }),
303
+ /*#__PURE__*/ _jsxs("div", {
304
+ className: "two-factor-auth-modal__backup-codes",
305
+ children: [
306
+ /*#__PURE__*/ _jsx("ul", {
307
+ children: backupCodes.map((code, i)=>/*#__PURE__*/ _jsx("li", {
308
+ className: "two-factor-auth-modal__backup-code",
309
+ children: code
310
+ }, i))
311
+ }),
312
+ /*#__PURE__*/ _jsx("p", {
313
+ className: "two-factor-auth-modal__backup-desc",
314
+ children: "Store these codes in a safe place. Each code can be used once if you lose access to your authenticator."
315
+ })
316
+ ]
317
+ }),
318
+ /*#__PURE__*/ _jsx(Button, {
319
+ onClick: ()=>closeModal('two-factor-auth-modal'),
320
+ buttonStyle: "primary",
321
+ size: "large",
322
+ className: "two-factor-auth-modal__backup-codes-close-button",
323
+ children: "Saved them!"
324
+ })
325
+ ]
326
+ }),
327
+ formState === 'disable' && /*#__PURE__*/ _jsxs(_Fragment, {
328
+ children: [
329
+ /*#__PURE__*/ _jsx("h2", {
330
+ children: "Two‑Factor Authentication"
331
+ }),
332
+ /*#__PURE__*/ _jsx(DisableForm, {})
333
+ ]
334
+ })
335
+ ]
336
+ })
337
+ ]
338
+ })
339
+ })
340
+ ]
341
+ });
342
+ };
343
+
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9jb21wb25lbnRzL3R3by1mYWN0b3ItYXV0aC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFhJY29uLCBDb3B5IH0gZnJvbSAnbHVjaWRlLXJlYWN0J1xuaW1wb3J0IHsgQnV0dG9uLCBNb2RhbCwgdG9hc3QsIHVzZU1vZGFsLCB1c2VUcmFuc2xhdGlvbiwgdXNlRm9ybUZpZWxkcywgdXNlRmllbGQgfSBmcm9tICdAcGF5bG9hZGNtcy91aSdcbmltcG9ydCB7IGNyZWF0ZUF1dGhDbGllbnQgfSBmcm9tICdiZXR0ZXItYXV0aC9yZWFjdCdcbmltcG9ydCB7IHR3b0ZhY3RvckNsaWVudCB9IGZyb20gJ2JldHRlci1hdXRoL2NsaWVudC9wbHVnaW5zJ1xuaW1wb3J0IHsgRm9ybSwgRm9ybUlucHV0V3JhcCB9IGZyb20gJ0Avc2hhcmVkL2Zvcm0vdWknXG5pbXBvcnQgeyB6IH0gZnJvbSAnem9kJ1xuaW1wb3J0IHsgcGFzc3dvcmRGaWVsZCB9IGZyb20gJ0Avc2hhcmVkL2Zvcm0vdmFsaWRhdGlvbidcbmltcG9ydCB7IFFSQ29kZVNWRyB9IGZyb20gJ3FyY29kZS5yZWFjdCdcbmltcG9ydCB7IHVzZUFwcEZvcm0gfSBmcm9tICdAL3NoYXJlZC9mb3JtJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAndHdvLWZhY3Rvci1hdXRoLW1vZGFsJ1xuXG5leHBvcnQgY29uc3QgVHdvRmFjdG9yQXV0aDogUmVhY3QuRkMgPSAoKSA9PiB7XG4gIGNvbnN0IFt0b3RwVVJJLCBzZXRUb3RwVVJJXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbYmFja3VwQ29kZXMsIHNldEJhY2t1cENvZGVzXSA9IHVzZVN0YXRlPHN0cmluZ1tdIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2Zvcm1TdGF0ZSwgc2V0Rm9ybVN0YXRlXSA9IHVzZVN0YXRlPCdlbmFibGUnIHwgJ3ZlcmlmeScgfCAnYmFja3VwQ29kZXMnIHwgJ2Rpc2FibGUnPignZW5hYmxlJylcbiAgY29uc3QgeyBvcGVuTW9kYWwsIGNsb3NlTW9kYWwgfSA9IHVzZU1vZGFsKClcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpXG4gIGNvbnN0IHR3b0ZhY3RvckVuYWJsZWRGaWVsZCA9IHVzZUZvcm1GaWVsZHMoKFtmaWVsZHNdKSA9PiBmaWVsZHMudHdvRmFjdG9yRW5hYmxlZClcbiAgY29uc3QgdHdvRmFjdG9yRW5hYmxlZCA9IEJvb2xlYW4odHdvRmFjdG9yRW5hYmxlZEZpZWxkPy52YWx1ZSlcbiAgY29uc3QgeyBzZXRWYWx1ZTogc2V0VHdvRmFjdG9yRW5hYmxlZCB9ID0gdXNlRmllbGQoeyBwYXRoOiAndHdvRmFjdG9yRW5hYmxlZCcgfSlcblxuICBjb25zdCBhdXRoQ2xpZW50ID0gdXNlTWVtbygoKSA9PiBjcmVhdGVBdXRoQ2xpZW50KHsgcGx1Z2luczogW3R3b0ZhY3RvckNsaWVudCgpXSB9KSwgW10pXG5cbiAgY29uc3QgY29weVVSSSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIXRvdHBVUkkpIHJldHVyblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0b3RwVVJJKVxuICAgICAgdG9hc3Quc3VjY2VzcygnQ29waWVkJylcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRvYXN0LmVycm9yKCdGYWlsZWQgdG8gY29weScpXG4gICAgfVxuICB9XG5cbiAgLy8gRm9ybSBTY2hlbWFzXG4gIGNvbnN0IHBhc3N3b3JkU2NoZW1hID0gei5vYmplY3Qoe1xuICAgIHBhc3N3b3JkOiBwYXNzd29yZEZpZWxkKHsgdCB9KVxuICB9KVxuXG4gIGNvbnN0IG90cFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBvdHA6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLmxlbmd0aCg2LCAnQ29kZSBtdXN0IGJlIDYgZGlnaXRzJylcbiAgICAgIC5yZWZpbmUoKHZhbCkgPT4gL15cXGR7Nn0kLy50ZXN0KHZhbCksICdDb2RlIG11c3QgYmUgbnVtZXJpYycpXG4gIH0pXG5cbiAgY29uc3QgRW5hYmxlRm9ybSA9ICgpID0+IHtcbiAgICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gICAgY29uc3QgZm9ybSA9IHVzZUFwcEZvcm0oe1xuICAgICAgZGVmYXVsdFZhbHVlczogeyBwYXNzd29yZDogJycgfSxcbiAgICAgIG9uU3VibWl0OiBhc3luYyAoeyB2YWx1ZSB9OiB7IHZhbHVlOiB7IHBhc3N3b3JkOiBzdHJpbmcgfSB9KSA9PiB7XG4gICAgICAgIHNldElzTG9hZGluZyh0cnVlKVxuICAgICAgICBjb25zdCB7IGRhdGEsIGVycm9yIH0gPSBhd2FpdCBhdXRoQ2xpZW50LnR3b0ZhY3Rvci5lbmFibGUoeyBwYXNzd29yZDogdmFsdWUucGFzc3dvcmQgfSlcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICB0b2FzdC5lcnJvcihlcnJvci5tZXNzYWdlKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHNldFRvdHBVUkkoZGF0YS50b3RwVVJJKVxuICAgICAgICBpZiAoZGF0YSAmJiAnYmFja3VwQ29kZXMnIGluIGRhdGEgJiYgZGF0YS5iYWNrdXBDb2Rlcykge1xuICAgICAgICAgIHNldEJhY2t1cENvZGVzKEFycmF5LmlzQXJyYXkoZGF0YS5iYWNrdXBDb2RlcykgPyBkYXRhLmJhY2t1cENvZGVzIDogU3RyaW5nKGRhdGEuYmFja3VwQ29kZXMpLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEJhY2t1cENvZGVzKG51bGwpXG4gICAgICAgIH1cbiAgICAgICAgc2V0Rm9ybVN0YXRlKCd2ZXJpZnknKVxuICAgICAgfSxcbiAgICAgIHZhbGlkYXRvcnM6IHsgb25TdWJtaXQ6IHBhc3N3b3JkU2NoZW1hIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGb3JtXG4gICAgICAgIG9uU3VibWl0PXsoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIHZvaWQgZm9ybS5oYW5kbGVTdWJtaXQoKVxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWVuYWJsZS1mb3JtXCI+XG4gICAgICAgIDxGb3JtSW5wdXRXcmFwIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItZW5hYmxlLWZvcm1fX2lucHV0V3JhcFwiPlxuICAgICAgICAgIDxmb3JtLkFwcEZpZWxkXG4gICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgY2hpbGRyZW49eyhmaWVsZDogYW55KSA9PiA8ZmllbGQuVGV4dEZpZWxkIHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzTmFtZT1cInBhc3N3b3JkXCIgbGFiZWw9XCJQYXNzd29yZFwiIHJlcXVpcmVkIC8+fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRm9ybUlucHV0V3JhcD5cbiAgICAgICAgPGZvcm0uQXBwRm9ybSBjaGlsZHJlbj17PGZvcm0uU3VibWl0IGxhYmVsPVwiRW5hYmxlXCIgbG9hZGluZ0xhYmVsPVwiRW5hYmxpbmdcIiAvPn0gLz5cbiAgICAgIDwvRm9ybT5cbiAgICApXG4gIH1cblxuICBjb25zdCBWZXJpZnlGb3JtID0gKCkgPT4ge1xuICAgIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgICBjb25zdCBmb3JtID0gdXNlQXBwRm9ybSh7XG4gICAgICBkZWZhdWx0VmFsdWVzOiB7IG90cDogJycgfSxcbiAgICAgIG9uU3VibWl0OiBhc3luYyAoeyB2YWx1ZSB9OiB7IHZhbHVlOiB7IG90cDogc3RyaW5nIH0gfSkgPT4ge1xuICAgICAgICBzZXRJc0xvYWRpbmcodHJ1ZSlcbiAgICAgICAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gYXdhaXQgYXV0aENsaWVudC50d29GYWN0b3IudmVyaWZ5VG90cCh7IGNvZGU6IHZhbHVlLm90cCB9KVxuICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHRvYXN0LmVycm9yKGVycm9yLm1lc3NhZ2UpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEgJiYgJ2JhY2t1cENvZGVzJyBpbiBkYXRhICYmIGRhdGEuYmFja3VwQ29kZXMpIHtcbiAgICAgICAgICBzZXRCYWNrdXBDb2RlcyhBcnJheS5pc0FycmF5KGRhdGEuYmFja3VwQ29kZXMpID8gZGF0YS5iYWNrdXBDb2RlcyA6IFN0cmluZyhkYXRhLmJhY2t1cENvZGVzKS5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKSlcbiAgICAgICAgfVxuICAgICAgICB0b2FzdC5zdWNjZXNzKCdUd2/igJFmYWN0b3IgdmVyaWZpZWQgJiBlbmFibGVkJylcbiAgICAgICAgc2V0VHdvRmFjdG9yRW5hYmxlZCh0cnVlKVxuICAgICAgICBzZXRGb3JtU3RhdGUoJ2JhY2t1cENvZGVzJylcbiAgICAgIH0sXG4gICAgICB2YWxpZGF0b3JzOiB7IG9uU3VibWl0OiBvdHBTY2hlbWEgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZvcm1cbiAgICAgICAgb25TdWJtaXQ9eyhlKSA9PiB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgdm9pZCBmb3JtLmhhbmRsZVN1Ym1pdCgpXG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItdmVyaWZ5LWZvcm1cIj5cbiAgICAgICAgPEZvcm1JbnB1dFdyYXAgY2xhc3NOYW1lPVwidGZfX2lucHV0V3JhcFwiPlxuICAgICAgICAgIDxmb3JtLkFwcEZpZWxkXG4gICAgICAgICAgICBuYW1lPVwib3RwXCJcbiAgICAgICAgICAgIGNoaWxkcmVuPXsoZmllbGQ6IGFueSkgPT4gPGZpZWxkLlRleHRGaWVsZCB0eXBlPVwidGV4dFwiIGNsYXNzTmFtZT1cInRleHQgb3RwXCIgbGFiZWw9XCI24oCRZGlnaXQgQ29kZVwiIHJlcXVpcmVkIC8+fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRm9ybUlucHV0V3JhcD5cbiAgICAgICAgPGZvcm0uQXBwRm9ybSBjaGlsZHJlbj17PGZvcm0uU3VibWl0IGxhYmVsPVwiVmVyaWZ5XCIgbG9hZGluZ0xhYmVsPVwiVmVyaWZ5aW5nXCIgLz59IC8+XG4gICAgICA8L0Zvcm0+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgRGlzYWJsZUZvcm0gPSAoKSA9PiB7XG4gICAgY29uc3QgZm9ybSA9IHVzZUFwcEZvcm0oe1xuICAgICAgZGVmYXVsdFZhbHVlczogeyBwYXNzd29yZDogJycgfSxcbiAgICAgIG9uU3VibWl0OiBhc3luYyAoeyB2YWx1ZSB9OiB7IHZhbHVlOiB7IHBhc3N3b3JkOiBzdHJpbmcgfSB9KSA9PiB7XG4gICAgICAgIGF3YWl0IGF1dGhDbGllbnQudHdvRmFjdG9yLmRpc2FibGUoXG4gICAgICAgICAgeyBwYXNzd29yZDogdmFsdWUucGFzc3dvcmQgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgICAgICAgIHRvYXN0LnN1Y2Nlc3MoJ1R3b+KAkWZhY3RvciBkaXNhYmxlZCcpXG4gICAgICAgICAgICAgIHNldFR3b0ZhY3RvckVuYWJsZWQoZmFsc2UpXG4gICAgICAgICAgICAgIGNsb3NlTW9kYWwoJ3R3by1mYWN0b3ItYXV0aC1tb2RhbCcpXG4gICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkVycm9yKGN0eDogYW55KSB7XG4gICAgICAgICAgICAgIHRvYXN0LmVycm9yKGN0eC5lcnJvci5tZXNzYWdlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHZhbGlkYXRvcnM6IHsgb25TdWJtaXQ6IHBhc3N3b3JkU2NoZW1hIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGb3JtXG4gICAgICAgIG9uU3VibWl0PXsoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIHZvaWQgZm9ybS5oYW5kbGVTdWJtaXQoKVxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWRpc2FibGUtZm9ybSBtdC00XCI+XG4gICAgICAgIDxGb3JtSW5wdXRXcmFwIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItZGlzYWJsZS1mb3JtX19pbnB1dFdyYXBcIj5cbiAgICAgICAgICA8Zm9ybS5BcHBGaWVsZFxuICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgIGNoaWxkcmVuPXsoZmllbGQ6IGFueSkgPT4gPGZpZWxkLlRleHRGaWVsZCB0eXBlPVwicGFzc3dvcmRcIiBjbGFzc05hbWU9XCJwYXNzd29yZFwiIGxhYmVsPVwiUGFzc3dvcmRcIiByZXF1aXJlZCAvPn1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0Zvcm1JbnB1dFdyYXA+XG4gICAgICAgIDxmb3JtLkFwcEZvcm0gY2hpbGRyZW49ezxmb3JtLlN1Ym1pdCBsYWJlbD1cIkRpc2FibGUgVHdv4oCRRmFjdG9yXCIgbG9hZGluZ0xhYmVsPVwiRGlzYWJsaW5nXCIgLz59IC8+XG4gICAgICA8L0Zvcm0+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1maWVsZFwiPlxuICAgICAge3R3b0ZhY3RvckVuYWJsZWQgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRGb3JtU3RhdGUoJ2Rpc2FibGUnKVxuICAgICAgICAgICAgb3Blbk1vZGFsKCd0d28tZmFjdG9yLWF1dGgtbW9kYWwnKVxuICAgICAgICAgIH19XG4gICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgYnV0dG9uU3R5bGU9XCJwaWxsXCI+XG4gICAgICAgICAgRGlzYWJsZSBUd28tRmFjdG9yXG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldEZvcm1TdGF0ZSgnZW5hYmxlJylcbiAgICAgICAgICAgIG9wZW5Nb2RhbCgndHdvLWZhY3Rvci1hdXRoLW1vZGFsJylcbiAgICAgICAgICB9fVxuICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgIGJ1dHRvblN0eWxlPVwicGlsbFwiPlxuICAgICAgICAgIEVuYWJsZSBUd28tRmFjdG9yXG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxNb2RhbCBzbHVnPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsXCIgY2xhc3NOYW1lPXtiYXNlQ2xhc3N9IGNsb3NlT25CbHVyPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcHBlcmB9PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNsb3NlTW9kYWwoJ3R3by1mYWN0b3ItYXV0aC1tb2RhbCcpfVxuICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJpY29uLWxhYmVsXCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2Nsb3NlLWJ1dHRvbmB9PlxuICAgICAgICAgICAgPFhJY29uIHNpemU9ezI0fSAvPlxuICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2NvbnRlbnRgfSBzdHlsZT17eyBtYXhXaWR0aDogJzM4cmVtJyB9fT5cbiAgICAgICAgICAgIHtmb3JtU3RhdGUgPT09ICdlbmFibGUnICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8aDI+RW5hYmxlIFR3b+KAkUZhY3RvcjwvaDI+XG4gICAgICAgICAgICAgICAgPEVuYWJsZUZvcm0gLz5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2Zvcm1TdGF0ZSA9PT0gJ3ZlcmlmeScgJiYgKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxoMj5WZXJpZnkgVHdv4oCRRmFjdG9yPC9oMj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1tb2RhbF9fdmVyaWZ5LWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICA8cD5TY2FuIHRoZSBRUiBjb2RlIHdpdGggeW91ciBhdXRoZW50aWNhdG9yIGFwcCBvciBjb3B5IHRoZSBVUkkuPC9wPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWF1dGgtbW9kYWxfX3FyY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICA8UVJDb2RlU1ZHIHZhbHVlPXt0b3RwVVJJfSBzaXplPXsyMDB9IC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gc2l6ZT1cInNtYWxsXCIgYnV0dG9uU3R5bGU9XCJ0cmFuc3BhcmVudFwiIG9uQ2xpY2s9e2NvcHlVUkl9IGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1tb2RhbF9fY29weS1idG5cIj5cbiAgICAgICAgICAgICAgICAgICAgPENvcHkgc2l6ZT17MTh9IGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1tb2RhbF9fY29weS1pY29uXCIgLz4gQ29weSBVUklcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPFZlcmlmeUZvcm0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2Zvcm1TdGF0ZSA9PT0gJ2JhY2t1cENvZGVzJyAmJiBiYWNrdXBDb2RlcyAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPGgyPkJhY2t1cCBDb2RlczwvaDI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0d28tZmFjdG9yLWF1dGgtbW9kYWxfX2JhY2t1cC1jb2Rlc1wiPlxuICAgICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICB7YmFja3VwQ29kZXMubWFwKChjb2RlLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGxpIGtleT17aX0gY2xhc3NOYW1lPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsX19iYWNrdXAtY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NvZGV9XG4gICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidHdvLWZhY3Rvci1hdXRoLW1vZGFsX19iYWNrdXAtZGVzY1wiPlxuICAgICAgICAgICAgICAgICAgICBTdG9yZSB0aGVzZSBjb2RlcyBpbiBhIHNhZmUgcGxhY2UuIEVhY2ggY29kZSBjYW4gYmUgdXNlZCBvbmNlIGlmIHlvdSBsb3NlIGFjY2VzcyB0byB5b3VyIGF1dGhlbnRpY2F0b3IuXG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY2xvc2VNb2RhbCgndHdvLWZhY3Rvci1hdXRoLW1vZGFsJyl9XG4gICAgICAgICAgICAgICAgICBidXR0b25TdHlsZT1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInR3by1mYWN0b3ItYXV0aC1tb2RhbF9fYmFja3VwLWNvZGVzLWNsb3NlLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgU2F2ZWQgdGhlbSFcbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2Zvcm1TdGF0ZSA9PT0gJ2Rpc2FibGUnICYmIChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8aDI+VHdv4oCRRmFjdG9yIEF1dGhlbnRpY2F0aW9uPC9oMj5cbiAgICAgICAgICAgICAgICA8RGlzYWJsZUZvcm0gLz5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvTW9kYWw+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsIlhJY29uIiwiQ29weSIsIkJ1dHRvbiIsIk1vZGFsIiwidG9hc3QiLCJ1c2VNb2RhbCIsInVzZVRyYW5zbGF0aW9uIiwidXNlRm9ybUZpZWxkcyIsInVzZUZpZWxkIiwiY3JlYXRlQXV0aENsaWVudCIsInR3b0ZhY3RvckNsaWVudCIsIkZvcm0iLCJGb3JtSW5wdXRXcmFwIiwieiIsInBhc3N3b3JkRmllbGQiLCJRUkNvZGVTVkciLCJ1c2VBcHBGb3JtIiwiYmFzZUNsYXNzIiwiVHdvRmFjdG9yQXV0aCIsInRvdHBVUkkiLCJzZXRUb3RwVVJJIiwiYmFja3VwQ29kZXMiLCJzZXRCYWNrdXBDb2RlcyIsImZvcm1TdGF0ZSIsInNldEZvcm1TdGF0ZSIsIm9wZW5Nb2RhbCIsImNsb3NlTW9kYWwiLCJ0IiwidHdvRmFjdG9yRW5hYmxlZEZpZWxkIiwiZmllbGRzIiwidHdvRmFjdG9yRW5hYmxlZCIsIkJvb2xlYW4iLCJ2YWx1ZSIsInNldFZhbHVlIiwic2V0VHdvRmFjdG9yRW5hYmxlZCIsInBhdGgiLCJhdXRoQ2xpZW50IiwicGx1Z2lucyIsImNvcHlVUkkiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJzdWNjZXNzIiwiZXJyb3IiLCJwYXNzd29yZFNjaGVtYSIsIm9iamVjdCIsInBhc3N3b3JkIiwib3RwU2NoZW1hIiwib3RwIiwic3RyaW5nIiwibGVuZ3RoIiwicmVmaW5lIiwidmFsIiwidGVzdCIsIkVuYWJsZUZvcm0iLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJmb3JtIiwiZGVmYXVsdFZhbHVlcyIsIm9uU3VibWl0IiwiZGF0YSIsInR3b0ZhY3RvciIsImVuYWJsZSIsIm1lc3NhZ2UiLCJBcnJheSIsImlzQXJyYXkiLCJTdHJpbmciLCJzcGxpdCIsImZpbHRlciIsInZhbGlkYXRvcnMiLCJlIiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVTdWJtaXQiLCJjbGFzc05hbWUiLCJBcHBGaWVsZCIsIm5hbWUiLCJjaGlsZHJlbiIsImZpZWxkIiwiVGV4dEZpZWxkIiwidHlwZSIsImxhYmVsIiwicmVxdWlyZWQiLCJBcHBGb3JtIiwiU3VibWl0IiwibG9hZGluZ0xhYmVsIiwiVmVyaWZ5Rm9ybSIsInZlcmlmeVRvdHAiLCJjb2RlIiwiRGlzYWJsZUZvcm0iLCJkaXNhYmxlIiwib25TdWNjZXNzIiwidW5kZWZpbmVkIiwib25FcnJvciIsImN0eCIsImRpdiIsIm9uQ2xpY2siLCJzaXplIiwiYnV0dG9uU3R5bGUiLCJzbHVnIiwiY2xvc2VPbkJsdXIiLCJzdHlsZSIsIm1heFdpZHRoIiwiaDIiLCJwIiwidWwiLCJtYXAiLCJpIiwibGkiXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBLE9BQU8sZUFBYztBQUVyQixPQUFPQSxTQUFTQyxPQUFPLEVBQUVDLFFBQVEsUUFBUSxR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
@@ -0,0 +1,113 @@
1
+ @layer payload-default {
2
+ .two-factor-auth-modal {
3
+ position: fixed;
4
+ inset: 0;
5
+ z-index: 1000;
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ height: 100%;
10
+
11
+ &:before {
12
+ content: '';
13
+ position: absolute;
14
+ inset: 0;
15
+ background: rgba(0, 0, 0, 0.8);
16
+ z-index: 0;
17
+ }
18
+
19
+ &__wrapper {
20
+ z-index: 1;
21
+ position: relative;
22
+ display: flex;
23
+ flex-direction: column;
24
+ gap: 16px;
25
+ border-radius: 3px;
26
+ border: 1px solid var(--theme-border-color);
27
+ background-color: var(--theme-elevation-50);
28
+ min-width: 340px;
29
+ max-width: 90vw;
30
+ box-shadow: 0 8px 32px rgba(0,0,0,0.18);
31
+ }
32
+
33
+ &__close-button {
34
+ position: absolute;
35
+ top: 0;
36
+ right: 0;
37
+ margin-block: 0 !important;
38
+ padding: 10px !important;
39
+ svg {
40
+ width: 24px;
41
+ height: 24px;
42
+ }
43
+ }
44
+
45
+ &__content {
46
+ display: flex;
47
+ flex-direction: column;
48
+ gap: 1.5rem;
49
+ padding: 1.5rem 1.5rem 1rem 1.5rem;
50
+ h2 {
51
+ font-size: 1.5rem;
52
+ font-weight: 600;
53
+ margin: 0;
54
+ }
55
+ p {
56
+ margin: 0;
57
+ color: var(--theme-elevation-500);
58
+ }
59
+ }
60
+
61
+ &__verify-block {
62
+ display: flex;
63
+ flex-direction: column;
64
+ gap: 1.5rem;
65
+ margin-top: 1.5rem;
66
+ }
67
+
68
+ &__backup-codes {
69
+ > ul {
70
+ padding: 1rem;
71
+ background-color: var(--theme-elevation-50);
72
+ border: 1px solid var(--theme-elevation-100);
73
+ border-radius: 4px;
74
+ columns: 2;
75
+ font-family: monospace;
76
+ margin-bottom: 1rem;
77
+ list-style: none;
78
+ text-align: center;
79
+ }
80
+ }
81
+
82
+ &__qrcode {
83
+ display: flex;
84
+ align-items: center;
85
+ justify-content: center;
86
+ margin-bottom: 0.5rem;
87
+ }
88
+
89
+ &__uri {
90
+ display: flex;
91
+ align-items: center;
92
+ gap: 0.5rem;
93
+ border-radius: 3px;
94
+ background: var(--theme-elevation-100, #f3f3f3);
95
+ padding: 0.5rem 1rem;
96
+ font-size: 0.95em;
97
+ word-break: break-all;
98
+ }
99
+
100
+ &__copy-btn {
101
+ margin-block: 0.5rem;
102
+ margin-inline: auto;
103
+ display: flex;
104
+ align-items: center;
105
+ gap: 0.5rem;
106
+ }
107
+
108
+ &__copy-icon {
109
+ margin-right: 0.25rem;
110
+ vertical-align: middle;
111
+ }
112
+ }
113
+ }
@@ -2,5 +2,6 @@ import { AdminButtons } from '../components/admin-buttons';
2
2
  import { AdminInviteButton } from '../components/admin-invite-button';
3
3
  import { LogoutButton } from '../components/logout-button';
4
4
  import { AdminSocialProviderButtons } from '../components/social-provider-buttons';
5
- export { AdminButtons, AdminInviteButton, LogoutButton, AdminSocialProviderButtons };
5
+ import { TwoFactorAuth } from '../components/two-factor-auth';
6
+ export { AdminButtons, AdminInviteButton, LogoutButton, AdminSocialProviderButtons, TwoFactorAuth };
6
7
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/exports/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAA;AAElF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,0BAA0B,EAAE,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/exports/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAA;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAE7D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,0BAA0B,EAAE,aAAa,EAAE,CAAA"}
@@ -2,6 +2,7 @@ import { AdminButtons } from "../components/admin-buttons";
2
2
  import { AdminInviteButton } from "../components/admin-invite-button";
3
3
  import { LogoutButton } from "../components/logout-button";
4
4
  import { AdminSocialProviderButtons } from "../components/social-provider-buttons";
5
- export { AdminButtons, AdminInviteButton, LogoutButton, AdminSocialProviderButtons };
5
+ import { TwoFactorAuth } from "../components/two-factor-auth";
6
+ export { AdminButtons, AdminInviteButton, LogoutButton, AdminSocialProviderButtons, TwoFactorAuth };
6
7
 
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9leHBvcnRzL2NsaWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZG1pbkJ1dHRvbnMgfSBmcm9tICcuLi9jb21wb25lbnRzL2FkbWluLWJ1dHRvbnMnXG5pbXBvcnQgeyBBZG1pbkludml0ZUJ1dHRvbiB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWRtaW4taW52aXRlLWJ1dHRvbidcbmltcG9ydCB7IExvZ291dEJ1dHRvbiB9IGZyb20gJy4uL2NvbXBvbmVudHMvbG9nb3V0LWJ1dHRvbidcbmltcG9ydCB7IEFkbWluU29jaWFsUHJvdmlkZXJCdXR0b25zIH0gZnJvbSAnLi4vY29tcG9uZW50cy9zb2NpYWwtcHJvdmlkZXItYnV0dG9ucydcblxuZXhwb3J0IHsgQWRtaW5CdXR0b25zLCBBZG1pbkludml0ZUJ1dHRvbiwgTG9nb3V0QnV0dG9uLCBBZG1pblNvY2lhbFByb3ZpZGVyQnV0dG9ucyB9XG4iXSwibmFtZXMiOlsiQWRtaW5CdXR0b25zIiwiQWRtaW5JbnZpdGVCdXR0b24iLCJMb2dvdXRCdXR0b24iLCJBZG1pblNvY2lhbFByb3ZpZGVyQnV0dG9ucyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsWUFBWSxRQUFRLDhCQUE2QjtBQUMxRCxTQUFTQyxpQkFBaUIsUUFBUSxvQ0FBbUM7QUFDckUsU0FBU0MsWUFBWSxRQUFRLDhCQUE2QjtBQUMxRCxTQUFTQywwQkFBMEIsUUFBUSx3Q0FBdUM7QUFFbEYsU0FBU0gsWUFBWSxFQUFFQyxpQkFBaUIsRUFBRUMsWUFBWSxFQUFFQywwQkFBMEIsR0FBRSJ9
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9leHBvcnRzL2NsaWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZG1pbkJ1dHRvbnMgfSBmcm9tICcuLi9jb21wb25lbnRzL2FkbWluLWJ1dHRvbnMnXG5pbXBvcnQgeyBBZG1pbkludml0ZUJ1dHRvbiB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWRtaW4taW52aXRlLWJ1dHRvbidcbmltcG9ydCB7IExvZ291dEJ1dHRvbiB9IGZyb20gJy4uL2NvbXBvbmVudHMvbG9nb3V0LWJ1dHRvbidcbmltcG9ydCB7IEFkbWluU29jaWFsUHJvdmlkZXJCdXR0b25zIH0gZnJvbSAnLi4vY29tcG9uZW50cy9zb2NpYWwtcHJvdmlkZXItYnV0dG9ucydcbmltcG9ydCB7IFR3b0ZhY3RvckF1dGggfSBmcm9tICcuLi9jb21wb25lbnRzL3R3by1mYWN0b3ItYXV0aCdcblxuZXhwb3J0IHsgQWRtaW5CdXR0b25zLCBBZG1pbkludml0ZUJ1dHRvbiwgTG9nb3V0QnV0dG9uLCBBZG1pblNvY2lhbFByb3ZpZGVyQnV0dG9ucywgVHdvRmFjdG9yQXV0aCB9XG4iXSwibmFtZXMiOlsiQWRtaW5CdXR0b25zIiwiQWRtaW5JbnZpdGVCdXR0b24iLCJMb2dvdXRCdXR0b24iLCJBZG1pblNvY2lhbFByb3ZpZGVyQnV0dG9ucyIsIlR3b0ZhY3RvckF1dGgiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFlBQVksUUFBUSw4QkFBNkI7QUFDMUQsU0FBU0MsaUJBQWlCLFFBQVEsb0NBQW1DO0FBQ3JFLFNBQVNDLFlBQVksUUFBUSw4QkFBNkI7QUFDMUQsU0FBU0MsMEJBQTBCLFFBQVEsd0NBQXVDO0FBQ2xGLFNBQVNDLGFBQWEsUUFBUSxnQ0FBK0I7QUFFN0QsU0FBU0osWUFBWSxFQUFFQyxpQkFBaUIsRUFBRUMsWUFBWSxFQUFFQywwQkFBMEIsRUFBRUMsYUFBYSxHQUFFIn0=
@@ -3,5 +3,6 @@ import AdminLogin from '../views/admin-login';
3
3
  import ForgotPassword from '../views/forgot-password';
4
4
  import ResetPassword from '../views/reset-password';
5
5
  import RSCRedirect from '../components/rsc-redirect';
6
- export { AdminSignup, AdminLogin, ForgotPassword, ResetPassword, RSCRedirect };
6
+ import TwoFactorVerify from '../views/two-factor-verify';
7
+ export { AdminSignup, AdminLogin, ForgotPassword, ResetPassword, RSCRedirect, TwoFactorVerify };
7
8
  //# sourceMappingURL=rsc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsc.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/exports/rsc.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,uBAAuB,CAAA;AAC/C,OAAO,UAAU,MAAM,sBAAsB,CAAA;AAC7C,OAAO,cAAc,MAAM,0BAA0B,CAAA;AACrD,OAAO,aAAa,MAAM,yBAAyB,CAAA;AACnD,OAAO,WAAW,MAAM,4BAA4B,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"rsc.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/exports/rsc.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,uBAAuB,CAAA;AAC/C,OAAO,UAAU,MAAM,sBAAsB,CAAA;AAC7C,OAAO,cAAc,MAAM,0BAA0B,CAAA;AACrD,OAAO,aAAa,MAAM,yBAAyB,CAAA;AACnD,OAAO,WAAW,MAAM,4BAA4B,CAAA;AACpD,OAAO,eAAe,MAAM,4BAA4B,CAAA;AAExD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA"}
@@ -3,6 +3,7 @@ import AdminLogin from "../views/admin-login";
3
3
  import ForgotPassword from "../views/forgot-password";
4
4
  import ResetPassword from "../views/reset-password";
5
5
  import RSCRedirect from "../components/rsc-redirect";
6
- export { AdminSignup, AdminLogin, ForgotPassword, ResetPassword, RSCRedirect };
6
+ import TwoFactorVerify from "../views/two-factor-verify";
7
+ export { AdminSignup, AdminLogin, ForgotPassword, ResetPassword, RSCRedirect, TwoFactorVerify };
7
8
 
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9leHBvcnRzL3JzYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQWRtaW5TaWdudXAgZnJvbSAnLi4vdmlld3MvYWRtaW4tc2lnbnVwJ1xuaW1wb3J0IEFkbWluTG9naW4gZnJvbSAnLi4vdmlld3MvYWRtaW4tbG9naW4nXG5pbXBvcnQgRm9yZ290UGFzc3dvcmQgZnJvbSAnLi4vdmlld3MvZm9yZ290LXBhc3N3b3JkJ1xuaW1wb3J0IFJlc2V0UGFzc3dvcmQgZnJvbSAnLi4vdmlld3MvcmVzZXQtcGFzc3dvcmQnXG5pbXBvcnQgUlNDUmVkaXJlY3QgZnJvbSAnLi4vY29tcG9uZW50cy9yc2MtcmVkaXJlY3QnXG5cbmV4cG9ydCB7IEFkbWluU2lnbnVwLCBBZG1pbkxvZ2luLCBGb3Jnb3RQYXNzd29yZCwgUmVzZXRQYXNzd29yZCwgUlNDUmVkaXJlY3QgfVxuIl0sIm5hbWVzIjpbIkFkbWluU2lnbnVwIiwiQWRtaW5Mb2dpbiIsIkZvcmdvdFBhc3N3b3JkIiwiUmVzZXRQYXNzd29yZCIsIlJTQ1JlZGlyZWN0Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxpQkFBaUIsd0JBQXVCO0FBQy9DLE9BQU9DLGdCQUFnQix1QkFBc0I7QUFDN0MsT0FBT0Msb0JBQW9CLDJCQUEwQjtBQUNyRCxPQUFPQyxtQkFBbUIsMEJBQXlCO0FBQ25ELE9BQU9DLGlCQUFpQiw2QkFBNEI7QUFFcEQsU0FBU0osV0FBVyxFQUFFQyxVQUFVLEVBQUVDLGNBQWMsRUFBRUMsYUFBYSxFQUFFQyxXQUFXLEdBQUUifQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9leHBvcnRzL3JzYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQWRtaW5TaWdudXAgZnJvbSAnLi4vdmlld3MvYWRtaW4tc2lnbnVwJ1xuaW1wb3J0IEFkbWluTG9naW4gZnJvbSAnLi4vdmlld3MvYWRtaW4tbG9naW4nXG5pbXBvcnQgRm9yZ290UGFzc3dvcmQgZnJvbSAnLi4vdmlld3MvZm9yZ290LXBhc3N3b3JkJ1xuaW1wb3J0IFJlc2V0UGFzc3dvcmQgZnJvbSAnLi4vdmlld3MvcmVzZXQtcGFzc3dvcmQnXG5pbXBvcnQgUlNDUmVkaXJlY3QgZnJvbSAnLi4vY29tcG9uZW50cy9yc2MtcmVkaXJlY3QnXG5pbXBvcnQgVHdvRmFjdG9yVmVyaWZ5IGZyb20gJy4uL3ZpZXdzL3R3by1mYWN0b3ItdmVyaWZ5J1xuXG5leHBvcnQgeyBBZG1pblNpZ251cCwgQWRtaW5Mb2dpbiwgRm9yZ290UGFzc3dvcmQsIFJlc2V0UGFzc3dvcmQsIFJTQ1JlZGlyZWN0LCBUd29GYWN0b3JWZXJpZnkgfVxuIl0sIm5hbWVzIjpbIkFkbWluU2lnbnVwIiwiQWRtaW5Mb2dpbiIsIkZvcmdvdFBhc3N3b3JkIiwiUmVzZXRQYXNzd29yZCIsIlJTQ1JlZGlyZWN0IiwiVHdvRmFjdG9yVmVyaWZ5Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxpQkFBaUIsd0JBQXVCO0FBQy9DLE9BQU9DLGdCQUFnQix1QkFBc0I7QUFDN0MsT0FBT0Msb0JBQW9CLDJCQUEwQjtBQUNyRCxPQUFPQyxtQkFBbUIsMEJBQXlCO0FBQ25ELE9BQU9DLGlCQUFpQiw2QkFBNEI7QUFDcEQsT0FBT0MscUJBQXFCLDZCQUE0QjtBQUV4RCxTQUFTTCxXQUFXLEVBQUVDLFVBQVUsRUFBRUMsY0FBYyxFQUFFQyxhQUFhLEVBQUVDLFdBQVcsRUFBRUMsZUFBZSxHQUFFIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/views/admin-login/client.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAUvD,KAAK,qBAAqB,GAAG;IAC3B,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;IAC9D,iBAAiB,EAAE,KAAK,GAAG,wBAAwB,CAAA;CACpD,CAAA;AAmHD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA6B5D,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/views/admin-login/client.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAYvD,KAAK,qBAAqB,GAAG;IAC3B,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;IAC9D,iBAAiB,EAAE,KAAK,GAAG,wBAAwB,CAAA;CACpD,CAAA;AAiID,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA6B5D,CAAA"}