@delmaredigital/payload-better-auth 0.3.6 → 0.3.8

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 (164) hide show
  1. package/README.md +60 -12
  2. package/dist/adapter/collections.d.ts.map +1 -1
  3. package/dist/adapter/collections.js +126 -88
  4. package/dist/adapter/collections.js.map +1 -1
  5. package/dist/adapter/index.js +197 -150
  6. package/dist/adapter/index.js.map +1 -1
  7. package/dist/components/BeforeLogin.d.ts +1 -1
  8. package/dist/components/BeforeLogin.d.ts.map +1 -1
  9. package/dist/components/BeforeLogin.js +15 -7
  10. package/dist/components/BeforeLogin.js.map +1 -1
  11. package/dist/components/LoginView.d.ts +2 -2
  12. package/dist/components/LoginView.d.ts.map +1 -1
  13. package/dist/components/LoginView.js +660 -218
  14. package/dist/components/LoginView.js.map +1 -1
  15. package/dist/components/LoginViewWrapper.d.ts +1 -1
  16. package/dist/components/LoginViewWrapper.d.ts.map +1 -1
  17. package/dist/components/LoginViewWrapper.js +14 -4
  18. package/dist/components/LoginViewWrapper.js.map +1 -1
  19. package/dist/components/LogoutButton.d.ts +1 -1
  20. package/dist/components/LogoutButton.d.ts.map +1 -1
  21. package/dist/components/LogoutButton.js +19 -11
  22. package/dist/components/LogoutButton.js.map +1 -1
  23. package/dist/components/PasskeyRegisterButton.d.ts +2 -2
  24. package/dist/components/PasskeyRegisterButton.d.ts.map +1 -1
  25. package/dist/components/PasskeyRegisterButton.js +20 -16
  26. package/dist/components/PasskeyRegisterButton.js.map +1 -1
  27. package/dist/components/PasskeySignInButton.d.ts +2 -2
  28. package/dist/components/PasskeySignInButton.d.ts.map +1 -1
  29. package/dist/components/PasskeySignInButton.js +14 -12
  30. package/dist/components/PasskeySignInButton.js.map +1 -1
  31. package/dist/components/auth/ForgotPasswordView.d.ts +1 -1
  32. package/dist/components/auth/ForgotPasswordView.d.ts.map +1 -1
  33. package/dist/components/auth/ForgotPasswordView.js +133 -43
  34. package/dist/components/auth/ForgotPasswordView.js.map +1 -1
  35. package/dist/components/auth/ResetPasswordView.d.ts +1 -1
  36. package/dist/components/auth/ResetPasswordView.d.ts.map +1 -1
  37. package/dist/components/auth/ResetPasswordView.js +154 -50
  38. package/dist/components/auth/ResetPasswordView.js.map +1 -1
  39. package/dist/components/auth/index.js +2 -2
  40. package/dist/components/auth/index.js.map +1 -1
  41. package/dist/components/management/ApiKeysManagementClient.d.ts +2 -2
  42. package/dist/components/management/ApiKeysManagementClient.d.ts.map +1 -1
  43. package/dist/components/management/ApiKeysManagementClient.js +539 -222
  44. package/dist/components/management/ApiKeysManagementClient.js.map +1 -1
  45. package/dist/components/management/PasskeysManagementClient.d.ts +2 -2
  46. package/dist/components/management/PasskeysManagementClient.d.ts.map +1 -1
  47. package/dist/components/management/PasskeysManagementClient.js +215 -92
  48. package/dist/components/management/PasskeysManagementClient.js.map +1 -1
  49. package/dist/components/management/SecurityNavLinks.d.ts +1 -1
  50. package/dist/components/management/SecurityNavLinks.d.ts.map +1 -1
  51. package/dist/components/management/SecurityNavLinks.js +51 -24
  52. package/dist/components/management/SecurityNavLinks.js.map +1 -1
  53. package/dist/components/management/TwoFactorManagementClient.d.ts +2 -2
  54. package/dist/components/management/TwoFactorManagementClient.d.ts.map +1 -1
  55. package/dist/components/management/TwoFactorManagementClient.js +270 -111
  56. package/dist/components/management/TwoFactorManagementClient.js.map +1 -1
  57. package/dist/components/management/index.js +2 -2
  58. package/dist/components/management/index.js.map +1 -1
  59. package/dist/components/management/views/ApiKeysView.d.ts +1 -1
  60. package/dist/components/management/views/ApiKeysView.d.ts.map +1 -1
  61. package/dist/components/management/views/ApiKeysView.js +19 -4
  62. package/dist/components/management/views/ApiKeysView.js.map +1 -1
  63. package/dist/components/management/views/PasskeysView.d.ts +1 -1
  64. package/dist/components/management/views/PasskeysView.d.ts.map +1 -1
  65. package/dist/components/management/views/PasskeysView.js +16 -4
  66. package/dist/components/management/views/PasskeysView.js.map +1 -1
  67. package/dist/components/management/views/TwoFactorView.d.ts +1 -1
  68. package/dist/components/management/views/TwoFactorView.d.ts.map +1 -1
  69. package/dist/components/management/views/TwoFactorView.js +16 -4
  70. package/dist/components/management/views/TwoFactorView.js.map +1 -1
  71. package/dist/components/management/views/index.js +2 -2
  72. package/dist/components/management/views/index.js.map +1 -1
  73. package/dist/components/twoFactor/TwoFactorSetupView.d.ts +1 -1
  74. package/dist/components/twoFactor/TwoFactorSetupView.d.ts.map +1 -1
  75. package/dist/components/twoFactor/TwoFactorSetupView.js +240 -87
  76. package/dist/components/twoFactor/TwoFactorSetupView.js.map +1 -1
  77. package/dist/components/twoFactor/TwoFactorVerifyView.d.ts +1 -1
  78. package/dist/components/twoFactor/TwoFactorVerifyView.d.ts.map +1 -1
  79. package/dist/components/twoFactor/TwoFactorVerifyView.js +108 -45
  80. package/dist/components/twoFactor/TwoFactorVerifyView.js.map +1 -1
  81. package/dist/components/twoFactor/index.js +2 -2
  82. package/dist/components/twoFactor/index.js.map +1 -1
  83. package/dist/exports/client.d.ts +2356 -2
  84. package/dist/exports/client.d.ts.map +1 -1
  85. package/dist/exports/client.js +48 -8
  86. package/dist/exports/client.js.map +1 -1
  87. package/dist/exports/components.js +2 -2
  88. package/dist/exports/components.js.map +1 -1
  89. package/dist/exports/management.js +3 -3
  90. package/dist/exports/management.js.map +1 -1
  91. package/dist/exports/rsc.js +2 -2
  92. package/dist/exports/rsc.js.map +1 -1
  93. package/dist/generated-types.js +4 -2
  94. package/dist/generated-types.js.map +1 -1
  95. package/dist/index.js +6 -6
  96. package/dist/index.js.map +1 -1
  97. package/dist/plugin/index.d.ts +35 -2
  98. package/dist/plugin/index.d.ts.map +1 -1
  99. package/dist/plugin/index.js +198 -162
  100. package/dist/plugin/index.js.map +1 -1
  101. package/dist/scripts/generate-types.js +66 -50
  102. package/dist/scripts/generate-types.js.map +1 -1
  103. package/dist/types/apiKey.js +7 -2
  104. package/dist/types/apiKey.js.map +1 -1
  105. package/dist/types/betterAuth.js +23 -2
  106. package/dist/types/betterAuth.js.map +1 -1
  107. package/dist/utils/access.js +78 -81
  108. package/dist/utils/access.js.map +1 -1
  109. package/dist/utils/apiKeyAccess.js +65 -72
  110. package/dist/utils/apiKeyAccess.js.map +1 -1
  111. package/dist/utils/betterAuthDefaults.js +8 -8
  112. package/dist/utils/betterAuthDefaults.js.map +1 -1
  113. package/dist/utils/detectAuthConfig.js +8 -11
  114. package/dist/utils/detectAuthConfig.js.map +1 -1
  115. package/dist/utils/detectEnabledPlugins.js +6 -7
  116. package/dist/utils/detectEnabledPlugins.js.map +1 -1
  117. package/dist/utils/firstUserAdmin.js +18 -20
  118. package/dist/utils/firstUserAdmin.js.map +1 -1
  119. package/dist/utils/generateScopes.js +40 -41
  120. package/dist/utils/generateScopes.js.map +1 -1
  121. package/dist/utils/session.js +8 -9
  122. package/dist/utils/session.js.map +1 -1
  123. package/package.json +97 -26
  124. package/src/adapter/collections.ts +621 -0
  125. package/src/adapter/index.ts +712 -0
  126. package/src/components/BeforeLogin.tsx +39 -0
  127. package/src/components/LoginView.tsx +1516 -0
  128. package/src/components/LoginViewWrapper.tsx +35 -0
  129. package/src/components/LogoutButton.tsx +58 -0
  130. package/src/components/PasskeyRegisterButton.tsx +105 -0
  131. package/src/components/PasskeySignInButton.tsx +96 -0
  132. package/src/components/auth/ForgotPasswordView.tsx +274 -0
  133. package/src/components/auth/ResetPasswordView.tsx +331 -0
  134. package/src/components/auth/index.ts +8 -0
  135. package/src/components/management/ApiKeysManagementClient.tsx +988 -0
  136. package/src/components/management/PasskeysManagementClient.tsx +409 -0
  137. package/src/components/management/SecurityNavLinks.tsx +117 -0
  138. package/src/components/management/TwoFactorManagementClient.tsx +560 -0
  139. package/src/components/management/index.ts +20 -0
  140. package/src/components/management/views/ApiKeysView.tsx +57 -0
  141. package/src/components/management/views/PasskeysView.tsx +42 -0
  142. package/src/components/management/views/TwoFactorView.tsx +42 -0
  143. package/src/components/management/views/index.ts +10 -0
  144. package/src/components/twoFactor/TwoFactorSetupView.tsx +515 -0
  145. package/src/components/twoFactor/TwoFactorVerifyView.tsx +238 -0
  146. package/src/components/twoFactor/index.ts +8 -0
  147. package/src/exports/client.ts +77 -0
  148. package/src/exports/components.ts +30 -0
  149. package/src/exports/management.ts +25 -0
  150. package/src/exports/rsc.ts +11 -0
  151. package/src/generated-types.ts +269 -0
  152. package/src/index.ts +135 -0
  153. package/src/plugin/index.ts +834 -0
  154. package/src/scripts/generate-types.ts +269 -0
  155. package/src/types/apiKey.ts +63 -0
  156. package/src/types/betterAuth.ts +253 -0
  157. package/src/utils/access.ts +410 -0
  158. package/src/utils/apiKeyAccess.ts +443 -0
  159. package/src/utils/betterAuthDefaults.ts +102 -0
  160. package/src/utils/detectAuthConfig.ts +47 -0
  161. package/src/utils/detectEnabledPlugins.ts +69 -0
  162. package/src/utils/firstUserAdmin.ts +164 -0
  163. package/src/utils/generateScopes.ts +150 -0
  164. package/src/utils/session.ts +91 -0
@@ -5,8 +5,7 @@ import { useState, useEffect } from 'react';
5
5
  * Two-factor authentication setup component.
6
6
  * Displays QR code for TOTP apps and allows verification.
7
7
  * Uses Better Auth's twoFactor plugin endpoints.
8
- */
9
- export function TwoFactorSetupView({ logo, title = 'Set Up Two-Factor Authentication', afterSetupPath = '/admin', onSetupComplete, }) {
8
+ */ export function TwoFactorSetupView({ logo, title = 'Set Up Two-Factor Authentication', afterSetupPath = '/admin', onSetupComplete }) {
10
9
  const [step, setStep] = useState('loading');
11
10
  const [totpUri, setTotpUri] = useState(null);
12
11
  const [secret, setSecret] = useState(null);
@@ -14,14 +13,16 @@ export function TwoFactorSetupView({ logo, title = 'Set Up Two-Factor Authentica
14
13
  const [verificationCode, setVerificationCode] = useState('');
15
14
  const [error, setError] = useState(null);
16
15
  const [loading, setLoading] = useState(false);
17
- useEffect(() => {
16
+ useEffect(()=>{
18
17
  async function enableTwoFactor() {
19
18
  try {
20
19
  const response = await fetch('/api/auth/two-factor/enable', {
21
20
  method: 'POST',
22
- headers: { 'Content-Type': 'application/json' },
21
+ headers: {
22
+ 'Content-Type': 'application/json'
23
+ },
23
24
  credentials: 'include',
24
- body: JSON.stringify({}),
25
+ body: JSON.stringify({})
25
26
  });
26
27
  if (response.ok) {
27
28
  const data = await response.json();
@@ -29,14 +30,12 @@ export function TwoFactorSetupView({ logo, title = 'Set Up Two-Factor Authentica
29
30
  setSecret(data.secret);
30
31
  setBackupCodes(data.backupCodes || []);
31
32
  setStep('qr');
32
- }
33
- else {
34
- const data = await response.json().catch(() => ({}));
33
+ } else {
34
+ const data = await response.json().catch(()=>({}));
35
35
  setError(data.message || 'Failed to enable two-factor authentication.');
36
36
  setStep('qr');
37
37
  }
38
- }
39
- catch {
38
+ } catch {
40
39
  setError('An error occurred. Please try again.');
41
40
  setStep('qr');
42
41
  }
@@ -50,28 +49,28 @@ export function TwoFactorSetupView({ logo, title = 'Set Up Two-Factor Authentica
50
49
  try {
51
50
  const response = await fetch('/api/auth/two-factor/verify-totp', {
52
51
  method: 'POST',
53
- headers: { 'Content-Type': 'application/json' },
52
+ headers: {
53
+ 'Content-Type': 'application/json'
54
+ },
54
55
  credentials: 'include',
55
- body: JSON.stringify({ code: verificationCode }),
56
+ body: JSON.stringify({
57
+ code: verificationCode
58
+ })
56
59
  });
57
60
  if (response.ok) {
58
61
  if (backupCodes.length > 0) {
59
62
  setStep('backup');
60
- }
61
- else {
63
+ } else {
62
64
  setStep('complete');
63
65
  onSetupComplete?.();
64
66
  }
65
- }
66
- else {
67
- const data = await response.json().catch(() => ({}));
67
+ } else {
68
+ const data = await response.json().catch(()=>({}));
68
69
  setError(data.message || 'Invalid verification code. Please try again.');
69
70
  }
70
- }
71
- catch {
71
+ } catch {
72
72
  setError('An error occurred. Please try again.');
73
- }
74
- finally {
73
+ } finally{
75
74
  setLoading(false);
76
75
  }
77
76
  }
@@ -81,42 +80,72 @@ export function TwoFactorSetupView({ logo, title = 'Set Up Two-Factor Authentica
81
80
  }
82
81
  // Loading state
83
82
  if (step === 'loading') {
84
- return (_jsx("div", { style: {
83
+ return /*#__PURE__*/ _jsx("div", {
84
+ style: {
85
85
  minHeight: '100vh',
86
86
  display: 'flex',
87
87
  alignItems: 'center',
88
88
  justifyContent: 'center',
89
- background: 'var(--theme-bg)',
90
- }, children: _jsx("div", { style: { color: 'var(--theme-text)', opacity: 0.7 }, children: "Setting up two-factor authentication..." }) }));
89
+ background: 'var(--theme-bg)'
90
+ },
91
+ children: /*#__PURE__*/ _jsx("div", {
92
+ style: {
93
+ color: 'var(--theme-text)',
94
+ opacity: 0.7
95
+ },
96
+ children: "Setting up two-factor authentication..."
97
+ })
98
+ });
91
99
  }
92
100
  // Complete state
93
101
  if (step === 'complete') {
94
- return (_jsx("div", { style: {
102
+ return /*#__PURE__*/ _jsx("div", {
103
+ style: {
95
104
  minHeight: '100vh',
96
105
  display: 'flex',
97
106
  alignItems: 'center',
98
107
  justifyContent: 'center',
99
108
  background: 'var(--theme-bg)',
100
- padding: 'var(--base)',
101
- }, children: _jsxs("div", { style: {
109
+ padding: 'var(--base)'
110
+ },
111
+ children: /*#__PURE__*/ _jsxs("div", {
112
+ style: {
102
113
  background: 'var(--theme-elevation-50)',
103
114
  padding: 'calc(var(--base) * 2)',
104
115
  borderRadius: 'var(--style-radius-m)',
105
116
  boxShadow: '0 2px 20px rgba(0, 0, 0, 0.1)',
106
117
  width: '100%',
107
118
  maxWidth: '400px',
108
- textAlign: 'center',
109
- }, children: [logo && (_jsx("div", { style: { marginBottom: 'calc(var(--base) * 1.5)' }, children: logo })), _jsx("h1", { style: {
119
+ textAlign: 'center'
120
+ },
121
+ children: [
122
+ logo && /*#__PURE__*/ _jsx("div", {
123
+ style: {
124
+ marginBottom: 'calc(var(--base) * 1.5)'
125
+ },
126
+ children: logo
127
+ }),
128
+ /*#__PURE__*/ _jsx("h1", {
129
+ style: {
110
130
  color: 'var(--theme-success-500)',
111
131
  fontSize: 'var(--font-size-h3)',
112
132
  fontWeight: 600,
113
- margin: '0 0 var(--base) 0',
114
- }, children: "Two-Factor Enabled!" }), _jsx("p", { style: {
133
+ margin: '0 0 var(--base) 0'
134
+ },
135
+ children: "Two-Factor Enabled!"
136
+ }),
137
+ /*#__PURE__*/ _jsx("p", {
138
+ style: {
115
139
  color: 'var(--theme-text)',
116
140
  opacity: 0.8,
117
141
  marginBottom: 'calc(var(--base) * 1.5)',
118
- fontSize: 'var(--font-size-small)',
119
- }, children: "Your account is now protected with two-factor authentication." }), _jsx("a", { href: afterSetupPath, style: {
142
+ fontSize: 'var(--font-size-small)'
143
+ },
144
+ children: "Your account is now protected with two-factor authentication."
145
+ }),
146
+ /*#__PURE__*/ _jsx("a", {
147
+ href: afterSetupPath,
148
+ style: {
120
149
  display: 'inline-block',
121
150
  padding: 'calc(var(--base) * 0.75) calc(var(--base) * 1.5)',
122
151
  background: 'var(--theme-elevation-800)',
@@ -125,57 +154,91 @@ export function TwoFactorSetupView({ logo, title = 'Set Up Two-Factor Authentica
125
154
  color: 'var(--theme-elevation-50)',
126
155
  fontSize: 'var(--font-size-base)',
127
156
  fontWeight: 500,
128
- textDecoration: 'none',
129
- }, children: "Continue" })] }) }));
157
+ textDecoration: 'none'
158
+ },
159
+ children: "Continue"
160
+ })
161
+ ]
162
+ })
163
+ });
130
164
  }
131
165
  // Backup codes state
132
166
  if (step === 'backup') {
133
- return (_jsx("div", { style: {
167
+ return /*#__PURE__*/ _jsx("div", {
168
+ style: {
134
169
  minHeight: '100vh',
135
170
  display: 'flex',
136
171
  alignItems: 'center',
137
172
  justifyContent: 'center',
138
173
  background: 'var(--theme-bg)',
139
- padding: 'var(--base)',
140
- }, children: _jsxs("div", { style: {
174
+ padding: 'var(--base)'
175
+ },
176
+ children: /*#__PURE__*/ _jsxs("div", {
177
+ style: {
141
178
  background: 'var(--theme-elevation-50)',
142
179
  padding: 'calc(var(--base) * 2)',
143
180
  borderRadius: 'var(--style-radius-m)',
144
181
  boxShadow: '0 2px 20px rgba(0, 0, 0, 0.1)',
145
182
  width: '100%',
146
- maxWidth: '450px',
147
- }, children: [logo && (_jsx("div", { style: {
183
+ maxWidth: '450px'
184
+ },
185
+ children: [
186
+ logo && /*#__PURE__*/ _jsx("div", {
187
+ style: {
148
188
  textAlign: 'center',
149
- marginBottom: 'calc(var(--base) * 1.5)',
150
- }, children: logo })), _jsx("h1", { style: {
189
+ marginBottom: 'calc(var(--base) * 1.5)'
190
+ },
191
+ children: logo
192
+ }),
193
+ /*#__PURE__*/ _jsx("h1", {
194
+ style: {
151
195
  color: 'var(--theme-text)',
152
196
  fontSize: 'var(--font-size-h3)',
153
197
  fontWeight: 600,
154
198
  margin: '0 0 calc(var(--base) * 0.5) 0',
155
- textAlign: 'center',
156
- }, children: "Save Your Backup Codes" }), _jsx("p", { style: {
199
+ textAlign: 'center'
200
+ },
201
+ children: "Save Your Backup Codes"
202
+ }),
203
+ /*#__PURE__*/ _jsx("p", {
204
+ style: {
157
205
  color: 'var(--theme-text)',
158
206
  opacity: 0.7,
159
207
  fontSize: 'var(--font-size-small)',
160
208
  textAlign: 'center',
161
- marginBottom: 'calc(var(--base) * 1.5)',
162
- }, children: "Store these codes safely. You can use them to access your account if you lose your authenticator." }), _jsx("div", { style: {
209
+ marginBottom: 'calc(var(--base) * 1.5)'
210
+ },
211
+ children: "Store these codes safely. You can use them to access your account if you lose your authenticator."
212
+ }),
213
+ /*#__PURE__*/ _jsx("div", {
214
+ style: {
163
215
  background: 'var(--theme-elevation-100)',
164
216
  padding: 'var(--base)',
165
217
  borderRadius: 'var(--style-radius-s)',
166
218
  marginBottom: 'calc(var(--base) * 1.5)',
167
219
  fontFamily: 'monospace',
168
- fontSize: 'var(--font-size-small)',
169
- }, children: _jsx("div", { style: {
220
+ fontSize: 'var(--font-size-small)'
221
+ },
222
+ children: /*#__PURE__*/ _jsx("div", {
223
+ style: {
170
224
  display: 'grid',
171
225
  gridTemplateColumns: 'repeat(2, 1fr)',
172
- gap: 'calc(var(--base) * 0.5)',
173
- }, children: backupCodes.map((code, index) => (_jsx("div", { style: {
174
- color: 'var(--theme-text)',
175
- padding: 'calc(var(--base) * 0.25)',
176
- }, children: code }, index))) }) }), _jsx("button", { onClick: () => {
226
+ gap: 'calc(var(--base) * 0.5)'
227
+ },
228
+ children: backupCodes.map((code, index)=>/*#__PURE__*/ _jsx("div", {
229
+ style: {
230
+ color: 'var(--theme-text)',
231
+ padding: 'calc(var(--base) * 0.25)'
232
+ },
233
+ children: code
234
+ }, index))
235
+ })
236
+ }),
237
+ /*#__PURE__*/ _jsx("button", {
238
+ onClick: ()=>{
177
239
  navigator.clipboard.writeText(backupCodes.join('\n'));
178
- }, style: {
240
+ },
241
+ style: {
179
242
  width: '100%',
180
243
  padding: 'calc(var(--base) * 0.5)',
181
244
  background: 'var(--theme-elevation-150)',
@@ -184,8 +247,13 @@ export function TwoFactorSetupView({ logo, title = 'Set Up Two-Factor Authentica
184
247
  color: 'var(--theme-text)',
185
248
  fontSize: 'var(--font-size-small)',
186
249
  cursor: 'pointer',
187
- marginBottom: 'var(--base)',
188
- }, children: "Copy to Clipboard" }), _jsx("button", { onClick: handleBackupContinue, style: {
250
+ marginBottom: 'var(--base)'
251
+ },
252
+ children: "Copy to Clipboard"
253
+ }),
254
+ /*#__PURE__*/ _jsx("button", {
255
+ onClick: handleBackupContinue,
256
+ style: {
189
257
  width: '100%',
190
258
  padding: 'calc(var(--base) * 0.75)',
191
259
  background: 'var(--theme-elevation-800)',
@@ -194,56 +262,94 @@ export function TwoFactorSetupView({ logo, title = 'Set Up Two-Factor Authentica
194
262
  color: 'var(--theme-elevation-50)',
195
263
  fontSize: 'var(--font-size-base)',
196
264
  fontWeight: 500,
197
- cursor: 'pointer',
198
- }, children: "I've Saved My Codes" })] }) }));
265
+ cursor: 'pointer'
266
+ },
267
+ children: "I've Saved My Codes"
268
+ })
269
+ ]
270
+ })
271
+ });
199
272
  }
200
273
  // QR code and verify state
201
- return (_jsx("div", { style: {
274
+ return /*#__PURE__*/ _jsx("div", {
275
+ style: {
202
276
  minHeight: '100vh',
203
277
  display: 'flex',
204
278
  alignItems: 'center',
205
279
  justifyContent: 'center',
206
280
  background: 'var(--theme-bg)',
207
- padding: 'var(--base)',
208
- }, children: _jsxs("div", { style: {
281
+ padding: 'var(--base)'
282
+ },
283
+ children: /*#__PURE__*/ _jsxs("div", {
284
+ style: {
209
285
  background: 'var(--theme-elevation-50)',
210
286
  padding: 'calc(var(--base) * 2)',
211
287
  borderRadius: 'var(--style-radius-m)',
212
288
  boxShadow: '0 2px 20px rgba(0, 0, 0, 0.1)',
213
289
  width: '100%',
214
- maxWidth: '400px',
215
- }, children: [logo && (_jsx("div", { style: {
290
+ maxWidth: '400px'
291
+ },
292
+ children: [
293
+ logo && /*#__PURE__*/ _jsx("div", {
294
+ style: {
216
295
  textAlign: 'center',
217
- marginBottom: 'calc(var(--base) * 1.5)',
218
- }, children: logo })), _jsx("h1", { style: {
296
+ marginBottom: 'calc(var(--base) * 1.5)'
297
+ },
298
+ children: logo
299
+ }),
300
+ /*#__PURE__*/ _jsx("h1", {
301
+ style: {
219
302
  color: 'var(--theme-text)',
220
303
  fontSize: 'var(--font-size-h3)',
221
304
  fontWeight: 600,
222
305
  margin: '0 0 calc(var(--base) * 0.5) 0',
223
- textAlign: 'center',
224
- }, children: title }), _jsx("p", { style: {
306
+ textAlign: 'center'
307
+ },
308
+ children: title
309
+ }),
310
+ /*#__PURE__*/ _jsx("p", {
311
+ style: {
225
312
  color: 'var(--theme-text)',
226
313
  opacity: 0.7,
227
314
  fontSize: 'var(--font-size-small)',
228
315
  textAlign: 'center',
229
- marginBottom: 'calc(var(--base) * 1.5)',
230
- }, children: "Scan the QR code with your authenticator app, then enter the code below." }), totpUri && (_jsx("div", { style: {
316
+ marginBottom: 'calc(var(--base) * 1.5)'
317
+ },
318
+ children: "Scan the QR code with your authenticator app, then enter the code below."
319
+ }),
320
+ totpUri && /*#__PURE__*/ _jsx("div", {
321
+ style: {
231
322
  textAlign: 'center',
232
- marginBottom: 'calc(var(--base) * 1.5)',
233
- }, children: _jsx("img", { src: `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(totpUri)}`, alt: "QR Code for authenticator app", style: {
323
+ marginBottom: 'calc(var(--base) * 1.5)'
324
+ },
325
+ children: /*#__PURE__*/ _jsx("img", {
326
+ src: `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(totpUri)}`,
327
+ alt: "QR Code for authenticator app",
328
+ style: {
234
329
  width: '200px',
235
330
  height: '200px',
236
331
  border: '1px solid var(--theme-elevation-150)',
237
- borderRadius: 'var(--style-radius-s)',
238
- } }) })), secret && (_jsxs("div", { style: {
332
+ borderRadius: 'var(--style-radius-s)'
333
+ }
334
+ })
335
+ }),
336
+ secret && /*#__PURE__*/ _jsxs("div", {
337
+ style: {
239
338
  marginBottom: 'calc(var(--base) * 1.5)',
240
- textAlign: 'center',
241
- }, children: [_jsx("p", { style: {
339
+ textAlign: 'center'
340
+ },
341
+ children: [
342
+ /*#__PURE__*/ _jsx("p", {
343
+ style: {
242
344
  color: 'var(--theme-text)',
243
345
  opacity: 0.7,
244
346
  fontSize: 'var(--font-size-small)',
245
- marginBottom: 'calc(var(--base) * 0.5)',
246
- }, children: "Or enter this code manually:" }), _jsx("code", { style: {
347
+ marginBottom: 'calc(var(--base) * 0.5)'
348
+ },
349
+ children: "Or enter this code manually:"
350
+ }),
351
+ /*#__PURE__*/ _jsx("code", {
352
+ style: {
247
353
  display: 'inline-block',
248
354
  padding: 'calc(var(--base) * 0.5)',
249
355
  background: 'var(--theme-elevation-100)',
@@ -251,14 +357,42 @@ export function TwoFactorSetupView({ logo, title = 'Set Up Two-Factor Authentica
251
357
  fontFamily: 'monospace',
252
358
  fontSize: 'var(--font-size-small)',
253
359
  color: 'var(--theme-text)',
254
- wordBreak: 'break-all',
255
- }, children: secret })] })), _jsxs("form", { onSubmit: handleVerify, children: [_jsxs("div", { style: { marginBottom: 'calc(var(--base) * 1.5)' }, children: [_jsx("label", { htmlFor: "code", style: {
360
+ wordBreak: 'break-all'
361
+ },
362
+ children: secret
363
+ })
364
+ ]
365
+ }),
366
+ /*#__PURE__*/ _jsxs("form", {
367
+ onSubmit: handleVerify,
368
+ children: [
369
+ /*#__PURE__*/ _jsxs("div", {
370
+ style: {
371
+ marginBottom: 'calc(var(--base) * 1.5)'
372
+ },
373
+ children: [
374
+ /*#__PURE__*/ _jsx("label", {
375
+ htmlFor: "code",
376
+ style: {
256
377
  display: 'block',
257
378
  color: 'var(--theme-text)',
258
379
  marginBottom: 'calc(var(--base) * 0.5)',
259
380
  fontSize: 'var(--font-size-small)',
260
- fontWeight: 500,
261
- }, children: "Verification Code" }), _jsx("input", { id: "code", type: "text", inputMode: "numeric", pattern: "[0-9]*", autoComplete: "one-time-code", value: verificationCode, onChange: (e) => setVerificationCode(e.target.value.replace(/\D/g, '').slice(0, 6)), required: true, placeholder: "000000", style: {
381
+ fontWeight: 500
382
+ },
383
+ children: "Verification Code"
384
+ }),
385
+ /*#__PURE__*/ _jsx("input", {
386
+ id: "code",
387
+ type: "text",
388
+ inputMode: "numeric",
389
+ pattern: "[0-9]*",
390
+ autoComplete: "one-time-code",
391
+ value: verificationCode,
392
+ onChange: (e)=>setVerificationCode(e.target.value.replace(/\D/g, '').slice(0, 6)),
393
+ required: true,
394
+ placeholder: "000000",
395
+ style: {
262
396
  width: '100%',
263
397
  padding: 'calc(var(--base) * 0.75)',
264
398
  background: 'var(--theme-input-bg)',
@@ -270,16 +404,27 @@ export function TwoFactorSetupView({ logo, title = 'Set Up Two-Factor Authentica
270
404
  textAlign: 'center',
271
405
  letterSpacing: '0.5em',
272
406
  outline: 'none',
273
- boxSizing: 'border-box',
274
- } })] }), error && (_jsx("div", { style: {
407
+ boxSizing: 'border-box'
408
+ }
409
+ })
410
+ ]
411
+ }),
412
+ error && /*#__PURE__*/ _jsx("div", {
413
+ style: {
275
414
  color: 'var(--theme-error-500)',
276
415
  marginBottom: 'var(--base)',
277
416
  fontSize: 'var(--font-size-small)',
278
417
  padding: 'calc(var(--base) * 0.5)',
279
418
  background: 'var(--theme-error-50)',
280
419
  borderRadius: 'var(--style-radius-s)',
281
- border: '1px solid var(--theme-error-200)',
282
- }, children: error })), _jsx("button", { type: "submit", disabled: loading || verificationCode.length !== 6, style: {
420
+ border: '1px solid var(--theme-error-200)'
421
+ },
422
+ children: error
423
+ }),
424
+ /*#__PURE__*/ _jsx("button", {
425
+ type: "submit",
426
+ disabled: loading || verificationCode.length !== 6,
427
+ style: {
283
428
  width: '100%',
284
429
  padding: 'calc(var(--base) * 0.75)',
285
430
  background: 'var(--theme-elevation-800)',
@@ -290,8 +435,16 @@ export function TwoFactorSetupView({ logo, title = 'Set Up Two-Factor Authentica
290
435
  fontWeight: 500,
291
436
  cursor: loading || verificationCode.length !== 6 ? 'not-allowed' : 'pointer',
292
437
  opacity: loading || verificationCode.length !== 6 ? 0.7 : 1,
293
- transition: 'opacity 150ms ease',
294
- }, children: loading ? 'Verifying...' : 'Verify and Enable' })] })] }) }));
438
+ transition: 'opacity 150ms ease'
439
+ },
440
+ children: loading ? 'Verifying...' : 'Verify and Enable'
441
+ })
442
+ ]
443
+ })
444
+ ]
445
+ })
446
+ });
295
447
  }
296
448
  export default TwoFactorSetupView;
449
+
297
450
  //# sourceMappingURL=TwoFactorSetupView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TwoFactorSetupView.js","sourceRoot":"","sources":["../../../src/components/twoFactor/TwoFactorSetupView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/twoFactor/TwoFactorSetupView.tsx"],"sourcesContent":["'use client'\n\nimport { useState, useEffect, type FormEvent } from 'react'\n\nexport type TwoFactorSetupViewProps = {\n /** Custom logo element */\n logo?: React.ReactNode\n /** Page title. Default: 'Set Up Two-Factor Authentication' */\n title?: string\n /** Path to redirect after successful setup. Default: '/admin' */\n afterSetupPath?: string\n /** Callback after successful setup */\n onSetupComplete?: () => void\n}\n\n/**\n * Two-factor authentication setup component.\n * Displays QR code for TOTP apps and allows verification.\n * Uses Better Auth's twoFactor plugin endpoints.\n */\nexport function TwoFactorSetupView({\n logo,\n title = 'Set Up Two-Factor Authentication',\n afterSetupPath = '/admin',\n onSetupComplete,\n}: TwoFactorSetupViewProps) {\n const [step, setStep] = useState<'loading' | 'qr' | 'verify' | 'backup' | 'complete'>('loading')\n const [totpUri, setTotpUri] = useState<string | null>(null)\n const [secret, setSecret] = useState<string | null>(null)\n const [backupCodes, setBackupCodes] = useState<string[]>([])\n const [verificationCode, setVerificationCode] = useState('')\n const [error, setError] = useState<string | null>(null)\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n async function enableTwoFactor() {\n try {\n const response = await fetch('/api/auth/two-factor/enable', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n credentials: 'include',\n body: JSON.stringify({}),\n })\n\n if (response.ok) {\n const data = await response.json()\n setTotpUri(data.totpURI)\n setSecret(data.secret)\n setBackupCodes(data.backupCodes || [])\n setStep('qr')\n } else {\n const data = await response.json().catch(() => ({}))\n setError(data.message || 'Failed to enable two-factor authentication.')\n setStep('qr')\n }\n } catch {\n setError('An error occurred. Please try again.')\n setStep('qr')\n }\n }\n enableTwoFactor()\n }, [])\n\n async function handleVerify(e: FormEvent) {\n e.preventDefault()\n setLoading(true)\n setError(null)\n\n try {\n const response = await fetch('/api/auth/two-factor/verify-totp', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n credentials: 'include',\n body: JSON.stringify({ code: verificationCode }),\n })\n\n if (response.ok) {\n if (backupCodes.length > 0) {\n setStep('backup')\n } else {\n setStep('complete')\n onSetupComplete?.()\n }\n } else {\n const data = await response.json().catch(() => ({}))\n setError(data.message || 'Invalid verification code. Please try again.')\n }\n } catch {\n setError('An error occurred. Please try again.')\n } finally {\n setLoading(false)\n }\n }\n\n function handleBackupContinue() {\n setStep('complete')\n onSetupComplete?.()\n }\n\n // Loading state\n if (step === 'loading') {\n return (\n <div\n style={{\n minHeight: '100vh',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'var(--theme-bg)',\n }}\n >\n <div style={{ color: 'var(--theme-text)', opacity: 0.7 }}>\n Setting up two-factor authentication...\n </div>\n </div>\n )\n }\n\n // Complete state\n if (step === 'complete') {\n return (\n <div\n style={{\n minHeight: '100vh',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'var(--theme-bg)',\n padding: 'var(--base)',\n }}\n >\n <div\n style={{\n background: 'var(--theme-elevation-50)',\n padding: 'calc(var(--base) * 2)',\n borderRadius: 'var(--style-radius-m)',\n boxShadow: '0 2px 20px rgba(0, 0, 0, 0.1)',\n width: '100%',\n maxWidth: '400px',\n textAlign: 'center',\n }}\n >\n {logo && (\n <div style={{ marginBottom: 'calc(var(--base) * 1.5)' }}>\n {logo}\n </div>\n )}\n\n <h1\n style={{\n color: 'var(--theme-success-500)',\n fontSize: 'var(--font-size-h3)',\n fontWeight: 600,\n margin: '0 0 var(--base) 0',\n }}\n >\n Two-Factor Enabled!\n </h1>\n\n <p\n style={{\n color: 'var(--theme-text)',\n opacity: 0.8,\n marginBottom: 'calc(var(--base) * 1.5)',\n fontSize: 'var(--font-size-small)',\n }}\n >\n Your account is now protected with two-factor authentication.\n </p>\n\n <a\n href={afterSetupPath}\n style={{\n display: 'inline-block',\n padding: 'calc(var(--base) * 0.75) calc(var(--base) * 1.5)',\n background: 'var(--theme-elevation-800)',\n border: 'none',\n borderRadius: 'var(--style-radius-s)',\n color: 'var(--theme-elevation-50)',\n fontSize: 'var(--font-size-base)',\n fontWeight: 500,\n textDecoration: 'none',\n }}\n >\n Continue\n </a>\n </div>\n </div>\n )\n }\n\n // Backup codes state\n if (step === 'backup') {\n return (\n <div\n style={{\n minHeight: '100vh',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'var(--theme-bg)',\n padding: 'var(--base)',\n }}\n >\n <div\n style={{\n background: 'var(--theme-elevation-50)',\n padding: 'calc(var(--base) * 2)',\n borderRadius: 'var(--style-radius-m)',\n boxShadow: '0 2px 20px rgba(0, 0, 0, 0.1)',\n width: '100%',\n maxWidth: '450px',\n }}\n >\n {logo && (\n <div\n style={{\n textAlign: 'center',\n marginBottom: 'calc(var(--base) * 1.5)',\n }}\n >\n {logo}\n </div>\n )}\n\n <h1\n style={{\n color: 'var(--theme-text)',\n fontSize: 'var(--font-size-h3)',\n fontWeight: 600,\n margin: '0 0 calc(var(--base) * 0.5) 0',\n textAlign: 'center',\n }}\n >\n Save Your Backup Codes\n </h1>\n\n <p\n style={{\n color: 'var(--theme-text)',\n opacity: 0.7,\n fontSize: 'var(--font-size-small)',\n textAlign: 'center',\n marginBottom: 'calc(var(--base) * 1.5)',\n }}\n >\n Store these codes safely. You can use them to access your account if you lose your authenticator.\n </p>\n\n <div\n style={{\n background: 'var(--theme-elevation-100)',\n padding: 'var(--base)',\n borderRadius: 'var(--style-radius-s)',\n marginBottom: 'calc(var(--base) * 1.5)',\n fontFamily: 'monospace',\n fontSize: 'var(--font-size-small)',\n }}\n >\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(2, 1fr)',\n gap: 'calc(var(--base) * 0.5)',\n }}\n >\n {backupCodes.map((code, index) => (\n <div\n key={index}\n style={{\n color: 'var(--theme-text)',\n padding: 'calc(var(--base) * 0.25)',\n }}\n >\n {code}\n </div>\n ))}\n </div>\n </div>\n\n <button\n onClick={() => {\n navigator.clipboard.writeText(backupCodes.join('\\n'))\n }}\n style={{\n width: '100%',\n padding: 'calc(var(--base) * 0.5)',\n background: 'var(--theme-elevation-150)',\n border: 'none',\n borderRadius: 'var(--style-radius-s)',\n color: 'var(--theme-text)',\n fontSize: 'var(--font-size-small)',\n cursor: 'pointer',\n marginBottom: 'var(--base)',\n }}\n >\n Copy to Clipboard\n </button>\n\n <button\n onClick={handleBackupContinue}\n style={{\n width: '100%',\n padding: 'calc(var(--base) * 0.75)',\n background: 'var(--theme-elevation-800)',\n border: 'none',\n borderRadius: 'var(--style-radius-s)',\n color: 'var(--theme-elevation-50)',\n fontSize: 'var(--font-size-base)',\n fontWeight: 500,\n cursor: 'pointer',\n }}\n >\n I've Saved My Codes\n </button>\n </div>\n </div>\n )\n }\n\n // QR code and verify state\n return (\n <div\n style={{\n minHeight: '100vh',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'var(--theme-bg)',\n padding: 'var(--base)',\n }}\n >\n <div\n style={{\n background: 'var(--theme-elevation-50)',\n padding: 'calc(var(--base) * 2)',\n borderRadius: 'var(--style-radius-m)',\n boxShadow: '0 2px 20px rgba(0, 0, 0, 0.1)',\n width: '100%',\n maxWidth: '400px',\n }}\n >\n {logo && (\n <div\n style={{\n textAlign: 'center',\n marginBottom: 'calc(var(--base) * 1.5)',\n }}\n >\n {logo}\n </div>\n )}\n\n <h1\n style={{\n color: 'var(--theme-text)',\n fontSize: 'var(--font-size-h3)',\n fontWeight: 600,\n margin: '0 0 calc(var(--base) * 0.5) 0',\n textAlign: 'center',\n }}\n >\n {title}\n </h1>\n\n <p\n style={{\n color: 'var(--theme-text)',\n opacity: 0.7,\n fontSize: 'var(--font-size-small)',\n textAlign: 'center',\n marginBottom: 'calc(var(--base) * 1.5)',\n }}\n >\n Scan the QR code with your authenticator app, then enter the code below.\n </p>\n\n {totpUri && (\n <div\n style={{\n textAlign: 'center',\n marginBottom: 'calc(var(--base) * 1.5)',\n }}\n >\n {/* QR code using QRServer.com API */}\n <img\n src={`https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(totpUri)}`}\n alt=\"QR Code for authenticator app\"\n style={{\n width: '200px',\n height: '200px',\n border: '1px solid var(--theme-elevation-150)',\n borderRadius: 'var(--style-radius-s)',\n }}\n />\n </div>\n )}\n\n {secret && (\n <div\n style={{\n marginBottom: 'calc(var(--base) * 1.5)',\n textAlign: 'center',\n }}\n >\n <p\n style={{\n color: 'var(--theme-text)',\n opacity: 0.7,\n fontSize: 'var(--font-size-small)',\n marginBottom: 'calc(var(--base) * 0.5)',\n }}\n >\n Or enter this code manually:\n </p>\n <code\n style={{\n display: 'inline-block',\n padding: 'calc(var(--base) * 0.5)',\n background: 'var(--theme-elevation-100)',\n borderRadius: 'var(--style-radius-s)',\n fontFamily: 'monospace',\n fontSize: 'var(--font-size-small)',\n color: 'var(--theme-text)',\n wordBreak: 'break-all',\n }}\n >\n {secret}\n </code>\n </div>\n )}\n\n <form onSubmit={handleVerify}>\n <div style={{ marginBottom: 'calc(var(--base) * 1.5)' }}>\n <label\n htmlFor=\"code\"\n style={{\n display: 'block',\n color: 'var(--theme-text)',\n marginBottom: 'calc(var(--base) * 0.5)',\n fontSize: 'var(--font-size-small)',\n fontWeight: 500,\n }}\n >\n Verification Code\n </label>\n <input\n id=\"code\"\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n autoComplete=\"one-time-code\"\n value={verificationCode}\n onChange={(e) => setVerificationCode(e.target.value.replace(/\\D/g, '').slice(0, 6))}\n required\n placeholder=\"000000\"\n style={{\n width: '100%',\n padding: 'calc(var(--base) * 0.75)',\n background: 'var(--theme-input-bg)',\n border: '1px solid var(--theme-elevation-150)',\n borderRadius: 'var(--style-radius-s)',\n color: 'var(--theme-text)',\n fontSize: 'var(--font-size-h4)',\n fontFamily: 'monospace',\n textAlign: 'center',\n letterSpacing: '0.5em',\n outline: 'none',\n boxSizing: 'border-box',\n }}\n />\n </div>\n\n {error && (\n <div\n style={{\n color: 'var(--theme-error-500)',\n marginBottom: 'var(--base)',\n fontSize: 'var(--font-size-small)',\n padding: 'calc(var(--base) * 0.5)',\n background: 'var(--theme-error-50)',\n borderRadius: 'var(--style-radius-s)',\n border: '1px solid var(--theme-error-200)',\n }}\n >\n {error}\n </div>\n )}\n\n <button\n type=\"submit\"\n disabled={loading || verificationCode.length !== 6}\n style={{\n width: '100%',\n padding: 'calc(var(--base) * 0.75)',\n background: 'var(--theme-elevation-800)',\n border: 'none',\n borderRadius: 'var(--style-radius-s)',\n color: 'var(--theme-elevation-50)',\n fontSize: 'var(--font-size-base)',\n fontWeight: 500,\n cursor: loading || verificationCode.length !== 6 ? 'not-allowed' : 'pointer',\n opacity: loading || verificationCode.length !== 6 ? 0.7 : 1,\n transition: 'opacity 150ms ease',\n }}\n >\n {loading ? 'Verifying...' : 'Verify and Enable'}\n </button>\n </form>\n </div>\n </div>\n )\n}\n\nexport default TwoFactorSetupView\n"],"names":["useState","useEffect","TwoFactorSetupView","logo","title","afterSetupPath","onSetupComplete","step","setStep","totpUri","setTotpUri","secret","setSecret","backupCodes","setBackupCodes","verificationCode","setVerificationCode","error","setError","loading","setLoading","enableTwoFactor","response","fetch","method","headers","credentials","body","JSON","stringify","ok","data","json","totpURI","catch","message","handleVerify","e","preventDefault","code","length","handleBackupContinue","div","style","minHeight","display","alignItems","justifyContent","background","color","opacity","padding","borderRadius","boxShadow","width","maxWidth","textAlign","marginBottom","h1","fontSize","fontWeight","margin","p","a","href","border","textDecoration","fontFamily","gridTemplateColumns","gap","map","index","button","onClick","navigator","clipboard","writeText","join","cursor","img","src","encodeURIComponent","alt","height","wordBreak","form","onSubmit","label","htmlFor","input","id","type","inputMode","pattern","autoComplete","value","onChange","target","replace","slice","required","placeholder","letterSpacing","outline","boxSizing","disabled","transition"],"mappings":"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"}
@@ -13,6 +13,6 @@ export type TwoFactorVerifyViewProps = {
13
13
  * Used during login flow when 2FA is enabled on the account.
14
14
  * Uses Better Auth's twoFactor plugin endpoints.
15
15
  */
16
- export declare function TwoFactorVerifyView({ logo, title, afterVerifyPath, onVerifyComplete, }: TwoFactorVerifyViewProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function TwoFactorVerifyView({ logo, title, afterVerifyPath, onVerifyComplete, }: TwoFactorVerifyViewProps): import("react").JSX.Element;
17
17
  export default TwoFactorVerifyView;
18
18
  //# sourceMappingURL=TwoFactorVerifyView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TwoFactorVerifyView.d.ts","sourceRoot":"","sources":["../../../src/components/twoFactor/TwoFactorVerifyView.tsx"],"names":[],"mappings":"AAKA,MAAM,MAAM,wBAAwB,GAAG;IACrC,0BAA0B;IAC1B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;CAC9B,CAAA;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,KAAmC,EACnC,eAA0B,EAC1B,gBAAgB,GACjB,EAAE,wBAAwB,2CAiN1B;AAED,eAAe,mBAAmB,CAAA"}
1
+ {"version":3,"file":"TwoFactorVerifyView.d.ts","sourceRoot":"","sources":["../../../src/components/twoFactor/TwoFactorVerifyView.tsx"],"names":[],"mappings":"AAKA,MAAM,MAAM,wBAAwB,GAAG;IACrC,0BAA0B;IAC1B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;CAC9B,CAAA;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,KAAmC,EACnC,eAA0B,EAC1B,gBAAgB,GACjB,EAAE,wBAAwB,+BAiN1B;AAED,eAAe,mBAAmB,CAAA"}