@abstraxn/signer-react 1.0.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 (178) hide show
  1. package/README.md +114 -0
  2. package/dist/src/AbstraxnProvider.d.ts +9 -0
  3. package/dist/src/AbstraxnProvider.js +21 -0
  4. package/dist/src/AbstraxnProvider.js.map +1 -0
  5. package/dist/src/ConnectButton.css +217 -0
  6. package/dist/src/ConnectButton.d.ts +71 -0
  7. package/dist/src/ConnectButton.js +102 -0
  8. package/dist/src/ConnectButton.js.map +1 -0
  9. package/dist/src/ExternalWalletButtons.css +319 -0
  10. package/dist/src/ExternalWalletButtons.d.ts +56 -0
  11. package/dist/src/ExternalWalletButtons.js +272 -0
  12. package/dist/src/ExternalWalletButtons.js.map +1 -0
  13. package/dist/src/OnboardingUI.d.ts +63 -0
  14. package/dist/src/OnboardingUI.js +66 -0
  15. package/dist/src/OnboardingUI.js.map +1 -0
  16. package/dist/src/WalletModal.css +2319 -0
  17. package/dist/src/WalletModal.d.ts +7 -0
  18. package/dist/src/WalletModal.js +322 -0
  19. package/dist/src/WalletModal.js.map +1 -0
  20. package/dist/src/chains.d.ts +56 -0
  21. package/dist/src/chains.js +291 -0
  22. package/dist/src/chains.js.map +1 -0
  23. package/dist/src/components/AbstraxnProvider/AbstraxnProvider.d.ts +12 -0
  24. package/dist/src/components/AbstraxnProvider/AbstraxnProvider.js +146 -0
  25. package/dist/src/components/AbstraxnProvider/AbstraxnProvider.js.map +1 -0
  26. package/dist/src/components/AbstraxnProvider/AbstraxnProviderInner.d.ts +25 -0
  27. package/dist/src/components/AbstraxnProvider/AbstraxnProviderInner.js +3086 -0
  28. package/dist/src/components/AbstraxnProvider/AbstraxnProviderInner.js.map +1 -0
  29. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithWagmi.d.ts +8 -0
  30. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithWagmi.js +46 -0
  31. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithWagmi.js.map +1 -0
  32. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithoutWagmi.d.ts +8 -0
  33. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithoutWagmi.js +12 -0
  34. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithoutWagmi.js.map +1 -0
  35. package/dist/src/components/AbstraxnProvider/context.d.ts +2 -0
  36. package/dist/src/components/AbstraxnProvider/context.js +6 -0
  37. package/dist/src/components/AbstraxnProvider/context.js.map +1 -0
  38. package/dist/src/components/AbstraxnProvider/index.d.ts +6 -0
  39. package/dist/src/components/AbstraxnProvider/index.js +7 -0
  40. package/dist/src/components/AbstraxnProvider/index.js.map +1 -0
  41. package/dist/src/components/AbstraxnProvider/useAbstraxnProviderBase.d.ts +30 -0
  42. package/dist/src/components/AbstraxnProvider/useAbstraxnProviderBase.js +49 -0
  43. package/dist/src/components/AbstraxnProvider/useAbstraxnProviderBase.js.map +1 -0
  44. package/dist/src/components/AbstraxnProvider/useAbstraxnWallet.d.ts +2 -0
  45. package/dist/src/components/AbstraxnProvider/useAbstraxnWallet.js +13 -0
  46. package/dist/src/components/AbstraxnProvider/useAbstraxnWallet.js.map +1 -0
  47. package/dist/src/components/AbstraxnProvider/useOAuthCallbacks.d.ts +22 -0
  48. package/dist/src/components/AbstraxnProvider/useOAuthCallbacks.js +242 -0
  49. package/dist/src/components/AbstraxnProvider/useOAuthCallbacks.js.map +1 -0
  50. package/dist/src/components/AbstraxnProvider/useWalletInitialization.d.ts +25 -0
  51. package/dist/src/components/AbstraxnProvider/useWalletInitialization.js +539 -0
  52. package/dist/src/components/AbstraxnProvider/useWalletInitialization.js.map +1 -0
  53. package/dist/src/components/AbstraxnProvider/utils.d.ts +41 -0
  54. package/dist/src/components/AbstraxnProvider/utils.js +139 -0
  55. package/dist/src/components/AbstraxnProvider/utils.js.map +1 -0
  56. package/dist/src/components/OnboardingUI/OnboardingUI.css +1062 -0
  57. package/dist/src/components/OnboardingUI/OnboardingUIReact.d.ts +15 -0
  58. package/dist/src/components/OnboardingUI/OnboardingUIReact.js +318 -0
  59. package/dist/src/components/OnboardingUI/OnboardingUIReact.js.map +1 -0
  60. package/dist/src/components/OnboardingUI/OnboardingUIWeb.d.ts +265 -0
  61. package/dist/src/components/OnboardingUI/OnboardingUIWeb.js +3782 -0
  62. package/dist/src/components/OnboardingUI/OnboardingUIWeb.js.map +1 -0
  63. package/dist/src/components/OnboardingUI/components/EmailForm.d.ts +16 -0
  64. package/dist/src/components/OnboardingUI/components/EmailForm.js +27 -0
  65. package/dist/src/components/OnboardingUI/components/EmailForm.js.map +1 -0
  66. package/dist/src/components/OnboardingUI/components/Modal.d.ts +14 -0
  67. package/dist/src/components/OnboardingUI/components/Modal.js +61 -0
  68. package/dist/src/components/OnboardingUI/components/Modal.js.map +1 -0
  69. package/dist/src/components/OnboardingUI/components/OtpForm.d.ts +20 -0
  70. package/dist/src/components/OnboardingUI/components/OtpForm.js +72 -0
  71. package/dist/src/components/OnboardingUI/components/OtpForm.js.map +1 -0
  72. package/dist/src/components/OnboardingUI/components/PasskeyButton.d.ts +14 -0
  73. package/dist/src/components/OnboardingUI/components/PasskeyButton.js +22 -0
  74. package/dist/src/components/OnboardingUI/components/PasskeyButton.js.map +1 -0
  75. package/dist/src/components/OnboardingUI/components/SocialButtons.d.ts +15 -0
  76. package/dist/src/components/OnboardingUI/components/SocialButtons.js +20 -0
  77. package/dist/src/components/OnboardingUI/components/SocialButtons.js.map +1 -0
  78. package/dist/src/components/OnboardingUI/components/index.d.ts +13 -0
  79. package/dist/src/components/OnboardingUI/components/index.js +9 -0
  80. package/dist/src/components/OnboardingUI/components/index.js.map +1 -0
  81. package/dist/src/components/OnboardingUI/hooks/index.d.ts +7 -0
  82. package/dist/src/components/OnboardingUI/hooks/index.js +6 -0
  83. package/dist/src/components/OnboardingUI/hooks/index.js.map +1 -0
  84. package/dist/src/components/OnboardingUI/hooks/useAuthMethods.d.ts +11 -0
  85. package/dist/src/components/OnboardingUI/hooks/useAuthMethods.js +243 -0
  86. package/dist/src/components/OnboardingUI/hooks/useAuthMethods.js.map +1 -0
  87. package/dist/src/components/OnboardingUI/hooks/useOnboarding.d.ts +21 -0
  88. package/dist/src/components/OnboardingUI/hooks/useOnboarding.js +153 -0
  89. package/dist/src/components/OnboardingUI/hooks/useOnboarding.js.map +1 -0
  90. package/dist/src/components/OnboardingUI/index.d.ts +12 -0
  91. package/dist/src/components/OnboardingUI/index.js +15 -0
  92. package/dist/src/components/OnboardingUI/index.js.map +1 -0
  93. package/dist/src/components/QRCode.d.ts +13 -0
  94. package/dist/src/components/QRCode.js +6 -0
  95. package/dist/src/components/QRCode.js.map +1 -0
  96. package/dist/src/components/WalletModal/components/ChainSelector.css +327 -0
  97. package/dist/src/components/WalletModal/components/ChainSelector.d.ts +11 -0
  98. package/dist/src/components/WalletModal/components/ChainSelector.js +75 -0
  99. package/dist/src/components/WalletModal/components/ChainSelector.js.map +1 -0
  100. package/dist/src/components/WalletModal/components/ExportKeyModal.css +134 -0
  101. package/dist/src/components/WalletModal/components/ExportKeyModal.d.ts +14 -0
  102. package/dist/src/components/WalletModal/components/ExportKeyModal.js +26 -0
  103. package/dist/src/components/WalletModal/components/ExportKeyModal.js.map +1 -0
  104. package/dist/src/components/WalletModal/components/ExportWarningModal.css +107 -0
  105. package/dist/src/components/WalletModal/components/ExportWarningModal.d.ts +17 -0
  106. package/dist/src/components/WalletModal/components/ExportWarningModal.js +20 -0
  107. package/dist/src/components/WalletModal/components/ExportWarningModal.js.map +1 -0
  108. package/dist/src/components/WalletModal/components/ManageWalletModal.css +246 -0
  109. package/dist/src/components/WalletModal/components/ManageWalletModal.d.ts +12 -0
  110. package/dist/src/components/WalletModal/components/ManageWalletModal.js +36 -0
  111. package/dist/src/components/WalletModal/components/ManageWalletModal.js.map +1 -0
  112. package/dist/src/components/WalletModal/components/PreviewTransactionModal.css +127 -0
  113. package/dist/src/components/WalletModal/components/PreviewTransactionModal.d.ts +17 -0
  114. package/dist/src/components/WalletModal/components/PreviewTransactionModal.js +10 -0
  115. package/dist/src/components/WalletModal/components/PreviewTransactionModal.js.map +1 -0
  116. package/dist/src/components/WalletModal/components/ReceiveModal.css +136 -0
  117. package/dist/src/components/WalletModal/components/ReceiveModal.d.ts +8 -0
  118. package/dist/src/components/WalletModal/components/ReceiveModal.js +22 -0
  119. package/dist/src/components/WalletModal/components/ReceiveModal.js.map +1 -0
  120. package/dist/src/components/WalletModal/components/SendModal.css +277 -0
  121. package/dist/src/components/WalletModal/components/SendModal.d.ts +16 -0
  122. package/dist/src/components/WalletModal/components/SendModal.js +219 -0
  123. package/dist/src/components/WalletModal/components/SendModal.js.map +1 -0
  124. package/dist/src/components/WalletModal/components/SuccessModal.css +85 -0
  125. package/dist/src/components/WalletModal/components/SuccessModal.d.ts +13 -0
  126. package/dist/src/components/WalletModal/components/SuccessModal.js +8 -0
  127. package/dist/src/components/WalletModal/components/SuccessModal.js.map +1 -0
  128. package/dist/src/components/WalletModal/components/TokenSelectorModal.css +240 -0
  129. package/dist/src/components/WalletModal/components/TokenSelectorModal.d.ts +21 -0
  130. package/dist/src/components/WalletModal/components/TokenSelectorModal.js +44 -0
  131. package/dist/src/components/WalletModal/components/TokenSelectorModal.js.map +1 -0
  132. package/dist/src/components/WalletModal/components/UserAvatar.d.ts +9 -0
  133. package/dist/src/components/WalletModal/components/UserAvatar.js +31 -0
  134. package/dist/src/components/WalletModal/components/UserAvatar.js.map +1 -0
  135. package/dist/src/components/WalletModal/components/index.d.ts +23 -0
  136. package/dist/src/components/WalletModal/components/index.js +14 -0
  137. package/dist/src/components/WalletModal/components/index.js.map +1 -0
  138. package/dist/src/components/WalletModal/hooks/index.d.ts +6 -0
  139. package/dist/src/components/WalletModal/hooks/index.js +7 -0
  140. package/dist/src/components/WalletModal/hooks/index.js.map +1 -0
  141. package/dist/src/components/WalletModal/hooks/useAddressValidation.d.ts +4 -0
  142. package/dist/src/components/WalletModal/hooks/useAddressValidation.js +17 -0
  143. package/dist/src/components/WalletModal/hooks/useAddressValidation.js.map +1 -0
  144. package/dist/src/components/WalletModal/hooks/useAmountValidation.d.ts +4 -0
  145. package/dist/src/components/WalletModal/hooks/useAmountValidation.js +29 -0
  146. package/dist/src/components/WalletModal/hooks/useAmountValidation.js.map +1 -0
  147. package/dist/src/components/WalletModal/hooks/useSendTransaction.d.ts +20 -0
  148. package/dist/src/components/WalletModal/hooks/useSendTransaction.js +55 -0
  149. package/dist/src/components/WalletModal/hooks/useSendTransaction.js.map +1 -0
  150. package/dist/src/components/WalletModal/index.d.ts +5 -0
  151. package/dist/src/components/WalletModal/index.js +7 -0
  152. package/dist/src/components/WalletModal/index.js.map +1 -0
  153. package/dist/src/components/WalletModal/utils/addressUtils.d.ts +19 -0
  154. package/dist/src/components/WalletModal/utils/addressUtils.js +62 -0
  155. package/dist/src/components/WalletModal/utils/addressUtils.js.map +1 -0
  156. package/dist/src/components/WalletModal/utils/formatUtils.d.ts +20 -0
  157. package/dist/src/components/WalletModal/utils/formatUtils.js +47 -0
  158. package/dist/src/components/WalletModal/utils/formatUtils.js.map +1 -0
  159. package/dist/src/components/WalletModal/utils/index.d.ts +5 -0
  160. package/dist/src/components/WalletModal/utils/index.js +6 -0
  161. package/dist/src/components/WalletModal/utils/index.js.map +1 -0
  162. package/dist/src/connectors.d.ts +27 -0
  163. package/dist/src/connectors.js +70 -0
  164. package/dist/src/connectors.js.map +1 -0
  165. package/dist/src/hooks.d.ts +13136 -0
  166. package/dist/src/hooks.js +1358 -0
  167. package/dist/src/hooks.js.map +1 -0
  168. package/dist/src/index.d.ts +17 -0
  169. package/dist/src/index.js +14 -0
  170. package/dist/src/index.js.map +1 -0
  171. package/dist/src/types.d.ts +224 -0
  172. package/dist/src/types.js +2 -0
  173. package/dist/src/types.js.map +1 -0
  174. package/dist/src/wagmiConfig.d.ts +16 -0
  175. package/dist/src/wagmiConfig.js +103 -0
  176. package/dist/src/wagmiConfig.js.map +1 -0
  177. package/dist/tsconfig.tsbuildinfo +1 -0
  178. package/package.json +70 -0
@@ -0,0 +1,15 @@
1
+ /**
2
+ * OnboardingUI React Component
3
+ * Pure React implementation of OnboardingUI
4
+ */
5
+ import React from "react";
6
+ import type { OnboardingUIConfig } from "@abstraxn/signer-core";
7
+ import "./OnboardingUI.css";
8
+ export interface OnboardingUIReactProps {
9
+ config?: Partial<OnboardingUIConfig>;
10
+ modal?: boolean;
11
+ onClose?: () => void;
12
+ externalWalletsEnabled?: boolean;
13
+ availableConnectors?: any[];
14
+ }
15
+ export declare const OnboardingUIReact: React.FC<OnboardingUIReactProps>;
@@ -0,0 +1,318 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * OnboardingUI React Component
4
+ * Pure React implementation of OnboardingUI
5
+ */
6
+ import { useEffect, useState, useCallback, useRef } from "react";
7
+ import { useOnboarding } from "./hooks/useOnboarding";
8
+ import { useAuthMethods } from "./hooks/useAuthMethods";
9
+ import { EmailForm } from "./components/EmailForm";
10
+ import { OtpForm } from "./components/OtpForm";
11
+ import { SocialButtons } from "./components/SocialButtons";
12
+ import { PasskeyButton } from "./components/PasskeyButton";
13
+ import { Modal } from "./components/Modal";
14
+ import { ExternalWalletButtons } from "../../ExternalWalletButtons";
15
+ import { useAbstraxnWallet } from "../../hooks";
16
+ import "./OnboardingUI.css";
17
+ export const OnboardingUIReact = ({ config = {}, modal = false, onClose, externalWalletsEnabled = false, availableConnectors = [], }) => {
18
+ const theme = config.theme || "light";
19
+ const authMethods = config.authMethods || ["otp", "google"];
20
+ const onboarding = useOnboarding(config);
21
+ const authMethodsHook = useAuthMethods(config);
22
+ const { user, isConnected, whoami, loading: providerLoading, error: providerError, } = useAbstraxnWallet();
23
+ const [showExternalWallets, setShowExternalWallets] = useState(false);
24
+ const [oauthLoading, setOauthLoading] = useState(false);
25
+ const [oauthError, setOauthError] = useState(null);
26
+ // Use refs to track latest values for interval checking
27
+ const whoamiRef = useRef(whoami);
28
+ const userRef = useRef(user);
29
+ const isConnectedRef = useRef(isConnected);
30
+ const providerErrorRef = useRef(providerError);
31
+ // Update refs when values change
32
+ useEffect(() => {
33
+ whoamiRef.current = whoami;
34
+ userRef.current = user;
35
+ isConnectedRef.current = isConnected;
36
+ providerErrorRef.current = providerError;
37
+ }, [whoami, user, isConnected, providerError]);
38
+ // Clear query params helper
39
+ const clearQueryParams = useCallback(() => {
40
+ if (typeof window !== "undefined") {
41
+ const newUrl = window.location.pathname;
42
+ window.history.replaceState({}, "", newUrl);
43
+ }
44
+ }, []);
45
+ // Helper to extract provider from accessToken JWT
46
+ const getAuthProviderFromToken = (token) => {
47
+ try {
48
+ const base64Url = token.split(".")[1];
49
+ const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/");
50
+ const jsonPayload = decodeURIComponent(window
51
+ .atob(base64)
52
+ .split("")
53
+ .map(function (c) {
54
+ return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
55
+ })
56
+ .join(""));
57
+ const payload = JSON.parse(jsonPayload);
58
+ return (payload.authProvider || payload.provider || "").toLowerCase();
59
+ }
60
+ catch (e) {
61
+ return null;
62
+ }
63
+ };
64
+ // Handle URL parameters for social login callbacks (OAuth only, not OTP)
65
+ useEffect(() => {
66
+ if (typeof window === "undefined")
67
+ return;
68
+ // Check if we initiated this OAuth flow
69
+ let oauthPending = null;
70
+ try {
71
+ oauthPending = localStorage.getItem('abstraxn_oauth_pending');
72
+ }
73
+ catch (e) { }
74
+ const params = new URLSearchParams(window.location.search);
75
+ const success = params.get("success");
76
+ const error = params.get("error");
77
+ const provider = params.get("provider") || params.get("authProvider");
78
+ const accessToken = params.get("accessToken");
79
+ // Extract provider from accessToken if not in URL params
80
+ let detectedProvider = provider;
81
+ if (!detectedProvider && accessToken) {
82
+ detectedProvider = getAuthProviderFromToken(accessToken);
83
+ }
84
+ // Only handle OAuth callbacks (Google, Discord, Twitter/X) - NOT OTP flow
85
+ // OAuth flows will have a provider parameter (in URL or accessToken) or accessToken itself
86
+ const isOAuthCallback = (detectedProvider &&
87
+ (detectedProvider === "google" ||
88
+ detectedProvider === "discord" ||
89
+ detectedProvider === "twitter" ||
90
+ detectedProvider === "x")) ||
91
+ (success === "true" && !!accessToken);
92
+ // Check if we're in OTP flow (email or otp steps only, not loading)
93
+ // The 'loading' step can be from OTP or OAuth, so we need to check provider to differentiate
94
+ const isInOtpFlow = onboarding.step === "email" || onboarding.step === "otp";
95
+ // If step is 'loading' but there's an OAuth provider, it's OAuth flow, not OTP
96
+ const isOtpLoadingStep = onboarding.step === "loading" && !isOAuthCallback;
97
+ // Don't set loading if user is already authenticated (prevents re-showing after state updates)
98
+ const hasWhoamiData = whoami && (whoami.userId || whoami.address || whoami.organizationId);
99
+ const hasUserData = user && (user.id || user.email);
100
+ const isAlreadyAuthenticated = hasWhoamiData || hasUserData || isConnected;
101
+ // Process OAuth callbacks - show loading modal for OAuth flows
102
+ if (isOAuthCallback && oauthPending) {
103
+ if (success === "true" && !isAlreadyAuthenticated) {
104
+ // Set OAuth loading modal for OAuth callbacks
105
+ setOauthLoading(true);
106
+ setOauthError(null);
107
+ }
108
+ else if (error) {
109
+ setOauthLoading(false);
110
+ setOauthError(decodeURIComponent(error));
111
+ }
112
+ else if (isAlreadyAuthenticated) {
113
+ // If already authenticated, clear loading and params immediately
114
+ setOauthLoading(false);
115
+ clearQueryParams();
116
+ }
117
+ }
118
+ else if ((isInOtpFlow || isOtpLoadingStep) && !oauthLoading) {
119
+ // If we're in OTP flow (including OTP loading step), ensure OAuth loading is cleared
120
+ setOauthLoading(false);
121
+ }
122
+ // Also handle config.handleUrlParams if provided (only for OAuth)
123
+ if (config.handleUrlParams && isOAuthCallback && oauthPending) {
124
+ if (success === "true" && !isAlreadyAuthenticated) {
125
+ onboarding.setLoading(true);
126
+ }
127
+ else if (error) {
128
+ onboarding.setError(decodeURIComponent(error));
129
+ }
130
+ }
131
+ }, [
132
+ config.handleUrlParams,
133
+ onboarding,
134
+ whoami,
135
+ user,
136
+ isConnected,
137
+ clearQueryParams,
138
+ ]);
139
+ // Hide loading modal when whoami API responds (success or error)
140
+ useEffect(() => {
141
+ if (!oauthLoading)
142
+ return undefined;
143
+ // Check if authentication completed - verify actual data exists
144
+ const hasWhoamiData = whoami && (whoami.userId || whoami.address || whoami.organizationId);
145
+ const hasUserData = user && (user.id || user.email);
146
+ // Close modal on success (whoami data, user data, or connected)
147
+ if (hasWhoamiData || hasUserData || isConnected) {
148
+ setOauthLoading(false);
149
+ clearQueryParams();
150
+ return undefined;
151
+ }
152
+ // Close modal on error (when provider loading stops and there's an error, or when provider error is set)
153
+ // This indicates whoami API failed
154
+ if (!providerLoading && providerError) {
155
+ setOauthLoading(false);
156
+ setOauthError(providerError.message || "Authentication failed");
157
+ clearQueryParams();
158
+ return undefined;
159
+ }
160
+ // Poll for state updates every 100ms (very aggressive checking)
161
+ const intervalId = setInterval(() => {
162
+ // Use refs to get latest values
163
+ const currentWhoami = whoamiRef.current;
164
+ const currentUser = userRef.current;
165
+ const currentIsConnected = isConnectedRef.current;
166
+ const hasCurrentWhoamiData = currentWhoami &&
167
+ (currentWhoami.userId ||
168
+ currentWhoami.address ||
169
+ currentWhoami.organizationId);
170
+ const hasCurrentUserData = currentUser && (currentUser.id || currentUser.email);
171
+ // Close on success
172
+ if (hasCurrentWhoamiData || hasCurrentUserData || currentIsConnected) {
173
+ setOauthLoading(false);
174
+ clearQueryParams();
175
+ }
176
+ }, 100);
177
+ // Also check when provider loading stops (whoami API completed)
178
+ if (!providerLoading) {
179
+ const timeoutId = setTimeout(() => {
180
+ const currentWhoami = whoamiRef.current;
181
+ const currentUser = userRef.current;
182
+ const currentIsConnected = isConnectedRef.current;
183
+ const currentError = providerErrorRef.current;
184
+ const hasCurrentWhoamiData = currentWhoami &&
185
+ (currentWhoami.userId ||
186
+ currentWhoami.address ||
187
+ currentWhoami.organizationId);
188
+ const hasCurrentUserData = currentUser && (currentUser.id || currentUser.email);
189
+ // Close on success
190
+ if (hasCurrentWhoamiData || hasCurrentUserData || currentIsConnected) {
191
+ setOauthLoading(false);
192
+ clearQueryParams();
193
+ }
194
+ // Close on error (whoami API failed)
195
+ else if (currentError) {
196
+ setOauthLoading(false);
197
+ setOauthError(currentError.message || "Authentication failed");
198
+ clearQueryParams();
199
+ }
200
+ }, 200);
201
+ return () => {
202
+ clearInterval(intervalId);
203
+ clearTimeout(timeoutId);
204
+ };
205
+ }
206
+ return () => clearInterval(intervalId);
207
+ }, [
208
+ oauthLoading,
209
+ user,
210
+ isConnected,
211
+ whoami,
212
+ providerLoading,
213
+ providerError,
214
+ clearQueryParams,
215
+ ]);
216
+ // Fallback: Hide loading modal after timeout (safety net)
217
+ useEffect(() => {
218
+ if (!oauthLoading)
219
+ return undefined;
220
+ const timeoutId = setTimeout(() => {
221
+ // If still loading after 3 seconds, hide it anyway
222
+ // This prevents infinite loading if something goes wrong
223
+ setOauthLoading(false);
224
+ clearQueryParams();
225
+ }, 3000);
226
+ return () => clearTimeout(timeoutId);
227
+ }, [oauthLoading, clearQueryParams]);
228
+ // Close modal on OTP success (when step becomes 'loading' after OTP verification)
229
+ useEffect(() => {
230
+ // If step is 'loading' and we're in modal mode, and user is authenticated, close the modal
231
+ if (modal &&
232
+ onboarding.step === "loading" &&
233
+ (user || isConnected || whoami)) {
234
+ // Check if this is from OTP flow (no OAuth provider in URL)
235
+ const params = new URLSearchParams(window.location.search);
236
+ const provider = params.get("provider") || params.get("authProvider");
237
+ const isOAuthCallback = provider &&
238
+ (provider === "google" ||
239
+ provider === "discord" ||
240
+ provider === "twitter");
241
+ // Only close if it's OTP flow, not OAuth
242
+ if (!isOAuthCallback && onClose) {
243
+ // Small delay to ensure state is updated
244
+ setTimeout(() => {
245
+ onClose();
246
+ }, 100);
247
+ }
248
+ }
249
+ }, [modal, onboarding.step, user, isConnected, whoami, onClose]);
250
+ // Reset when modal closes
251
+ useEffect(() => {
252
+ if (!modal && onClose) {
253
+ const handleClose = () => {
254
+ onboarding.reset();
255
+ };
256
+ return handleClose;
257
+ }
258
+ return;
259
+ }, [modal, onClose, onboarding]);
260
+ const handleClose = () => {
261
+ onboarding.reset();
262
+ onClose?.();
263
+ };
264
+ // Helper to render modal content with header and footer
265
+ const renderModalContent = (children) => (_jsx("div", { className: `onboarding-container onboarding-theme-${theme} ${config.className || ""}`, children: _jsxs("div", { className: "onboarding-card", children: [_jsxs("div", { className: "onboarding-header", children: [config.logo && (_jsx("div", { className: "onboarding-logo-section", children: _jsx("div", { className: "onboarding-logo-container", children: _jsx("img", { src: config.logo, alt: "Logo", className: "onboarding-logo-img" }) }) })), _jsx("h1", { className: "onboarding-title", id: "onboarding-title", children: config.onboardTitle || "Sign In" })] }), children, config.showFooter !== false && (_jsx("div", { className: "onboarding-footer", children: _jsxs("p", { className: "onboarding-footer-text", children: ["Powered by", " ", _jsxs("a", { href: "https://abstraxn.com", target: "_blank", rel: "noopener noreferrer", className: "onboarding-footer-brand", style: {
266
+ display: "inline-flex",
267
+ alignItems: "center",
268
+ gap: "6px",
269
+ }, children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 48 48", fill: "none", style: { display: "inline-block", verticalAlign: "middle" }, children: [_jsx("path", { d: "M47.9082 37.191L23.9541 23.553L0 9.91504L37.7436 -8.13502e-06L47.9082 37.191Z", fill: "url(#paint0_linear_1242_781)" }), _jsx("path", { d: "M13.5156 46.3594L10.1846 47.2344L8.99219 42.873L12.4365 42.4111L13.5156 46.3594ZM20.4268 44.5566L17.1152 45.4199L16.125 41.8818L19.5566 41.3721L20.4268 44.5566ZM26.9307 42.834L23.6152 43.6982L22.8438 40.9443L26.2744 40.4326L26.9307 42.834ZM33.5078 41.1074L30.1875 41.9727L29.6328 39.9951L33.0635 39.4844L33.5078 41.1074ZM39.998 39.4014L36.6729 40.2686L36.3359 39.0674L39.7656 38.5508L39.998 39.4014ZM10.1406 33.9434L11.6807 39.5762L8.15918 39.7568L6.46094 33.543L10.1406 33.9434ZM17.6582 34.5996L18.8916 39.1113L15.4199 39.3496L14.0078 34.3076L17.6582 34.5996ZM24.8779 35.332L25.8047 38.7227L22.3252 38.959L21.2266 35.0361L24.8779 35.332ZM32.0918 36.0723L32.7119 38.3398L29.2227 38.5723L28.4375 35.7656L32.0918 36.0723ZM43.2373 38.5488L43.1172 38.1172L47.7939 37.3516L43.2373 38.5488ZM39.3047 36.8096L39.6182 37.9561L36.1221 38.1846L35.6484 36.4961L39.3047 36.8096ZM47.7939 37.3516L43.0107 37.7939L42.8516 37.2236L47.7939 37.3516ZM47.8291 37.2988L42.7227 36.7529L42.5547 36.1523L47.8291 37.2988ZM47.8652 37.2412L42.3711 35.3486L42.2031 34.7471L47.8652 37.2412ZM38.748 34.8604L39.0664 36.0254L35.3369 35.4043L34.8594 33.6982L38.748 34.8604ZM31.0576 32.3994L31.6787 34.6709L27.959 34.0566L27.1719 31.2461L31.0576 32.3994ZM38.0811 32.6318L38.4092 33.8301L34.4893 32.3496L34.1543 31.1523C34.1005 30.9591 34.0322 30.7719 33.9531 30.5918L38.0811 32.6318ZM23.3682 29.9385L24.291 33.3164L20.5801 32.71L19.4844 28.7949L23.3682 29.9385ZM15.6641 27.4805L16.8896 31.9629L13.1875 31.3594L11.7812 26.3379L15.6641 27.4805ZM29.9463 28.4678L30.5693 30.748L26.6201 29.2812L25.8633 26.583C25.8534 26.5431 25.8417 26.5028 25.8281 26.4639L29.9463 28.4678ZM7.6875 25.0938L9.21484 30.6816L5.44727 29.959L3.75781 23.7793L7.6875 25.0938ZM21.5312 23.3623L22.4492 26.7227L18.5059 25.2627L17.4141 21.3643L21.5312 23.3623ZM13.6104 20.1602L14.8242 24.6006L10.8887 23.1387L9.49219 18.1553L13.6104 20.1602ZM5.2168 16.0654L6.72559 21.585L2.70703 19.9473L1.06055 13.8701L5.2168 16.0654Z", fill: "url(#paint1_linear_1242_781)" }), _jsxs("defs", { children: [_jsxs("linearGradient", { id: "paint0_linear_1242_781", x1: "7.03362", y1: "6.09543", x2: "47.2003", y2: "57.0656", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { stopColor: "#F878D2" }), _jsx("stop", { offset: "0.393522", stopColor: "#FDCC81" }), _jsx("stop", { offset: "1", stopColor: "#F9A0D9" })] }), _jsxs("linearGradient", { id: "paint1_linear_1242_781", x1: "2.53739", y1: "21.5136", x2: "48.7969", y2: "38.5742", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { stopColor: "#F878D2" }), _jsx("stop", { offset: "0.393522", stopColor: "#FDCC81" }), _jsx("stop", { offset: "1", stopColor: "#F9A0D9" })] })] })] }), _jsx("span", { children: "abstraxn" })] })] }) }))] }) }));
270
+ const showEmailForm = onboarding.step === "email" &&
271
+ authMethods.includes("otp") &&
272
+ !showExternalWallets;
273
+ const showOtpForm = onboarding.step === "otp" && authMethods.includes("otp");
274
+ const showSocialButtons = onboarding.step === "email" &&
275
+ !showExternalWallets &&
276
+ (authMethods.includes("google") ||
277
+ authMethods.includes("twitter") ||
278
+ authMethods.includes("discord"));
279
+ const showPasskey = onboarding.step === "email" &&
280
+ !showExternalWallets &&
281
+ authMethods.includes("passkey");
282
+ const showExternalWalletsSection = onboarding.step === "email" &&
283
+ externalWalletsEnabled &&
284
+ availableConnectors.length > 0;
285
+ const content = (_jsx("div", { className: `onboarding-container onboarding-theme-${theme} ${config.className || ""}`, children: _jsxs("div", { className: `onboarding-card ${showOtpForm ? "onboarding-card-otp" : ""}`, children: [!showOtpForm && (_jsxs("div", { className: "onboarding-header", children: [config.logo && (_jsx("div", { className: "onboarding-logo-section", children: _jsx("div", { className: "onboarding-logo-container", children: _jsx("img", { src: config.logo, alt: "Logo", className: "onboarding-logo-img" }) }) })), _jsx("h1", { className: "onboarding-title", id: "onboarding-title", children: config.onboardTitle || "Sign In" })] })), showEmailForm && (_jsx(EmailForm, { email: onboarding.email, onChange: onboarding.setEmail, onSubmit: onboarding.handleEmailSubmit, loading: onboarding.loading, error: onboarding.error, config: config })), showOtpForm && (_jsx(OtpForm, { email: onboarding.email, otp: onboarding.otp, onChange: onboarding.setOtp, onSubmit: onboarding.handleOtpSubmit, onResend: onboarding.handleResendOtp, onBack: onboarding.reset, loading: onboarding.loading, error: onboarding.error, resendCooldown: onboarding.resendCooldown, config: config })), onboarding.step === "error" && onboarding.error && (_jsxs("div", { className: "onboarding-error-container", children: [_jsx("div", { className: "onboarding-error", role: "alert", children: onboarding.error.startsWith("{") &&
286
+ onboarding.error.endsWith("}")
287
+ ? onboarding.error
288
+ : `{ ${onboarding.error} }` }), _jsx("button", { type: "button", className: "onboarding-button onboarding-button-primary", onClick: onboarding.reset, children: "Try Again" })] })), showSocialButtons && (showEmailForm || showOtpForm) && (_jsx("div", { className: "onboarding-divider", children: _jsx("span", { className: "onboarding-divider-text", children: "or" }) })), showSocialButtons && (_jsx(SocialButtons, { onGoogleLogin: authMethodsHook.handleGoogleLogin, onTwitterLogin: authMethodsHook.handleTwitterLogin, onDiscordLogin: authMethodsHook.handleDiscordLogin, loading: authMethodsHook.loading, config: config })), showPasskey && (_jsx(PasskeyButton, { onPasskeyLogin: authMethodsHook.handlePasskeyLogin, onPasskeySignup: authMethodsHook.handlePasskeySignup, loading: authMethodsHook.loading, config: config })), showExternalWalletsSection && (_jsxs(_Fragment, { children: [!showExternalWallets && (_jsx("div", { className: "onboarding-divider", children: _jsx("span", { className: "onboarding-divider-text", children: "or" }) })), _jsx("div", { style: { marginTop: showExternalWallets ? "0" : "12px" }, children: _jsx(ExternalWalletButtons, { onShowMoreWallets: () => setShowExternalWallets(true), onHideMoreWallets: () => setShowExternalWallets(false) }) })] })), config.showFooter !== false && (_jsx("div", { className: "onboarding-footer", children: _jsxs("p", { className: "onboarding-footer-text", children: ["Powered by", " ", _jsxs("a", { href: "https://abstraxn.com", target: "_blank", rel: "noopener noreferrer", className: "onboarding-footer-brand", style: {
289
+ display: "inline-flex",
290
+ alignItems: "center",
291
+ gap: "6px",
292
+ }, children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 48 48", fill: "none", style: { display: "inline-block", verticalAlign: "middle" }, children: [_jsx("path", { d: "M47.9082 37.191L23.9541 23.553L0 9.91504L37.7436 -8.13502e-06L47.9082 37.191Z", fill: "url(#paint0_linear_1242_781)" }), _jsx("path", { d: "M13.5156 46.3594L10.1846 47.2344L8.99219 42.873L12.4365 42.4111L13.5156 46.3594ZM20.4268 44.5566L17.1152 45.4199L16.125 41.8818L19.5566 41.3721L20.4268 44.5566ZM26.9307 42.834L23.6152 43.6982L22.8438 40.9443L26.2744 40.4326L26.9307 42.834ZM33.5078 41.1074L30.1875 41.9727L29.6328 39.9951L33.0635 39.4844L33.5078 41.1074ZM39.998 39.4014L36.6729 40.2686L36.3359 39.0674L39.7656 38.5508L39.998 39.4014ZM10.1406 33.9434L11.6807 39.5762L8.15918 39.7568L6.46094 33.543L10.1406 33.9434ZM17.6582 34.5996L18.8916 39.1113L15.4199 39.3496L14.0078 34.3076L17.6582 34.5996ZM24.8779 35.332L25.8047 38.7227L22.3252 38.959L21.2266 35.0361L24.8779 35.332ZM32.0918 36.0723L32.7119 38.3398L29.2227 38.5723L28.4375 35.7656L32.0918 36.0723ZM43.2373 38.5488L43.1172 38.1172L47.7939 37.3516L43.2373 38.5488ZM39.3047 36.8096L39.6182 37.9561L36.1221 38.1846L35.6484 36.4961L39.3047 36.8096ZM47.7939 37.3516L43.0107 37.7939L42.8516 37.2236L47.7939 37.3516ZM47.8291 37.2988L42.7227 36.7529L42.5547 36.1523L47.8291 37.2988ZM47.8652 37.2412L42.3711 35.3486L42.2031 34.7471L47.8652 37.2412ZM38.748 34.8604L39.0664 36.0254L35.3369 35.4043L34.8594 33.6982L38.748 34.8604ZM31.0576 32.3994L31.6787 34.6709L27.959 34.0566L27.1719 31.2461L31.0576 32.3994ZM38.0811 32.6318L38.4092 33.8301L34.4893 32.3496L34.1543 31.1523C34.1005 30.9591 34.0322 30.7719 33.9531 30.5918L38.0811 32.6318ZM23.3682 29.9385L24.291 33.3164L20.5801 32.71L19.4844 28.7949L23.3682 29.9385ZM15.6641 27.4805L16.8896 31.9629L13.1875 31.3594L11.7812 26.3379L15.6641 27.4805ZM29.9463 28.4678L30.5693 30.748L26.6201 29.2812L25.8633 26.583C25.8534 26.5431 25.8417 26.5028 25.8281 26.4639L29.9463 28.4678ZM7.6875 25.0938L9.21484 30.6816L5.44727 29.959L3.75781 23.7793L7.6875 25.0938ZM21.5312 23.3623L22.4492 26.7227L18.5059 25.2627L17.4141 21.3643L21.5312 23.3623ZM13.6104 20.1602L14.8242 24.6006L10.8887 23.1387L9.49219 18.1553L13.6104 20.1602ZM5.2168 16.0654L6.72559 21.585L2.70703 19.9473L1.06055 13.8701L5.2168 16.0654Z", fill: "url(#paint1_linear_1242_781)" }), _jsxs("defs", { children: [_jsxs("linearGradient", { id: "paint0_linear_1242_781", x1: "7.03362", y1: "6.09543", x2: "47.2003", y2: "57.0656", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { stopColor: "#F878D2" }), _jsx("stop", { offset: "0.393522", stopColor: "#FDCC81" }), _jsx("stop", { offset: "1", stopColor: "#F9A0D9" })] }), _jsxs("linearGradient", { id: "paint1_linear_1242_781", x1: "2.53739", y1: "21.5136", x2: "48.7969", y2: "38.5742", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { stopColor: "#F878D2" }), _jsx("stop", { offset: "0.393522", stopColor: "#FDCC81" }), _jsx("stop", { offset: "1", stopColor: "#F9A0D9" })] })] })] }), _jsx("span", { children: "abstraxn" })] })] }) }))] }) }));
293
+ // OAuth Loading Modal (only show for OAuth flows, never during OTP flow)
294
+ // Check if we're in OTP flow - only email and otp steps, not loading (loading can be OAuth too)
295
+ const isInOtpFlow = onboarding.step === "email" || onboarding.step === "otp";
296
+ // Show OAuth loading modal if oauthLoading is true and not in OTP flow
297
+ if (oauthLoading && !isInOtpFlow) {
298
+ return (_jsx(Modal, { isOpen: true, onClose: () => {
299
+ setOauthLoading(false);
300
+ clearQueryParams();
301
+ }, closeOnBackdropClick: config.closeOnBackdropClick !== false, theme: theme, children: renderModalContent(_jsxs("div", { className: "onboarding-loading", style: { textAlign: "center", padding: "40px" }, children: [_jsxs("svg", { width: "48", height: "48", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", style: { animation: "spin 1s linear infinite" }, children: [_jsx("line", { x1: "12", y1: "2", x2: "12", y2: "6" }), _jsx("line", { x1: "12", y1: "18", x2: "12", y2: "22" }), _jsx("line", { x1: "4.93", y1: "4.93", x2: "7.76", y2: "7.76" }), _jsx("line", { x1: "16.24", y1: "16.24", x2: "19.07", y2: "19.07" }), _jsx("line", { x1: "2", y1: "12", x2: "6", y2: "12" }), _jsx("line", { x1: "18", y1: "12", x2: "22", y2: "12" }), _jsx("line", { x1: "4.93", y1: "19.07", x2: "7.76", y2: "16.24" }), _jsx("line", { x1: "16.24", y1: "7.76", x2: "19.07", y2: "4.93" })] }), _jsx("p", { style: { marginTop: "16px" }, children: "Authenticating..." })] })) }));
302
+ }
303
+ // OAuth Error Modal
304
+ if (oauthError) {
305
+ return (_jsx(Modal, { isOpen: true, onClose: () => {
306
+ setOauthError(null);
307
+ clearQueryParams();
308
+ }, closeOnBackdropClick: config.closeOnBackdropClick !== false, theme: theme, children: renderModalContent(_jsxs("div", { className: "onboarding-error-container", style: { padding: "40px", textAlign: "center" }, children: [_jsx("div", { className: "onboarding-error", role: "alert", children: oauthError }), _jsx("button", { type: "button", className: "onboarding-button onboarding-button-primary", onClick: () => {
309
+ setOauthError(null);
310
+ clearQueryParams();
311
+ }, style: { marginTop: "24px" }, children: "Close" })] })) }));
312
+ }
313
+ if (modal) {
314
+ return (_jsx(Modal, { isOpen: true, onClose: handleClose, closeOnBackdropClick: config.closeOnBackdropClick !== false, theme: theme, children: content }));
315
+ }
316
+ return content;
317
+ };
318
+ //# sourceMappingURL=OnboardingUIReact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnboardingUIReact.js","sourceRoot":"","sources":["../../../../src/components/OnboardingUI/OnboardingUIReact.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,265 @@
1
+ import type { OnboardingUIConfig, Theme } from "@abstraxn/signer-core";
2
+ /**
3
+ * OnboardingUI Class
4
+ *
5
+ * A customizable user onboarding component with email-OTP and Google login options.
6
+ * Works with vanilla JavaScript - no framework dependencies required.
7
+ */
8
+ export declare class OnboardingUIWeb {
9
+ private static stylesInjected;
10
+ private config;
11
+ private container;
12
+ private rootElement;
13
+ private modalOverlay;
14
+ private modalContent;
15
+ private emailInput;
16
+ private otpInput;
17
+ private otpInputs;
18
+ private autoSubmitEnabled;
19
+ private emailForm;
20
+ private continueButton;
21
+ private emailArrowButton;
22
+ private googleButton;
23
+ private twitterButton;
24
+ private discordButton;
25
+ private passkeyLoginButton;
26
+ private passkeySignupLink;
27
+ private passkeyDivider;
28
+ private passkeyErrorElement;
29
+ private errorElement;
30
+ private otpGroup;
31
+ private otpVerificationScreen;
32
+ private resendButton;
33
+ private socialGrid;
34
+ externalWalletContainer: HTMLElement | null;
35
+ externalWalletDivider: HTMLElement | null;
36
+ private divider;
37
+ private footer;
38
+ private verifyButton;
39
+ private email;
40
+ private otp;
41
+ private otpSent;
42
+ private loading;
43
+ private activeButton;
44
+ private resendCooldown;
45
+ private resendCooldownTimer;
46
+ private externalWalletsEnabled;
47
+ constructor(config: OnboardingUIConfig, externalWalletsEnabled?: boolean);
48
+ /**
49
+ * Show external wallet container and divider
50
+ * Call this before init() to prevent flicker when external wallets are enabled
51
+ */
52
+ showExternalWallets(): void;
53
+ /**
54
+ * Initialize and render the component
55
+ */
56
+ init(): void;
57
+ /**
58
+ * Check URL parameters for social login callbacks
59
+ */
60
+ private checkUrlParams;
61
+ /**
62
+ * Show error screen or modal (public method)
63
+ */
64
+ showError(message: string): void;
65
+ /**
66
+ * Show error screen
67
+ */
68
+ private showErrorScreen;
69
+ /**
70
+ * Show loading screen
71
+ */
72
+ private showLoadingScreen;
73
+ /**
74
+ * Show loading screen as a modal overlay (for inline components)
75
+ * Public method to allow external access
76
+ */
77
+ showLoadingModal(): void;
78
+ /**
79
+ * Hide loading modal overlay
80
+ */
81
+ hideLoadingModal(): void;
82
+ /**
83
+ * Show error screen as a modal overlay (for inline components)
84
+ */
85
+ private showErrorModal;
86
+ /**
87
+ * Inject CSS styles into the document head (only once)
88
+ */
89
+ private injectStyles;
90
+ /**
91
+ * Apply custom colors from config
92
+ */
93
+ private applyCustomColors;
94
+ /**
95
+ * Setup the container element
96
+ */
97
+ private setupContainer;
98
+ /**
99
+ * Render the component
100
+ */
101
+ private render;
102
+ /**
103
+ * Render as modal overlay
104
+ */
105
+ private renderAsModal;
106
+ /**
107
+ * Trap focus within modal for accessibility
108
+ */
109
+ private trapFocus;
110
+ /**
111
+ * Render inline (non-modal)
112
+ */
113
+ private renderInline;
114
+ /**
115
+ * Build form content (shared between modal and inline)
116
+ */
117
+ private buildFormContent;
118
+ /**
119
+ * Attach event listeners
120
+ */
121
+ private attachEventListeners;
122
+ /**
123
+ * Handle email form submission
124
+ */
125
+ private handleEmailSubmit;
126
+ /**
127
+ * Handle Google login
128
+ */
129
+ private handleGoogleLogin;
130
+ /**
131
+ * Handle Twitter login
132
+ */
133
+ private handleTwitterLogin;
134
+ /**
135
+ * Handle Discord login
136
+ */
137
+ private handleDiscordLogin;
138
+ /**
139
+ * Hide all login-related elements (social buttons, passkey, etc.)
140
+ * This ensures they stay hidden on the OTP screen
141
+ * Made public so it can be called from AbstraxnProvider
142
+ */
143
+ hideLoginElements(): void;
144
+ /**
145
+ * Show OTP verification screen
146
+ */
147
+ private showOtpInput;
148
+ /**
149
+ * Create OTP verification screen with 6 input fields
150
+ */
151
+ private createOtpVerificationScreen;
152
+ /**
153
+ * Create email icon SVG
154
+ */
155
+ private createEmailIconSVG;
156
+ /**
157
+ * Handle OTP input - auto-advance to next field
158
+ */
159
+ private handleOtpInput;
160
+ /**
161
+ * Handle OTP keydown - backspace to go to previous field
162
+ */
163
+ private handleOtpKeydown;
164
+ /**
165
+ * Handle OTP paste - fill all fields from clipboard
166
+ */
167
+ private handleOtpPaste;
168
+ /**
169
+ * Update OTP value from input fields
170
+ */
171
+ private updateOtpValue;
172
+ /**
173
+ * Handle OTP verification
174
+ */
175
+ private handleOtpVerify;
176
+ /**
177
+ * Handle resend OTP
178
+ */
179
+ private handleResendOtp;
180
+ /**
181
+ * Start resend cooldown timer
182
+ */
183
+ private startResendCooldown;
184
+ /**
185
+ * Set error message
186
+ */
187
+ private setError;
188
+ /**
189
+ * Set loading state
190
+ */
191
+ private setLoading;
192
+ /**
193
+ * Update button state
194
+ */
195
+ private updateButtonState;
196
+ /**
197
+ * Update theme
198
+ */
199
+ setTheme(theme: Theme): void;
200
+ /**
201
+ * Show/hide component
202
+ */
203
+ setVisible(visible: boolean): void;
204
+ /**
205
+ * Reset OTP screen and show initial login form
206
+ */
207
+ resetToLoginForm(): void;
208
+ /**
209
+ * Close the modal
210
+ */
211
+ close(): void;
212
+ /**
213
+ * Destroy the component
214
+ */
215
+ destroy(): void;
216
+ /**
217
+ * Create DOM element helper
218
+ */
219
+ private createElement;
220
+ /**
221
+ * Parse style object or string
222
+ */
223
+ private parseStyle;
224
+ /**
225
+ * Create email icon SVG
226
+ */
227
+ private createEmailIcon;
228
+ /**
229
+ * Create Google icon SVG
230
+ */
231
+ private createGoogleIcon;
232
+ /**
233
+ * Create right arrow icon SVG
234
+ */
235
+ private createArrowIcon;
236
+ /**
237
+ * Create passkey icon SVG
238
+ */
239
+ private createPasskeyIcon;
240
+ /**
241
+ * Create X (Twitter) icon SVG
242
+ */
243
+ private createTwitterIcon;
244
+ /**
245
+ * Create Discord icon SVG
246
+ */
247
+ private createDiscordIcon;
248
+ /**
249
+ * Handle passkey login
250
+ */
251
+ private handlePasskeyLogin;
252
+ /**
253
+ * Handle passkey signup
254
+ */
255
+ private handlePasskeySignup;
256
+ /**
257
+ * Show passkey-specific error near the passkey controls
258
+ */
259
+ private showPasskeyError;
260
+ /**
261
+ * Hide passkey-specific error
262
+ */
263
+ private hidePasskeyError;
264
+ }
265
+ export default OnboardingUIWeb;