@crossmint/client-sdk-react-ui 1.10.3 → 1.10.5

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 (172) hide show
  1. package/dist/{chunk-H2WTBOQ5.cjs → chunk-3LHIEADG.cjs} +3 -3
  2. package/dist/{chunk-R2H6H2HY.js → chunk-4BGD6LSC.js} +2 -2
  3. package/dist/{chunk-NGWVWCWP.cjs → chunk-6AFXSTEN.cjs} +3 -3
  4. package/dist/{chunk-GHIVSSM5.js → chunk-7YHGZZ6G.js} +2 -2
  5. package/dist/{chunk-2EYYCX3O.cjs → chunk-CPISBXIR.cjs} +2 -2
  6. package/dist/{chunk-2EYYCX3O.cjs.map → chunk-CPISBXIR.cjs.map} +1 -1
  7. package/dist/{chunk-7EGLPJKV.cjs → chunk-E7KTAG6X.cjs} +3 -3
  8. package/dist/{chunk-FOCUIKYH.cjs → chunk-EBMORHG3.cjs} +160 -79
  9. package/dist/chunk-EBMORHG3.cjs.map +1 -0
  10. package/dist/{chunk-HXZYERJJ.js → chunk-FKRBO2MK.js} +2 -2
  11. package/dist/{chunk-3RXUFZTR.cjs → chunk-G526QBKQ.cjs} +3 -3
  12. package/dist/{chunk-L5BIVHQJ.cjs → chunk-GGVJALEH.cjs} +3 -3
  13. package/dist/{chunk-ZRXZOZZZ.cjs → chunk-HR57IU52.cjs} +3 -3
  14. package/dist/{chunk-DJ32OEWG.cjs → chunk-HSLAH2PN.cjs} +4 -4
  15. package/dist/{chunk-DJ32OEWG.cjs.map → chunk-HSLAH2PN.cjs.map} +1 -1
  16. package/dist/{chunk-GM7C5PE4.js → chunk-HYP7ISWS.js} +2 -2
  17. package/dist/{chunk-WBKHUVJU.js → chunk-JZYMJ733.js} +2 -2
  18. package/dist/{chunk-5H7AYX72.cjs → chunk-LD66M6G7.cjs} +3 -3
  19. package/dist/{chunk-ZRYD4SFA.js → chunk-LF3XEXLA.js} +2 -2
  20. package/dist/{chunk-74SNQV3K.js → chunk-MBJBFR2H.js} +2 -2
  21. package/dist/{chunk-WK5RAFJ3.js → chunk-NFWMF6T7.js} +4 -4
  22. package/dist/chunk-NFWMF6T7.js.map +1 -0
  23. package/dist/{chunk-EVL7VEPX.js → chunk-NKOG6FTK.js} +2 -2
  24. package/dist/{chunk-GBW67Z6V.cjs → chunk-NTAMXW3Z.cjs} +3 -3
  25. package/dist/{chunk-ZCYU7QA6.cjs → chunk-Q3UM7UCM.cjs} +4 -4
  26. package/dist/chunk-Q3UM7UCM.cjs.map +1 -0
  27. package/dist/{chunk-CUODMU27.js → chunk-T5WAVOPI.js} +236 -155
  28. package/dist/chunk-T5WAVOPI.js.map +1 -0
  29. package/dist/{chunk-O4DWHB3U.js → chunk-YP4CPG34.js} +2 -2
  30. package/dist/{chunk-O4DWHB3U.js.map → chunk-YP4CPG34.js.map} +1 -1
  31. package/dist/{chunk-6DNBJVR5.js → chunk-ZSWTJ6E7.js} +4 -4
  32. package/dist/chunk-ZSWTJ6E7.js.map +1 -0
  33. package/dist/components/CrossmintNFTCollectionView.cjs +3 -3
  34. package/dist/components/CrossmintNFTCollectionView.js +2 -2
  35. package/dist/components/CrossmintNFTDetail.cjs +3 -3
  36. package/dist/components/CrossmintNFTDetail.js +2 -2
  37. package/dist/components/auth/AuthForm.cjs +7 -8
  38. package/dist/components/auth/AuthForm.js +6 -7
  39. package/dist/components/auth/AuthFormBackButton.cjs +28 -2
  40. package/dist/components/auth/AuthFormBackButton.d.cts +1 -1
  41. package/dist/components/auth/AuthFormBackButton.d.ts +1 -1
  42. package/dist/components/auth/AuthFormBackButton.js +27 -1
  43. package/dist/components/auth/AuthFormDialog.cjs +7 -8
  44. package/dist/components/auth/AuthFormDialog.js +6 -7
  45. package/dist/components/auth/EmbeddedAuthForm.cjs +8 -9
  46. package/dist/components/auth/EmbeddedAuthForm.js +7 -8
  47. package/dist/components/auth/methods/email/EmailAuthFlow.cjs +7 -8
  48. package/dist/components/auth/methods/email/EmailAuthFlow.js +6 -7
  49. package/dist/components/auth/methods/email/EmailOTPInput.cjs +7 -8
  50. package/dist/components/auth/methods/email/EmailOTPInput.js +6 -7
  51. package/dist/components/auth/methods/email/EmailSignIn.cjs +7 -8
  52. package/dist/components/auth/methods/email/EmailSignIn.js +6 -7
  53. package/dist/components/auth/methods/farcaster/FarcasterSignIn.cjs +7 -8
  54. package/dist/components/auth/methods/farcaster/FarcasterSignIn.js +6 -7
  55. package/dist/components/auth/methods/google/GoogleSignIn.cjs +7 -8
  56. package/dist/components/auth/methods/google/GoogleSignIn.js +6 -7
  57. package/dist/components/auth/methods/web3/Web3AuthFlow.cjs +7 -8
  58. package/dist/components/auth/methods/web3/Web3AuthFlow.js +6 -7
  59. package/dist/components/auth/methods/web3/{Web3SignIn.cjs → Web3AuthFlowButton.cjs} +8 -9
  60. package/dist/components/auth/methods/web3/Web3AuthFlowButton.d.cts +5 -0
  61. package/dist/components/auth/methods/web3/Web3AuthFlowButton.d.ts +5 -0
  62. package/dist/components/auth/methods/web3/{Web3SignIn.js → Web3AuthFlowButton.js} +9 -10
  63. package/dist/components/auth/methods/web3/{Web3ConnectButton.cjs → Web3Connector.cjs} +3 -3
  64. package/dist/components/auth/methods/web3/{Web3ConnectButton.d.cts → Web3Connector.d.cts} +2 -2
  65. package/dist/components/auth/methods/web3/{Web3ConnectButton.d.ts → Web3Connector.d.ts} +2 -2
  66. package/dist/components/auth/methods/web3/{Web3ConnectButton.js → Web3Connector.js} +4 -4
  67. package/dist/components/auth/methods/web3/Web3ConnectorButton.cjs +9 -0
  68. package/dist/components/auth/methods/web3/{Web3ProviderButton.d.cts → Web3ConnectorButton.d.cts} +2 -2
  69. package/dist/components/auth/methods/web3/{Web3ProviderButton.d.ts → Web3ConnectorButton.d.ts} +2 -2
  70. package/dist/components/auth/methods/web3/Web3ConnectorButton.js +9 -0
  71. package/dist/components/auth/methods/web3/{Web3AuthWrapper.cjs → Web3ConnectorContainer.cjs} +8 -9
  72. package/dist/components/auth/methods/web3/{Web3AuthWrapper.d.cts → Web3ConnectorContainer.d.cts} +2 -2
  73. package/dist/components/auth/methods/web3/{Web3AuthWrapper.d.ts → Web3ConnectorContainer.d.ts} +2 -2
  74. package/dist/components/auth/methods/web3/{Web3AuthWrapper.js → Web3ConnectorContainer.js} +9 -10
  75. package/dist/components/auth/methods/web3/Web3Connectors.cjs +7 -8
  76. package/dist/components/auth/methods/web3/Web3Connectors.js +6 -7
  77. package/dist/components/common/Divider.cjs +7 -8
  78. package/dist/components/common/Divider.js +6 -7
  79. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.cjs +9 -10
  80. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.js +8 -9
  81. package/dist/components/embed/v3/EmbeddedCheckoutV3IFrame.cjs +8 -9
  82. package/dist/components/embed/v3/EmbeddedCheckoutV3IFrame.js +7 -8
  83. package/dist/components/embed/v3/index.cjs +9 -10
  84. package/dist/components/embed/v3/index.js +8 -9
  85. package/dist/components/hosted/CrossmintPayButton.cjs +3 -3
  86. package/dist/components/hosted/CrossmintPayButton.js +2 -2
  87. package/dist/components/hosted/index.cjs +3 -3
  88. package/dist/components/hosted/index.js +2 -2
  89. package/dist/components/index.cjs +13 -14
  90. package/dist/components/index.js +12 -13
  91. package/dist/consts/version.cjs +2 -2
  92. package/dist/consts/version.js +1 -1
  93. package/dist/hooks/index.cjs +7 -8
  94. package/dist/hooks/index.js +6 -7
  95. package/dist/hooks/useAuth.cjs +7 -8
  96. package/dist/hooks/useAuth.js +6 -7
  97. package/dist/hooks/useCrossmintAuth.cjs +7 -8
  98. package/dist/hooks/useCrossmintAuth.js +6 -7
  99. package/dist/hooks/useCrossmintCheckout.cjs +4 -4
  100. package/dist/hooks/useCrossmintCheckout.js +3 -3
  101. package/dist/hooks/useOAuthWindowListener.cjs +7 -8
  102. package/dist/hooks/useOAuthWindowListener.js +6 -7
  103. package/dist/hooks/useWallet.cjs +7 -8
  104. package/dist/hooks/useWallet.js +6 -7
  105. package/dist/index.cjs +13 -14
  106. package/dist/index.cjs.map +1 -1
  107. package/dist/index.js +12 -13
  108. package/dist/index.js.map +1 -1
  109. package/dist/providers/CrossmintAuthProvider.cjs +7 -8
  110. package/dist/providers/CrossmintAuthProvider.js +6 -7
  111. package/dist/providers/CrossmintWalletProvider.cjs +7 -8
  112. package/dist/providers/CrossmintWalletProvider.js +6 -7
  113. package/dist/providers/auth/AuthFormProvider.cjs +7 -8
  114. package/dist/providers/auth/AuthFormProvider.d.cts +2 -0
  115. package/dist/providers/auth/AuthFormProvider.d.ts +2 -0
  116. package/dist/providers/auth/AuthFormProvider.js +6 -7
  117. package/dist/providers/index.cjs +7 -8
  118. package/dist/providers/index.js +6 -7
  119. package/dist/utils/createCrossmintApiClient.cjs +3 -3
  120. package/dist/utils/createCrossmintApiClient.js +2 -2
  121. package/package.json +4 -4
  122. package/src/components/auth/AuthForm.tsx +24 -2
  123. package/src/components/auth/AuthFormBackButton.tsx +9 -1
  124. package/src/components/auth/AuthFormDialog.tsx +1 -1
  125. package/src/components/auth/methods/email/EmailOTPInput.tsx +5 -3
  126. package/src/components/auth/methods/email/EmailSignIn.tsx +3 -2
  127. package/src/components/auth/methods/farcaster/FarcasterSignIn.tsx +5 -2
  128. package/src/components/auth/methods/web3/Web3AuthFlow.tsx +2 -2
  129. package/src/components/auth/methods/web3/{Web3SignIn.tsx → Web3AuthFlowButton.tsx} +6 -3
  130. package/src/components/auth/methods/web3/{Web3ConnectButton.tsx → Web3Connector.tsx} +1 -1
  131. package/src/components/auth/methods/web3/{Web3ProviderButton.tsx → Web3ConnectorButton.tsx} +1 -1
  132. package/src/components/auth/methods/web3/{Web3AuthWrapper.tsx → Web3ConnectorContainer.tsx} +5 -5
  133. package/src/components/auth/methods/web3/Web3Connectors.tsx +12 -8
  134. package/src/hooks/useOAuthWindowListener.ts +13 -10
  135. package/src/providers/auth/AuthFormProvider.tsx +6 -0
  136. package/dist/chunk-6DNBJVR5.js.map +0 -1
  137. package/dist/chunk-CUODMU27.js.map +0 -1
  138. package/dist/chunk-FOCUIKYH.cjs.map +0 -1
  139. package/dist/chunk-GY6G3ZC2.cjs +0 -41
  140. package/dist/chunk-GY6G3ZC2.cjs.map +0 -1
  141. package/dist/chunk-QJ44PL7L.js +0 -41
  142. package/dist/chunk-QJ44PL7L.js.map +0 -1
  143. package/dist/chunk-WK5RAFJ3.js.map +0 -1
  144. package/dist/chunk-ZCYU7QA6.cjs.map +0 -1
  145. package/dist/components/auth/methods/web3/Web3ProviderButton.cjs +0 -9
  146. package/dist/components/auth/methods/web3/Web3ProviderButton.js +0 -9
  147. package/dist/components/auth/methods/web3/Web3SignIn.d.cts +0 -5
  148. package/dist/components/auth/methods/web3/Web3SignIn.d.ts +0 -5
  149. /package/dist/{chunk-H2WTBOQ5.cjs.map → chunk-3LHIEADG.cjs.map} +0 -0
  150. /package/dist/{chunk-R2H6H2HY.js.map → chunk-4BGD6LSC.js.map} +0 -0
  151. /package/dist/{chunk-NGWVWCWP.cjs.map → chunk-6AFXSTEN.cjs.map} +0 -0
  152. /package/dist/{chunk-GHIVSSM5.js.map → chunk-7YHGZZ6G.js.map} +0 -0
  153. /package/dist/{chunk-7EGLPJKV.cjs.map → chunk-E7KTAG6X.cjs.map} +0 -0
  154. /package/dist/{chunk-HXZYERJJ.js.map → chunk-FKRBO2MK.js.map} +0 -0
  155. /package/dist/{chunk-3RXUFZTR.cjs.map → chunk-G526QBKQ.cjs.map} +0 -0
  156. /package/dist/{chunk-L5BIVHQJ.cjs.map → chunk-GGVJALEH.cjs.map} +0 -0
  157. /package/dist/{chunk-ZRXZOZZZ.cjs.map → chunk-HR57IU52.cjs.map} +0 -0
  158. /package/dist/{chunk-GM7C5PE4.js.map → chunk-HYP7ISWS.js.map} +0 -0
  159. /package/dist/{chunk-WBKHUVJU.js.map → chunk-JZYMJ733.js.map} +0 -0
  160. /package/dist/{chunk-5H7AYX72.cjs.map → chunk-LD66M6G7.cjs.map} +0 -0
  161. /package/dist/{chunk-ZRYD4SFA.js.map → chunk-LF3XEXLA.js.map} +0 -0
  162. /package/dist/{chunk-74SNQV3K.js.map → chunk-MBJBFR2H.js.map} +0 -0
  163. /package/dist/{chunk-EVL7VEPX.js.map → chunk-NKOG6FTK.js.map} +0 -0
  164. /package/dist/{chunk-GBW67Z6V.cjs.map → chunk-NTAMXW3Z.cjs.map} +0 -0
  165. /package/dist/components/auth/methods/web3/{Web3AuthWrapper.cjs.map → Web3AuthFlowButton.cjs.map} +0 -0
  166. /package/dist/components/auth/methods/web3/{Web3AuthWrapper.js.map → Web3AuthFlowButton.js.map} +0 -0
  167. /package/dist/components/auth/methods/web3/{Web3ConnectButton.cjs.map → Web3Connector.cjs.map} +0 -0
  168. /package/dist/components/auth/methods/web3/{Web3ConnectButton.js.map → Web3Connector.js.map} +0 -0
  169. /package/dist/components/auth/methods/web3/{Web3ProviderButton.cjs.map → Web3ConnectorButton.cjs.map} +0 -0
  170. /package/dist/components/auth/methods/web3/{Web3ProviderButton.js.map → Web3ConnectorButton.js.map} +0 -0
  171. /package/dist/components/auth/methods/web3/{Web3SignIn.cjs.map → Web3ConnectorContainer.cjs.map} +0 -0
  172. /package/dist/components/auth/methods/web3/{Web3SignIn.js.map → Web3ConnectorContainer.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/providers/CrossmintWalletProvider.tsx","../src/hooks/useWallet.ts","../src/hooks/useAuth.ts","../src/providers/CrossmintAuthProvider.tsx","../src/components/auth/AuthFormDialog.tsx","../src/providers/auth/AuthFormProvider.tsx","../src/hooks/useCrossmintAuth.ts","../src/components/auth/methods/email/EmailAuthFlow.tsx","../src/components/auth/methods/email/EmailOTPInput.tsx","../src/components/auth/methods/email/EmailSignIn.tsx","../src/components/common/Divider.tsx","../src/hooks/useOAuthWindowListener.ts","../src/components/auth/methods/google/GoogleSignIn.tsx","../src/components/auth/methods/farcaster/FarcasterSignIn.tsx","../src/components/auth/methods/web3/Web3SignIn.tsx","../src/components/auth/methods/web3/Web3AuthWrapper.tsx","../src/components/auth/methods/web3/Web3Connectors.tsx","../src/components/auth/methods/web3/Web3AuthFlow.tsx","../src/components/auth/AuthForm.tsx"],"names":["createContext","useMemo","useState","useContext","useEffect","useRef","oauthUrlMap","jsx","_a","_b","jsxs","_e","Fragment","error","useAccount","user"],"mappings":"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","sourcesContent":["import { type ReactNode, createContext, useMemo, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport {\n type EVMSmartWallet,\n type EVMSmartWalletChain,\n SmartWalletError,\n SmartWalletSDK,\n type WalletParams,\n type PasskeySigner,\n} from \"@crossmint/client-sdk-smart-wallet\";\n\nimport { useCrossmint } from \"../hooks\";\nimport type { UIConfig } from \"@crossmint/common-sdk-base\";\nimport { PasskeyPrompt } from \"@/components/auth/PasskeyPrompt\";\n\ntype WalletStatus = \"not-loaded\" | \"in-progress\" | \"loaded\" | \"loading-error\";\n\ntype ValidPasskeyPromptType =\n | \"create-wallet\"\n | \"transaction\"\n | \"not-supported\"\n | \"create-wallet-error\"\n | \"transaction-error\";\ntype PasskeyPromptState =\n | {\n type: ValidPasskeyPromptType;\n open: true;\n primaryActionOnClick: () => void;\n secondaryActionOnClick?: () => void;\n }\n | { open: false };\n\ntype ValidWalletState =\n | { status: \"not-loaded\" | \"in-progress\" }\n | { status: \"loaded\"; wallet: EVMSmartWallet }\n | { status: \"loading-error\"; error: SmartWalletError };\n\ntype WalletContext = {\n status: WalletStatus;\n wallet?: EVMSmartWallet;\n error?: SmartWalletError;\n getOrCreateWallet: (\n config?: Pick<WalletConfig, \"signer\" | \"type\">\n ) => Promise<{ startedCreation: boolean; reason?: string }>;\n clearWallet: () => void;\n};\n\nexport const WalletContext = createContext<WalletContext>({\n status: \"not-loaded\",\n getOrCreateWallet: () => Promise.resolve({ startedCreation: false }),\n clearWallet: () => {},\n});\n\nexport type WalletConfig = WalletParams & { type: \"evm-smart-wallet\" };\n\nexport function CrossmintWalletProvider({\n children,\n defaultChain,\n showPasskeyHelpers = true, // enabled by default\n appearance,\n}: {\n children: ReactNode;\n defaultChain: EVMSmartWalletChain;\n showPasskeyHelpers?: boolean;\n appearance?: UIConfig;\n}) {\n const { crossmint } = useCrossmint(\"CrossmintWalletProvider must be used within CrossmintProvider\");\n const smartWalletSDK = useMemo(() => SmartWalletSDK.init({ clientApiKey: crossmint.apiKey }), [crossmint.apiKey]);\n\n const [walletState, setWalletState] = useState<ValidWalletState>({ status: \"not-loaded\" });\n const [passkeyPromptState, setPasskeyPromptState] = useState<PasskeyPromptState>({ open: false });\n\n const getOrCreateWallet = async (\n config: WalletConfig = { type: \"evm-smart-wallet\", signer: { type: \"PASSKEY\" } }\n ) => {\n if (walletState.status == \"in-progress\") {\n console.log(\"Wallet already loading\");\n return { startedCreation: false, reason: \"Wallet is already loading.\" };\n }\n\n if (crossmint.jwt == null) {\n return { startedCreation: false, reason: `Jwt not set in \"CrossmintProvider\".` };\n }\n\n try {\n setWalletState({ status: \"in-progress\" });\n const wallet = await smartWalletSDK.getOrCreateWallet(\n { jwt: crossmint.jwt as string },\n defaultChain,\n enhanceConfigWithPasskeyPrompts(config)\n );\n setWalletState({ status: \"loaded\", wallet });\n } catch (error: unknown) {\n console.error(\"There was an error creating a wallet \", error);\n setWalletState(deriveErrorState(error));\n }\n return { startedCreation: true };\n };\n\n const enhanceConfigWithPasskeyPrompts = (config: WalletConfig) => {\n if (showPasskeyHelpers && (config.signer as PasskeySigner).type === \"PASSKEY\") {\n return {\n ...config,\n signer: {\n ...config.signer,\n onPrePasskeyRegistration: createPasskeyPrompt(\"create-wallet\"),\n onPasskeyRegistrationError: createPasskeyPrompt(\"create-wallet-error\"),\n onFirstTimePasskeySigning: createPasskeyPrompt(\"transaction\"),\n onFirstTimePasskeySigningError: createPasskeyPrompt(\"transaction-error\"),\n },\n };\n }\n return config;\n };\n\n const createPasskeyPrompt = (type: ValidPasskeyPromptType) => () =>\n new Promise<void>((resolve) => {\n setPasskeyPromptState({\n type,\n open: true,\n primaryActionOnClick: () => {\n setPasskeyPromptState({ open: false });\n resolve();\n },\n secondaryActionOnClick: () => {\n setPasskeyPromptState({ open: false });\n resolve();\n },\n });\n });\n\n const clearWallet = () => {\n setWalletState({ status: \"not-loaded\" });\n };\n\n return (\n <WalletContext.Provider value={{ ...walletState, getOrCreateWallet, clearWallet }}>\n {children}\n {passkeyPromptState.open\n ? createPortal(<PasskeyPrompt state={passkeyPromptState} appearance={appearance} />, document.body)\n : null}\n </WalletContext.Provider>\n );\n}\n\nfunction deriveErrorState(error: unknown): { status: \"loading-error\"; error: SmartWalletError } {\n if (error instanceof SmartWalletError) {\n return { status: \"loading-error\", error };\n }\n\n const message = error instanceof Error ? error.message : String(error);\n const stack = error instanceof Error ? error.stack : undefined;\n return { status: \"loading-error\", error: new SmartWalletError(`Unknown Wallet Error: ${message}`, stack) };\n}\n","import { useContext } from \"react\";\n\nimport { WalletContext } from \"../providers/CrossmintWalletProvider\";\n\nexport function useWallet() {\n const walletContext = useContext(WalletContext);\n\n if (!walletContext) {\n throw new Error(\"useWallet must be used within CrossmintAuthProvider or CrossmintWalletProvider\");\n }\n\n return walletContext;\n}\n","import { useContext } from \"react\";\n\nimport { AuthContext, type AuthContextType } from \"../providers\";\n\nexport function useAuth(): AuthContextType {\n const context = useContext(AuthContext);\n if (context === undefined) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n return context;\n}\n","import { type ReactNode, createContext, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { CrossmintAuth, getCookie } from \"@crossmint/client-sdk-auth\";\nimport type { EVMSmartWalletChain } from \"@crossmint/client-sdk-smart-wallet\";\nimport { type UIConfig, validateApiKeyAndGetCrossmintBaseUrl } from \"@crossmint/common-sdk-base\";\nimport { type AuthMaterialWithUser, SESSION_PREFIX, type SDKExternalUser } from \"@crossmint/common-sdk-auth\";\n\nimport AuthFormDialog from \"../components/auth/AuthFormDialog\";\nimport { useCrossmint, useWallet } from \"../hooks\";\nimport { CrossmintWalletProvider } from \"./CrossmintWalletProvider\";\nimport { AuthFormProvider } from \"./auth/AuthFormProvider\";\nimport { TwindProvider } from \"./TwindProvider\";\n\nexport type CrossmintAuthWalletConfig = {\n defaultChain: EVMSmartWalletChain;\n createOnLogin: \"all-users\" | \"off\";\n type: \"evm-smart-wallet\";\n showPasskeyHelpers?: boolean;\n};\n\nexport type LoginMethod = \"email\" | \"google\" | \"farcaster\" | \"web3\";\n\nexport type CrossmintAuthProviderProps = {\n embeddedWallets?: CrossmintAuthWalletConfig;\n appearance?: UIConfig;\n children: ReactNode;\n loginMethods?: LoginMethod[];\n refreshRoute?: string;\n logoutRoute?: string;\n};\n\ntype AuthStatus = \"logged-in\" | \"logged-out\" | \"in-progress\";\n\nexport interface AuthContextType {\n crossmintAuth?: CrossmintAuth;\n login: () => void;\n logout: () => void;\n jwt?: string;\n user?: SDKExternalUser;\n status: AuthStatus;\n getUser: () => void;\n}\n\nconst defaultContextValue: AuthContextType = {\n crossmintAuth: undefined,\n login: () => {},\n logout: () => {},\n jwt: undefined,\n user: undefined,\n status: \"logged-out\",\n getUser: () => {},\n};\n\nexport const AuthContext = createContext<AuthContextType>(defaultContextValue);\n\nconst defaultEmbeddedWallets: CrossmintAuthWalletConfig = {\n defaultChain: \"base-sepolia\",\n createOnLogin: \"off\",\n type: \"evm-smart-wallet\",\n};\n\nexport function CrossmintAuthProvider({\n embeddedWallets = defaultEmbeddedWallets,\n children,\n appearance,\n loginMethods = [\"email\", \"google\"],\n refreshRoute,\n logoutRoute,\n}: CrossmintAuthProviderProps) {\n const [user, setUser] = useState<SDKExternalUser | undefined>(undefined);\n const { crossmint, setJwt } = useCrossmint(\"CrossmintAuthProvider must be used within CrossmintProvider\");\n // Only create the CrossmintAuth instance once, even in StrictMode, as the constructor calls /refresh\n // It can only be called once to avoid race conditions\n const crossmintAuthRef = useRef<CrossmintAuth | null>(null);\n // biome-ignore lint/correctness/useExhaustiveDependencies: crossmint can't be a dependency because it updates with each jwt change\n const crossmintAuth = useMemo(() => {\n if (!crossmintAuthRef.current) {\n crossmintAuthRef.current = CrossmintAuth.from(crossmint, {\n callbacks: {\n onLogout: () => {\n setJwt(undefined);\n setUser(undefined);\n },\n onTokenRefresh: (authMaterial: AuthMaterialWithUser) => {\n setJwt(authMaterial.jwt);\n setUser(authMaterial.user);\n },\n },\n refreshRoute,\n logoutRoute,\n });\n }\n return crossmintAuthRef.current;\n }, []);\n\n const crossmintBaseUrl = validateApiKeyAndGetCrossmintBaseUrl(crossmint.apiKey);\n const [dialogOpen, setDialogOpen] = useState(false);\n\n useEffect(() => {\n if (crossmint.jwt == null) {\n const jwt = getCookie(SESSION_PREFIX);\n setJwt(jwt);\n }\n }, []);\n\n useEffect(() => {\n if (crossmint.jwt == null) {\n return;\n }\n\n setDialogOpen(false);\n }, [crossmint.jwt]);\n\n const login = () => {\n if (crossmint.jwt != null) {\n console.log(\"User already logged in\");\n return;\n }\n\n setDialogOpen(true);\n };\n\n const logout = () => {\n crossmintAuth.logout();\n };\n\n const getAuthStatus = (): AuthStatus => {\n if (crossmint.jwt != null) {\n return \"logged-in\";\n }\n if (dialogOpen) {\n return \"in-progress\";\n }\n return \"logged-out\";\n };\n\n const getUser = async () => {\n if (crossmint.jwt == null) {\n console.log(\"User not logged in\");\n return;\n }\n\n const user = await crossmintAuth.getUser();\n setUser(user);\n };\n\n return (\n <TwindProvider>\n <AuthContext.Provider\n value={{\n crossmintAuth,\n login,\n logout,\n jwt: crossmint.jwt,\n user,\n status: getAuthStatus(),\n getUser,\n }}\n >\n <CrossmintWalletProvider\n defaultChain={embeddedWallets.defaultChain}\n showPasskeyHelpers={embeddedWallets.showPasskeyHelpers}\n appearance={appearance}\n >\n <AuthFormProvider\n initialState={{\n appearance,\n setDialogOpen,\n loginMethods,\n embeddedWallets,\n baseUrl: crossmintBaseUrl,\n }}\n >\n <WalletManager embeddedWallets={embeddedWallets} accessToken={crossmint.jwt}>\n {children}\n </WalletManager>\n\n <AuthFormDialog open={dialogOpen} />\n </AuthFormProvider>\n </CrossmintWalletProvider>\n </AuthContext.Provider>\n </TwindProvider>\n );\n}\n\nfunction WalletManager({\n embeddedWallets,\n children,\n accessToken,\n}: {\n embeddedWallets: CrossmintAuthWalletConfig;\n children: ReactNode;\n accessToken: string | undefined;\n}) {\n const { getOrCreateWallet, clearWallet, status } = useWallet();\n\n useEffect(() => {\n if (embeddedWallets.createOnLogin === \"all-users\" && status === \"not-loaded\" && accessToken != null) {\n getOrCreateWallet({\n type: embeddedWallets.type,\n signer: { type: \"PASSKEY\" },\n });\n }\n\n if (status === \"loaded\" && accessToken == null) {\n clearWallet();\n }\n }, [accessToken, status]);\n\n return <>{children}</>;\n}\n","import { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { AuthForm } from \"./AuthForm\";\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from \"../common/Dialog\";\nimport { useEffect } from \"react\";\n\nexport default function AuthFormDialog({ open }: { open: boolean }) {\n const { appearance, setDialogOpen } = useAuthForm();\n\n useEffect(() => {\n document.body.style.overflow = open ? \"hidden\" : \"\";\n }, [open]);\n\n return (\n <Dialog modal={false} open={open} onOpenChange={setDialogOpen}>\n <DialogContent\n onInteractOutside={(e) => e.preventDefault()}\n onOpenAutoFocus={(e) => e.preventDefault()}\n closeButtonColor={appearance?.colors?.textPrimary}\n closeButtonRingColor={appearance?.colors?.accent}\n className=\"cm-responsive-border-radius-auth-dialog\"\n style={{\n borderRadius: appearance?.borderRadius,\n backgroundColor: appearance?.colors?.background,\n }}\n >\n <VisuallyHidden asChild>\n <DialogTitle>Crossmint Auth</DialogTitle>\n </VisuallyHidden>\n <VisuallyHidden asChild>\n <DialogDescription>Sign in via Crossmint</DialogDescription>\n </VisuallyHidden>\n\n <AuthForm className=\"max-w-[448px]\" />\n </DialogContent>\n </Dialog>\n );\n}\n","import { createContext, useCallback, useContext, useEffect, useState, type ReactNode } from \"react\";\nimport type { OAuthProvider } from \"@crossmint/common-sdk-auth\";\nimport type { UIConfig } from \"@crossmint/common-sdk-base\";\nimport type { CrossmintAuthWalletConfig, LoginMethod } from \"../CrossmintAuthProvider\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\nimport { WagmiAuthProvider } from \"./web3/WagmiAuthProvider\";\n\ntype AuthStep = \"initial\" | \"otp\" | \"qrCode\" | \"web3\" | \"web3/metamask\" | \"web3/walletconnect\";\n\ntype OAuthUrlMap = Record<OAuthProvider, string>;\nconst initialOAuthUrlMap: OAuthUrlMap = {\n google: \"\",\n // Farcaster is not included here as it uses a different authentication method\n};\ninterface AuthFormContextType {\n step: AuthStep;\n appearance?: UIConfig;\n loginMethods: LoginMethod[];\n oauthUrlMap: OAuthUrlMap;\n isLoadingOauthUrlMap: boolean;\n baseUrl: string;\n setStep: (step: AuthStep) => void;\n setDialogOpen: (open: boolean) => void;\n}\n\ntype ContextInitialStateProps = {\n appearance?: UIConfig;\n loginMethods: LoginMethod[];\n baseUrl: string;\n setDialogOpen?: (open: boolean) => void;\n embeddedWallets: CrossmintAuthWalletConfig;\n};\n\nconst AuthFormContext = createContext<AuthFormContextType | undefined>(undefined);\n\nexport const useAuthForm = () => {\n const context = useContext(AuthFormContext);\n if (!context) {\n throw new Error(\"useAuthForm must be used within an AuthFormProvider\");\n }\n return context;\n};\n\nexport const AuthFormProvider = ({\n children,\n initialState,\n}: { children: ReactNode; initialState: ContextInitialStateProps }) => {\n const { crossmintAuth } = useCrossmintAuth();\n const [step, setStep] = useState<AuthStep>(\"initial\");\n const [oauthUrlMap, setOauthUrlMap] = useState<OAuthUrlMap>(initialOAuthUrlMap);\n const [isLoadingOauthUrlMap, setIsLoadingOauthUrlMap] = useState(true);\n\n const { loginMethods, baseUrl, setDialogOpen, appearance, embeddedWallets } = initialState;\n\n if (loginMethods.includes(\"web3\") && embeddedWallets?.createOnLogin === \"all-users\") {\n throw new Error(\"Creating wallets on login is not yet supported for web3 login method\");\n }\n\n const preFetchAndSetOauthUrl = useCallback(async () => {\n setIsLoadingOauthUrlMap(true);\n try {\n const oauthProviders = loginMethods.filter(\n (method): method is OAuthProvider => method in initialOAuthUrlMap\n );\n\n const oauthPromiseList = oauthProviders.map(async (provider) => {\n const url = await crossmintAuth?.getOAuthUrl(provider);\n return { [provider]: url };\n });\n\n const oauthUrlMap = Object.assign({}, ...(await Promise.all(oauthPromiseList)));\n setOauthUrlMap(oauthUrlMap);\n } catch (error) {\n console.error(\"Error fetching OAuth URLs:\", error);\n } finally {\n setIsLoadingOauthUrlMap(false);\n }\n }, [loginMethods, crossmintAuth]);\n\n useEffect(() => {\n preFetchAndSetOauthUrl();\n }, [preFetchAndSetOauthUrl]);\n\n const handleToggleDialog = (open: boolean) => {\n setDialogOpen?.(open);\n if (!open) {\n // Delay to allow the close transition to complete before resetting the step\n setTimeout(() => setStep(\"initial\"), 250);\n }\n };\n\n const value: AuthFormContextType = {\n step,\n baseUrl,\n appearance,\n loginMethods,\n oauthUrlMap,\n isLoadingOauthUrlMap,\n setDialogOpen: handleToggleDialog,\n setStep,\n };\n\n return (\n <AuthFormContext.Provider value={value}>\n <WagmiAuthProvider>{children}</WagmiAuthProvider>\n </AuthFormContext.Provider>\n );\n};\n","import { useContext } from \"react\";\nimport { AuthContext } from \"../providers/CrossmintAuthProvider\";\n\nexport function useCrossmintAuth() {\n const context = useContext(AuthContext);\n\n if (!context) {\n throw new Error(\"useCrossmintAuth must be used within a CrossmintAuthProvider\");\n }\n\n return context;\n}\n","import { useState } from \"react\";\nimport { EmailOTPInput } from \"./EmailOTPInput\";\nimport { EmailSignIn } from \"./EmailSignIn\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport type { OtpEmailPayload } from \"@/types/auth\";\n\nexport function EmailAuthFlow() {\n const { step } = useAuthForm();\n const [otpEmailData, setOtpEmailData] = useState<OtpEmailPayload | null>(null);\n\n if (step === \"otp\") {\n return <EmailOTPInput otpEmailData={otpEmailData} setOtpEmailData={setOtpEmailData} />;\n }\n if (step === \"initial\") {\n return <EmailSignIn setOtpEmailData={setOtpEmailData} />;\n }\n\n return null;\n}\n","import { useState } from \"react\";\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from \"@/components/common/InputOTP\";\nimport { EmailOtpIcon } from \"@/icons/emailOTP\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport type { OtpEmailPayload } from \"@/types/auth\";\nimport { AuthFormBackButton } from \"../../AuthFormBackButton\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\n\nexport const EMAIL_VERIFICATION_TOKEN_LENGTH = 6;\n\nexport function EmailOTPInput({\n otpEmailData,\n setOtpEmailData,\n}: { otpEmailData: OtpEmailPayload | null; setOtpEmailData: (data: OtpEmailPayload | null) => void }) {\n const { crossmintAuth } = useCrossmintAuth();\n const { appearance, setDialogOpen, setStep } = useAuthForm();\n\n const [token, setToken] = useState(\"\");\n const [hasError, setHasError] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const handleOnSubmit = async () => {\n setLoading(true);\n try {\n const oneTimeSecret = await crossmintAuth?.confirmEmailOtp(\n otpEmailData?.email ?? \"\",\n otpEmailData?.emailId ?? \"\",\n token\n );\n\n await crossmintAuth?.handleRefreshAuthMaterial(oneTimeSecret as string);\n setDialogOpen(false);\n setStep(\"initial\");\n } catch (e) {\n console.error(\"Error signing in via email \", e);\n setHasError(true);\n } finally {\n setLoading(false);\n }\n };\n\n const handleOnBack = () => {\n setStep(\"initial\");\n setOtpEmailData(null);\n };\n\n return (\n <div>\n <AuthFormBackButton\n onClick={handleOnBack}\n iconColor={appearance?.colors?.textPrimary}\n ringColor={appearance?.colors?.accent}\n />\n\n <div className=\"flex flex-col items-center justify-start w-full\">\n <div className=\"relative left-3\">\n <EmailOtpIcon\n customAccentColor={appearance?.colors?.accent}\n customButtonBackgroundColor={appearance?.colors?.buttonBackground}\n customBackgroundColor={appearance?.colors?.background}\n />\n </div>\n <p\n className=\"text-base font-normal mt-4 mb-1 text-center text-cm-text-primary\"\n style={{ color: appearance?.colors?.textPrimary }}\n >\n {\"Check your email\"}\n </p>\n <p\n className=\"text-center text-cm-text-secondary px-4\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n {\"A temporary login code has been sent to your email\"}\n </p>\n <div className=\"py-8\">\n <InputOTP\n maxLength={EMAIL_VERIFICATION_TOKEN_LENGTH}\n value={token}\n onChange={(val) => {\n setToken(val);\n setHasError(false);\n }}\n onComplete={handleOnSubmit}\n disabled={loading}\n customStyles={{\n accent: appearance?.colors?.accent ?? \"#04AA6D\",\n danger: appearance?.colors?.danger ?? \"#f44336\",\n border: appearance?.colors?.border ?? \"#E5E7EB\",\n textPrimary: appearance?.colors?.textPrimary ?? \"#909ca3\",\n buttonBackground: appearance?.colors?.buttonBackground ?? \"#eff6ff\",\n inputBackground: appearance?.colors?.inputBackground ?? \"#FFFFFF\",\n borderRadius: appearance?.borderRadius,\n }}\n >\n <InputOTPGroup>\n <InputOTPSlot index={0} hasError={hasError} />\n <InputOTPSlot index={1} hasError={hasError} />\n <InputOTPSlot index={2} hasError={hasError} />\n <InputOTPSlot index={3} hasError={hasError} />\n <InputOTPSlot index={4} hasError={hasError} />\n <InputOTPSlot index={5} hasError={hasError} />\n </InputOTPGroup>\n </InputOTP>\n </div>\n\n <p className=\"text-sm leading-tight text-cm-text-secondary text-center\">\n <span style={{ color: appearance?.colors?.textSecondary }}>\n Can't find the email? Check spam folder or contact\n </span>{\" \"}\n <a\n key=\"resend-email-link\"\n className=\"transition-opacity duration-150 text-cm-link hover:opacity-70\"\n style={{ color: appearance?.colors?.textLink }}\n href=\"mailto:support@crossmint.io\"\n >\n support@crossmint.io\n </a>\n </p>\n </div>\n </div>\n );\n}\n","import { type FormEvent, useState } from \"react\";\nimport Color from \"color\";\n\nimport { Spinner } from \"@/components/common/Spinner\";\nimport { classNames } from \"@/utils/classNames\";\nimport { AlertIcon } from \"../../../../icons/alert\";\nimport { isEmailValid } from \"@crossmint/common-sdk-auth\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport type { OtpEmailPayload } from \"@/types/auth\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\n\nexport function EmailSignIn({ setOtpEmailData }: { setOtpEmailData: (data: OtpEmailPayload) => void }) {\n const { crossmintAuth } = useCrossmintAuth();\n const { appearance, setStep } = useAuthForm();\n\n const [emailInput, setEmailInput] = useState(\"\");\n const [emailError, setEmailError] = useState(\"\");\n const [isLoading, setIsLoading] = useState(false);\n\n async function handleOnSubmit(e: FormEvent<HTMLFormElement>) {\n e.preventDefault();\n\n if (!isEmailValid(emailInput)) {\n setEmailError(\"Please enter a valid email address\");\n return;\n }\n\n setIsLoading(true);\n\n try {\n const trimmedEmailInput = emailInput.trim().toLowerCase();\n const emailSignInRes = (await crossmintAuth?.sendEmailOtp(trimmedEmailInput)) as { emailId: string };\n\n setOtpEmailData({ email: trimmedEmailInput, emailId: emailSignInRes.emailId });\n setStep(\"otp\");\n } catch (_e: unknown) {\n setIsLoading(false);\n setEmailError(\"Failed to send email. Please try again or contact support.\");\n }\n }\n\n return (\n <>\n <div className=\"flex flex-col items-start justify-start w-full rounded-lg\">\n <div className=\"w-full\">\n <form\n role=\"form\"\n className=\"relative\"\n onSubmit={handleOnSubmit}\n noValidate // we want to handle validation ourselves\n >\n <label htmlFor=\"emailInput\" className=\"sr-only\">\n Email\n </label>\n <input\n className={classNames(\n \"flex-grow text-cm-text-secondary text-left pl-[16px] pr-[80px] h-[58px] w-full border border-cm-border rounded-xl bg-cm-background-primary placeholder:text-sm placeholder:text-opacity-60\",\n \"transition-none duration-200 ease-in-out\",\n \"focus:outline-none focus-ring-custom\", // Add focus ring\n emailError ? \"border-red-500\" : \"\"\n )}\n style={{\n color: appearance?.colors?.textPrimary,\n borderRadius: appearance?.borderRadius,\n borderColor: emailError ? appearance?.colors?.danger : appearance?.colors?.border,\n backgroundColor: appearance?.colors?.inputBackground,\n // @ts-expect-error Add custom ring color to tailwind\n \"--focus-ring-color\": new Color(appearance?.colors?.accent ?? \"#04AA6D\")\n .alpha(0.18)\n .toString(),\n }}\n type=\"email\"\n placeholder=\"Enter email\"\n value={emailInput}\n onChange={(e) => {\n setEmailInput(e.target.value);\n setEmailError(\"\");\n }}\n readOnly={isLoading}\n aria-describedby=\"emailError\"\n />\n <div className=\"absolute inset-y-0 right-0 flex items-center pr-4\">\n {emailError && <AlertIcon customColor={appearance?.colors?.danger} />}\n {isLoading && (\n <Spinner\n style={{\n color: appearance?.colors?.textSecondary,\n fill: appearance?.colors?.textPrimary,\n }}\n />\n )}\n {!emailError && !isLoading && (\n <button\n type=\"submit\"\n className={classNames(\"cursor-pointer font-medium text-cm-accent text-nowrap\")}\n style={{ color: appearance?.colors?.accent }}\n disabled={!emailInput}\n >\n Sign in\n </button>\n )}\n </div>\n </form>\n {emailError && <p className=\"text-xs text-red-500 mb-2 pt-2\">{emailError}</p>}\n </div>\n </div>\n </>\n );\n}\n","import { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport type { UIConfig } from \"@crossmint/common-sdk-base\";\n\nexport function Divider({ appearance, text }: { appearance?: UIConfig; text?: string }) {\n const { step } = useAuthForm();\n\n if (step !== \"initial\") {\n return null;\n }\n\n return (\n <div className=\"flex items-center justify-center w-full pt-2 pb-3\">\n <span className=\"w-full h-[1px] bg-cm-border\" style={{ backgroundColor: appearance?.colors?.border }} />\n {text != null ? (\n <p\n className=\"flex-none px-2 text-sm text-cm-text-primary\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n {text}\n </p>\n ) : null}\n <span className=\"w-full h-[1px] bg-cm-border\" style={{ backgroundColor: appearance?.colors?.border }} />\n </div>\n );\n}\n","import type { OAuthProvider } from \"@crossmint/common-sdk-auth\";\nimport { ChildWindow, PopupWindow } from \"@crossmint/client-sdk-window\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { z } from \"zod\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { useCrossmintAuth } from \"./useCrossmintAuth\";\n\nexport const useOAuthWindowListener = (provider: OAuthProvider) => {\n const { crossmintAuth } = useCrossmintAuth();\n const { oauthUrlMap } = useAuthForm();\n const [isLoading, setIsLoading] = useState(false);\n const childRef = useRef<ChildWindow<IncomingEvents, OutgoingEvents> | null>(null);\n\n useEffect(() => {\n if (childRef.current == null) {\n childRef.current = new ChildWindow<IncomingEvents, OutgoingEvents>(window.opener || window.parent, \"*\", {\n incomingEvents,\n outgoingEvents,\n });\n }\n\n return () => {\n if (childRef.current != null) {\n childRef.current.off(\"authMaterialFromPopupCallback\");\n }\n };\n }, []);\n\n const createPopupAndSetupListeners = async () => {\n if (childRef.current == null) {\n throw new Error(\"Child window not initialized\");\n }\n setIsLoading(true);\n const popup = await PopupWindow.init(oauthUrlMap[provider], {\n awaitToLoad: false,\n crossOrigin: true,\n width: 400,\n height: 700,\n });\n\n const handleAuthMaterial = async (data: { oneTimeSecret: string }) => {\n await crossmintAuth?.handleRefreshAuthMaterial(data.oneTimeSecret);\n childRef.current?.off(\"authMaterialFromPopupCallback\");\n popup.window.close();\n setIsLoading(false);\n };\n\n childRef.current.on(\"authMaterialFromPopupCallback\", handleAuthMaterial);\n\n // Add a check for manual window closure\n // Ideally we should find a more explicit way of doing this, but I think this is fine for now.\n const checkWindowClosure = setInterval(() => {\n if (popup.window.closed) {\n clearInterval(checkWindowClosure);\n setIsLoading(false);\n childRef.current?.off(\"authMaterialFromPopupCallback\");\n }\n }, 2500); // Check every 2.5 seconds\n };\n\n return {\n createPopupAndSetupListeners,\n isLoading,\n };\n};\n\nconst incomingEvents = {\n authMaterialFromPopupCallback: z.object({ oneTimeSecret: z.string() }),\n};\n\nconst outgoingEvents = {\n authMaterialFromAuthFrame: z.object({ oneTimeSecret: z.string() }),\n};\n\ntype IncomingEvents = {\n authMaterialFromPopupCallback: typeof incomingEvents.authMaterialFromPopupCallback;\n};\n\ntype OutgoingEvents = {\n authMaterialFromAuthFrame: typeof outgoingEvents.authMaterialFromAuthFrame;\n};\n","import type { ButtonHTMLAttributes } from \"react\";\nimport { GoogleIcon } from \"@/icons/google\";\nimport { useOAuthWindowListener } from \"@/hooks/useOAuthWindowListener\";\nimport { Spinner } from \"@/components/common/Spinner\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { classNames } from \"@/utils/classNames\";\n\nexport function GoogleSignIn({ ...props }: ButtonHTMLAttributes<HTMLButtonElement>) {\n const { step, appearance, isLoadingOauthUrlMap } = useAuthForm();\n const { createPopupAndSetupListeners, isLoading: isLoadingOAuthWindow } = useOAuthWindowListener(\"google\");\n const isLoading = isLoadingOauthUrlMap || isLoadingOAuthWindow;\n\n if (step !== \"initial\") {\n return null;\n }\n\n return (\n <button\n className={classNames(\n \"relative flex text-base p-4 bg-cm-muted-primary text-cm-text-primary items-center w-full rounded-xl justify-center\",\n \"transition-colors duration-200 ease-in-out\",\n \"hover:bg-cm-hover focus:bg-cm-hover outline-none\",\n isLoading ? \"cursor-not-allowed hover:bg-cm-muted-primary\" : \"\"\n )}\n style={{\n borderRadius: appearance?.borderRadius,\n backgroundColor: appearance?.colors?.buttonBackground,\n }}\n onClick={isLoading ? undefined : createPopupAndSetupListeners}\n {...props}\n >\n <>\n <GoogleIcon className=\"h-[25px] w-[25px] absolute left-[18px]\" />\n {isLoading ? (\n <Spinner\n style={{\n color: appearance?.colors?.textSecondary,\n fill: appearance?.colors?.textPrimary,\n }}\n />\n ) : (\n <span\n className=\"font-medium\"\n style={{ margin: \"0px 32px\", color: appearance?.colors?.textPrimary }}\n >\n Sign in with Google\n </span>\n )}\n </>\n <span className=\"sr-only\">Sign in with Google</span>\n </button>\n );\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useSignIn, QRCode, type UseSignInData } from \"@farcaster/auth-kit\";\nimport { FarcasterIcon } from \"@/icons/farcaster\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { Spinner } from \"@/components/common/Spinner\";\nimport { classNames } from \"@/utils/classNames\";\nimport { AuthFormBackButton } from \"../../AuthFormBackButton\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\nexport function FarcasterSignIn() {\n const { step, appearance, setStep } = useAuthForm();\n\n if (step === \"initial\") {\n return (\n <div>\n <button\n className={classNames(\n \"relative flex text-base p-4 bg-cm-muted-primary text-cm-text-primary items-center w-full rounded-xl justify-center\",\n \"transition-colors duration-200 ease-in-out\",\n \"hover:bg-cm-hover focus:bg-cm-hover outline-none\"\n )}\n style={{\n borderRadius: appearance?.borderRadius,\n backgroundColor: appearance?.colors?.buttonBackground,\n }}\n onClick={() => {\n setStep(\"qrCode\");\n }}\n >\n <FarcasterIcon className=\"h-[25px] w-[25px] absolute left-[18px]\" />\n <span\n className=\"font-medium\"\n style={{ margin: \"0px 32px\", color: appearance?.colors?.textPrimary }}\n >\n Sign in with Farcaster\n </span>\n <span className=\"sr-only\">Sign in with Farcaster</span>\n </button>\n </div>\n );\n }\n\n if (step === \"qrCode\") {\n return <FarcasterQRCode />;\n }\n\n return null;\n}\n\n// We want this to be a separate component so it can completely un-render when the user goes back to the initial screen\nfunction FarcasterQRCode() {\n const { crossmintAuth } = useCrossmintAuth();\n const { appearance, setStep, setDialogOpen } = useAuthForm();\n const [farcasterData, setFarcasterData] = useState<UseSignInData | null>(null);\n\n const farcasterProps = useMemo(\n () => ({\n onSuccess: (data: UseSignInData) => {\n // Step 3. set the farcaster data once the sign in is successful\n setFarcasterData(data);\n },\n }),\n []\n );\n\n const { signIn, url: qrCodeUrl, connect, signOut, isConnected } = useSignIn(farcasterProps);\n\n const handleFarcasterSignIn = async (data: UseSignInData) => {\n try {\n const oneTimeSecret = await crossmintAuth?.signInWithFarcaster(data);\n // Step 5. fetch the auth material, close the dialog, and unrender any farcaster client stuff\n await crossmintAuth?.handleRefreshAuthMaterial(oneTimeSecret as string);\n setDialogOpen(false);\n setStep(\"initial\");\n } catch (error) {\n console.error(\"Error during Farcaster sign-in:\", error);\n }\n };\n\n useEffect(() => {\n if (farcasterData != null) {\n // Step 4. call the handleFarcasterSignInfunction to handle the sign in\n handleFarcasterSignIn(farcasterData);\n }\n }, [farcasterData]);\n\n useEffect(() => {\n if (isConnected) {\n // Step 2. once connected, call the signIn function to start the sign in process\n signIn();\n }\n }, [isConnected]);\n\n useEffect(() => {\n // Step 1. call the connect function to initialize the connection\n connect();\n }, []);\n\n return (\n <div>\n <AuthFormBackButton\n onClick={() => {\n signOut();\n setStep(\"initial\");\n }}\n iconColor={appearance?.colors?.textPrimary}\n ringColor={appearance?.colors?.accent}\n />\n\n <div className=\"flex flex-col items-center gap-4\">\n <div className=\"text-center\">\n <h3\n className=\"text-lg font-semibold text-cm-text-primary mb-2\"\n style={{ color: appearance?.colors?.textPrimary }}\n >\n Sign in with Farcaster\n </h3>\n <p\n className=\"text-base font-normal text-cm-text-secondary\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n Scan with your phone's camera to continue.\n </p>\n </div>\n <div\n className=\"bg-white aspect-square rounded-lg p-4\"\n style={{\n backgroundColor: appearance?.colors?.inputBackground,\n borderRadius: appearance?.borderRadius,\n }}\n >\n {qrCodeUrl != null ? (\n <QRCode uri={qrCodeUrl} size={280} />\n ) : (\n <div className=\"min-h-[246px] flex items-center justify-center\">\n <Spinner\n style={{\n color: appearance?.colors?.textSecondary,\n fill: appearance?.colors?.textPrimary,\n }}\n />\n </div>\n )}\n </div>\n {qrCodeUrl ? (\n <>\n <p\n className=\"text-base text-center font-normal text-cm-text-secondary\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n Alternatively, click on this link to open Warpcast.\n </p>\n <a\n href={qrCodeUrl}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n className=\"text-base font-normal text-cm-link\"\n style={{ color: appearance?.colors?.textLink }}\n >\n Open Warpcast\n </a>\n </>\n ) : null}\n </div>\n </div>\n );\n}\n","import { ChevronRightIcon } from \"@/icons/chevronRight\";\nimport { WalletIcon } from \"@/icons/wallet\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { classNames } from \"@/utils/classNames\";\n\nexport function Web3SignIn() {\n const { step, appearance, setStep } = useAuthForm();\n\n if (step !== \"initial\") {\n return null;\n }\n\n return (\n <button\n className={classNames(\n \"relative flex text-base p-4 bg-cm-muted-primary text-cm-text-primary items-center w-full rounded-xl justify-center\",\n \"transition-colors duration-200 ease-in-out\",\n \"hover:bg-cm-hover focus:bg-cm-hover outline-none\"\n )}\n style={{\n borderRadius: appearance?.borderRadius,\n borderColor: appearance?.colors?.border,\n backgroundColor: appearance?.colors?.buttonBackground,\n }}\n onClick={() => setStep(\"web3\")}\n >\n <WalletIcon\n className=\"h-[21px] w-[21px] absolute left-[20px]\"\n style={{ color: appearance?.colors?.textPrimary }}\n />\n <span className=\"font-medium\" style={{ margin: \"0px 32px\", color: appearance?.colors?.textPrimary }}>\n Continue with a wallet\n </span>\n <ChevronRightIcon\n className=\"h-[21px] w-[21px] absolute right-[20px]\"\n style={{ color: appearance?.colors?.textSecondary }}\n />\n <span className=\"sr-only\">Continue with a wallet</span>\n </button>\n );\n}\n","import { useState, useEffect } from \"react\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { Web3ConnectButton } from \"./Web3ConnectButton\";\nimport { useAccount, useChainId, useConnect, useSignMessage } from \"wagmi\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\n\ninterface Web3AuthWrapperProps {\n providerType: \"metaMaskSDK\" | \"coinbaseWalletSDK\" | \"walletConnect\";\n flag?: \"isMetaMask\";\n icon: string;\n}\n\nexport function Web3AuthWrapper({ providerType, flag, icon }: Web3AuthWrapperProps) {\n const { crossmintAuth } = useCrossmintAuth();\n const { appearance } = useAuthForm();\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const chainId = useChainId();\n const { address, status: accountStatus } = useAccount(); // hook is causing a hydration error when navigating back\n const { signMessageAsync, status: signMessageStatus } = useSignMessage();\n const { connect, connectors } = useConnect({\n mutation: {\n onError: () => setIsLoading(false),\n },\n });\n\n // fallback to walletConnect if the extension is not installed\n const isExtensionInstalled = window.ethereum?.[flag as keyof typeof window.ethereum] ?? false;\n if (!isExtensionInstalled) {\n providerType = \"walletConnect\";\n }\n\n const connector = connectors.find((c) => c.id === providerType);\n\n useEffect(() => {\n if (address != null) {\n handleSignIn();\n }\n }, [address]);\n\n const handleSignIn = async () => {\n if (address == null) {\n return;\n }\n setIsLoading(true);\n\n try {\n const res = await crossmintAuth?.signInWithSmartWallet(address);\n const signature = await signMessageAsync({ message: res.challenge });\n const authResponse = (await crossmintAuth?.authenticateSmartWallet(address, signature)) as {\n oneTimeSecret: string;\n };\n\n const oneTimeSecret = authResponse.oneTimeSecret;\n await crossmintAuth?.handleRefreshAuthMaterial(oneTimeSecret);\n } catch (error) {\n console.error(`Error connecting to ${providerType}:`, error);\n setError(`Error connecting to ${providerType}. Please try again or contact support.`);\n } finally {\n setIsLoading(false);\n }\n };\n\n const isLoadingOrPending =\n isLoading ||\n accountStatus === \"connecting\" ||\n accountStatus === \"reconnecting\" ||\n signMessageStatus === \"pending\";\n\n return (\n <Web3ConnectButton\n icon={icon}\n appearance={appearance}\n headingText={signMessageStatus === \"pending\" ? \"Sign to verify\" : \"Connect your wallet\"}\n buttonText={error != null && !isLoadingOrPending ? \"Retry\" : isLoadingOrPending ? \"Connecting\" : \"Connect\"}\n isLoading={isLoadingOrPending}\n onConnectClick={() => {\n if (address != null) {\n handleSignIn();\n } else if (connector) {\n connect({ connector, chainId });\n }\n }}\n />\n );\n}\n","import { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { AuthFormBackButton } from \"../../AuthFormBackButton\";\nimport { Web3ProviderButton } from \"./Web3ProviderButton\";\nimport { metamaskIcon, walletConnectIcon } from \"@/icons/base64Icons\";\nimport { Web3AuthWrapper } from \"./Web3AuthWrapper\";\nimport { useAccount, useDisconnect } from \"wagmi\";\n\nexport function Web3Connectors() {\n const { appearance, step, setStep } = useAuthForm();\n const { isConnected } = useAccount();\n const { disconnect } = useDisconnect();\n\n if (step === \"web3\") {\n return (\n <>\n <AuthFormBackButton\n onClick={() => setStep(\"initial\")}\n iconColor={appearance?.colors?.textPrimary}\n ringColor={appearance?.colors?.accent}\n />\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"text-center mb-6\">\n <h3\n className=\"text-lg font-semibold text-cm-text-primary\"\n style={{ color: appearance?.colors?.textPrimary }}\n >\n Connect wallet\n </h3>\n </div>\n <div className=\"flex flex-col gap-[10px] w-full\">\n <Web3ProviderButton\n title=\"Metamask\"\n appearance={appearance}\n img={metamaskIcon}\n onClick={() => {\n if (isConnected) {\n disconnect();\n }\n // wait for all disconnect state to be cleared before proceeding to the next step\n setTimeout(() => {\n setStep(\"web3/metamask\");\n }, 200);\n }}\n />\n <Web3ProviderButton\n title=\"WalletConnect\"\n appearance={appearance}\n img={walletConnectIcon}\n onClick={() => {\n if (isConnected) {\n disconnect();\n }\n setTimeout(() => {\n setStep(\"web3/walletconnect\");\n }, 200);\n }}\n />\n </div>\n </div>\n </>\n );\n }\n\n if (step === \"web3/metamask\") {\n return (\n <>\n <AuthFormBackButton\n onClick={() => setStep(\"web3\")}\n iconColor={appearance?.colors?.textPrimary}\n ringColor={appearance?.colors?.accent}\n />\n <Web3AuthWrapper providerType=\"metaMaskSDK\" flag=\"isMetaMask\" icon={metamaskIcon} />\n </>\n );\n }\n\n if (step === \"web3/walletconnect\") {\n return (\n <>\n <AuthFormBackButton\n onClick={() => setStep(\"web3\")}\n iconColor={appearance?.colors?.textPrimary}\n ringColor={appearance?.colors?.accent}\n />\n <Web3AuthWrapper providerType=\"walletConnect\" icon={walletConnectIcon} />\n </>\n );\n }\n\n return null;\n}\n","import { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { Web3SignIn } from \"./Web3SignIn\";\nimport { Web3Connectors } from \"./Web3Connectors\";\n\nexport function Web3AuthFlow() {\n const { step } = useAuthForm();\n\n if (step.startsWith(\"web3\")) {\n return <Web3Connectors />;\n }\n\n if (step === \"initial\") {\n return <Web3SignIn />;\n }\n\n return null;\n}\n","import { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { EmailAuthFlow } from \"./methods/email/EmailAuthFlow\";\nimport { Divider } from \"../common/Divider\";\nimport { GoogleSignIn } from \"./methods/google/GoogleSignIn\";\nimport { FarcasterSignIn } from \"./methods/farcaster/FarcasterSignIn\";\nimport { PoweredByCrossmint } from \"../common/PoweredByCrossmint\";\nimport { FarcasterProvider } from \"../../providers/auth/FarcasterProvider\";\nimport { classNames } from \"@/utils/classNames\";\nimport { Web3AuthFlow } from \"./methods/web3/Web3AuthFlow\";\n\nexport function AuthForm({ className }: { className?: string }) {\n const { step, appearance, loginMethods, baseUrl } = useAuthForm();\n return (\n <div className={classNames(\"flex flex-col gap-[10px] antialiased animate-none\", className)}>\n {step === \"initial\" ? (\n <div>\n <h1\n className=\"text-2xl font-bold text-cm-text-primary\"\n style={{ color: appearance?.colors?.textPrimary }}\n >\n Sign In\n </h1>\n <p\n className=\"text-base font-normal mb-3 text-cm-text-secondary\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n Sign in using one of the options below\n </p>\n </div>\n ) : null}\n\n {loginMethods.includes(\"email\") ? (\n <>\n <EmailAuthFlow />\n {loginMethods.length > 1 ? <Divider appearance={appearance} text=\"OR\" /> : null}\n </>\n ) : null}\n\n {loginMethods.includes(\"google\") ? <GoogleSignIn /> : null}\n {loginMethods.includes(\"farcaster\") ? (\n <FarcasterProvider baseUrl={baseUrl}>\n <FarcasterSignIn />\n </FarcasterProvider>\n ) : null}\n {loginMethods.includes(\"web3\") ? <Web3AuthFlow /> : null}\n\n {step === \"initial\" || step === \"otp\" ? (\n <PoweredByCrossmint\n className=\"mt-4 justify-center\"\n color={appearance?.colors?.textSecondary ?? \"#A4AFB2\"}\n />\n ) : null}\n </div>\n );\n}\n"]}
@@ -1,41 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
- var _chunk5RX5WFEWcjs = require('./chunk-5RX5WFEW.cjs');
4
-
5
-
6
- var _chunkHCW4RO2Ocjs = require('./chunk-HCW4RO2O.cjs');
7
-
8
-
9
-
10
-
11
- var _chunk4DAZAO6Ycjs = require('./chunk-4DAZAO6Y.cjs');
12
-
13
- // src/components/auth/AuthFormBackButton.tsx
14
- var _jsxruntime = require('react/jsx-runtime');
15
- var AuthFormBackButton = (_a) => {
16
- var _b = _a, {
17
- className,
18
- iconColor,
19
- ringColor
20
- } = _b, props = _chunk4DAZAO6Ycjs.__objRest.call(void 0, _b, [
21
- "className",
22
- "iconColor",
23
- "ringColor"
24
- ]);
25
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26
- "button",
27
- _chunk4DAZAO6Ycjs.__spreadProps.call(void 0, _chunk4DAZAO6Ycjs.__spreadValues.call(void 0, {
28
- className: _chunk5RX5WFEWcjs.classNames.call(void 0,
29
- "absolute rounded-full opacity-70 ring-offset-background text-cm-text-primary transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-cm-accent focus:ring-offset-2 disabled:pointer-events-none",
30
- className
31
- )
32
- }, props), {
33
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHCW4RO2Ocjs.LeftArrowIcon, { className: "w-6 h-6", style: { color: iconColor } })
34
- })
35
- );
36
- };
37
-
38
-
39
-
40
- exports.AuthFormBackButton = AuthFormBackButton;
41
- //# sourceMappingURL=chunk-GY6G3ZC2.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/auth/AuthFormBackButton.tsx"],"names":[],"mappings":";;;;;;;;;;;;;AAkBY;AAdL,IAAM,qBAAqB,CAAC,OAKyD;AALzD,eAC/B;AAAA;AAAA,IACA;AAAA,IACA;AAAA,EAPJ,IAImC,IAI5B,kBAJ4B,IAI5B;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,OACI,QALP;AAAA,MAOG,8BAAC,iBAAc,WAAU,WAAU,OAAO,EAAE,OAAO,UAAU,GAAG;AAAA;AAAA,EACpE;AAER","sourcesContent":["import type React from \"react\";\nimport { classNames } from \"../../utils/classNames\";\nimport { LeftArrowIcon } from \"@/icons/leftArrow\";\n\nexport const AuthFormBackButton = ({\n className,\n iconColor,\n ringColor,\n ...props\n}: React.HTMLAttributes<HTMLButtonElement> & { iconColor?: string; ringColor?: string }) => {\n return (\n <button\n className={classNames(\n \"absolute rounded-full opacity-70 ring-offset-background text-cm-text-primary transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-cm-accent focus:ring-offset-2 disabled:pointer-events-none\",\n className\n )}\n {...props}\n >\n <LeftArrowIcon className=\"w-6 h-6\" style={{ color: iconColor }} />\n </button>\n );\n};\n"]}
@@ -1,41 +0,0 @@
1
- import {
2
- classNames
3
- } from "./chunk-RZPQIRIY.js";
4
- import {
5
- LeftArrowIcon
6
- } from "./chunk-ZDQGQY7Z.js";
7
- import {
8
- __objRest,
9
- __spreadProps,
10
- __spreadValues
11
- } from "./chunk-CRTRMMJ7.js";
12
-
13
- // src/components/auth/AuthFormBackButton.tsx
14
- import { jsx } from "react/jsx-runtime";
15
- var AuthFormBackButton = (_a) => {
16
- var _b = _a, {
17
- className,
18
- iconColor,
19
- ringColor
20
- } = _b, props = __objRest(_b, [
21
- "className",
22
- "iconColor",
23
- "ringColor"
24
- ]);
25
- return /* @__PURE__ */ jsx(
26
- "button",
27
- __spreadProps(__spreadValues({
28
- className: classNames(
29
- "absolute rounded-full opacity-70 ring-offset-background text-cm-text-primary transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-cm-accent focus:ring-offset-2 disabled:pointer-events-none",
30
- className
31
- )
32
- }, props), {
33
- children: /* @__PURE__ */ jsx(LeftArrowIcon, { className: "w-6 h-6", style: { color: iconColor } })
34
- })
35
- );
36
- };
37
-
38
- export {
39
- AuthFormBackButton
40
- };
41
- //# sourceMappingURL=chunk-QJ44PL7L.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/auth/AuthFormBackButton.tsx"],"sourcesContent":["import type React from \"react\";\nimport { classNames } from \"../../utils/classNames\";\nimport { LeftArrowIcon } from \"@/icons/leftArrow\";\n\nexport const AuthFormBackButton = ({\n className,\n iconColor,\n ringColor,\n ...props\n}: React.HTMLAttributes<HTMLButtonElement> & { iconColor?: string; ringColor?: string }) => {\n return (\n <button\n className={classNames(\n \"absolute rounded-full opacity-70 ring-offset-background text-cm-text-primary transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-cm-accent focus:ring-offset-2 disabled:pointer-events-none\",\n className\n )}\n {...props}\n >\n <LeftArrowIcon className=\"w-6 h-6\" style={{ color: iconColor }} />\n </button>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAkBY;AAdL,IAAM,qBAAqB,CAAC,OAKyD;AALzD,eAC/B;AAAA;AAAA,IACA;AAAA,IACA;AAAA,EAPJ,IAImC,IAI5B,kBAJ4B,IAI5B;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,OACI,QALP;AAAA,MAOG,8BAAC,iBAAc,WAAU,WAAU,OAAO,EAAE,OAAO,UAAU,GAAG;AAAA;AAAA,EACpE;AAER;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/auth/methods/web3/Web3ProviderButton.tsx"],"sourcesContent":["import type { UIConfig } from \"@crossmint/common-sdk-base\";\nimport type React from \"react\";\nimport { classNames } from \"../../../../utils/classNames\";\n\nexport function Web3ProviderButton({\n title,\n appearance,\n img,\n ...props\n}: {\n title: string;\n appearance?: UIConfig;\n img: string;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>) {\n return (\n <button\n className={classNames(\n \"relative flex text-base p-4 bg-cm-muted-primary text-cm-text-primary items-center w-full rounded-xl justify-center\",\n \"transition-colors duration-200 ease-in-out\",\n \"hover:bg-cm-hover focus:bg-cm-hover outline-none\"\n )}\n style={{\n borderRadius: appearance?.borderRadius,\n borderColor: appearance?.colors?.border,\n backgroundColor: appearance?.colors?.buttonBackground,\n }}\n {...props}\n >\n <>\n <img src={img} alt={title} className=\"h-[25px] w-[25px] absolute left-[18px]\" />\n <span className=\"font-medium\" style={{ color: appearance?.colors?.textPrimary }}>\n {title}\n </span>\n </>\n <span className=\"sr-only\">Sign in with {title}</span>\n </button>\n );\n}\n"],"mappings":";;;;;;;;;;AA4BY,mBACI,KADJ;AAxBL,SAAS,mBAAmB,IASgB;AAThB,eAC/B;AAAA;AAAA,IACA;AAAA,IACA;AAAA,EAPJ,IAImC,IAI5B,kBAJ4B,IAI5B;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAPJ,MAAAA,KAAAC,KAAA;AAcI,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAW;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,QACH,cAAc,yCAAY;AAAA,QAC1B,cAAaD,MAAA,yCAAY,WAAZ,gBAAAA,IAAoB;AAAA,QACjC,kBAAiBC,MAAA,yCAAY,WAAZ,gBAAAA,IAAoB;AAAA,MACzC;AAAA,OACI,QAXP;AAAA,MAaG;AAAA,yCACI;AAAA,8BAAC,SAAI,KAAK,KAAK,KAAK,OAAO,WAAU,0CAAyC;AAAA,UAC9E,oBAAC,UAAK,WAAU,eAAc,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,YAAY,GACzE,iBACL;AAAA,WACJ;AAAA,QACA,qBAAC,UAAK,WAAU,WAAU;AAAA;AAAA,UAAc;AAAA,WAAM;AAAA;AAAA;AAAA,EAClD;AAER;","names":["_a","_b"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/auth/methods/web3/Web3ConnectButton.tsx"],"names":[],"mappings":";;;;;;;;AAoBQ,mBAEQ,KADJ,YADJ;AAhBD,SAAS,kBAAkB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAOG;AAlBH;AAmBI,SACI,iCACI;AAAA,yBAAC,SAAI,WAAU,0DACX;AAAA,0BAAC,SAAI,KAAK,MAAM,KAAK,YAAY,WAAU,qBAAoB;AAAA,MAC/D;AAAA,QAAC;AAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,YAAY;AAAA,UAE/C;AAAA;AAAA,MACL;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACG,WAAU;AAAA,UACV,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,YAAY;AAAA,UACnD;AAAA;AAAA,MAED;AAAA,OACJ;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACG,WAAW;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA,YAAY,2CAA2C;AAAA,QAC3D;AAAA,QACA,OAAO;AAAA,UACH,cAAc,yCAAY;AAAA,UAC1B,cAAa,8CAAY,WAAZ,mBAAoB;AAAA,UACjC,kBAAiB,8CAAY,WAAZ,mBAAoB;AAAA,QACzC;AAAA,QACA,SAAS,YAAY,SAAY;AAAA,QAEjC,8BAAC,UAAK,WAAU,eAAc,OAAO,EAAE,QAAO,8CAAY,WAAZ,mBAAoB,YAAY,GACzE,sBACL;AAAA;AAAA,IACJ;AAAA,IAEA,oBAAC,SAAI,WAAU,4BACX,8BAAC,sBAAmB,QAAO,8CAAY,WAAZ,mBAAoB,eAAe,GAClE;AAAA,KACJ;AAER","sourcesContent":["import type { UIConfig } from \"@crossmint/common-sdk-base\";\nimport { PoweredByCrossmint } from \"@/components/common/PoweredByCrossmint\";\nimport { classNames } from \"@/utils/classNames\";\n\nexport function Web3ConnectButton({\n icon,\n appearance,\n isLoading,\n onConnectClick,\n headingText,\n buttonText,\n}: {\n icon: string;\n appearance?: UIConfig;\n isLoading: boolean;\n onConnectClick: () => void;\n headingText: string;\n buttonText: string;\n}) {\n return (\n <>\n <div className=\"flex flex-col items-center text-center mt-8 mb-4 gap-2\">\n <img src={icon} alt={\"metamask\"} className=\"h-[74px] w-[74px]\" />\n <h3\n className=\"text-lg font-semibold text-cm-text-primary\"\n style={{ color: appearance?.colors?.textPrimary }}\n >\n {headingText}\n </h3>\n <p\n className=\"text-base font-normal text-cm-text-primary\"\n style={{ color: appearance?.colors?.textPrimary }}\n >\n Don’t see your wallet? Check your other browser windows.\n </p>\n </div>\n\n <button\n className={classNames(\n \"relative flex text-base p-4 bg-cm-muted-primary text-cm-text-primary items-center w-full rounded-xl justify-center\",\n \"transition-colors duration-200 ease-in-out\",\n \"hover:bg-cm-hover focus:bg-cm-hover outline-none\",\n isLoading ? \"cursor-not-allowed bg-cm-muted-primary\" : \"\"\n )}\n style={{\n borderRadius: appearance?.borderRadius,\n borderColor: appearance?.colors?.border,\n backgroundColor: appearance?.colors?.buttonBackground,\n }}\n onClick={isLoading ? undefined : onConnectClick}\n >\n <span className=\"font-medium\" style={{ color: appearance?.colors?.textPrimary }}>\n {buttonText}\n </span>\n </button>\n\n <div className=\"flex justify-center pt-4\">\n <PoweredByCrossmint color={appearance?.colors?.textSecondary} />\n </div>\n </>\n );\n}\n"]}
@@ -1,9 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
- var _chunkDJ32OEWGcjs = require('../../../../chunk-DJ32OEWG.cjs');
4
- require('../../../../chunk-5RX5WFEW.cjs');
5
- require('../../../../chunk-4DAZAO6Y.cjs');
6
-
7
-
8
- exports.Web3ProviderButton = _chunkDJ32OEWGcjs.Web3ProviderButton;
9
- //# sourceMappingURL=Web3ProviderButton.cjs.map
@@ -1,9 +0,0 @@
1
- import {
2
- Web3ProviderButton
3
- } from "../../../../chunk-WK5RAFJ3.js";
4
- import "../../../../chunk-RZPQIRIY.js";
5
- import "../../../../chunk-CRTRMMJ7.js";
6
- export {
7
- Web3ProviderButton
8
- };
9
- //# sourceMappingURL=Web3ProviderButton.js.map
@@ -1,5 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
-
3
- declare function Web3SignIn(): react_jsx_runtime.JSX.Element | null;
4
-
5
- export { Web3SignIn };
@@ -1,5 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
-
3
- declare function Web3SignIn(): react_jsx_runtime.JSX.Element | null;
4
-
5
- export { Web3SignIn };