@aptos-labs/wallet-adapter-react 8.2.0 → 8.2.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"WalletProvider.d.ts","sourceRoot":"","sources":["../src/WalletProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,UAAU,EAEV,aAAa,EAUb,UAAU,EAOX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,EAAE,EAA4C,MAAM,OAAO,CAAC;AAGhF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC/C,WAAW,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC9C,WAAW,CAAC,EACR,OAAO,GACP,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC;AAcD,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,wBAAwB,CA2ZnE,CAAC"}
1
+ {"version":3,"file":"WalletProvider.d.ts","sourceRoot":"","sources":["../src/WalletProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,UAAU,EAEV,aAAa,EAUb,UAAU,EAOX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,EAAE,EAA4C,MAAM,OAAO,CAAC;AAGhF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC/C,WAAW,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC9C,WAAW,CAAC,EACR,OAAO,GACP,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC;AAcD,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,wBAAwB,CAibnE,CAAC"}
package/dist/index.js CHANGED
@@ -121,6 +121,7 @@ var AptosWalletAdapterProvider = ({
121
121
  onError
122
122
  }) => {
123
123
  const didAttemptAutoConnectRef = (0, import_react2.useRef)(false);
124
+ const initialLoadCompletedRef = (0, import_react2.useRef)(false);
124
125
  const [{ account, network, connected, wallet }, setState] = (0, import_react2.useState)(initialState);
125
126
  const [isLoading, setIsLoading] = (0, import_react2.useState)(true);
126
127
  const [walletCore, setWalletCore] = (0, import_react2.useState)();
@@ -146,23 +147,33 @@ var AptosWalletAdapterProvider = ({
146
147
  if (didAttemptAutoConnectRef.current || !(walletCore == null ? void 0 : walletCore.wallets.length)) {
147
148
  return;
148
149
  }
149
- didAttemptAutoConnectRef.current = true;
150
150
  if (!autoConnect) {
151
- setIsLoading(false);
151
+ if (!initialLoadCompletedRef.current) {
152
+ initialLoadCompletedRef.current = true;
153
+ setIsLoading(false);
154
+ }
152
155
  return;
153
156
  }
154
157
  const walletName = localStorage.getItem("AptosWalletName");
155
158
  if (!walletName) {
156
- setIsLoading(false);
159
+ didAttemptAutoConnectRef.current = true;
160
+ if (!initialLoadCompletedRef.current) {
161
+ initialLoadCompletedRef.current = true;
162
+ setIsLoading(false);
163
+ }
157
164
  return;
158
165
  }
159
166
  const selectedWallet = walletCore.wallets.find(
160
167
  (e) => e.name === walletName
161
168
  );
162
169
  if (!selectedWallet || selectedWallet.readyState !== import_wallet_adapter_core.WalletReadyState.Installed) {
163
- setIsLoading(false);
170
+ if (!initialLoadCompletedRef.current) {
171
+ initialLoadCompletedRef.current = true;
172
+ setIsLoading(false);
173
+ }
164
174
  return;
165
175
  }
176
+ didAttemptAutoConnectRef.current = true;
166
177
  if (!connected) {
167
178
  (() => __async(void 0, null, function* () {
168
179
  try {
@@ -177,10 +188,12 @@ var AptosWalletAdapterProvider = ({
177
188
  if (onError) onError(error);
178
189
  return Promise.reject(error);
179
190
  } finally {
191
+ initialLoadCompletedRef.current = true;
180
192
  setIsLoading(false);
181
193
  }
182
194
  }))();
183
195
  } else {
196
+ initialLoadCompletedRef.current = true;
184
197
  setIsLoading(false);
185
198
  }
186
199
  }, [autoConnect, wallets]);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.tsx","../src/WalletProvider.tsx","../src/useWallet.tsx","../src/components/AboutAptosConnect.tsx","../src/graphics/LinkGraphic.tsx","../src/graphics/WalletGraphic.tsx","../src/graphics/Web3Graphic.tsx","../src/components/utils.tsx","../src/components/AboutPetraWeb.tsx","../src/components/AptosPrivacyPolicy.tsx","../src/graphics/SmallAptosLogo.tsx","../src/components/WalletItem.tsx"],"sourcesContent":["export * from \"@aptos-labs/wallet-adapter-core\";\nexport * from \"./WalletProvider\";\nexport * from \"./components/AboutAptosConnect\";\nexport * from \"./components/AboutPetraWeb\";\nexport * from \"./components/AptosPrivacyPolicy\";\nexport * from \"./components/WalletItem\";\nexport * from \"./useWallet\";\n","import {\n AvailableWallets,\n DappConfig,\n AccountInfo,\n AdapterWallet,\n NetworkInfo,\n InputTransactionData,\n AptosSignAndSubmitTransactionOutput,\n AnyRawTransaction,\n InputGenerateTransactionOptions,\n AccountAuthenticator,\n AptosSignMessageInput,\n AptosSignMessageOutput,\n AdapterNotDetectedWallet,\n WalletCore,\n Network,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n WalletReadyState,\n AptosSignInInput,\n AptosSignInOutput,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { ReactNode, FC, useState, useEffect, useCallback, useRef } from \"react\";\nimport { WalletContext } from \"./useWallet\";\n\nexport interface AptosWalletProviderProps {\n children: ReactNode;\n optInWallets?: ReadonlyArray<AvailableWallets>;\n hideWallets?: ReadonlyArray<AvailableWallets>;\n autoConnect?:\n | boolean\n | ((core: WalletCore, adapter: AdapterWallet) => Promise<boolean>);\n dappConfig?: DappConfig;\n disableTelemetry?: boolean;\n onError?: (error: any) => void;\n}\n\nconst initialState: {\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connected: boolean;\n wallet: AdapterWallet | null;\n} = {\n connected: false,\n account: null,\n network: null,\n wallet: null,\n};\n\nexport const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({\n children,\n optInWallets,\n hideWallets,\n autoConnect = false,\n dappConfig,\n disableTelemetry = false,\n onError,\n}: AptosWalletProviderProps) => {\n const didAttemptAutoConnectRef = useRef(false);\n\n const [{ account, network, connected, wallet }, setState] =\n useState(initialState);\n\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [walletCore, setWalletCore] = useState<WalletCore>();\n\n const [wallets, setWallets] = useState<ReadonlyArray<AdapterWallet>>([]);\n const [hiddenWallets, setHiddenWallets] = useState<\n ReadonlyArray<AdapterWallet>\n >([]);\n const [notDetectedWallets, setNotDetectedWallets] = useState<\n ReadonlyArray<AdapterNotDetectedWallet>\n >([]);\n // Initialize WalletCore on first load\n useEffect(() => {\n const walletCore = new WalletCore(\n optInWallets,\n dappConfig,\n disableTelemetry,\n hideWallets ? hideWallets : [\"Petra Web\"],\n );\n setWalletCore(walletCore);\n }, []);\n\n // Update initial Wallets state once WalletCore has been initialized\n useEffect(() => {\n setWallets(walletCore?.wallets ?? []);\n setHiddenWallets(walletCore?.hiddenWallets ?? []);\n setNotDetectedWallets(walletCore?.notDetectedWallets ?? []);\n }, [walletCore]);\n\n useEffect(() => {\n // Only attempt to auto connect once per render and only if there are wallets\n if (didAttemptAutoConnectRef.current || !walletCore?.wallets.length) {\n return;\n }\n didAttemptAutoConnectRef.current = true;\n\n // If auto connect is not set or is false, ignore the attempt\n if (!autoConnect) {\n setIsLoading(false);\n return;\n }\n\n // Make sure the user has a previously connected wallet\n const walletName = localStorage.getItem(\"AptosWalletName\");\n if (!walletName) {\n setIsLoading(false);\n return;\n }\n\n // Make sure the wallet is installed\n const selectedWallet = walletCore.wallets.find(\n (e) => e.name === walletName,\n ) as AdapterWallet | undefined;\n if (\n !selectedWallet ||\n selectedWallet.readyState !== WalletReadyState.Installed\n ) {\n setIsLoading(false);\n return;\n }\n\n if (!connected) {\n (async () => {\n try {\n let shouldConnect = true;\n\n // Providing a function to autoConnect allows the dapp to determine\n // whether to attempt to connect to the wallet using the `signIn`\n // or `connect` method. If `signIn` is successful, the user can\n // return `false` and skip the `connect` method.\n if (typeof autoConnect === \"function\") {\n shouldConnect = await autoConnect(walletCore, selectedWallet);\n } else {\n shouldConnect = autoConnect;\n }\n\n if (shouldConnect) await connect(walletName);\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n })();\n } else {\n setIsLoading(false);\n }\n }, [autoConnect, wallets]);\n\n const connect = async (walletName: string): Promise<void> => {\n try {\n setIsLoading(true);\n await walletCore?.connect(walletName);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const signIn = async (args: {\n walletName: string;\n input: AptosSignInInput;\n }): Promise<AptosSignInOutput> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n\n try {\n setIsLoading(true);\n return await walletCore?.signIn(args);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const disconnect = async (): Promise<void> => {\n try {\n await walletCore?.disconnect();\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signAndSubmitTransaction = async (\n transaction: InputTransactionData,\n ): Promise<AptosSignAndSubmitTransactionOutput> => {\n try {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n return await walletCore.signAndSubmitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signTransaction = async (args: {\n transactionOrPayload: AnyRawTransaction | InputTransactionData;\n asFeePayer?: boolean;\n options?: InputGenerateTransactionOptions & {\n expirationSecondsFromNow?: number;\n expirationTimestamp?: number;\n };\n }): Promise<{\n authenticator: AccountAuthenticator;\n rawTransaction: Uint8Array;\n }> => {\n const { transactionOrPayload, asFeePayer, options } = args;\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore.signTransaction({\n transactionOrPayload,\n asFeePayer,\n });\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const submitTransaction = async (\n transaction: InputSubmitTransactionData,\n ): Promise<PendingTransactionResponse> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.submitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessage = async (\n message: AptosSignMessageInput,\n ): Promise<AptosSignMessageOutput> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.signMessage(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessageAndVerify = async (\n message: AptosSignMessageInput,\n ): Promise<boolean> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.signMessageAndVerify(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const changeNetwork = async (network: Network) => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.changeNetwork(network);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n // Handle the adapter's connect event\n const handleConnect = (): void => {\n setState((state) => {\n return {\n ...state,\n connected: true,\n account: walletCore?.account || null,\n network: walletCore?.network || null,\n wallet: walletCore?.wallet || null,\n };\n });\n };\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback((): void => {\n if (!connected) return;\n if (!walletCore?.wallet) return;\n setState((state) => {\n return {\n ...state,\n account: walletCore?.account || null,\n };\n });\n }, [connected]);\n\n // Handle the adapter's network event\n const handleNetworkChange = useCallback((): void => {\n if (!connected) return;\n if (!walletCore?.wallet) return;\n setState((state) => {\n return {\n ...state,\n network: walletCore?.network || null,\n };\n });\n }, [connected]);\n\n useEffect(() => {\n if (connected) {\n walletCore?.onAccountChange();\n walletCore?.onNetworkChange();\n }\n }, [connected]);\n\n // Handle the adapter's disconnect event\n const handleDisconnect = (): void => {\n if (!connected) return;\n setState((state) => {\n return {\n ...state,\n connected: false,\n account: walletCore?.account || null,\n network: walletCore?.network || null,\n wallet: null,\n };\n });\n };\n\n const handleStandardWalletsAdded = (standardWallet: AdapterWallet): void => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == standardWallet.name,\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n standardWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setWallets((wallets) => [...wallets, standardWallet]);\n }\n };\n\n const handleStandardWalletsHiddenAdded = (\n standardWallet: AdapterWallet,\n ): void => {\n // Manage hidden wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = hiddenWallets.findIndex(\n (wallet) => wallet.name === standardWallet.name,\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setHiddenWallets((hiddenWallets) => [\n ...hiddenWallets.slice(0, existingWalletIndex),\n standardWallet,\n ...hiddenWallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setHiddenWallets((hiddenWallets) => [...hiddenWallets, standardWallet]);\n }\n };\n\n const handleStandardNotDetectedWalletsAdded = (\n notDetectedWallet: AdapterNotDetectedWallet,\n ): void => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == notDetectedWallet.name,\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setNotDetectedWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n notDetectedWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setNotDetectedWallets((wallets) => [...wallets, notDetectedWallet]);\n }\n };\n\n useEffect(() => {\n walletCore?.on(\"connect\", handleConnect);\n walletCore?.on(\"accountChange\", handleAccountChange);\n walletCore?.on(\"networkChange\", handleNetworkChange);\n walletCore?.on(\"disconnect\", handleDisconnect);\n walletCore?.on(\"standardWalletsAdded\", handleStandardWalletsAdded);\n walletCore?.on(\n \"standardWalletsHiddenAdded\",\n handleStandardWalletsHiddenAdded,\n );\n walletCore?.on(\n \"standardNotDetectedWalletAdded\",\n handleStandardNotDetectedWalletsAdded,\n );\n return () => {\n walletCore?.off(\"connect\", handleConnect);\n walletCore?.off(\"accountChange\", handleAccountChange);\n walletCore?.off(\"networkChange\", handleNetworkChange);\n walletCore?.off(\"disconnect\", handleDisconnect);\n walletCore?.off(\"standardWalletsAdded\", handleStandardWalletsAdded);\n walletCore?.off(\n \"standardWalletsHiddenAdded\",\n handleStandardWalletsHiddenAdded,\n );\n walletCore?.off(\n \"standardNotDetectedWalletAdded\",\n handleStandardNotDetectedWalletsAdded,\n );\n };\n }, [wallets, account]);\n\n return (\n <WalletContext.Provider\n value={{\n connect,\n signIn,\n disconnect,\n signAndSubmitTransaction,\n signTransaction,\n signMessage,\n signMessageAndVerify,\n changeNetwork,\n submitTransaction,\n account,\n network,\n connected,\n wallet,\n wallets,\n notDetectedWallets,\n hiddenWallets,\n isLoading,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n","import { useContext, createContext } from \"react\";\nimport {\n AccountAuthenticator,\n AccountInfo,\n AdapterWallet,\n AnyRawTransaction,\n AptosSignAndSubmitTransactionOutput,\n InputTransactionData,\n NetworkInfo,\n AptosSignMessageInput,\n AptosSignMessageOutput,\n AdapterNotDetectedWallet,\n Network,\n AptosChangeNetworkOutput,\n PendingTransactionResponse,\n InputSubmitTransactionData,\n AptosSignInInput,\n AptosSignInOutput,\n} from \"@aptos-labs/wallet-adapter-core\";\n\nexport interface WalletContextState {\n connected: boolean;\n isLoading: boolean;\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connect(walletName: string): void;\n signIn(args: {\n walletName: string;\n input: AptosSignInInput;\n }): Promise<AptosSignInOutput | void>;\n signAndSubmitTransaction(\n transaction: InputTransactionData,\n ): Promise<AptosSignAndSubmitTransactionOutput>;\n signTransaction(args: {\n transactionOrPayload: AnyRawTransaction | InputTransactionData;\n asFeePayer?: boolean;\n }): Promise<{\n authenticator: AccountAuthenticator;\n rawTransaction: Uint8Array;\n }>;\n signMessage(message: AptosSignMessageInput): Promise<AptosSignMessageOutput>;\n signMessageAndVerify(message: AptosSignMessageInput): Promise<boolean>;\n disconnect(): void;\n changeNetwork(network: Network): Promise<AptosChangeNetworkOutput>;\n submitTransaction(\n transaction: InputSubmitTransactionData,\n ): Promise<PendingTransactionResponse>;\n wallet: AdapterWallet | null;\n wallets: ReadonlyArray<AdapterWallet>;\n hiddenWallets: ReadonlyArray<AdapterWallet>;\n notDetectedWallets: ReadonlyArray<AdapterNotDetectedWallet>;\n}\n\nconst DEFAULT_CONTEXT = {\n connected: false,\n};\n\nexport const WalletContext = createContext<WalletContextState>(\n DEFAULT_CONTEXT as WalletContextState,\n);\n\nexport function useWallet(): WalletContextState {\n const context = useContext(WalletContext);\n if (!context) {\n throw new Error(\"useWallet must be used within a WalletContextState\");\n }\n return context;\n}\n","import {\n Dispatch,\n ForwardRefExoticComponent,\n ReactNode,\n RefAttributes,\n SVGProps,\n SetStateAction,\n createContext,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { LinkGraphic } from \"../graphics/LinkGraphic\";\nimport { WalletGraphic } from \"../graphics/WalletGraphic\";\nimport { Web3Graphic } from \"../graphics/Web3Graphic\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nconst EXPLORE_ECOSYSTEM_URL =\n \"https://aptosnetwork.com/ecosystem/directory/category/defi\";\n\nconst AboutAptosConnectContext = createContext<{\n screenIndex: number;\n setScreenIndex: Dispatch<SetStateAction<number>>;\n} | null>(null);\n\nfunction useAboutAptosConnectContext(displayName: string) {\n const context = useContext(AboutAptosConnectContext);\n\n if (!context) {\n throw new Error(\n `\\`${displayName}\\` must be used within \\`AboutAptosConnect\\``,\n );\n }\n\n return context;\n}\n\nconst educationScreens = [\n {\n Graphic: LinkGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h3\", {\n children: \"A better way to login.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Petra Web is a web3 wallet that uses a Social Login to create accounts on the Aptos blockchain.\",\n }),\n },\n {\n Graphic: WalletGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"What is a wallet?\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Wallets are a secure way to send, receive, and interact with digital assets like cryptocurrencies & NFTs.\",\n }),\n },\n {\n Graphic: Web3Graphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"Explore more of web3.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children: (\n <>\n Petra Web lets you take one account across any application built on\n Aptos.{\" \"}\n <a\n href={EXPLORE_ECOSYSTEM_URL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Explore the ecosystem\n </a>\n .\n </>\n ),\n }),\n },\n];\n\nconst educationScreenIndicators = Array(educationScreens.length)\n .fill(null)\n .map((_, index) =>\n createHeadlessComponent(\n \"AboutAptosConnect.ScreenIndicator\",\n \"button\",\n (displayName) => {\n const context = useAboutAptosConnectContext(displayName);\n const isActive = context.screenIndex - 1 === index;\n\n return {\n \"aria-label\": `Go to screen ${index + 1}`,\n \"aria-current\": isActive ? \"step\" : undefined,\n \"data-active\": isActive || undefined,\n onClick: () => {\n context.setScreenIndex(index + 1);\n },\n };\n },\n ),\n );\n\n/** @deprecated Use {@link AboutPetraWebEducationScreen} instead. */\nexport interface AboutAptosConnectEducationScreen {\n /** A component that renders an SVG to illustrate the idea of the current screen. */\n Graphic: ForwardRefExoticComponent<\n Omit<SVGProps<SVGSVGElement>, \"ref\"> & RefAttributes<SVGSVGElement>\n >;\n /** A headless component that renders the title of the current screen. */\n Title: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLHeadingElement>\n >;\n /** A headless component that renders the description text of the current screen. */\n Description: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLParagraphElement>\n >;\n /** The index of the current education screen. */\n screenIndex: number;\n /** The total number of education screens. */\n totalScreens: number;\n /**\n * An array of headless components for indicating the current screen of the set.\n * Each indicator will navigate the user to the screen it represents when clicked.\n */\n screenIndicators: typeof educationScreenIndicators;\n /**\n * A function that navigates the user to the previous education screen.\n * If the user is on the first education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n back: () => void;\n /**\n * A function that navigates the user to the next education screen.\n * If the user is on the last education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n next: () => void;\n /** A function that navigates the user to the initial wallet selection screen. */\n cancel: () => void;\n}\n\n/** @deprecated Use {@link AboutPetraWebProps} instead. */\nexport interface AboutAptosConnectProps {\n /**\n * A function for defining how each education screen should be rendered.\n * Each screen is modeled as a uniform set of headless components and utilities\n * that allow you to construct your UI and apply your own styles.\n */\n renderEducationScreen: (\n screen: AboutAptosConnectEducationScreen,\n ) => ReactNode;\n /**\n * The initial wallet selection UI that will be replaced by the education\n * screens when `AboutAptosConnect.Trigger` is clicked.\n */\n children?: ReactNode;\n}\n\nconst Root = ({ renderEducationScreen, children }: AboutAptosConnectProps) => {\n const [screenIndex, setScreenIndex] = useState(0);\n\n const currentEducationScreen: AboutAptosConnectEducationScreen = useMemo(\n () =>\n educationScreens.map((screen, i) => ({\n ...screen,\n screenIndex: i,\n totalScreens: educationScreens.length,\n screenIndicators: educationScreenIndicators,\n back: () => {\n setScreenIndex(screenIndex - 1);\n },\n next: () => {\n setScreenIndex(\n screenIndex === educationScreens.length ? 0 : screenIndex + 1,\n );\n },\n cancel: () => {\n setScreenIndex(0);\n },\n }))[screenIndex - 1],\n [screenIndex],\n );\n\n return (\n <AboutAptosConnectContext.Provider value={{ screenIndex, setScreenIndex }}>\n {screenIndex === 0\n ? children\n : renderEducationScreen(currentEducationScreen)}\n </AboutAptosConnectContext.Provider>\n );\n};\nRoot.displayName = \"AboutAptosConnect\";\n\nconst Trigger = createHeadlessComponent(\n \"AboutAptosConnect.Trigger\",\n \"button\",\n (displayName) => {\n const context = useAboutAptosConnectContext(displayName);\n\n return {\n onClick: () => {\n context.setScreenIndex(1);\n },\n };\n },\n);\n\n/**\n * A headless component for rendering education screens that explain the basics\n * of Aptos Connect and web3 wallets.\n *\n * @deprecated Use {@link AboutPetraWeb} instead.\n */\nexport const AboutAptosConnect = Object.assign(Root, {\n Trigger,\n});\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const LinkGraphic = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"102\"\n height=\"132\"\n viewBox=\"0 0 102 132\"\n fill=\"none\"\n {...props}\n >\n <g stroke=\"currentColor\" strokeMiterlimit=\"10\">\n <path d=\"M59.633 80.66c11.742-2.814 17.48-7.018 20.925-13.254l17.518-31.69c6.257-11.317 2.142-25.55-9.189-31.798C82.737.53 75.723.188 69.593 2.398M60.7 69.565a14.09 14.09 0 0 1-6.907-1.767l-.228-.108\" />\n <path d=\"m52.365 41.075 12.507-22.627a14.146 14.146 0 0 1 4.727-5.062M32.407 118.619a14.139 14.139 0 0 1-7.034-1.768c-6.857-3.78-9.353-12.402-5.561-19.25l16.634-30.1a14.097 14.097 0 0 1 4.518-4.923\" />\n <path d=\"M41.211 78.85c11.332 6.248 25.583 2.14 31.84-9.177l17.518-31.691c6.256-11.317 2.142-25.55-9.19-31.798-6.085-3.357-13.018-3.724-19.104-1.59A23.31 23.31 0 0 0 49.541 15.36L36.863 38.298l7.989 5.036 12.506-22.627c3.786-6.848 12.419-9.34 19.276-5.554 6.856 3.78 9.353 12.402 5.561 19.25l-16.634 30.1c-3.785 6.848-12.418 9.341-19.275 5.555l-5.075 8.791ZM29.5 130.447c12.361-1.37 19.2-6.994 22.966-13.804l12.678-22.936-8.305-5.239\" />\n <path d=\"m55.72 61.947-.442.764 5.511-9.55c-6.901-3.806-18.65-3.124-27.105.814M44.85 43.523l7.635-2.486m-4.221 23.264 7.217-1.723m-9.316 7.517 7.59-2.405m-.562-12.156 7.508-2.221m10.136-51.32L62.761 4.43M49.642 90.778l7.514-2.26m.474 7.448 7.514-2.26m-50.306-60.13c7.135 0 12.918-5.776 12.918-12.9 0-7.126-5.783-12.902-12.918-12.902-7.134 0-12.917 5.776-12.917 12.901s5.783 12.901 12.918 12.901Z\" />\n <path d=\"M15.724 7.774h3.197c7.135 0 12.918 5.776 12.918 12.901 0 7.126-5.783 12.901-12.918 12.901h-3.425m65.112 66.935h3.198c7.135 0 12.918 5.775 12.918 12.901 0 7.125-5.783 12.9-12.918 12.9h-3.425\" />\n <path d=\"M79.717 126.312c7.135 0 12.918-5.775 12.918-12.9s-5.783-12.901-12.918-12.901c-7.134 0-12.917 5.776-12.917 12.901s5.783 12.9 12.917 12.9ZM53.281 55.414c-11.33-6.248-25.582-2.14-31.839 9.177L3.924 96.281c-6.257 11.318-2.142 25.55 9.189 31.799 11.331 6.248 25.582 2.139 31.839-9.177l12.677-22.937-7.988-5.036-12.507 22.627c-3.785 6.848-12.418 9.341-19.275 5.554-6.857-3.781-9.353-12.402-5.561-19.25l16.633-30.1c3.786-6.848 12.419-9.341 19.276-5.555l5.074-8.792Z\" />\n </g>\n </svg>\n );\n },\n);\nLinkGraphic.displayName = \"LinkGraphic\";\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const WalletGraphic = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"128\"\n height=\"102\"\n viewBox=\"0 0 128 102\"\n fill=\"none\"\n {...props}\n >\n <path\n fill=\"currentColor\"\n d=\"m.96 25.93-.36-.35.36.85v-.5Zm7.79-7.81v-.5h-.21l-.15.15.36.35ZM1.3 26.28l7.79-7.8-.7-.71-7.8 7.8.7.71Zm7.44-7.66H10v-1H8.75v1Zm29.22 6.8h-37v1h37.01v-1Z\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M82.25 26.08c0 12.25-9.92 22.2-22.14 22.2a22.17 22.17 0 0 1-22.14-22.2H1.1v74.82h118.02V26.08H82.25Zm44.33 67.02h.33V18.27h-5.7\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M74.52 42.92a22.4 22.4 0 0 1-11.43 3.3 22.5 22.5 0 0 1-22.46-22.53H9.52M119.22 101l7.78-7.82m-7.88-67.1 7.79-7.81m-44.78 7.72 2.73-2.3m-46.89 2.39 2.39-2.4\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M9.86 23.69V5.72h107.97v18.04H84.65\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M117.83 20.46h3.39V1H13.25v4.72M9.36 23.69h31.78\"\n />\n </svg>\n );\n },\n);\nWalletGraphic.displayName = \"WalletGraphic\";\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const Web3Graphic = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"142\"\n height=\"108\"\n viewBox=\"0 0 142 108\"\n fill=\"none\"\n {...props}\n >\n <g stroke=\"currentColor\" strokeLinejoin=\"round\">\n <path d=\"m91.26 35.8.06-10.46L71.3 1v10.53L87 30.5m-36.11 5.24-.06-10.45L71.3 1v10.53L55 30.5\" />\n <path d=\"M71 59.55V49.17L50.83 25.3l.06 10.45L57 42.5m14 17.05V49.18l20.33-23.84-.07 10.45L86 42M1 59.68l.22-9.07 35.33-19.8-.1 9L9 55\" />\n <path d=\"M36.55 30.8s-.08 5.92-.1 9l.1-9ZM71 59.51v-9.07L36.55 30.8l-.1 9L63.5 55\" />\n <path d=\"M71 59.51v-9.07L36.44 70.78l-.1 9.14L55.5 68.5\" />\n <path d=\"M1.22 50.6a77387.2 77387.2 0 0 0 35.22 20.18l-.1 9.14L1 59.68l.23-9.07h-.01ZM141 59.68l-.23-9.07-35.33-19.8.11 9L133 55\" />\n <path d=\"m105.44 30.8.11 9-.1-9Z\" />\n <path d=\"M71 59.51v-9.07l34.44-19.64.11 9L78.5 55\" />\n <path d=\"M71 59.51v-9.07l34.56 20.34.1 9.14L87 69\" />\n <path d=\"M140.78 50.6a78487.3 78487.3 0 0 1-35.23 20.18l.11 9.14L141 59.68l-.23-9.07ZM50.83 80.15l.06-6.33 20.1-23.38H71v9.26L55 79\" />\n <path d=\"M71.3 97.6 50.89 73.81l-.06 9.33L71.3 107v-9.4Zm20.03-14.5-.07-9.33L71 50.44v9.26l16 18.8\" />\n <path d=\"m71.3 97.6 19.96-23.83.06 9.33L71.3 107v-9.4Z\" />\n </g>\n </svg>\n );\n },\n);\nWeb3Graphic.displayName = \"Web3Graphic\";\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { ReactNode, cloneElement, forwardRef, isValidElement } from \"react\";\n\nexport interface HeadlessComponentProps {\n /** A class name for styling the element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default element provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Gets an HTML element type from its tag name\n * @example\n * HTMLElementFromTag<\"img\"> // resolved type: HTMLImageElement\n */\ntype HTMLElementFromTag<T extends keyof JSX.IntrinsicElements> =\n JSX.IntrinsicElements[T] extends React.ClassAttributes<infer Element>\n ? Element\n : HTMLElement;\n\nexport function createHeadlessComponent<\n TElement extends keyof JSX.IntrinsicElements,\n>(\n displayName: string,\n elementType: TElement,\n props?:\n | JSX.IntrinsicElements[TElement]\n | ((displayName: string) => JSX.IntrinsicElements[TElement]),\n) {\n const component = forwardRef<\n HTMLElementFromTag<TElement>,\n HeadlessComponentProps\n >(({ className, asChild, children }, ref) => {\n const Component = asChild ? Slot : elementType;\n\n const { children: defaultChildren, ...resolvedProps } =\n typeof props === \"function\" ? props(displayName) : (props ?? {});\n const resolvedChildren =\n /**\n * Use props' default children if no children are set in the component element's children and when asChild is true.\n */\n asChild && isValidElement(children) && !children.props.children\n ? cloneElement(children, {}, defaultChildren)\n : (children ?? defaultChildren);\n\n return (\n /**\n * Due to the complexity of the types at play, TypeScript reports the\n * following error for our JSX below:\n *\n * `Expression produces a union type that is too complex to represent.`\n *\n * We can safely ignore this error and retain accurate return types for\n * consumers of this function. The only drawback is that type-checking is\n * ignored for the JSX block below.\n */\n // @ts-expect-error\n <Component ref={ref} className={className} {...resolvedProps}>\n {resolvedChildren}\n </Component>\n );\n });\n component.displayName = displayName;\n\n return component;\n}\n","import {\n Dispatch,\n ForwardRefExoticComponent,\n ReactNode,\n RefAttributes,\n SVGProps,\n SetStateAction,\n createContext,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { LinkGraphic } from \"../graphics/LinkGraphic\";\nimport { WalletGraphic } from \"../graphics/WalletGraphic\";\nimport { Web3Graphic } from \"../graphics/Web3Graphic\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nexport const EXPLORE_ECOSYSTEM_URL =\n \"https://aptosnetwork.com/ecosystem/directory/category/defi\";\n\nconst AboutPetraWebContext = createContext<{\n screenIndex: number;\n setScreenIndex: Dispatch<SetStateAction<number>>;\n} | null>(null);\n\nfunction useAboutPetraWebContext(displayName: string) {\n const context = useContext(AboutPetraWebContext);\n\n if (!context) {\n throw new Error(`\\`${displayName}\\` must be used within \\`AboutPetraWeb\\``);\n }\n\n return context;\n}\n\nconst educationScreens = [\n {\n Graphic: LinkGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h3\", {\n children: \"A better way to login.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Petra Web is a web3 wallet that uses a Social Login to create accounts on the Aptos blockchain.\",\n }),\n },\n {\n Graphic: WalletGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"What is a wallet?\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Wallets are a secure way to send, receive, and interact with digital assets like cryptocurrencies & NFTs.\",\n }),\n },\n {\n Graphic: Web3Graphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"Explore more of web3.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children: (\n <>\n Petra Web lets you take one account across any application built on\n Aptos.{\" \"}\n <a\n href={EXPLORE_ECOSYSTEM_URL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Explore the ecosystem\n </a>\n .\n </>\n ),\n }),\n },\n];\n\nconst educationScreenIndicators = Array(educationScreens.length)\n .fill(null)\n .map((_, index) =>\n createHeadlessComponent(\n \"AboutPetraWeb.ScreenIndicator\",\n \"button\",\n (displayName) => {\n const context = useAboutPetraWebContext(displayName);\n const isActive = context.screenIndex - 1 === index;\n\n return {\n \"aria-label\": `Go to screen ${index + 1}`,\n \"aria-current\": isActive ? \"step\" : undefined,\n \"data-active\": isActive || undefined,\n onClick: () => {\n context.setScreenIndex(index + 1);\n },\n };\n },\n ),\n );\n\nexport interface AboutPetraWebEducationScreen {\n /** A component that renders an SVG to illustrate the idea of the current screen. */\n Graphic: ForwardRefExoticComponent<\n Omit<SVGProps<SVGSVGElement>, \"ref\"> & RefAttributes<SVGSVGElement>\n >;\n /** A headless component that renders the title of the current screen. */\n Title: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLHeadingElement>\n >;\n /** A headless component that renders the description text of the current screen. */\n Description: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLParagraphElement>\n >;\n /** The index of the current education screen. */\n screenIndex: number;\n /** The total number of education screens. */\n totalScreens: number;\n /**\n * An array of headless components for indicating the current screen of the set.\n * Each indicator will navigate the user to the screen it represents when clicked.\n */\n screenIndicators: typeof educationScreenIndicators;\n /**\n * A function that navigates the user to the previous education screen.\n * If the user is on the first education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n back: () => void;\n /**\n * A function that navigates the user to the next education screen.\n * If the user is on the last education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n next: () => void;\n /** A function that navigates the user to the initial wallet selection screen. */\n cancel: () => void;\n}\n\nexport interface AboutPetraWebProps {\n /**\n * A function for defining how each education screen should be rendered.\n * Each screen is modeled as a uniform set of headless components and utilities\n * that allow you to construct your UI and apply your own styles.\n */\n renderEducationScreen: (screen: AboutPetraWebEducationScreen) => ReactNode;\n /**\n * The initial wallet selection UI that will be replaced by the education\n * screens when `AboutPetraWeb.Trigger` is clicked.\n */\n children?: ReactNode;\n}\n\nconst Root = ({ renderEducationScreen, children }: AboutPetraWebProps) => {\n const [screenIndex, setScreenIndex] = useState(0);\n\n const currentEducationScreen: AboutPetraWebEducationScreen = useMemo(\n () =>\n educationScreens.map((screen, i) => ({\n ...screen,\n screenIndex: i,\n totalScreens: educationScreens.length,\n screenIndicators: educationScreenIndicators,\n back: () => {\n setScreenIndex(screenIndex - 1);\n },\n next: () => {\n setScreenIndex(\n screenIndex === educationScreens.length ? 0 : screenIndex + 1,\n );\n },\n cancel: () => {\n setScreenIndex(0);\n },\n }))[screenIndex - 1],\n [screenIndex],\n );\n\n return (\n <AboutPetraWebContext.Provider value={{ screenIndex, setScreenIndex }}>\n {screenIndex === 0\n ? children\n : renderEducationScreen(currentEducationScreen)}\n </AboutPetraWebContext.Provider>\n );\n};\nRoot.displayName = \"AboutPetraWeb\";\n\nconst Trigger = createHeadlessComponent(\n \"AboutPetraWeb.Trigger\",\n \"button\",\n (displayName) => {\n const context = useAboutPetraWebContext(displayName);\n\n return {\n onClick: () => {\n context.setScreenIndex(1);\n },\n };\n },\n);\n\n/**\n * A headless component for rendering education screens that explain the basics\n * of Petra Web and web3 wallets.\n */\nexport const AboutPetraWeb = Object.assign(Root, {\n Trigger,\n});\n","import { forwardRef } from \"react\";\nimport { SmallAptosLogo } from \"../graphics/SmallAptosLogo\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nexport const APTOS_PRIVACY_POLICY_URL = \"https://aptoslabs.com/privacy\";\n\nconst Root = createHeadlessComponent(\"AptosPrivacyPolicy.Root\", \"div\");\n\nconst Disclaimer = createHeadlessComponent(\n \"AptosPrivacyPolicy.Disclaimer\",\n \"span\",\n { children: \"By continuing, you agree to Aptos Labs'\" },\n);\n\nconst Link = createHeadlessComponent(\"AptosPrivacyPolicy.Disclaimer\", \"a\", {\n href: APTOS_PRIVACY_POLICY_URL,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n children: \"Privacy Policy\",\n});\n\nconst PoweredBy = forwardRef<\n HTMLDivElement,\n Pick<HeadlessComponentProps, \"className\">\n>(({ className }, ref) => {\n return (\n <div ref={ref} className={className}>\n <span>Powered by</span>\n <SmallAptosLogo />\n <span>Aptos Labs</span>\n </div>\n );\n});\nPoweredBy.displayName = \"AptosPrivacyPolicy.PoweredBy\";\n\n/**\n * A headless component for rendering the Aptos Labs privacy policy disclaimer\n * that should be placed under the Petra Web login options.\n */\nexport const AptosPrivacyPolicy = Object.assign(Root, {\n Disclaimer,\n Link,\n PoweredBy,\n});\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const SmallAptosLogo = forwardRef<\n SVGSVGElement,\n SVGProps<SVGSVGElement>\n>((props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6 12C9.31371 12 12 9.31371 12 6C12 2.68629 9.31371 0 6 0C2.68629 0 0 2.68629 0 6C0 9.31371 2.68629 12 6 12ZM7.17547 3.67976C7.13401 3.72309 7.07649 3.74757 7.01648 3.74757H3.00775C3.69185 2.83824 4.77995 2.25 6.00569 2.25C7.23142 2.25 8.31953 2.83824 9.00362 3.74757H8.28524C8.20824 3.74757 8.13498 3.71468 8.08401 3.65701L7.81608 3.35416C7.77618 3.30896 7.71882 3.28308 7.6585 3.28308H7.6454C7.58805 3.28308 7.53318 3.30646 7.49343 3.34792L7.17547 3.67976ZM8.05656 4.75897H7.39569C7.31869 4.75897 7.24543 4.72593 7.19447 4.66842L6.92638 4.36557C6.88647 4.32036 6.82896 4.29465 6.7688 4.29465C6.70863 4.29465 6.65112 4.32052 6.61121 4.36557L6.38131 4.6254C6.30603 4.71034 6.19801 4.75913 6.08454 4.75913H2.46703C2.36401 5.05278 2.29683 5.36296 2.27002 5.68467H5.68505C5.74506 5.68467 5.80258 5.66019 5.84404 5.61686L6.16201 5.28502C6.20175 5.24356 6.25662 5.22018 6.31398 5.22018H6.32707C6.38739 5.22018 6.44475 5.24606 6.48465 5.29126L6.75258 5.59411C6.80355 5.65178 6.87681 5.68467 6.95381 5.68467H9.74133C9.71452 5.3628 9.64734 5.05263 9.54431 4.75913H8.05641L8.05656 4.75897ZM4.33651 7.63095C4.39652 7.63095 4.45404 7.60648 4.4955 7.56315L4.81347 7.23131C4.85321 7.18985 4.90808 7.16647 4.96544 7.16647H4.97853C5.03885 7.16647 5.09621 7.19234 5.13611 7.23739L5.40404 7.54024C5.45501 7.59791 5.52827 7.6308 5.60527 7.6308H9.38285C9.52438 7.33839 9.62803 7.02463 9.68975 6.69591H6.06383C5.98683 6.69591 5.91357 6.66287 5.8626 6.60535L5.59467 6.3025C5.55477 6.2573 5.49725 6.23158 5.43709 6.23158C5.37692 6.23158 5.31941 6.25746 5.27951 6.3025L5.0496 6.56233C4.97432 6.64728 4.86631 6.69606 4.75268 6.69606H2.32147C2.3832 7.02479 2.487 7.33855 2.62837 7.63095H4.33651ZM5.57359 8.55745H4.59116C4.51417 8.55745 4.44091 8.52441 4.38994 8.46689L4.12201 8.16404C4.0821 8.11884 4.02459 8.09312 3.96442 8.09312C3.90426 8.09312 3.84675 8.119 3.80684 8.16404L3.57694 8.42387C3.50166 8.50882 3.39364 8.55761 3.28001 8.55761H3.26474C3.94915 9.29096 4.92378 9.74998 6.00596 9.74998C7.08815 9.74998 8.06262 9.29096 8.74719 8.55761H5.57359V8.55745Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n});\nSmallAptosLogo.displayName = \"SmallAptosLogo\";\n","import {\n AdapterNotDetectedWallet,\n AdapterWallet,\n WalletReadyState,\n isRedirectable,\n shouldUseFallbackWallet,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { createContext, forwardRef, useCallback, useContext } from \"react\";\nimport { useWallet } from \"../useWallet\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nexport interface WalletItemProps extends HeadlessComponentProps {\n /** The wallet option to be displayed. */\n wallet: AdapterWallet | AdapterNotDetectedWallet;\n /** A callback to be invoked when the wallet is connected. */\n onConnect?: () => void;\n}\n\nfunction useWalletItemContext(displayName: string) {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(`\\`${displayName}\\` must be used within \\`WalletItem\\``);\n }\n\n return context;\n}\n\nconst WalletItemContext = createContext<{\n wallet: AdapterWallet | AdapterNotDetectedWallet;\n connectWallet: () => void;\n} | null>(null);\n\nconst Root = forwardRef<HTMLDivElement, WalletItemProps>(\n ({ wallet, onConnect, className, asChild, children }, ref) => {\n const { connect } = useWallet();\n\n const isWalletReady = wallet.readyState === WalletReadyState.Installed;\n\n const mobileSupport =\n \"deeplinkProvider\" in wallet && wallet.deeplinkProvider;\n\n const connectWallet = useCallback(() => {\n const connectionWallet = shouldUseFallbackWallet(wallet)\n ? wallet.fallbackWallet\n : wallet;\n if (!connectionWallet) return;\n connect(connectionWallet.name);\n onConnect?.();\n }, [wallet, connect, onConnect]);\n\n if (!isWalletReady && isRedirectable() && !mobileSupport) return null;\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <WalletItemContext.Provider value={{ wallet, connectWallet }}>\n <Component ref={ref} className={className}>\n {children}\n </Component>\n </WalletItemContext.Provider>\n );\n },\n);\nRoot.displayName = \"WalletItem\";\n\nconst Icon = createHeadlessComponent(\n \"WalletItem.Icon\",\n \"img\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n src: context.wallet.icon,\n alt: `${context.wallet.name} icon`,\n };\n },\n);\n\nconst Name = createHeadlessComponent(\n \"WalletItem.Name\",\n \"div\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n children: context.wallet.name,\n };\n },\n);\n\nconst ConnectButton = createHeadlessComponent(\n \"WalletItem.ConnectButton\",\n \"button\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n onClick: context.connectWallet,\n children: \"Connect\",\n };\n },\n);\n\nconst InstallLink = createHeadlessComponent(\n \"WalletItem.InstallLink\",\n \"a\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n href: context.wallet.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n children: \"Install\",\n };\n },\n);\n\n/** A headless component for rendering a wallet option's name, icon, and either connect button or install link. */\nexport const WalletItem = Object.assign(Root, {\n Icon,\n Name,\n ConnectButton,\n InstallLink,\n});\n"],"mappings":"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","names":["EXPLORE_ECOSYSTEM_URL","import_react","walletCore","network","wallet","wallets","hiddenWallets","import_react","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","EXPLORE_ECOSYSTEM_URL","educationScreens","educationScreenIndicators","Root","Trigger","import_react","import_react","import_jsx_runtime","import_jsx_runtime","Root","import_wallet_adapter_core","import_react_slot","import_react","import_jsx_runtime","Root"]}
1
+ {"version":3,"sources":["../src/index.tsx","../src/WalletProvider.tsx","../src/useWallet.tsx","../src/components/AboutAptosConnect.tsx","../src/graphics/LinkGraphic.tsx","../src/graphics/WalletGraphic.tsx","../src/graphics/Web3Graphic.tsx","../src/components/utils.tsx","../src/components/AboutPetraWeb.tsx","../src/components/AptosPrivacyPolicy.tsx","../src/graphics/SmallAptosLogo.tsx","../src/components/WalletItem.tsx"],"sourcesContent":["export * from \"@aptos-labs/wallet-adapter-core\";\nexport * from \"./WalletProvider\";\nexport * from \"./components/AboutAptosConnect\";\nexport * from \"./components/AboutPetraWeb\";\nexport * from \"./components/AptosPrivacyPolicy\";\nexport * from \"./components/WalletItem\";\nexport * from \"./useWallet\";\n","import {\n AvailableWallets,\n DappConfig,\n AccountInfo,\n AdapterWallet,\n NetworkInfo,\n InputTransactionData,\n AptosSignAndSubmitTransactionOutput,\n AnyRawTransaction,\n InputGenerateTransactionOptions,\n AccountAuthenticator,\n AptosSignMessageInput,\n AptosSignMessageOutput,\n AdapterNotDetectedWallet,\n WalletCore,\n Network,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n WalletReadyState,\n AptosSignInInput,\n AptosSignInOutput,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { ReactNode, FC, useState, useEffect, useCallback, useRef } from \"react\";\nimport { WalletContext } from \"./useWallet\";\n\nexport interface AptosWalletProviderProps {\n children: ReactNode;\n optInWallets?: ReadonlyArray<AvailableWallets>;\n hideWallets?: ReadonlyArray<AvailableWallets>;\n autoConnect?:\n | boolean\n | ((core: WalletCore, adapter: AdapterWallet) => Promise<boolean>);\n dappConfig?: DappConfig;\n disableTelemetry?: boolean;\n onError?: (error: any) => void;\n}\n\nconst initialState: {\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connected: boolean;\n wallet: AdapterWallet | null;\n} = {\n connected: false,\n account: null,\n network: null,\n wallet: null,\n};\n\nexport const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({\n children,\n optInWallets,\n hideWallets,\n autoConnect = false,\n dappConfig,\n disableTelemetry = false,\n onError,\n}: AptosWalletProviderProps) => {\n const didAttemptAutoConnectRef = useRef(false);\n // Track whether initial loading phase is complete to avoid interfering with user-initiated connections\n const initialLoadCompletedRef = useRef(false);\n\n const [{ account, network, connected, wallet }, setState] =\n useState(initialState);\n\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [walletCore, setWalletCore] = useState<WalletCore>();\n\n const [wallets, setWallets] = useState<ReadonlyArray<AdapterWallet>>([]);\n const [hiddenWallets, setHiddenWallets] = useState<\n ReadonlyArray<AdapterWallet>\n >([]);\n const [notDetectedWallets, setNotDetectedWallets] = useState<\n ReadonlyArray<AdapterNotDetectedWallet>\n >([]);\n // Initialize WalletCore on first load\n useEffect(() => {\n const walletCore = new WalletCore(\n optInWallets,\n dappConfig,\n disableTelemetry,\n hideWallets ? hideWallets : [\"Petra Web\"],\n );\n setWalletCore(walletCore);\n }, []);\n\n // Update initial Wallets state once WalletCore has been initialized\n useEffect(() => {\n setWallets(walletCore?.wallets ?? []);\n setHiddenWallets(walletCore?.hiddenWallets ?? []);\n setNotDetectedWallets(walletCore?.notDetectedWallets ?? []);\n }, [walletCore]);\n\n useEffect(() => {\n // Only attempt to auto connect once per render and only if there are wallets\n if (didAttemptAutoConnectRef.current || !walletCore?.wallets.length) {\n return;\n }\n\n // If auto connect is not set or is false, don't mark as attempted yet\n // This allows retry when autoConnect becomes true asynchronously\n if (!autoConnect) {\n // Only set isLoading to false during initial load, not on subsequent effect runs\n // to avoid interfering with user-initiated connect() calls\n if (!initialLoadCompletedRef.current) {\n initialLoadCompletedRef.current = true;\n setIsLoading(false);\n }\n return;\n }\n\n // Make sure the user has a previously connected wallet\n const walletName = localStorage.getItem(\"AptosWalletName\");\n if (!walletName) {\n // No stored wallet name - mark as attempted since there's nothing to connect to\n didAttemptAutoConnectRef.current = true;\n if (!initialLoadCompletedRef.current) {\n initialLoadCompletedRef.current = true;\n setIsLoading(false);\n }\n return;\n }\n\n // Make sure the wallet is installed\n const selectedWallet = walletCore.wallets.find(\n (e) => e.name === walletName,\n ) as AdapterWallet | undefined;\n if (\n !selectedWallet ||\n selectedWallet.readyState !== WalletReadyState.Installed\n ) {\n // Wallet not found yet - DON'T mark as attempted\n // This allows retry when the wallet registers later\n if (!initialLoadCompletedRef.current) {\n initialLoadCompletedRef.current = true;\n setIsLoading(false);\n }\n return;\n }\n\n // Found the wallet and it's installed - mark as attempted to prevent duplicate connections\n didAttemptAutoConnectRef.current = true;\n\n if (!connected) {\n (async () => {\n try {\n let shouldConnect = true;\n\n // Providing a function to autoConnect allows the dapp to determine\n // whether to attempt to connect to the wallet using the `signIn`\n // or `connect` method. If `signIn` is successful, the user can\n // return `false` and skip the `connect` method.\n if (typeof autoConnect === \"function\") {\n shouldConnect = await autoConnect(walletCore, selectedWallet);\n } else {\n shouldConnect = autoConnect;\n }\n\n if (shouldConnect) await connect(walletName);\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n initialLoadCompletedRef.current = true;\n setIsLoading(false);\n }\n })();\n } else {\n initialLoadCompletedRef.current = true;\n setIsLoading(false);\n }\n }, [autoConnect, wallets]);\n\n const connect = async (walletName: string): Promise<void> => {\n try {\n setIsLoading(true);\n await walletCore?.connect(walletName);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const signIn = async (args: {\n walletName: string;\n input: AptosSignInInput;\n }): Promise<AptosSignInOutput> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n\n try {\n setIsLoading(true);\n return await walletCore?.signIn(args);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const disconnect = async (): Promise<void> => {\n try {\n await walletCore?.disconnect();\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signAndSubmitTransaction = async (\n transaction: InputTransactionData,\n ): Promise<AptosSignAndSubmitTransactionOutput> => {\n try {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n return await walletCore.signAndSubmitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signTransaction = async (args: {\n transactionOrPayload: AnyRawTransaction | InputTransactionData;\n asFeePayer?: boolean;\n options?: InputGenerateTransactionOptions & {\n expirationSecondsFromNow?: number;\n expirationTimestamp?: number;\n };\n }): Promise<{\n authenticator: AccountAuthenticator;\n rawTransaction: Uint8Array;\n }> => {\n const { transactionOrPayload, asFeePayer, options } = args;\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore.signTransaction({\n transactionOrPayload,\n asFeePayer,\n });\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const submitTransaction = async (\n transaction: InputSubmitTransactionData,\n ): Promise<PendingTransactionResponse> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.submitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessage = async (\n message: AptosSignMessageInput,\n ): Promise<AptosSignMessageOutput> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.signMessage(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessageAndVerify = async (\n message: AptosSignMessageInput,\n ): Promise<boolean> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.signMessageAndVerify(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const changeNetwork = async (network: Network) => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.changeNetwork(network);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n // Handle the adapter's connect event\n const handleConnect = (): void => {\n setState((state) => {\n return {\n ...state,\n connected: true,\n account: walletCore?.account || null,\n network: walletCore?.network || null,\n wallet: walletCore?.wallet || null,\n };\n });\n };\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback((): void => {\n if (!connected) return;\n if (!walletCore?.wallet) return;\n setState((state) => {\n return {\n ...state,\n account: walletCore?.account || null,\n };\n });\n }, [connected]);\n\n // Handle the adapter's network event\n const handleNetworkChange = useCallback((): void => {\n if (!connected) return;\n if (!walletCore?.wallet) return;\n setState((state) => {\n return {\n ...state,\n network: walletCore?.network || null,\n };\n });\n }, [connected]);\n\n useEffect(() => {\n if (connected) {\n walletCore?.onAccountChange();\n walletCore?.onNetworkChange();\n }\n }, [connected]);\n\n // Handle the adapter's disconnect event\n const handleDisconnect = (): void => {\n if (!connected) return;\n setState((state) => {\n return {\n ...state,\n connected: false,\n account: walletCore?.account || null,\n network: walletCore?.network || null,\n wallet: null,\n };\n });\n };\n\n const handleStandardWalletsAdded = (standardWallet: AdapterWallet): void => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == standardWallet.name,\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n standardWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setWallets((wallets) => [...wallets, standardWallet]);\n }\n };\n\n const handleStandardWalletsHiddenAdded = (\n standardWallet: AdapterWallet,\n ): void => {\n // Manage hidden wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = hiddenWallets.findIndex(\n (wallet) => wallet.name === standardWallet.name,\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setHiddenWallets((hiddenWallets) => [\n ...hiddenWallets.slice(0, existingWalletIndex),\n standardWallet,\n ...hiddenWallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setHiddenWallets((hiddenWallets) => [...hiddenWallets, standardWallet]);\n }\n };\n\n const handleStandardNotDetectedWalletsAdded = (\n notDetectedWallet: AdapterNotDetectedWallet,\n ): void => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == notDetectedWallet.name,\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setNotDetectedWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n notDetectedWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setNotDetectedWallets((wallets) => [...wallets, notDetectedWallet]);\n }\n };\n\n useEffect(() => {\n walletCore?.on(\"connect\", handleConnect);\n walletCore?.on(\"accountChange\", handleAccountChange);\n walletCore?.on(\"networkChange\", handleNetworkChange);\n walletCore?.on(\"disconnect\", handleDisconnect);\n walletCore?.on(\"standardWalletsAdded\", handleStandardWalletsAdded);\n walletCore?.on(\n \"standardWalletsHiddenAdded\",\n handleStandardWalletsHiddenAdded,\n );\n walletCore?.on(\n \"standardNotDetectedWalletAdded\",\n handleStandardNotDetectedWalletsAdded,\n );\n return () => {\n walletCore?.off(\"connect\", handleConnect);\n walletCore?.off(\"accountChange\", handleAccountChange);\n walletCore?.off(\"networkChange\", handleNetworkChange);\n walletCore?.off(\"disconnect\", handleDisconnect);\n walletCore?.off(\"standardWalletsAdded\", handleStandardWalletsAdded);\n walletCore?.off(\n \"standardWalletsHiddenAdded\",\n handleStandardWalletsHiddenAdded,\n );\n walletCore?.off(\n \"standardNotDetectedWalletAdded\",\n handleStandardNotDetectedWalletsAdded,\n );\n };\n }, [wallets, account]);\n\n return (\n <WalletContext.Provider\n value={{\n connect,\n signIn,\n disconnect,\n signAndSubmitTransaction,\n signTransaction,\n signMessage,\n signMessageAndVerify,\n changeNetwork,\n submitTransaction,\n account,\n network,\n connected,\n wallet,\n wallets,\n notDetectedWallets,\n hiddenWallets,\n isLoading,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n","import { useContext, createContext } from \"react\";\nimport {\n AccountAuthenticator,\n AccountInfo,\n AdapterWallet,\n AnyRawTransaction,\n AptosSignAndSubmitTransactionOutput,\n InputTransactionData,\n NetworkInfo,\n AptosSignMessageInput,\n AptosSignMessageOutput,\n AdapterNotDetectedWallet,\n Network,\n AptosChangeNetworkOutput,\n PendingTransactionResponse,\n InputSubmitTransactionData,\n AptosSignInInput,\n AptosSignInOutput,\n} from \"@aptos-labs/wallet-adapter-core\";\n\nexport interface WalletContextState {\n connected: boolean;\n isLoading: boolean;\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connect(walletName: string): void;\n signIn(args: {\n walletName: string;\n input: AptosSignInInput;\n }): Promise<AptosSignInOutput | void>;\n signAndSubmitTransaction(\n transaction: InputTransactionData,\n ): Promise<AptosSignAndSubmitTransactionOutput>;\n signTransaction(args: {\n transactionOrPayload: AnyRawTransaction | InputTransactionData;\n asFeePayer?: boolean;\n }): Promise<{\n authenticator: AccountAuthenticator;\n rawTransaction: Uint8Array;\n }>;\n signMessage(message: AptosSignMessageInput): Promise<AptosSignMessageOutput>;\n signMessageAndVerify(message: AptosSignMessageInput): Promise<boolean>;\n disconnect(): void;\n changeNetwork(network: Network): Promise<AptosChangeNetworkOutput>;\n submitTransaction(\n transaction: InputSubmitTransactionData,\n ): Promise<PendingTransactionResponse>;\n wallet: AdapterWallet | null;\n wallets: ReadonlyArray<AdapterWallet>;\n hiddenWallets: ReadonlyArray<AdapterWallet>;\n notDetectedWallets: ReadonlyArray<AdapterNotDetectedWallet>;\n}\n\nconst DEFAULT_CONTEXT = {\n connected: false,\n};\n\nexport const WalletContext = createContext<WalletContextState>(\n DEFAULT_CONTEXT as WalletContextState,\n);\n\nexport function useWallet(): WalletContextState {\n const context = useContext(WalletContext);\n if (!context) {\n throw new Error(\"useWallet must be used within a WalletContextState\");\n }\n return context;\n}\n","import {\n Dispatch,\n ForwardRefExoticComponent,\n ReactNode,\n RefAttributes,\n SVGProps,\n SetStateAction,\n createContext,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { LinkGraphic } from \"../graphics/LinkGraphic\";\nimport { WalletGraphic } from \"../graphics/WalletGraphic\";\nimport { Web3Graphic } from \"../graphics/Web3Graphic\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nconst EXPLORE_ECOSYSTEM_URL =\n \"https://aptosnetwork.com/ecosystem/directory/category/defi\";\n\nconst AboutAptosConnectContext = createContext<{\n screenIndex: number;\n setScreenIndex: Dispatch<SetStateAction<number>>;\n} | null>(null);\n\nfunction useAboutAptosConnectContext(displayName: string) {\n const context = useContext(AboutAptosConnectContext);\n\n if (!context) {\n throw new Error(\n `\\`${displayName}\\` must be used within \\`AboutAptosConnect\\``,\n );\n }\n\n return context;\n}\n\nconst educationScreens = [\n {\n Graphic: LinkGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h3\", {\n children: \"A better way to login.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Petra Web is a web3 wallet that uses a Social Login to create accounts on the Aptos blockchain.\",\n }),\n },\n {\n Graphic: WalletGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"What is a wallet?\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Wallets are a secure way to send, receive, and interact with digital assets like cryptocurrencies & NFTs.\",\n }),\n },\n {\n Graphic: Web3Graphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"Explore more of web3.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children: (\n <>\n Petra Web lets you take one account across any application built on\n Aptos.{\" \"}\n <a\n href={EXPLORE_ECOSYSTEM_URL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Explore the ecosystem\n </a>\n .\n </>\n ),\n }),\n },\n];\n\nconst educationScreenIndicators = Array(educationScreens.length)\n .fill(null)\n .map((_, index) =>\n createHeadlessComponent(\n \"AboutAptosConnect.ScreenIndicator\",\n \"button\",\n (displayName) => {\n const context = useAboutAptosConnectContext(displayName);\n const isActive = context.screenIndex - 1 === index;\n\n return {\n \"aria-label\": `Go to screen ${index + 1}`,\n \"aria-current\": isActive ? \"step\" : undefined,\n \"data-active\": isActive || undefined,\n onClick: () => {\n context.setScreenIndex(index + 1);\n },\n };\n },\n ),\n );\n\n/** @deprecated Use {@link AboutPetraWebEducationScreen} instead. */\nexport interface AboutAptosConnectEducationScreen {\n /** A component that renders an SVG to illustrate the idea of the current screen. */\n Graphic: ForwardRefExoticComponent<\n Omit<SVGProps<SVGSVGElement>, \"ref\"> & RefAttributes<SVGSVGElement>\n >;\n /** A headless component that renders the title of the current screen. */\n Title: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLHeadingElement>\n >;\n /** A headless component that renders the description text of the current screen. */\n Description: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLParagraphElement>\n >;\n /** The index of the current education screen. */\n screenIndex: number;\n /** The total number of education screens. */\n totalScreens: number;\n /**\n * An array of headless components for indicating the current screen of the set.\n * Each indicator will navigate the user to the screen it represents when clicked.\n */\n screenIndicators: typeof educationScreenIndicators;\n /**\n * A function that navigates the user to the previous education screen.\n * If the user is on the first education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n back: () => void;\n /**\n * A function that navigates the user to the next education screen.\n * If the user is on the last education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n next: () => void;\n /** A function that navigates the user to the initial wallet selection screen. */\n cancel: () => void;\n}\n\n/** @deprecated Use {@link AboutPetraWebProps} instead. */\nexport interface AboutAptosConnectProps {\n /**\n * A function for defining how each education screen should be rendered.\n * Each screen is modeled as a uniform set of headless components and utilities\n * that allow you to construct your UI and apply your own styles.\n */\n renderEducationScreen: (\n screen: AboutAptosConnectEducationScreen,\n ) => ReactNode;\n /**\n * The initial wallet selection UI that will be replaced by the education\n * screens when `AboutAptosConnect.Trigger` is clicked.\n */\n children?: ReactNode;\n}\n\nconst Root = ({ renderEducationScreen, children }: AboutAptosConnectProps) => {\n const [screenIndex, setScreenIndex] = useState(0);\n\n const currentEducationScreen: AboutAptosConnectEducationScreen = useMemo(\n () =>\n educationScreens.map((screen, i) => ({\n ...screen,\n screenIndex: i,\n totalScreens: educationScreens.length,\n screenIndicators: educationScreenIndicators,\n back: () => {\n setScreenIndex(screenIndex - 1);\n },\n next: () => {\n setScreenIndex(\n screenIndex === educationScreens.length ? 0 : screenIndex + 1,\n );\n },\n cancel: () => {\n setScreenIndex(0);\n },\n }))[screenIndex - 1],\n [screenIndex],\n );\n\n return (\n <AboutAptosConnectContext.Provider value={{ screenIndex, setScreenIndex }}>\n {screenIndex === 0\n ? children\n : renderEducationScreen(currentEducationScreen)}\n </AboutAptosConnectContext.Provider>\n );\n};\nRoot.displayName = \"AboutAptosConnect\";\n\nconst Trigger = createHeadlessComponent(\n \"AboutAptosConnect.Trigger\",\n \"button\",\n (displayName) => {\n const context = useAboutAptosConnectContext(displayName);\n\n return {\n onClick: () => {\n context.setScreenIndex(1);\n },\n };\n },\n);\n\n/**\n * A headless component for rendering education screens that explain the basics\n * of Aptos Connect and web3 wallets.\n *\n * @deprecated Use {@link AboutPetraWeb} instead.\n */\nexport const AboutAptosConnect = Object.assign(Root, {\n Trigger,\n});\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const LinkGraphic = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"102\"\n height=\"132\"\n viewBox=\"0 0 102 132\"\n fill=\"none\"\n {...props}\n >\n <g stroke=\"currentColor\" strokeMiterlimit=\"10\">\n <path d=\"M59.633 80.66c11.742-2.814 17.48-7.018 20.925-13.254l17.518-31.69c6.257-11.317 2.142-25.55-9.189-31.798C82.737.53 75.723.188 69.593 2.398M60.7 69.565a14.09 14.09 0 0 1-6.907-1.767l-.228-.108\" />\n <path d=\"m52.365 41.075 12.507-22.627a14.146 14.146 0 0 1 4.727-5.062M32.407 118.619a14.139 14.139 0 0 1-7.034-1.768c-6.857-3.78-9.353-12.402-5.561-19.25l16.634-30.1a14.097 14.097 0 0 1 4.518-4.923\" />\n <path d=\"M41.211 78.85c11.332 6.248 25.583 2.14 31.84-9.177l17.518-31.691c6.256-11.317 2.142-25.55-9.19-31.798-6.085-3.357-13.018-3.724-19.104-1.59A23.31 23.31 0 0 0 49.541 15.36L36.863 38.298l7.989 5.036 12.506-22.627c3.786-6.848 12.419-9.34 19.276-5.554 6.856 3.78 9.353 12.402 5.561 19.25l-16.634 30.1c-3.785 6.848-12.418 9.341-19.275 5.555l-5.075 8.791ZM29.5 130.447c12.361-1.37 19.2-6.994 22.966-13.804l12.678-22.936-8.305-5.239\" />\n <path d=\"m55.72 61.947-.442.764 5.511-9.55c-6.901-3.806-18.65-3.124-27.105.814M44.85 43.523l7.635-2.486m-4.221 23.264 7.217-1.723m-9.316 7.517 7.59-2.405m-.562-12.156 7.508-2.221m10.136-51.32L62.761 4.43M49.642 90.778l7.514-2.26m.474 7.448 7.514-2.26m-50.306-60.13c7.135 0 12.918-5.776 12.918-12.9 0-7.126-5.783-12.902-12.918-12.902-7.134 0-12.917 5.776-12.917 12.901s5.783 12.901 12.918 12.901Z\" />\n <path d=\"M15.724 7.774h3.197c7.135 0 12.918 5.776 12.918 12.901 0 7.126-5.783 12.901-12.918 12.901h-3.425m65.112 66.935h3.198c7.135 0 12.918 5.775 12.918 12.901 0 7.125-5.783 12.9-12.918 12.9h-3.425\" />\n <path d=\"M79.717 126.312c7.135 0 12.918-5.775 12.918-12.9s-5.783-12.901-12.918-12.901c-7.134 0-12.917 5.776-12.917 12.901s5.783 12.9 12.917 12.9ZM53.281 55.414c-11.33-6.248-25.582-2.14-31.839 9.177L3.924 96.281c-6.257 11.318-2.142 25.55 9.189 31.799 11.331 6.248 25.582 2.139 31.839-9.177l12.677-22.937-7.988-5.036-12.507 22.627c-3.785 6.848-12.418 9.341-19.275 5.554-6.857-3.781-9.353-12.402-5.561-19.25l16.633-30.1c3.786-6.848 12.419-9.341 19.276-5.555l5.074-8.792Z\" />\n </g>\n </svg>\n );\n },\n);\nLinkGraphic.displayName = \"LinkGraphic\";\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const WalletGraphic = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"128\"\n height=\"102\"\n viewBox=\"0 0 128 102\"\n fill=\"none\"\n {...props}\n >\n <path\n fill=\"currentColor\"\n d=\"m.96 25.93-.36-.35.36.85v-.5Zm7.79-7.81v-.5h-.21l-.15.15.36.35ZM1.3 26.28l7.79-7.8-.7-.71-7.8 7.8.7.71Zm7.44-7.66H10v-1H8.75v1Zm29.22 6.8h-37v1h37.01v-1Z\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M82.25 26.08c0 12.25-9.92 22.2-22.14 22.2a22.17 22.17 0 0 1-22.14-22.2H1.1v74.82h118.02V26.08H82.25Zm44.33 67.02h.33V18.27h-5.7\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M74.52 42.92a22.4 22.4 0 0 1-11.43 3.3 22.5 22.5 0 0 1-22.46-22.53H9.52M119.22 101l7.78-7.82m-7.88-67.1 7.79-7.81m-44.78 7.72 2.73-2.3m-46.89 2.39 2.39-2.4\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M9.86 23.69V5.72h107.97v18.04H84.65\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M117.83 20.46h3.39V1H13.25v4.72M9.36 23.69h31.78\"\n />\n </svg>\n );\n },\n);\nWalletGraphic.displayName = \"WalletGraphic\";\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const Web3Graphic = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"142\"\n height=\"108\"\n viewBox=\"0 0 142 108\"\n fill=\"none\"\n {...props}\n >\n <g stroke=\"currentColor\" strokeLinejoin=\"round\">\n <path d=\"m91.26 35.8.06-10.46L71.3 1v10.53L87 30.5m-36.11 5.24-.06-10.45L71.3 1v10.53L55 30.5\" />\n <path d=\"M71 59.55V49.17L50.83 25.3l.06 10.45L57 42.5m14 17.05V49.18l20.33-23.84-.07 10.45L86 42M1 59.68l.22-9.07 35.33-19.8-.1 9L9 55\" />\n <path d=\"M36.55 30.8s-.08 5.92-.1 9l.1-9ZM71 59.51v-9.07L36.55 30.8l-.1 9L63.5 55\" />\n <path d=\"M71 59.51v-9.07L36.44 70.78l-.1 9.14L55.5 68.5\" />\n <path d=\"M1.22 50.6a77387.2 77387.2 0 0 0 35.22 20.18l-.1 9.14L1 59.68l.23-9.07h-.01ZM141 59.68l-.23-9.07-35.33-19.8.11 9L133 55\" />\n <path d=\"m105.44 30.8.11 9-.1-9Z\" />\n <path d=\"M71 59.51v-9.07l34.44-19.64.11 9L78.5 55\" />\n <path d=\"M71 59.51v-9.07l34.56 20.34.1 9.14L87 69\" />\n <path d=\"M140.78 50.6a78487.3 78487.3 0 0 1-35.23 20.18l.11 9.14L141 59.68l-.23-9.07ZM50.83 80.15l.06-6.33 20.1-23.38H71v9.26L55 79\" />\n <path d=\"M71.3 97.6 50.89 73.81l-.06 9.33L71.3 107v-9.4Zm20.03-14.5-.07-9.33L71 50.44v9.26l16 18.8\" />\n <path d=\"m71.3 97.6 19.96-23.83.06 9.33L71.3 107v-9.4Z\" />\n </g>\n </svg>\n );\n },\n);\nWeb3Graphic.displayName = \"Web3Graphic\";\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { ReactNode, cloneElement, forwardRef, isValidElement } from \"react\";\n\nexport interface HeadlessComponentProps {\n /** A class name for styling the element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default element provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Gets an HTML element type from its tag name\n * @example\n * HTMLElementFromTag<\"img\"> // resolved type: HTMLImageElement\n */\ntype HTMLElementFromTag<T extends keyof JSX.IntrinsicElements> =\n JSX.IntrinsicElements[T] extends React.ClassAttributes<infer Element>\n ? Element\n : HTMLElement;\n\nexport function createHeadlessComponent<\n TElement extends keyof JSX.IntrinsicElements,\n>(\n displayName: string,\n elementType: TElement,\n props?:\n | JSX.IntrinsicElements[TElement]\n | ((displayName: string) => JSX.IntrinsicElements[TElement]),\n) {\n const component = forwardRef<\n HTMLElementFromTag<TElement>,\n HeadlessComponentProps\n >(({ className, asChild, children }, ref) => {\n const Component = asChild ? Slot : elementType;\n\n const { children: defaultChildren, ...resolvedProps } =\n typeof props === \"function\" ? props(displayName) : (props ?? {});\n const resolvedChildren =\n /**\n * Use props' default children if no children are set in the component element's children and when asChild is true.\n */\n asChild && isValidElement(children) && !children.props.children\n ? cloneElement(children, {}, defaultChildren)\n : (children ?? defaultChildren);\n\n return (\n /**\n * Due to the complexity of the types at play, TypeScript reports the\n * following error for our JSX below:\n *\n * `Expression produces a union type that is too complex to represent.`\n *\n * We can safely ignore this error and retain accurate return types for\n * consumers of this function. The only drawback is that type-checking is\n * ignored for the JSX block below.\n */\n // @ts-expect-error\n <Component ref={ref} className={className} {...resolvedProps}>\n {resolvedChildren}\n </Component>\n );\n });\n component.displayName = displayName;\n\n return component;\n}\n","import {\n Dispatch,\n ForwardRefExoticComponent,\n ReactNode,\n RefAttributes,\n SVGProps,\n SetStateAction,\n createContext,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { LinkGraphic } from \"../graphics/LinkGraphic\";\nimport { WalletGraphic } from \"../graphics/WalletGraphic\";\nimport { Web3Graphic } from \"../graphics/Web3Graphic\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nexport const EXPLORE_ECOSYSTEM_URL =\n \"https://aptosnetwork.com/ecosystem/directory/category/defi\";\n\nconst AboutPetraWebContext = createContext<{\n screenIndex: number;\n setScreenIndex: Dispatch<SetStateAction<number>>;\n} | null>(null);\n\nfunction useAboutPetraWebContext(displayName: string) {\n const context = useContext(AboutPetraWebContext);\n\n if (!context) {\n throw new Error(`\\`${displayName}\\` must be used within \\`AboutPetraWeb\\``);\n }\n\n return context;\n}\n\nconst educationScreens = [\n {\n Graphic: LinkGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h3\", {\n children: \"A better way to login.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Petra Web is a web3 wallet that uses a Social Login to create accounts on the Aptos blockchain.\",\n }),\n },\n {\n Graphic: WalletGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"What is a wallet?\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Wallets are a secure way to send, receive, and interact with digital assets like cryptocurrencies & NFTs.\",\n }),\n },\n {\n Graphic: Web3Graphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"Explore more of web3.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children: (\n <>\n Petra Web lets you take one account across any application built on\n Aptos.{\" \"}\n <a\n href={EXPLORE_ECOSYSTEM_URL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Explore the ecosystem\n </a>\n .\n </>\n ),\n }),\n },\n];\n\nconst educationScreenIndicators = Array(educationScreens.length)\n .fill(null)\n .map((_, index) =>\n createHeadlessComponent(\n \"AboutPetraWeb.ScreenIndicator\",\n \"button\",\n (displayName) => {\n const context = useAboutPetraWebContext(displayName);\n const isActive = context.screenIndex - 1 === index;\n\n return {\n \"aria-label\": `Go to screen ${index + 1}`,\n \"aria-current\": isActive ? \"step\" : undefined,\n \"data-active\": isActive || undefined,\n onClick: () => {\n context.setScreenIndex(index + 1);\n },\n };\n },\n ),\n );\n\nexport interface AboutPetraWebEducationScreen {\n /** A component that renders an SVG to illustrate the idea of the current screen. */\n Graphic: ForwardRefExoticComponent<\n Omit<SVGProps<SVGSVGElement>, \"ref\"> & RefAttributes<SVGSVGElement>\n >;\n /** A headless component that renders the title of the current screen. */\n Title: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLHeadingElement>\n >;\n /** A headless component that renders the description text of the current screen. */\n Description: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLParagraphElement>\n >;\n /** The index of the current education screen. */\n screenIndex: number;\n /** The total number of education screens. */\n totalScreens: number;\n /**\n * An array of headless components for indicating the current screen of the set.\n * Each indicator will navigate the user to the screen it represents when clicked.\n */\n screenIndicators: typeof educationScreenIndicators;\n /**\n * A function that navigates the user to the previous education screen.\n * If the user is on the first education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n back: () => void;\n /**\n * A function that navigates the user to the next education screen.\n * If the user is on the last education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n next: () => void;\n /** A function that navigates the user to the initial wallet selection screen. */\n cancel: () => void;\n}\n\nexport interface AboutPetraWebProps {\n /**\n * A function for defining how each education screen should be rendered.\n * Each screen is modeled as a uniform set of headless components and utilities\n * that allow you to construct your UI and apply your own styles.\n */\n renderEducationScreen: (screen: AboutPetraWebEducationScreen) => ReactNode;\n /**\n * The initial wallet selection UI that will be replaced by the education\n * screens when `AboutPetraWeb.Trigger` is clicked.\n */\n children?: ReactNode;\n}\n\nconst Root = ({ renderEducationScreen, children }: AboutPetraWebProps) => {\n const [screenIndex, setScreenIndex] = useState(0);\n\n const currentEducationScreen: AboutPetraWebEducationScreen = useMemo(\n () =>\n educationScreens.map((screen, i) => ({\n ...screen,\n screenIndex: i,\n totalScreens: educationScreens.length,\n screenIndicators: educationScreenIndicators,\n back: () => {\n setScreenIndex(screenIndex - 1);\n },\n next: () => {\n setScreenIndex(\n screenIndex === educationScreens.length ? 0 : screenIndex + 1,\n );\n },\n cancel: () => {\n setScreenIndex(0);\n },\n }))[screenIndex - 1],\n [screenIndex],\n );\n\n return (\n <AboutPetraWebContext.Provider value={{ screenIndex, setScreenIndex }}>\n {screenIndex === 0\n ? children\n : renderEducationScreen(currentEducationScreen)}\n </AboutPetraWebContext.Provider>\n );\n};\nRoot.displayName = \"AboutPetraWeb\";\n\nconst Trigger = createHeadlessComponent(\n \"AboutPetraWeb.Trigger\",\n \"button\",\n (displayName) => {\n const context = useAboutPetraWebContext(displayName);\n\n return {\n onClick: () => {\n context.setScreenIndex(1);\n },\n };\n },\n);\n\n/**\n * A headless component for rendering education screens that explain the basics\n * of Petra Web and web3 wallets.\n */\nexport const AboutPetraWeb = Object.assign(Root, {\n Trigger,\n});\n","import { forwardRef } from \"react\";\nimport { SmallAptosLogo } from \"../graphics/SmallAptosLogo\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nexport const APTOS_PRIVACY_POLICY_URL = \"https://aptoslabs.com/privacy\";\n\nconst Root = createHeadlessComponent(\"AptosPrivacyPolicy.Root\", \"div\");\n\nconst Disclaimer = createHeadlessComponent(\n \"AptosPrivacyPolicy.Disclaimer\",\n \"span\",\n { children: \"By continuing, you agree to Aptos Labs'\" },\n);\n\nconst Link = createHeadlessComponent(\"AptosPrivacyPolicy.Disclaimer\", \"a\", {\n href: APTOS_PRIVACY_POLICY_URL,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n children: \"Privacy Policy\",\n});\n\nconst PoweredBy = forwardRef<\n HTMLDivElement,\n Pick<HeadlessComponentProps, \"className\">\n>(({ className }, ref) => {\n return (\n <div ref={ref} className={className}>\n <span>Powered by</span>\n <SmallAptosLogo />\n <span>Aptos Labs</span>\n </div>\n );\n});\nPoweredBy.displayName = \"AptosPrivacyPolicy.PoweredBy\";\n\n/**\n * A headless component for rendering the Aptos Labs privacy policy disclaimer\n * that should be placed under the Petra Web login options.\n */\nexport const AptosPrivacyPolicy = Object.assign(Root, {\n Disclaimer,\n Link,\n PoweredBy,\n});\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const SmallAptosLogo = forwardRef<\n SVGSVGElement,\n SVGProps<SVGSVGElement>\n>((props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6 12C9.31371 12 12 9.31371 12 6C12 2.68629 9.31371 0 6 0C2.68629 0 0 2.68629 0 6C0 9.31371 2.68629 12 6 12ZM7.17547 3.67976C7.13401 3.72309 7.07649 3.74757 7.01648 3.74757H3.00775C3.69185 2.83824 4.77995 2.25 6.00569 2.25C7.23142 2.25 8.31953 2.83824 9.00362 3.74757H8.28524C8.20824 3.74757 8.13498 3.71468 8.08401 3.65701L7.81608 3.35416C7.77618 3.30896 7.71882 3.28308 7.6585 3.28308H7.6454C7.58805 3.28308 7.53318 3.30646 7.49343 3.34792L7.17547 3.67976ZM8.05656 4.75897H7.39569C7.31869 4.75897 7.24543 4.72593 7.19447 4.66842L6.92638 4.36557C6.88647 4.32036 6.82896 4.29465 6.7688 4.29465C6.70863 4.29465 6.65112 4.32052 6.61121 4.36557L6.38131 4.6254C6.30603 4.71034 6.19801 4.75913 6.08454 4.75913H2.46703C2.36401 5.05278 2.29683 5.36296 2.27002 5.68467H5.68505C5.74506 5.68467 5.80258 5.66019 5.84404 5.61686L6.16201 5.28502C6.20175 5.24356 6.25662 5.22018 6.31398 5.22018H6.32707C6.38739 5.22018 6.44475 5.24606 6.48465 5.29126L6.75258 5.59411C6.80355 5.65178 6.87681 5.68467 6.95381 5.68467H9.74133C9.71452 5.3628 9.64734 5.05263 9.54431 4.75913H8.05641L8.05656 4.75897ZM4.33651 7.63095C4.39652 7.63095 4.45404 7.60648 4.4955 7.56315L4.81347 7.23131C4.85321 7.18985 4.90808 7.16647 4.96544 7.16647H4.97853C5.03885 7.16647 5.09621 7.19234 5.13611 7.23739L5.40404 7.54024C5.45501 7.59791 5.52827 7.6308 5.60527 7.6308H9.38285C9.52438 7.33839 9.62803 7.02463 9.68975 6.69591H6.06383C5.98683 6.69591 5.91357 6.66287 5.8626 6.60535L5.59467 6.3025C5.55477 6.2573 5.49725 6.23158 5.43709 6.23158C5.37692 6.23158 5.31941 6.25746 5.27951 6.3025L5.0496 6.56233C4.97432 6.64728 4.86631 6.69606 4.75268 6.69606H2.32147C2.3832 7.02479 2.487 7.33855 2.62837 7.63095H4.33651ZM5.57359 8.55745H4.59116C4.51417 8.55745 4.44091 8.52441 4.38994 8.46689L4.12201 8.16404C4.0821 8.11884 4.02459 8.09312 3.96442 8.09312C3.90426 8.09312 3.84675 8.119 3.80684 8.16404L3.57694 8.42387C3.50166 8.50882 3.39364 8.55761 3.28001 8.55761H3.26474C3.94915 9.29096 4.92378 9.74998 6.00596 9.74998C7.08815 9.74998 8.06262 9.29096 8.74719 8.55761H5.57359V8.55745Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n});\nSmallAptosLogo.displayName = \"SmallAptosLogo\";\n","import {\n AdapterNotDetectedWallet,\n AdapterWallet,\n WalletReadyState,\n isRedirectable,\n shouldUseFallbackWallet,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { createContext, forwardRef, useCallback, useContext } from \"react\";\nimport { useWallet } from \"../useWallet\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nexport interface WalletItemProps extends HeadlessComponentProps {\n /** The wallet option to be displayed. */\n wallet: AdapterWallet | AdapterNotDetectedWallet;\n /** A callback to be invoked when the wallet is connected. */\n onConnect?: () => void;\n}\n\nfunction useWalletItemContext(displayName: string) {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(`\\`${displayName}\\` must be used within \\`WalletItem\\``);\n }\n\n return context;\n}\n\nconst WalletItemContext = createContext<{\n wallet: AdapterWallet | AdapterNotDetectedWallet;\n connectWallet: () => void;\n} | null>(null);\n\nconst Root = forwardRef<HTMLDivElement, WalletItemProps>(\n ({ wallet, onConnect, className, asChild, children }, ref) => {\n const { connect } = useWallet();\n\n const isWalletReady = wallet.readyState === WalletReadyState.Installed;\n\n const mobileSupport =\n \"deeplinkProvider\" in wallet && wallet.deeplinkProvider;\n\n const connectWallet = useCallback(() => {\n const connectionWallet = shouldUseFallbackWallet(wallet)\n ? wallet.fallbackWallet\n : wallet;\n if (!connectionWallet) return;\n connect(connectionWallet.name);\n onConnect?.();\n }, [wallet, connect, onConnect]);\n\n if (!isWalletReady && isRedirectable() && !mobileSupport) return null;\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <WalletItemContext.Provider value={{ wallet, connectWallet }}>\n <Component ref={ref} className={className}>\n {children}\n </Component>\n </WalletItemContext.Provider>\n );\n },\n);\nRoot.displayName = \"WalletItem\";\n\nconst Icon = createHeadlessComponent(\n \"WalletItem.Icon\",\n \"img\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n src: context.wallet.icon,\n alt: `${context.wallet.name} icon`,\n };\n },\n);\n\nconst Name = createHeadlessComponent(\n \"WalletItem.Name\",\n \"div\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n children: context.wallet.name,\n };\n },\n);\n\nconst ConnectButton = createHeadlessComponent(\n \"WalletItem.ConnectButton\",\n \"button\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n onClick: context.connectWallet,\n children: \"Connect\",\n };\n },\n);\n\nconst InstallLink = createHeadlessComponent(\n \"WalletItem.InstallLink\",\n \"a\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n href: context.wallet.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n children: \"Install\",\n };\n },\n);\n\n/** A headless component for rendering a wallet option's name, icon, and either connect button or install link. */\nexport const WalletItem = Object.assign(Root, {\n Icon,\n Name,\n ConnectButton,\n InstallLink,\n});\n"],"mappings":"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","names":["EXPLORE_ECOSYSTEM_URL","import_react","walletCore","network","wallet","wallets","hiddenWallets","import_react","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","EXPLORE_ECOSYSTEM_URL","educationScreens","educationScreenIndicators","Root","Trigger","import_react","import_react","import_jsx_runtime","import_jsx_runtime","Root","import_wallet_adapter_core","import_react_slot","import_react","import_jsx_runtime","Root"]}
package/dist/index.mjs CHANGED
@@ -94,6 +94,7 @@ var AptosWalletAdapterProvider = ({
94
94
  onError
95
95
  }) => {
96
96
  const didAttemptAutoConnectRef = useRef(false);
97
+ const initialLoadCompletedRef = useRef(false);
97
98
  const [{ account, network, connected, wallet }, setState] = useState(initialState);
98
99
  const [isLoading, setIsLoading] = useState(true);
99
100
  const [walletCore, setWalletCore] = useState();
@@ -119,23 +120,33 @@ var AptosWalletAdapterProvider = ({
119
120
  if (didAttemptAutoConnectRef.current || !(walletCore == null ? void 0 : walletCore.wallets.length)) {
120
121
  return;
121
122
  }
122
- didAttemptAutoConnectRef.current = true;
123
123
  if (!autoConnect) {
124
- setIsLoading(false);
124
+ if (!initialLoadCompletedRef.current) {
125
+ initialLoadCompletedRef.current = true;
126
+ setIsLoading(false);
127
+ }
125
128
  return;
126
129
  }
127
130
  const walletName = localStorage.getItem("AptosWalletName");
128
131
  if (!walletName) {
129
- setIsLoading(false);
132
+ didAttemptAutoConnectRef.current = true;
133
+ if (!initialLoadCompletedRef.current) {
134
+ initialLoadCompletedRef.current = true;
135
+ setIsLoading(false);
136
+ }
130
137
  return;
131
138
  }
132
139
  const selectedWallet = walletCore.wallets.find(
133
140
  (e) => e.name === walletName
134
141
  );
135
142
  if (!selectedWallet || selectedWallet.readyState !== WalletReadyState.Installed) {
136
- setIsLoading(false);
143
+ if (!initialLoadCompletedRef.current) {
144
+ initialLoadCompletedRef.current = true;
145
+ setIsLoading(false);
146
+ }
137
147
  return;
138
148
  }
149
+ didAttemptAutoConnectRef.current = true;
139
150
  if (!connected) {
140
151
  (() => __async(void 0, null, function* () {
141
152
  try {
@@ -150,10 +161,12 @@ var AptosWalletAdapterProvider = ({
150
161
  if (onError) onError(error);
151
162
  return Promise.reject(error);
152
163
  } finally {
164
+ initialLoadCompletedRef.current = true;
153
165
  setIsLoading(false);
154
166
  }
155
167
  }))();
156
168
  } else {
169
+ initialLoadCompletedRef.current = true;
157
170
  setIsLoading(false);
158
171
  }
159
172
  }, [autoConnect, wallets]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.tsx","../src/WalletProvider.tsx","../src/useWallet.tsx","../src/components/AboutAptosConnect.tsx","../src/graphics/LinkGraphic.tsx","../src/graphics/WalletGraphic.tsx","../src/graphics/Web3Graphic.tsx","../src/components/utils.tsx","../src/components/AboutPetraWeb.tsx","../src/components/AptosPrivacyPolicy.tsx","../src/graphics/SmallAptosLogo.tsx","../src/components/WalletItem.tsx"],"sourcesContent":["export * from \"@aptos-labs/wallet-adapter-core\";\nexport * from \"./WalletProvider\";\nexport * from \"./components/AboutAptosConnect\";\nexport * from \"./components/AboutPetraWeb\";\nexport * from \"./components/AptosPrivacyPolicy\";\nexport * from \"./components/WalletItem\";\nexport * from \"./useWallet\";\n","import {\n AvailableWallets,\n DappConfig,\n AccountInfo,\n AdapterWallet,\n NetworkInfo,\n InputTransactionData,\n AptosSignAndSubmitTransactionOutput,\n AnyRawTransaction,\n InputGenerateTransactionOptions,\n AccountAuthenticator,\n AptosSignMessageInput,\n AptosSignMessageOutput,\n AdapterNotDetectedWallet,\n WalletCore,\n Network,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n WalletReadyState,\n AptosSignInInput,\n AptosSignInOutput,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { ReactNode, FC, useState, useEffect, useCallback, useRef } from \"react\";\nimport { WalletContext } from \"./useWallet\";\n\nexport interface AptosWalletProviderProps {\n children: ReactNode;\n optInWallets?: ReadonlyArray<AvailableWallets>;\n hideWallets?: ReadonlyArray<AvailableWallets>;\n autoConnect?:\n | boolean\n | ((core: WalletCore, adapter: AdapterWallet) => Promise<boolean>);\n dappConfig?: DappConfig;\n disableTelemetry?: boolean;\n onError?: (error: any) => void;\n}\n\nconst initialState: {\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connected: boolean;\n wallet: AdapterWallet | null;\n} = {\n connected: false,\n account: null,\n network: null,\n wallet: null,\n};\n\nexport const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({\n children,\n optInWallets,\n hideWallets,\n autoConnect = false,\n dappConfig,\n disableTelemetry = false,\n onError,\n}: AptosWalletProviderProps) => {\n const didAttemptAutoConnectRef = useRef(false);\n\n const [{ account, network, connected, wallet }, setState] =\n useState(initialState);\n\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [walletCore, setWalletCore] = useState<WalletCore>();\n\n const [wallets, setWallets] = useState<ReadonlyArray<AdapterWallet>>([]);\n const [hiddenWallets, setHiddenWallets] = useState<\n ReadonlyArray<AdapterWallet>\n >([]);\n const [notDetectedWallets, setNotDetectedWallets] = useState<\n ReadonlyArray<AdapterNotDetectedWallet>\n >([]);\n // Initialize WalletCore on first load\n useEffect(() => {\n const walletCore = new WalletCore(\n optInWallets,\n dappConfig,\n disableTelemetry,\n hideWallets ? hideWallets : [\"Petra Web\"],\n );\n setWalletCore(walletCore);\n }, []);\n\n // Update initial Wallets state once WalletCore has been initialized\n useEffect(() => {\n setWallets(walletCore?.wallets ?? []);\n setHiddenWallets(walletCore?.hiddenWallets ?? []);\n setNotDetectedWallets(walletCore?.notDetectedWallets ?? []);\n }, [walletCore]);\n\n useEffect(() => {\n // Only attempt to auto connect once per render and only if there are wallets\n if (didAttemptAutoConnectRef.current || !walletCore?.wallets.length) {\n return;\n }\n didAttemptAutoConnectRef.current = true;\n\n // If auto connect is not set or is false, ignore the attempt\n if (!autoConnect) {\n setIsLoading(false);\n return;\n }\n\n // Make sure the user has a previously connected wallet\n const walletName = localStorage.getItem(\"AptosWalletName\");\n if (!walletName) {\n setIsLoading(false);\n return;\n }\n\n // Make sure the wallet is installed\n const selectedWallet = walletCore.wallets.find(\n (e) => e.name === walletName,\n ) as AdapterWallet | undefined;\n if (\n !selectedWallet ||\n selectedWallet.readyState !== WalletReadyState.Installed\n ) {\n setIsLoading(false);\n return;\n }\n\n if (!connected) {\n (async () => {\n try {\n let shouldConnect = true;\n\n // Providing a function to autoConnect allows the dapp to determine\n // whether to attempt to connect to the wallet using the `signIn`\n // or `connect` method. If `signIn` is successful, the user can\n // return `false` and skip the `connect` method.\n if (typeof autoConnect === \"function\") {\n shouldConnect = await autoConnect(walletCore, selectedWallet);\n } else {\n shouldConnect = autoConnect;\n }\n\n if (shouldConnect) await connect(walletName);\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n })();\n } else {\n setIsLoading(false);\n }\n }, [autoConnect, wallets]);\n\n const connect = async (walletName: string): Promise<void> => {\n try {\n setIsLoading(true);\n await walletCore?.connect(walletName);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const signIn = async (args: {\n walletName: string;\n input: AptosSignInInput;\n }): Promise<AptosSignInOutput> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n\n try {\n setIsLoading(true);\n return await walletCore?.signIn(args);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const disconnect = async (): Promise<void> => {\n try {\n await walletCore?.disconnect();\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signAndSubmitTransaction = async (\n transaction: InputTransactionData,\n ): Promise<AptosSignAndSubmitTransactionOutput> => {\n try {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n return await walletCore.signAndSubmitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signTransaction = async (args: {\n transactionOrPayload: AnyRawTransaction | InputTransactionData;\n asFeePayer?: boolean;\n options?: InputGenerateTransactionOptions & {\n expirationSecondsFromNow?: number;\n expirationTimestamp?: number;\n };\n }): Promise<{\n authenticator: AccountAuthenticator;\n rawTransaction: Uint8Array;\n }> => {\n const { transactionOrPayload, asFeePayer, options } = args;\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore.signTransaction({\n transactionOrPayload,\n asFeePayer,\n });\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const submitTransaction = async (\n transaction: InputSubmitTransactionData,\n ): Promise<PendingTransactionResponse> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.submitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessage = async (\n message: AptosSignMessageInput,\n ): Promise<AptosSignMessageOutput> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.signMessage(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessageAndVerify = async (\n message: AptosSignMessageInput,\n ): Promise<boolean> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.signMessageAndVerify(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const changeNetwork = async (network: Network) => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.changeNetwork(network);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n // Handle the adapter's connect event\n const handleConnect = (): void => {\n setState((state) => {\n return {\n ...state,\n connected: true,\n account: walletCore?.account || null,\n network: walletCore?.network || null,\n wallet: walletCore?.wallet || null,\n };\n });\n };\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback((): void => {\n if (!connected) return;\n if (!walletCore?.wallet) return;\n setState((state) => {\n return {\n ...state,\n account: walletCore?.account || null,\n };\n });\n }, [connected]);\n\n // Handle the adapter's network event\n const handleNetworkChange = useCallback((): void => {\n if (!connected) return;\n if (!walletCore?.wallet) return;\n setState((state) => {\n return {\n ...state,\n network: walletCore?.network || null,\n };\n });\n }, [connected]);\n\n useEffect(() => {\n if (connected) {\n walletCore?.onAccountChange();\n walletCore?.onNetworkChange();\n }\n }, [connected]);\n\n // Handle the adapter's disconnect event\n const handleDisconnect = (): void => {\n if (!connected) return;\n setState((state) => {\n return {\n ...state,\n connected: false,\n account: walletCore?.account || null,\n network: walletCore?.network || null,\n wallet: null,\n };\n });\n };\n\n const handleStandardWalletsAdded = (standardWallet: AdapterWallet): void => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == standardWallet.name,\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n standardWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setWallets((wallets) => [...wallets, standardWallet]);\n }\n };\n\n const handleStandardWalletsHiddenAdded = (\n standardWallet: AdapterWallet,\n ): void => {\n // Manage hidden wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = hiddenWallets.findIndex(\n (wallet) => wallet.name === standardWallet.name,\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setHiddenWallets((hiddenWallets) => [\n ...hiddenWallets.slice(0, existingWalletIndex),\n standardWallet,\n ...hiddenWallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setHiddenWallets((hiddenWallets) => [...hiddenWallets, standardWallet]);\n }\n };\n\n const handleStandardNotDetectedWalletsAdded = (\n notDetectedWallet: AdapterNotDetectedWallet,\n ): void => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == notDetectedWallet.name,\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setNotDetectedWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n notDetectedWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setNotDetectedWallets((wallets) => [...wallets, notDetectedWallet]);\n }\n };\n\n useEffect(() => {\n walletCore?.on(\"connect\", handleConnect);\n walletCore?.on(\"accountChange\", handleAccountChange);\n walletCore?.on(\"networkChange\", handleNetworkChange);\n walletCore?.on(\"disconnect\", handleDisconnect);\n walletCore?.on(\"standardWalletsAdded\", handleStandardWalletsAdded);\n walletCore?.on(\n \"standardWalletsHiddenAdded\",\n handleStandardWalletsHiddenAdded,\n );\n walletCore?.on(\n \"standardNotDetectedWalletAdded\",\n handleStandardNotDetectedWalletsAdded,\n );\n return () => {\n walletCore?.off(\"connect\", handleConnect);\n walletCore?.off(\"accountChange\", handleAccountChange);\n walletCore?.off(\"networkChange\", handleNetworkChange);\n walletCore?.off(\"disconnect\", handleDisconnect);\n walletCore?.off(\"standardWalletsAdded\", handleStandardWalletsAdded);\n walletCore?.off(\n \"standardWalletsHiddenAdded\",\n handleStandardWalletsHiddenAdded,\n );\n walletCore?.off(\n \"standardNotDetectedWalletAdded\",\n handleStandardNotDetectedWalletsAdded,\n );\n };\n }, [wallets, account]);\n\n return (\n <WalletContext.Provider\n value={{\n connect,\n signIn,\n disconnect,\n signAndSubmitTransaction,\n signTransaction,\n signMessage,\n signMessageAndVerify,\n changeNetwork,\n submitTransaction,\n account,\n network,\n connected,\n wallet,\n wallets,\n notDetectedWallets,\n hiddenWallets,\n isLoading,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n","import { useContext, createContext } from \"react\";\nimport {\n AccountAuthenticator,\n AccountInfo,\n AdapterWallet,\n AnyRawTransaction,\n AptosSignAndSubmitTransactionOutput,\n InputTransactionData,\n NetworkInfo,\n AptosSignMessageInput,\n AptosSignMessageOutput,\n AdapterNotDetectedWallet,\n Network,\n AptosChangeNetworkOutput,\n PendingTransactionResponse,\n InputSubmitTransactionData,\n AptosSignInInput,\n AptosSignInOutput,\n} from \"@aptos-labs/wallet-adapter-core\";\n\nexport interface WalletContextState {\n connected: boolean;\n isLoading: boolean;\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connect(walletName: string): void;\n signIn(args: {\n walletName: string;\n input: AptosSignInInput;\n }): Promise<AptosSignInOutput | void>;\n signAndSubmitTransaction(\n transaction: InputTransactionData,\n ): Promise<AptosSignAndSubmitTransactionOutput>;\n signTransaction(args: {\n transactionOrPayload: AnyRawTransaction | InputTransactionData;\n asFeePayer?: boolean;\n }): Promise<{\n authenticator: AccountAuthenticator;\n rawTransaction: Uint8Array;\n }>;\n signMessage(message: AptosSignMessageInput): Promise<AptosSignMessageOutput>;\n signMessageAndVerify(message: AptosSignMessageInput): Promise<boolean>;\n disconnect(): void;\n changeNetwork(network: Network): Promise<AptosChangeNetworkOutput>;\n submitTransaction(\n transaction: InputSubmitTransactionData,\n ): Promise<PendingTransactionResponse>;\n wallet: AdapterWallet | null;\n wallets: ReadonlyArray<AdapterWallet>;\n hiddenWallets: ReadonlyArray<AdapterWallet>;\n notDetectedWallets: ReadonlyArray<AdapterNotDetectedWallet>;\n}\n\nconst DEFAULT_CONTEXT = {\n connected: false,\n};\n\nexport const WalletContext = createContext<WalletContextState>(\n DEFAULT_CONTEXT as WalletContextState,\n);\n\nexport function useWallet(): WalletContextState {\n const context = useContext(WalletContext);\n if (!context) {\n throw new Error(\"useWallet must be used within a WalletContextState\");\n }\n return context;\n}\n","import {\n Dispatch,\n ForwardRefExoticComponent,\n ReactNode,\n RefAttributes,\n SVGProps,\n SetStateAction,\n createContext,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { LinkGraphic } from \"../graphics/LinkGraphic\";\nimport { WalletGraphic } from \"../graphics/WalletGraphic\";\nimport { Web3Graphic } from \"../graphics/Web3Graphic\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nconst EXPLORE_ECOSYSTEM_URL =\n \"https://aptosnetwork.com/ecosystem/directory/category/defi\";\n\nconst AboutAptosConnectContext = createContext<{\n screenIndex: number;\n setScreenIndex: Dispatch<SetStateAction<number>>;\n} | null>(null);\n\nfunction useAboutAptosConnectContext(displayName: string) {\n const context = useContext(AboutAptosConnectContext);\n\n if (!context) {\n throw new Error(\n `\\`${displayName}\\` must be used within \\`AboutAptosConnect\\``,\n );\n }\n\n return context;\n}\n\nconst educationScreens = [\n {\n Graphic: LinkGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h3\", {\n children: \"A better way to login.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Petra Web is a web3 wallet that uses a Social Login to create accounts on the Aptos blockchain.\",\n }),\n },\n {\n Graphic: WalletGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"What is a wallet?\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Wallets are a secure way to send, receive, and interact with digital assets like cryptocurrencies & NFTs.\",\n }),\n },\n {\n Graphic: Web3Graphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"Explore more of web3.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children: (\n <>\n Petra Web lets you take one account across any application built on\n Aptos.{\" \"}\n <a\n href={EXPLORE_ECOSYSTEM_URL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Explore the ecosystem\n </a>\n .\n </>\n ),\n }),\n },\n];\n\nconst educationScreenIndicators = Array(educationScreens.length)\n .fill(null)\n .map((_, index) =>\n createHeadlessComponent(\n \"AboutAptosConnect.ScreenIndicator\",\n \"button\",\n (displayName) => {\n const context = useAboutAptosConnectContext(displayName);\n const isActive = context.screenIndex - 1 === index;\n\n return {\n \"aria-label\": `Go to screen ${index + 1}`,\n \"aria-current\": isActive ? \"step\" : undefined,\n \"data-active\": isActive || undefined,\n onClick: () => {\n context.setScreenIndex(index + 1);\n },\n };\n },\n ),\n );\n\n/** @deprecated Use {@link AboutPetraWebEducationScreen} instead. */\nexport interface AboutAptosConnectEducationScreen {\n /** A component that renders an SVG to illustrate the idea of the current screen. */\n Graphic: ForwardRefExoticComponent<\n Omit<SVGProps<SVGSVGElement>, \"ref\"> & RefAttributes<SVGSVGElement>\n >;\n /** A headless component that renders the title of the current screen. */\n Title: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLHeadingElement>\n >;\n /** A headless component that renders the description text of the current screen. */\n Description: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLParagraphElement>\n >;\n /** The index of the current education screen. */\n screenIndex: number;\n /** The total number of education screens. */\n totalScreens: number;\n /**\n * An array of headless components for indicating the current screen of the set.\n * Each indicator will navigate the user to the screen it represents when clicked.\n */\n screenIndicators: typeof educationScreenIndicators;\n /**\n * A function that navigates the user to the previous education screen.\n * If the user is on the first education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n back: () => void;\n /**\n * A function that navigates the user to the next education screen.\n * If the user is on the last education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n next: () => void;\n /** A function that navigates the user to the initial wallet selection screen. */\n cancel: () => void;\n}\n\n/** @deprecated Use {@link AboutPetraWebProps} instead. */\nexport interface AboutAptosConnectProps {\n /**\n * A function for defining how each education screen should be rendered.\n * Each screen is modeled as a uniform set of headless components and utilities\n * that allow you to construct your UI and apply your own styles.\n */\n renderEducationScreen: (\n screen: AboutAptosConnectEducationScreen,\n ) => ReactNode;\n /**\n * The initial wallet selection UI that will be replaced by the education\n * screens when `AboutAptosConnect.Trigger` is clicked.\n */\n children?: ReactNode;\n}\n\nconst Root = ({ renderEducationScreen, children }: AboutAptosConnectProps) => {\n const [screenIndex, setScreenIndex] = useState(0);\n\n const currentEducationScreen: AboutAptosConnectEducationScreen = useMemo(\n () =>\n educationScreens.map((screen, i) => ({\n ...screen,\n screenIndex: i,\n totalScreens: educationScreens.length,\n screenIndicators: educationScreenIndicators,\n back: () => {\n setScreenIndex(screenIndex - 1);\n },\n next: () => {\n setScreenIndex(\n screenIndex === educationScreens.length ? 0 : screenIndex + 1,\n );\n },\n cancel: () => {\n setScreenIndex(0);\n },\n }))[screenIndex - 1],\n [screenIndex],\n );\n\n return (\n <AboutAptosConnectContext.Provider value={{ screenIndex, setScreenIndex }}>\n {screenIndex === 0\n ? children\n : renderEducationScreen(currentEducationScreen)}\n </AboutAptosConnectContext.Provider>\n );\n};\nRoot.displayName = \"AboutAptosConnect\";\n\nconst Trigger = createHeadlessComponent(\n \"AboutAptosConnect.Trigger\",\n \"button\",\n (displayName) => {\n const context = useAboutAptosConnectContext(displayName);\n\n return {\n onClick: () => {\n context.setScreenIndex(1);\n },\n };\n },\n);\n\n/**\n * A headless component for rendering education screens that explain the basics\n * of Aptos Connect and web3 wallets.\n *\n * @deprecated Use {@link AboutPetraWeb} instead.\n */\nexport const AboutAptosConnect = Object.assign(Root, {\n Trigger,\n});\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const LinkGraphic = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"102\"\n height=\"132\"\n viewBox=\"0 0 102 132\"\n fill=\"none\"\n {...props}\n >\n <g stroke=\"currentColor\" strokeMiterlimit=\"10\">\n <path d=\"M59.633 80.66c11.742-2.814 17.48-7.018 20.925-13.254l17.518-31.69c6.257-11.317 2.142-25.55-9.189-31.798C82.737.53 75.723.188 69.593 2.398M60.7 69.565a14.09 14.09 0 0 1-6.907-1.767l-.228-.108\" />\n <path d=\"m52.365 41.075 12.507-22.627a14.146 14.146 0 0 1 4.727-5.062M32.407 118.619a14.139 14.139 0 0 1-7.034-1.768c-6.857-3.78-9.353-12.402-5.561-19.25l16.634-30.1a14.097 14.097 0 0 1 4.518-4.923\" />\n <path d=\"M41.211 78.85c11.332 6.248 25.583 2.14 31.84-9.177l17.518-31.691c6.256-11.317 2.142-25.55-9.19-31.798-6.085-3.357-13.018-3.724-19.104-1.59A23.31 23.31 0 0 0 49.541 15.36L36.863 38.298l7.989 5.036 12.506-22.627c3.786-6.848 12.419-9.34 19.276-5.554 6.856 3.78 9.353 12.402 5.561 19.25l-16.634 30.1c-3.785 6.848-12.418 9.341-19.275 5.555l-5.075 8.791ZM29.5 130.447c12.361-1.37 19.2-6.994 22.966-13.804l12.678-22.936-8.305-5.239\" />\n <path d=\"m55.72 61.947-.442.764 5.511-9.55c-6.901-3.806-18.65-3.124-27.105.814M44.85 43.523l7.635-2.486m-4.221 23.264 7.217-1.723m-9.316 7.517 7.59-2.405m-.562-12.156 7.508-2.221m10.136-51.32L62.761 4.43M49.642 90.778l7.514-2.26m.474 7.448 7.514-2.26m-50.306-60.13c7.135 0 12.918-5.776 12.918-12.9 0-7.126-5.783-12.902-12.918-12.902-7.134 0-12.917 5.776-12.917 12.901s5.783 12.901 12.918 12.901Z\" />\n <path d=\"M15.724 7.774h3.197c7.135 0 12.918 5.776 12.918 12.901 0 7.126-5.783 12.901-12.918 12.901h-3.425m65.112 66.935h3.198c7.135 0 12.918 5.775 12.918 12.901 0 7.125-5.783 12.9-12.918 12.9h-3.425\" />\n <path d=\"M79.717 126.312c7.135 0 12.918-5.775 12.918-12.9s-5.783-12.901-12.918-12.901c-7.134 0-12.917 5.776-12.917 12.901s5.783 12.9 12.917 12.9ZM53.281 55.414c-11.33-6.248-25.582-2.14-31.839 9.177L3.924 96.281c-6.257 11.318-2.142 25.55 9.189 31.799 11.331 6.248 25.582 2.139 31.839-9.177l12.677-22.937-7.988-5.036-12.507 22.627c-3.785 6.848-12.418 9.341-19.275 5.554-6.857-3.781-9.353-12.402-5.561-19.25l16.633-30.1c3.786-6.848 12.419-9.341 19.276-5.555l5.074-8.792Z\" />\n </g>\n </svg>\n );\n },\n);\nLinkGraphic.displayName = \"LinkGraphic\";\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const WalletGraphic = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"128\"\n height=\"102\"\n viewBox=\"0 0 128 102\"\n fill=\"none\"\n {...props}\n >\n <path\n fill=\"currentColor\"\n d=\"m.96 25.93-.36-.35.36.85v-.5Zm7.79-7.81v-.5h-.21l-.15.15.36.35ZM1.3 26.28l7.79-7.8-.7-.71-7.8 7.8.7.71Zm7.44-7.66H10v-1H8.75v1Zm29.22 6.8h-37v1h37.01v-1Z\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M82.25 26.08c0 12.25-9.92 22.2-22.14 22.2a22.17 22.17 0 0 1-22.14-22.2H1.1v74.82h118.02V26.08H82.25Zm44.33 67.02h.33V18.27h-5.7\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M74.52 42.92a22.4 22.4 0 0 1-11.43 3.3 22.5 22.5 0 0 1-22.46-22.53H9.52M119.22 101l7.78-7.82m-7.88-67.1 7.79-7.81m-44.78 7.72 2.73-2.3m-46.89 2.39 2.39-2.4\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M9.86 23.69V5.72h107.97v18.04H84.65\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M117.83 20.46h3.39V1H13.25v4.72M9.36 23.69h31.78\"\n />\n </svg>\n );\n },\n);\nWalletGraphic.displayName = \"WalletGraphic\";\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const Web3Graphic = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"142\"\n height=\"108\"\n viewBox=\"0 0 142 108\"\n fill=\"none\"\n {...props}\n >\n <g stroke=\"currentColor\" strokeLinejoin=\"round\">\n <path d=\"m91.26 35.8.06-10.46L71.3 1v10.53L87 30.5m-36.11 5.24-.06-10.45L71.3 1v10.53L55 30.5\" />\n <path d=\"M71 59.55V49.17L50.83 25.3l.06 10.45L57 42.5m14 17.05V49.18l20.33-23.84-.07 10.45L86 42M1 59.68l.22-9.07 35.33-19.8-.1 9L9 55\" />\n <path d=\"M36.55 30.8s-.08 5.92-.1 9l.1-9ZM71 59.51v-9.07L36.55 30.8l-.1 9L63.5 55\" />\n <path d=\"M71 59.51v-9.07L36.44 70.78l-.1 9.14L55.5 68.5\" />\n <path d=\"M1.22 50.6a77387.2 77387.2 0 0 0 35.22 20.18l-.1 9.14L1 59.68l.23-9.07h-.01ZM141 59.68l-.23-9.07-35.33-19.8.11 9L133 55\" />\n <path d=\"m105.44 30.8.11 9-.1-9Z\" />\n <path d=\"M71 59.51v-9.07l34.44-19.64.11 9L78.5 55\" />\n <path d=\"M71 59.51v-9.07l34.56 20.34.1 9.14L87 69\" />\n <path d=\"M140.78 50.6a78487.3 78487.3 0 0 1-35.23 20.18l.11 9.14L141 59.68l-.23-9.07ZM50.83 80.15l.06-6.33 20.1-23.38H71v9.26L55 79\" />\n <path d=\"M71.3 97.6 50.89 73.81l-.06 9.33L71.3 107v-9.4Zm20.03-14.5-.07-9.33L71 50.44v9.26l16 18.8\" />\n <path d=\"m71.3 97.6 19.96-23.83.06 9.33L71.3 107v-9.4Z\" />\n </g>\n </svg>\n );\n },\n);\nWeb3Graphic.displayName = \"Web3Graphic\";\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { ReactNode, cloneElement, forwardRef, isValidElement } from \"react\";\n\nexport interface HeadlessComponentProps {\n /** A class name for styling the element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default element provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Gets an HTML element type from its tag name\n * @example\n * HTMLElementFromTag<\"img\"> // resolved type: HTMLImageElement\n */\ntype HTMLElementFromTag<T extends keyof JSX.IntrinsicElements> =\n JSX.IntrinsicElements[T] extends React.ClassAttributes<infer Element>\n ? Element\n : HTMLElement;\n\nexport function createHeadlessComponent<\n TElement extends keyof JSX.IntrinsicElements,\n>(\n displayName: string,\n elementType: TElement,\n props?:\n | JSX.IntrinsicElements[TElement]\n | ((displayName: string) => JSX.IntrinsicElements[TElement]),\n) {\n const component = forwardRef<\n HTMLElementFromTag<TElement>,\n HeadlessComponentProps\n >(({ className, asChild, children }, ref) => {\n const Component = asChild ? Slot : elementType;\n\n const { children: defaultChildren, ...resolvedProps } =\n typeof props === \"function\" ? props(displayName) : (props ?? {});\n const resolvedChildren =\n /**\n * Use props' default children if no children are set in the component element's children and when asChild is true.\n */\n asChild && isValidElement(children) && !children.props.children\n ? cloneElement(children, {}, defaultChildren)\n : (children ?? defaultChildren);\n\n return (\n /**\n * Due to the complexity of the types at play, TypeScript reports the\n * following error for our JSX below:\n *\n * `Expression produces a union type that is too complex to represent.`\n *\n * We can safely ignore this error and retain accurate return types for\n * consumers of this function. The only drawback is that type-checking is\n * ignored for the JSX block below.\n */\n // @ts-expect-error\n <Component ref={ref} className={className} {...resolvedProps}>\n {resolvedChildren}\n </Component>\n );\n });\n component.displayName = displayName;\n\n return component;\n}\n","import {\n Dispatch,\n ForwardRefExoticComponent,\n ReactNode,\n RefAttributes,\n SVGProps,\n SetStateAction,\n createContext,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { LinkGraphic } from \"../graphics/LinkGraphic\";\nimport { WalletGraphic } from \"../graphics/WalletGraphic\";\nimport { Web3Graphic } from \"../graphics/Web3Graphic\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nexport const EXPLORE_ECOSYSTEM_URL =\n \"https://aptosnetwork.com/ecosystem/directory/category/defi\";\n\nconst AboutPetraWebContext = createContext<{\n screenIndex: number;\n setScreenIndex: Dispatch<SetStateAction<number>>;\n} | null>(null);\n\nfunction useAboutPetraWebContext(displayName: string) {\n const context = useContext(AboutPetraWebContext);\n\n if (!context) {\n throw new Error(`\\`${displayName}\\` must be used within \\`AboutPetraWeb\\``);\n }\n\n return context;\n}\n\nconst educationScreens = [\n {\n Graphic: LinkGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h3\", {\n children: \"A better way to login.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Petra Web is a web3 wallet that uses a Social Login to create accounts on the Aptos blockchain.\",\n }),\n },\n {\n Graphic: WalletGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"What is a wallet?\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Wallets are a secure way to send, receive, and interact with digital assets like cryptocurrencies & NFTs.\",\n }),\n },\n {\n Graphic: Web3Graphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"Explore more of web3.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children: (\n <>\n Petra Web lets you take one account across any application built on\n Aptos.{\" \"}\n <a\n href={EXPLORE_ECOSYSTEM_URL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Explore the ecosystem\n </a>\n .\n </>\n ),\n }),\n },\n];\n\nconst educationScreenIndicators = Array(educationScreens.length)\n .fill(null)\n .map((_, index) =>\n createHeadlessComponent(\n \"AboutPetraWeb.ScreenIndicator\",\n \"button\",\n (displayName) => {\n const context = useAboutPetraWebContext(displayName);\n const isActive = context.screenIndex - 1 === index;\n\n return {\n \"aria-label\": `Go to screen ${index + 1}`,\n \"aria-current\": isActive ? \"step\" : undefined,\n \"data-active\": isActive || undefined,\n onClick: () => {\n context.setScreenIndex(index + 1);\n },\n };\n },\n ),\n );\n\nexport interface AboutPetraWebEducationScreen {\n /** A component that renders an SVG to illustrate the idea of the current screen. */\n Graphic: ForwardRefExoticComponent<\n Omit<SVGProps<SVGSVGElement>, \"ref\"> & RefAttributes<SVGSVGElement>\n >;\n /** A headless component that renders the title of the current screen. */\n Title: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLHeadingElement>\n >;\n /** A headless component that renders the description text of the current screen. */\n Description: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLParagraphElement>\n >;\n /** The index of the current education screen. */\n screenIndex: number;\n /** The total number of education screens. */\n totalScreens: number;\n /**\n * An array of headless components for indicating the current screen of the set.\n * Each indicator will navigate the user to the screen it represents when clicked.\n */\n screenIndicators: typeof educationScreenIndicators;\n /**\n * A function that navigates the user to the previous education screen.\n * If the user is on the first education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n back: () => void;\n /**\n * A function that navigates the user to the next education screen.\n * If the user is on the last education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n next: () => void;\n /** A function that navigates the user to the initial wallet selection screen. */\n cancel: () => void;\n}\n\nexport interface AboutPetraWebProps {\n /**\n * A function for defining how each education screen should be rendered.\n * Each screen is modeled as a uniform set of headless components and utilities\n * that allow you to construct your UI and apply your own styles.\n */\n renderEducationScreen: (screen: AboutPetraWebEducationScreen) => ReactNode;\n /**\n * The initial wallet selection UI that will be replaced by the education\n * screens when `AboutPetraWeb.Trigger` is clicked.\n */\n children?: ReactNode;\n}\n\nconst Root = ({ renderEducationScreen, children }: AboutPetraWebProps) => {\n const [screenIndex, setScreenIndex] = useState(0);\n\n const currentEducationScreen: AboutPetraWebEducationScreen = useMemo(\n () =>\n educationScreens.map((screen, i) => ({\n ...screen,\n screenIndex: i,\n totalScreens: educationScreens.length,\n screenIndicators: educationScreenIndicators,\n back: () => {\n setScreenIndex(screenIndex - 1);\n },\n next: () => {\n setScreenIndex(\n screenIndex === educationScreens.length ? 0 : screenIndex + 1,\n );\n },\n cancel: () => {\n setScreenIndex(0);\n },\n }))[screenIndex - 1],\n [screenIndex],\n );\n\n return (\n <AboutPetraWebContext.Provider value={{ screenIndex, setScreenIndex }}>\n {screenIndex === 0\n ? children\n : renderEducationScreen(currentEducationScreen)}\n </AboutPetraWebContext.Provider>\n );\n};\nRoot.displayName = \"AboutPetraWeb\";\n\nconst Trigger = createHeadlessComponent(\n \"AboutPetraWeb.Trigger\",\n \"button\",\n (displayName) => {\n const context = useAboutPetraWebContext(displayName);\n\n return {\n onClick: () => {\n context.setScreenIndex(1);\n },\n };\n },\n);\n\n/**\n * A headless component for rendering education screens that explain the basics\n * of Petra Web and web3 wallets.\n */\nexport const AboutPetraWeb = Object.assign(Root, {\n Trigger,\n});\n","import { forwardRef } from \"react\";\nimport { SmallAptosLogo } from \"../graphics/SmallAptosLogo\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nexport const APTOS_PRIVACY_POLICY_URL = \"https://aptoslabs.com/privacy\";\n\nconst Root = createHeadlessComponent(\"AptosPrivacyPolicy.Root\", \"div\");\n\nconst Disclaimer = createHeadlessComponent(\n \"AptosPrivacyPolicy.Disclaimer\",\n \"span\",\n { children: \"By continuing, you agree to Aptos Labs'\" },\n);\n\nconst Link = createHeadlessComponent(\"AptosPrivacyPolicy.Disclaimer\", \"a\", {\n href: APTOS_PRIVACY_POLICY_URL,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n children: \"Privacy Policy\",\n});\n\nconst PoweredBy = forwardRef<\n HTMLDivElement,\n Pick<HeadlessComponentProps, \"className\">\n>(({ className }, ref) => {\n return (\n <div ref={ref} className={className}>\n <span>Powered by</span>\n <SmallAptosLogo />\n <span>Aptos Labs</span>\n </div>\n );\n});\nPoweredBy.displayName = \"AptosPrivacyPolicy.PoweredBy\";\n\n/**\n * A headless component for rendering the Aptos Labs privacy policy disclaimer\n * that should be placed under the Petra Web login options.\n */\nexport const AptosPrivacyPolicy = Object.assign(Root, {\n Disclaimer,\n Link,\n PoweredBy,\n});\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const SmallAptosLogo = forwardRef<\n SVGSVGElement,\n SVGProps<SVGSVGElement>\n>((props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6 12C9.31371 12 12 9.31371 12 6C12 2.68629 9.31371 0 6 0C2.68629 0 0 2.68629 0 6C0 9.31371 2.68629 12 6 12ZM7.17547 3.67976C7.13401 3.72309 7.07649 3.74757 7.01648 3.74757H3.00775C3.69185 2.83824 4.77995 2.25 6.00569 2.25C7.23142 2.25 8.31953 2.83824 9.00362 3.74757H8.28524C8.20824 3.74757 8.13498 3.71468 8.08401 3.65701L7.81608 3.35416C7.77618 3.30896 7.71882 3.28308 7.6585 3.28308H7.6454C7.58805 3.28308 7.53318 3.30646 7.49343 3.34792L7.17547 3.67976ZM8.05656 4.75897H7.39569C7.31869 4.75897 7.24543 4.72593 7.19447 4.66842L6.92638 4.36557C6.88647 4.32036 6.82896 4.29465 6.7688 4.29465C6.70863 4.29465 6.65112 4.32052 6.61121 4.36557L6.38131 4.6254C6.30603 4.71034 6.19801 4.75913 6.08454 4.75913H2.46703C2.36401 5.05278 2.29683 5.36296 2.27002 5.68467H5.68505C5.74506 5.68467 5.80258 5.66019 5.84404 5.61686L6.16201 5.28502C6.20175 5.24356 6.25662 5.22018 6.31398 5.22018H6.32707C6.38739 5.22018 6.44475 5.24606 6.48465 5.29126L6.75258 5.59411C6.80355 5.65178 6.87681 5.68467 6.95381 5.68467H9.74133C9.71452 5.3628 9.64734 5.05263 9.54431 4.75913H8.05641L8.05656 4.75897ZM4.33651 7.63095C4.39652 7.63095 4.45404 7.60648 4.4955 7.56315L4.81347 7.23131C4.85321 7.18985 4.90808 7.16647 4.96544 7.16647H4.97853C5.03885 7.16647 5.09621 7.19234 5.13611 7.23739L5.40404 7.54024C5.45501 7.59791 5.52827 7.6308 5.60527 7.6308H9.38285C9.52438 7.33839 9.62803 7.02463 9.68975 6.69591H6.06383C5.98683 6.69591 5.91357 6.66287 5.8626 6.60535L5.59467 6.3025C5.55477 6.2573 5.49725 6.23158 5.43709 6.23158C5.37692 6.23158 5.31941 6.25746 5.27951 6.3025L5.0496 6.56233C4.97432 6.64728 4.86631 6.69606 4.75268 6.69606H2.32147C2.3832 7.02479 2.487 7.33855 2.62837 7.63095H4.33651ZM5.57359 8.55745H4.59116C4.51417 8.55745 4.44091 8.52441 4.38994 8.46689L4.12201 8.16404C4.0821 8.11884 4.02459 8.09312 3.96442 8.09312C3.90426 8.09312 3.84675 8.119 3.80684 8.16404L3.57694 8.42387C3.50166 8.50882 3.39364 8.55761 3.28001 8.55761H3.26474C3.94915 9.29096 4.92378 9.74998 6.00596 9.74998C7.08815 9.74998 8.06262 9.29096 8.74719 8.55761H5.57359V8.55745Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n});\nSmallAptosLogo.displayName = \"SmallAptosLogo\";\n","import {\n AdapterNotDetectedWallet,\n AdapterWallet,\n WalletReadyState,\n isRedirectable,\n shouldUseFallbackWallet,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { createContext, forwardRef, useCallback, useContext } from \"react\";\nimport { useWallet } from \"../useWallet\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nexport interface WalletItemProps extends HeadlessComponentProps {\n /** The wallet option to be displayed. */\n wallet: AdapterWallet | AdapterNotDetectedWallet;\n /** A callback to be invoked when the wallet is connected. */\n onConnect?: () => void;\n}\n\nfunction useWalletItemContext(displayName: string) {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(`\\`${displayName}\\` must be used within \\`WalletItem\\``);\n }\n\n return context;\n}\n\nconst WalletItemContext = createContext<{\n wallet: AdapterWallet | AdapterNotDetectedWallet;\n connectWallet: () => void;\n} | null>(null);\n\nconst Root = forwardRef<HTMLDivElement, WalletItemProps>(\n ({ wallet, onConnect, className, asChild, children }, ref) => {\n const { connect } = useWallet();\n\n const isWalletReady = wallet.readyState === WalletReadyState.Installed;\n\n const mobileSupport =\n \"deeplinkProvider\" in wallet && wallet.deeplinkProvider;\n\n const connectWallet = useCallback(() => {\n const connectionWallet = shouldUseFallbackWallet(wallet)\n ? wallet.fallbackWallet\n : wallet;\n if (!connectionWallet) return;\n connect(connectionWallet.name);\n onConnect?.();\n }, [wallet, connect, onConnect]);\n\n if (!isWalletReady && isRedirectable() && !mobileSupport) return null;\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <WalletItemContext.Provider value={{ wallet, connectWallet }}>\n <Component ref={ref} className={className}>\n {children}\n </Component>\n </WalletItemContext.Provider>\n );\n },\n);\nRoot.displayName = \"WalletItem\";\n\nconst Icon = createHeadlessComponent(\n \"WalletItem.Icon\",\n \"img\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n src: context.wallet.icon,\n alt: `${context.wallet.name} icon`,\n };\n },\n);\n\nconst Name = createHeadlessComponent(\n \"WalletItem.Name\",\n \"div\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n children: context.wallet.name,\n };\n },\n);\n\nconst ConnectButton = createHeadlessComponent(\n \"WalletItem.ConnectButton\",\n \"button\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n onClick: context.connectWallet,\n children: \"Connect\",\n };\n },\n);\n\nconst InstallLink = createHeadlessComponent(\n \"WalletItem.InstallLink\",\n \"a\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n href: context.wallet.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n children: \"Install\",\n };\n },\n);\n\n/** A headless component for rendering a wallet option's name, icon, and either connect button or install link. */\nexport const WalletItem = Object.assign(Root, {\n Icon,\n Name,\n ConnectButton,\n InstallLink,\n});\n"],"mappings":"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","names":["walletCore","network","wallet","wallets","hiddenWallets","createContext","useContext","useState","jsx","forwardRef","jsx","jsxs","forwardRef","forwardRef","jsx","jsxs","forwardRef","forwardRef","jsx","forwardRef","jsx","jsxs","createContext","useContext","useState","createContext","useContext","useMemo","useState","Fragment","jsx","jsxs","EXPLORE_ECOSYSTEM_URL","createContext","useContext","educationScreens","educationScreenIndicators","Root","useState","useMemo","Trigger","forwardRef","forwardRef","jsx","forwardRef","jsx","jsxs","Root","forwardRef","WalletReadyState","Slot","createContext","forwardRef","useCallback","useContext","jsx","useContext","createContext","Root","forwardRef","WalletReadyState","useCallback","Slot"]}
1
+ {"version":3,"sources":["../src/index.tsx","../src/WalletProvider.tsx","../src/useWallet.tsx","../src/components/AboutAptosConnect.tsx","../src/graphics/LinkGraphic.tsx","../src/graphics/WalletGraphic.tsx","../src/graphics/Web3Graphic.tsx","../src/components/utils.tsx","../src/components/AboutPetraWeb.tsx","../src/components/AptosPrivacyPolicy.tsx","../src/graphics/SmallAptosLogo.tsx","../src/components/WalletItem.tsx"],"sourcesContent":["export * from \"@aptos-labs/wallet-adapter-core\";\nexport * from \"./WalletProvider\";\nexport * from \"./components/AboutAptosConnect\";\nexport * from \"./components/AboutPetraWeb\";\nexport * from \"./components/AptosPrivacyPolicy\";\nexport * from \"./components/WalletItem\";\nexport * from \"./useWallet\";\n","import {\n AvailableWallets,\n DappConfig,\n AccountInfo,\n AdapterWallet,\n NetworkInfo,\n InputTransactionData,\n AptosSignAndSubmitTransactionOutput,\n AnyRawTransaction,\n InputGenerateTransactionOptions,\n AccountAuthenticator,\n AptosSignMessageInput,\n AptosSignMessageOutput,\n AdapterNotDetectedWallet,\n WalletCore,\n Network,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n WalletReadyState,\n AptosSignInInput,\n AptosSignInOutput,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { ReactNode, FC, useState, useEffect, useCallback, useRef } from \"react\";\nimport { WalletContext } from \"./useWallet\";\n\nexport interface AptosWalletProviderProps {\n children: ReactNode;\n optInWallets?: ReadonlyArray<AvailableWallets>;\n hideWallets?: ReadonlyArray<AvailableWallets>;\n autoConnect?:\n | boolean\n | ((core: WalletCore, adapter: AdapterWallet) => Promise<boolean>);\n dappConfig?: DappConfig;\n disableTelemetry?: boolean;\n onError?: (error: any) => void;\n}\n\nconst initialState: {\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connected: boolean;\n wallet: AdapterWallet | null;\n} = {\n connected: false,\n account: null,\n network: null,\n wallet: null,\n};\n\nexport const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({\n children,\n optInWallets,\n hideWallets,\n autoConnect = false,\n dappConfig,\n disableTelemetry = false,\n onError,\n}: AptosWalletProviderProps) => {\n const didAttemptAutoConnectRef = useRef(false);\n // Track whether initial loading phase is complete to avoid interfering with user-initiated connections\n const initialLoadCompletedRef = useRef(false);\n\n const [{ account, network, connected, wallet }, setState] =\n useState(initialState);\n\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [walletCore, setWalletCore] = useState<WalletCore>();\n\n const [wallets, setWallets] = useState<ReadonlyArray<AdapterWallet>>([]);\n const [hiddenWallets, setHiddenWallets] = useState<\n ReadonlyArray<AdapterWallet>\n >([]);\n const [notDetectedWallets, setNotDetectedWallets] = useState<\n ReadonlyArray<AdapterNotDetectedWallet>\n >([]);\n // Initialize WalletCore on first load\n useEffect(() => {\n const walletCore = new WalletCore(\n optInWallets,\n dappConfig,\n disableTelemetry,\n hideWallets ? hideWallets : [\"Petra Web\"],\n );\n setWalletCore(walletCore);\n }, []);\n\n // Update initial Wallets state once WalletCore has been initialized\n useEffect(() => {\n setWallets(walletCore?.wallets ?? []);\n setHiddenWallets(walletCore?.hiddenWallets ?? []);\n setNotDetectedWallets(walletCore?.notDetectedWallets ?? []);\n }, [walletCore]);\n\n useEffect(() => {\n // Only attempt to auto connect once per render and only if there are wallets\n if (didAttemptAutoConnectRef.current || !walletCore?.wallets.length) {\n return;\n }\n\n // If auto connect is not set or is false, don't mark as attempted yet\n // This allows retry when autoConnect becomes true asynchronously\n if (!autoConnect) {\n // Only set isLoading to false during initial load, not on subsequent effect runs\n // to avoid interfering with user-initiated connect() calls\n if (!initialLoadCompletedRef.current) {\n initialLoadCompletedRef.current = true;\n setIsLoading(false);\n }\n return;\n }\n\n // Make sure the user has a previously connected wallet\n const walletName = localStorage.getItem(\"AptosWalletName\");\n if (!walletName) {\n // No stored wallet name - mark as attempted since there's nothing to connect to\n didAttemptAutoConnectRef.current = true;\n if (!initialLoadCompletedRef.current) {\n initialLoadCompletedRef.current = true;\n setIsLoading(false);\n }\n return;\n }\n\n // Make sure the wallet is installed\n const selectedWallet = walletCore.wallets.find(\n (e) => e.name === walletName,\n ) as AdapterWallet | undefined;\n if (\n !selectedWallet ||\n selectedWallet.readyState !== WalletReadyState.Installed\n ) {\n // Wallet not found yet - DON'T mark as attempted\n // This allows retry when the wallet registers later\n if (!initialLoadCompletedRef.current) {\n initialLoadCompletedRef.current = true;\n setIsLoading(false);\n }\n return;\n }\n\n // Found the wallet and it's installed - mark as attempted to prevent duplicate connections\n didAttemptAutoConnectRef.current = true;\n\n if (!connected) {\n (async () => {\n try {\n let shouldConnect = true;\n\n // Providing a function to autoConnect allows the dapp to determine\n // whether to attempt to connect to the wallet using the `signIn`\n // or `connect` method. If `signIn` is successful, the user can\n // return `false` and skip the `connect` method.\n if (typeof autoConnect === \"function\") {\n shouldConnect = await autoConnect(walletCore, selectedWallet);\n } else {\n shouldConnect = autoConnect;\n }\n\n if (shouldConnect) await connect(walletName);\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n initialLoadCompletedRef.current = true;\n setIsLoading(false);\n }\n })();\n } else {\n initialLoadCompletedRef.current = true;\n setIsLoading(false);\n }\n }, [autoConnect, wallets]);\n\n const connect = async (walletName: string): Promise<void> => {\n try {\n setIsLoading(true);\n await walletCore?.connect(walletName);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const signIn = async (args: {\n walletName: string;\n input: AptosSignInInput;\n }): Promise<AptosSignInOutput> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n\n try {\n setIsLoading(true);\n return await walletCore?.signIn(args);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const disconnect = async (): Promise<void> => {\n try {\n await walletCore?.disconnect();\n } catch (error) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signAndSubmitTransaction = async (\n transaction: InputTransactionData,\n ): Promise<AptosSignAndSubmitTransactionOutput> => {\n try {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n return await walletCore.signAndSubmitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signTransaction = async (args: {\n transactionOrPayload: AnyRawTransaction | InputTransactionData;\n asFeePayer?: boolean;\n options?: InputGenerateTransactionOptions & {\n expirationSecondsFromNow?: number;\n expirationTimestamp?: number;\n };\n }): Promise<{\n authenticator: AccountAuthenticator;\n rawTransaction: Uint8Array;\n }> => {\n const { transactionOrPayload, asFeePayer, options } = args;\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore.signTransaction({\n transactionOrPayload,\n asFeePayer,\n });\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const submitTransaction = async (\n transaction: InputSubmitTransactionData,\n ): Promise<PendingTransactionResponse> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.submitTransaction(transaction);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessage = async (\n message: AptosSignMessageInput,\n ): Promise<AptosSignMessageOutput> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.signMessage(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const signMessageAndVerify = async (\n message: AptosSignMessageInput,\n ): Promise<boolean> => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.signMessageAndVerify(message);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n const changeNetwork = async (network: Network) => {\n if (!walletCore) {\n throw new Error(\"WalletCore is not initialized\");\n }\n try {\n return await walletCore?.changeNetwork(network);\n } catch (error: any) {\n if (onError) onError(error);\n return Promise.reject(error);\n }\n };\n\n // Handle the adapter's connect event\n const handleConnect = (): void => {\n setState((state) => {\n return {\n ...state,\n connected: true,\n account: walletCore?.account || null,\n network: walletCore?.network || null,\n wallet: walletCore?.wallet || null,\n };\n });\n };\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback((): void => {\n if (!connected) return;\n if (!walletCore?.wallet) return;\n setState((state) => {\n return {\n ...state,\n account: walletCore?.account || null,\n };\n });\n }, [connected]);\n\n // Handle the adapter's network event\n const handleNetworkChange = useCallback((): void => {\n if (!connected) return;\n if (!walletCore?.wallet) return;\n setState((state) => {\n return {\n ...state,\n network: walletCore?.network || null,\n };\n });\n }, [connected]);\n\n useEffect(() => {\n if (connected) {\n walletCore?.onAccountChange();\n walletCore?.onNetworkChange();\n }\n }, [connected]);\n\n // Handle the adapter's disconnect event\n const handleDisconnect = (): void => {\n if (!connected) return;\n setState((state) => {\n return {\n ...state,\n connected: false,\n account: walletCore?.account || null,\n network: walletCore?.network || null,\n wallet: null,\n };\n });\n };\n\n const handleStandardWalletsAdded = (standardWallet: AdapterWallet): void => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == standardWallet.name,\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n standardWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setWallets((wallets) => [...wallets, standardWallet]);\n }\n };\n\n const handleStandardWalletsHiddenAdded = (\n standardWallet: AdapterWallet,\n ): void => {\n // Manage hidden wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = hiddenWallets.findIndex(\n (wallet) => wallet.name === standardWallet.name,\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setHiddenWallets((hiddenWallets) => [\n ...hiddenWallets.slice(0, existingWalletIndex),\n standardWallet,\n ...hiddenWallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setHiddenWallets((hiddenWallets) => [...hiddenWallets, standardWallet]);\n }\n };\n\n const handleStandardNotDetectedWalletsAdded = (\n notDetectedWallet: AdapterNotDetectedWallet,\n ): void => {\n // Manage current wallet state by removing optional duplications\n // as new wallets are coming\n const existingWalletIndex = wallets.findIndex(\n (wallet) => wallet.name == notDetectedWallet.name,\n );\n if (existingWalletIndex !== -1) {\n // If wallet exists, replace it with the new wallet\n setNotDetectedWallets((wallets) => [\n ...wallets.slice(0, existingWalletIndex),\n notDetectedWallet,\n ...wallets.slice(existingWalletIndex + 1),\n ]);\n } else {\n // If wallet doesn't exist, add it to the array\n setNotDetectedWallets((wallets) => [...wallets, notDetectedWallet]);\n }\n };\n\n useEffect(() => {\n walletCore?.on(\"connect\", handleConnect);\n walletCore?.on(\"accountChange\", handleAccountChange);\n walletCore?.on(\"networkChange\", handleNetworkChange);\n walletCore?.on(\"disconnect\", handleDisconnect);\n walletCore?.on(\"standardWalletsAdded\", handleStandardWalletsAdded);\n walletCore?.on(\n \"standardWalletsHiddenAdded\",\n handleStandardWalletsHiddenAdded,\n );\n walletCore?.on(\n \"standardNotDetectedWalletAdded\",\n handleStandardNotDetectedWalletsAdded,\n );\n return () => {\n walletCore?.off(\"connect\", handleConnect);\n walletCore?.off(\"accountChange\", handleAccountChange);\n walletCore?.off(\"networkChange\", handleNetworkChange);\n walletCore?.off(\"disconnect\", handleDisconnect);\n walletCore?.off(\"standardWalletsAdded\", handleStandardWalletsAdded);\n walletCore?.off(\n \"standardWalletsHiddenAdded\",\n handleStandardWalletsHiddenAdded,\n );\n walletCore?.off(\n \"standardNotDetectedWalletAdded\",\n handleStandardNotDetectedWalletsAdded,\n );\n };\n }, [wallets, account]);\n\n return (\n <WalletContext.Provider\n value={{\n connect,\n signIn,\n disconnect,\n signAndSubmitTransaction,\n signTransaction,\n signMessage,\n signMessageAndVerify,\n changeNetwork,\n submitTransaction,\n account,\n network,\n connected,\n wallet,\n wallets,\n notDetectedWallets,\n hiddenWallets,\n isLoading,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n","import { useContext, createContext } from \"react\";\nimport {\n AccountAuthenticator,\n AccountInfo,\n AdapterWallet,\n AnyRawTransaction,\n AptosSignAndSubmitTransactionOutput,\n InputTransactionData,\n NetworkInfo,\n AptosSignMessageInput,\n AptosSignMessageOutput,\n AdapterNotDetectedWallet,\n Network,\n AptosChangeNetworkOutput,\n PendingTransactionResponse,\n InputSubmitTransactionData,\n AptosSignInInput,\n AptosSignInOutput,\n} from \"@aptos-labs/wallet-adapter-core\";\n\nexport interface WalletContextState {\n connected: boolean;\n isLoading: boolean;\n account: AccountInfo | null;\n network: NetworkInfo | null;\n connect(walletName: string): void;\n signIn(args: {\n walletName: string;\n input: AptosSignInInput;\n }): Promise<AptosSignInOutput | void>;\n signAndSubmitTransaction(\n transaction: InputTransactionData,\n ): Promise<AptosSignAndSubmitTransactionOutput>;\n signTransaction(args: {\n transactionOrPayload: AnyRawTransaction | InputTransactionData;\n asFeePayer?: boolean;\n }): Promise<{\n authenticator: AccountAuthenticator;\n rawTransaction: Uint8Array;\n }>;\n signMessage(message: AptosSignMessageInput): Promise<AptosSignMessageOutput>;\n signMessageAndVerify(message: AptosSignMessageInput): Promise<boolean>;\n disconnect(): void;\n changeNetwork(network: Network): Promise<AptosChangeNetworkOutput>;\n submitTransaction(\n transaction: InputSubmitTransactionData,\n ): Promise<PendingTransactionResponse>;\n wallet: AdapterWallet | null;\n wallets: ReadonlyArray<AdapterWallet>;\n hiddenWallets: ReadonlyArray<AdapterWallet>;\n notDetectedWallets: ReadonlyArray<AdapterNotDetectedWallet>;\n}\n\nconst DEFAULT_CONTEXT = {\n connected: false,\n};\n\nexport const WalletContext = createContext<WalletContextState>(\n DEFAULT_CONTEXT as WalletContextState,\n);\n\nexport function useWallet(): WalletContextState {\n const context = useContext(WalletContext);\n if (!context) {\n throw new Error(\"useWallet must be used within a WalletContextState\");\n }\n return context;\n}\n","import {\n Dispatch,\n ForwardRefExoticComponent,\n ReactNode,\n RefAttributes,\n SVGProps,\n SetStateAction,\n createContext,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { LinkGraphic } from \"../graphics/LinkGraphic\";\nimport { WalletGraphic } from \"../graphics/WalletGraphic\";\nimport { Web3Graphic } from \"../graphics/Web3Graphic\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nconst EXPLORE_ECOSYSTEM_URL =\n \"https://aptosnetwork.com/ecosystem/directory/category/defi\";\n\nconst AboutAptosConnectContext = createContext<{\n screenIndex: number;\n setScreenIndex: Dispatch<SetStateAction<number>>;\n} | null>(null);\n\nfunction useAboutAptosConnectContext(displayName: string) {\n const context = useContext(AboutAptosConnectContext);\n\n if (!context) {\n throw new Error(\n `\\`${displayName}\\` must be used within \\`AboutAptosConnect\\``,\n );\n }\n\n return context;\n}\n\nconst educationScreens = [\n {\n Graphic: LinkGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h3\", {\n children: \"A better way to login.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Petra Web is a web3 wallet that uses a Social Login to create accounts on the Aptos blockchain.\",\n }),\n },\n {\n Graphic: WalletGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"What is a wallet?\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Wallets are a secure way to send, receive, and interact with digital assets like cryptocurrencies & NFTs.\",\n }),\n },\n {\n Graphic: Web3Graphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"Explore more of web3.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children: (\n <>\n Petra Web lets you take one account across any application built on\n Aptos.{\" \"}\n <a\n href={EXPLORE_ECOSYSTEM_URL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Explore the ecosystem\n </a>\n .\n </>\n ),\n }),\n },\n];\n\nconst educationScreenIndicators = Array(educationScreens.length)\n .fill(null)\n .map((_, index) =>\n createHeadlessComponent(\n \"AboutAptosConnect.ScreenIndicator\",\n \"button\",\n (displayName) => {\n const context = useAboutAptosConnectContext(displayName);\n const isActive = context.screenIndex - 1 === index;\n\n return {\n \"aria-label\": `Go to screen ${index + 1}`,\n \"aria-current\": isActive ? \"step\" : undefined,\n \"data-active\": isActive || undefined,\n onClick: () => {\n context.setScreenIndex(index + 1);\n },\n };\n },\n ),\n );\n\n/** @deprecated Use {@link AboutPetraWebEducationScreen} instead. */\nexport interface AboutAptosConnectEducationScreen {\n /** A component that renders an SVG to illustrate the idea of the current screen. */\n Graphic: ForwardRefExoticComponent<\n Omit<SVGProps<SVGSVGElement>, \"ref\"> & RefAttributes<SVGSVGElement>\n >;\n /** A headless component that renders the title of the current screen. */\n Title: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLHeadingElement>\n >;\n /** A headless component that renders the description text of the current screen. */\n Description: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLParagraphElement>\n >;\n /** The index of the current education screen. */\n screenIndex: number;\n /** The total number of education screens. */\n totalScreens: number;\n /**\n * An array of headless components for indicating the current screen of the set.\n * Each indicator will navigate the user to the screen it represents when clicked.\n */\n screenIndicators: typeof educationScreenIndicators;\n /**\n * A function that navigates the user to the previous education screen.\n * If the user is on the first education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n back: () => void;\n /**\n * A function that navigates the user to the next education screen.\n * If the user is on the last education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n next: () => void;\n /** A function that navigates the user to the initial wallet selection screen. */\n cancel: () => void;\n}\n\n/** @deprecated Use {@link AboutPetraWebProps} instead. */\nexport interface AboutAptosConnectProps {\n /**\n * A function for defining how each education screen should be rendered.\n * Each screen is modeled as a uniform set of headless components and utilities\n * that allow you to construct your UI and apply your own styles.\n */\n renderEducationScreen: (\n screen: AboutAptosConnectEducationScreen,\n ) => ReactNode;\n /**\n * The initial wallet selection UI that will be replaced by the education\n * screens when `AboutAptosConnect.Trigger` is clicked.\n */\n children?: ReactNode;\n}\n\nconst Root = ({ renderEducationScreen, children }: AboutAptosConnectProps) => {\n const [screenIndex, setScreenIndex] = useState(0);\n\n const currentEducationScreen: AboutAptosConnectEducationScreen = useMemo(\n () =>\n educationScreens.map((screen, i) => ({\n ...screen,\n screenIndex: i,\n totalScreens: educationScreens.length,\n screenIndicators: educationScreenIndicators,\n back: () => {\n setScreenIndex(screenIndex - 1);\n },\n next: () => {\n setScreenIndex(\n screenIndex === educationScreens.length ? 0 : screenIndex + 1,\n );\n },\n cancel: () => {\n setScreenIndex(0);\n },\n }))[screenIndex - 1],\n [screenIndex],\n );\n\n return (\n <AboutAptosConnectContext.Provider value={{ screenIndex, setScreenIndex }}>\n {screenIndex === 0\n ? children\n : renderEducationScreen(currentEducationScreen)}\n </AboutAptosConnectContext.Provider>\n );\n};\nRoot.displayName = \"AboutAptosConnect\";\n\nconst Trigger = createHeadlessComponent(\n \"AboutAptosConnect.Trigger\",\n \"button\",\n (displayName) => {\n const context = useAboutAptosConnectContext(displayName);\n\n return {\n onClick: () => {\n context.setScreenIndex(1);\n },\n };\n },\n);\n\n/**\n * A headless component for rendering education screens that explain the basics\n * of Aptos Connect and web3 wallets.\n *\n * @deprecated Use {@link AboutPetraWeb} instead.\n */\nexport const AboutAptosConnect = Object.assign(Root, {\n Trigger,\n});\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const LinkGraphic = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"102\"\n height=\"132\"\n viewBox=\"0 0 102 132\"\n fill=\"none\"\n {...props}\n >\n <g stroke=\"currentColor\" strokeMiterlimit=\"10\">\n <path d=\"M59.633 80.66c11.742-2.814 17.48-7.018 20.925-13.254l17.518-31.69c6.257-11.317 2.142-25.55-9.189-31.798C82.737.53 75.723.188 69.593 2.398M60.7 69.565a14.09 14.09 0 0 1-6.907-1.767l-.228-.108\" />\n <path d=\"m52.365 41.075 12.507-22.627a14.146 14.146 0 0 1 4.727-5.062M32.407 118.619a14.139 14.139 0 0 1-7.034-1.768c-6.857-3.78-9.353-12.402-5.561-19.25l16.634-30.1a14.097 14.097 0 0 1 4.518-4.923\" />\n <path d=\"M41.211 78.85c11.332 6.248 25.583 2.14 31.84-9.177l17.518-31.691c6.256-11.317 2.142-25.55-9.19-31.798-6.085-3.357-13.018-3.724-19.104-1.59A23.31 23.31 0 0 0 49.541 15.36L36.863 38.298l7.989 5.036 12.506-22.627c3.786-6.848 12.419-9.34 19.276-5.554 6.856 3.78 9.353 12.402 5.561 19.25l-16.634 30.1c-3.785 6.848-12.418 9.341-19.275 5.555l-5.075 8.791ZM29.5 130.447c12.361-1.37 19.2-6.994 22.966-13.804l12.678-22.936-8.305-5.239\" />\n <path d=\"m55.72 61.947-.442.764 5.511-9.55c-6.901-3.806-18.65-3.124-27.105.814M44.85 43.523l7.635-2.486m-4.221 23.264 7.217-1.723m-9.316 7.517 7.59-2.405m-.562-12.156 7.508-2.221m10.136-51.32L62.761 4.43M49.642 90.778l7.514-2.26m.474 7.448 7.514-2.26m-50.306-60.13c7.135 0 12.918-5.776 12.918-12.9 0-7.126-5.783-12.902-12.918-12.902-7.134 0-12.917 5.776-12.917 12.901s5.783 12.901 12.918 12.901Z\" />\n <path d=\"M15.724 7.774h3.197c7.135 0 12.918 5.776 12.918 12.901 0 7.126-5.783 12.901-12.918 12.901h-3.425m65.112 66.935h3.198c7.135 0 12.918 5.775 12.918 12.901 0 7.125-5.783 12.9-12.918 12.9h-3.425\" />\n <path d=\"M79.717 126.312c7.135 0 12.918-5.775 12.918-12.9s-5.783-12.901-12.918-12.901c-7.134 0-12.917 5.776-12.917 12.901s5.783 12.9 12.917 12.9ZM53.281 55.414c-11.33-6.248-25.582-2.14-31.839 9.177L3.924 96.281c-6.257 11.318-2.142 25.55 9.189 31.799 11.331 6.248 25.582 2.139 31.839-9.177l12.677-22.937-7.988-5.036-12.507 22.627c-3.785 6.848-12.418 9.341-19.275 5.554-6.857-3.781-9.353-12.402-5.561-19.25l16.633-30.1c3.786-6.848 12.419-9.341 19.276-5.555l5.074-8.792Z\" />\n </g>\n </svg>\n );\n },\n);\nLinkGraphic.displayName = \"LinkGraphic\";\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const WalletGraphic = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"128\"\n height=\"102\"\n viewBox=\"0 0 128 102\"\n fill=\"none\"\n {...props}\n >\n <path\n fill=\"currentColor\"\n d=\"m.96 25.93-.36-.35.36.85v-.5Zm7.79-7.81v-.5h-.21l-.15.15.36.35ZM1.3 26.28l7.79-7.8-.7-.71-7.8 7.8.7.71Zm7.44-7.66H10v-1H8.75v1Zm29.22 6.8h-37v1h37.01v-1Z\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M82.25 26.08c0 12.25-9.92 22.2-22.14 22.2a22.17 22.17 0 0 1-22.14-22.2H1.1v74.82h118.02V26.08H82.25Zm44.33 67.02h.33V18.27h-5.7\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M74.52 42.92a22.4 22.4 0 0 1-11.43 3.3 22.5 22.5 0 0 1-22.46-22.53H9.52M119.22 101l7.78-7.82m-7.88-67.1 7.79-7.81m-44.78 7.72 2.73-2.3m-46.89 2.39 2.39-2.4\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M9.86 23.69V5.72h107.97v18.04H84.65\"\n />\n <path\n stroke=\"currentColor\"\n strokeMiterlimit=\"10\"\n d=\"M117.83 20.46h3.39V1H13.25v4.72M9.36 23.69h31.78\"\n />\n </svg>\n );\n },\n);\nWalletGraphic.displayName = \"WalletGraphic\";\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const Web3Graphic = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(\n (props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"142\"\n height=\"108\"\n viewBox=\"0 0 142 108\"\n fill=\"none\"\n {...props}\n >\n <g stroke=\"currentColor\" strokeLinejoin=\"round\">\n <path d=\"m91.26 35.8.06-10.46L71.3 1v10.53L87 30.5m-36.11 5.24-.06-10.45L71.3 1v10.53L55 30.5\" />\n <path d=\"M71 59.55V49.17L50.83 25.3l.06 10.45L57 42.5m14 17.05V49.18l20.33-23.84-.07 10.45L86 42M1 59.68l.22-9.07 35.33-19.8-.1 9L9 55\" />\n <path d=\"M36.55 30.8s-.08 5.92-.1 9l.1-9ZM71 59.51v-9.07L36.55 30.8l-.1 9L63.5 55\" />\n <path d=\"M71 59.51v-9.07L36.44 70.78l-.1 9.14L55.5 68.5\" />\n <path d=\"M1.22 50.6a77387.2 77387.2 0 0 0 35.22 20.18l-.1 9.14L1 59.68l.23-9.07h-.01ZM141 59.68l-.23-9.07-35.33-19.8.11 9L133 55\" />\n <path d=\"m105.44 30.8.11 9-.1-9Z\" />\n <path d=\"M71 59.51v-9.07l34.44-19.64.11 9L78.5 55\" />\n <path d=\"M71 59.51v-9.07l34.56 20.34.1 9.14L87 69\" />\n <path d=\"M140.78 50.6a78487.3 78487.3 0 0 1-35.23 20.18l.11 9.14L141 59.68l-.23-9.07ZM50.83 80.15l.06-6.33 20.1-23.38H71v9.26L55 79\" />\n <path d=\"M71.3 97.6 50.89 73.81l-.06 9.33L71.3 107v-9.4Zm20.03-14.5-.07-9.33L71 50.44v9.26l16 18.8\" />\n <path d=\"m71.3 97.6 19.96-23.83.06 9.33L71.3 107v-9.4Z\" />\n </g>\n </svg>\n );\n },\n);\nWeb3Graphic.displayName = \"Web3Graphic\";\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { ReactNode, cloneElement, forwardRef, isValidElement } from \"react\";\n\nexport interface HeadlessComponentProps {\n /** A class name for styling the element. */\n className?: string;\n /**\n * Whether to render as the child element instead of the default element provided.\n * All props will be merged into the child element.\n */\n asChild?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Gets an HTML element type from its tag name\n * @example\n * HTMLElementFromTag<\"img\"> // resolved type: HTMLImageElement\n */\ntype HTMLElementFromTag<T extends keyof JSX.IntrinsicElements> =\n JSX.IntrinsicElements[T] extends React.ClassAttributes<infer Element>\n ? Element\n : HTMLElement;\n\nexport function createHeadlessComponent<\n TElement extends keyof JSX.IntrinsicElements,\n>(\n displayName: string,\n elementType: TElement,\n props?:\n | JSX.IntrinsicElements[TElement]\n | ((displayName: string) => JSX.IntrinsicElements[TElement]),\n) {\n const component = forwardRef<\n HTMLElementFromTag<TElement>,\n HeadlessComponentProps\n >(({ className, asChild, children }, ref) => {\n const Component = asChild ? Slot : elementType;\n\n const { children: defaultChildren, ...resolvedProps } =\n typeof props === \"function\" ? props(displayName) : (props ?? {});\n const resolvedChildren =\n /**\n * Use props' default children if no children are set in the component element's children and when asChild is true.\n */\n asChild && isValidElement(children) && !children.props.children\n ? cloneElement(children, {}, defaultChildren)\n : (children ?? defaultChildren);\n\n return (\n /**\n * Due to the complexity of the types at play, TypeScript reports the\n * following error for our JSX below:\n *\n * `Expression produces a union type that is too complex to represent.`\n *\n * We can safely ignore this error and retain accurate return types for\n * consumers of this function. The only drawback is that type-checking is\n * ignored for the JSX block below.\n */\n // @ts-expect-error\n <Component ref={ref} className={className} {...resolvedProps}>\n {resolvedChildren}\n </Component>\n );\n });\n component.displayName = displayName;\n\n return component;\n}\n","import {\n Dispatch,\n ForwardRefExoticComponent,\n ReactNode,\n RefAttributes,\n SVGProps,\n SetStateAction,\n createContext,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { LinkGraphic } from \"../graphics/LinkGraphic\";\nimport { WalletGraphic } from \"../graphics/WalletGraphic\";\nimport { Web3Graphic } from \"../graphics/Web3Graphic\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nexport const EXPLORE_ECOSYSTEM_URL =\n \"https://aptosnetwork.com/ecosystem/directory/category/defi\";\n\nconst AboutPetraWebContext = createContext<{\n screenIndex: number;\n setScreenIndex: Dispatch<SetStateAction<number>>;\n} | null>(null);\n\nfunction useAboutPetraWebContext(displayName: string) {\n const context = useContext(AboutPetraWebContext);\n\n if (!context) {\n throw new Error(`\\`${displayName}\\` must be used within \\`AboutPetraWeb\\``);\n }\n\n return context;\n}\n\nconst educationScreens = [\n {\n Graphic: LinkGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h3\", {\n children: \"A better way to login.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Petra Web is a web3 wallet that uses a Social Login to create accounts on the Aptos blockchain.\",\n }),\n },\n {\n Graphic: WalletGraphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"What is a wallet?\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children:\n \"Wallets are a secure way to send, receive, and interact with digital assets like cryptocurrencies & NFTs.\",\n }),\n },\n {\n Graphic: Web3Graphic,\n Title: createHeadlessComponent(\"EducationScreen.Title\", \"h2\", {\n children: \"Explore more of web3.\",\n }),\n Description: createHeadlessComponent(\"EducationScreen.Description\", \"p\", {\n children: (\n <>\n Petra Web lets you take one account across any application built on\n Aptos.{\" \"}\n <a\n href={EXPLORE_ECOSYSTEM_URL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Explore the ecosystem\n </a>\n .\n </>\n ),\n }),\n },\n];\n\nconst educationScreenIndicators = Array(educationScreens.length)\n .fill(null)\n .map((_, index) =>\n createHeadlessComponent(\n \"AboutPetraWeb.ScreenIndicator\",\n \"button\",\n (displayName) => {\n const context = useAboutPetraWebContext(displayName);\n const isActive = context.screenIndex - 1 === index;\n\n return {\n \"aria-label\": `Go to screen ${index + 1}`,\n \"aria-current\": isActive ? \"step\" : undefined,\n \"data-active\": isActive || undefined,\n onClick: () => {\n context.setScreenIndex(index + 1);\n },\n };\n },\n ),\n );\n\nexport interface AboutPetraWebEducationScreen {\n /** A component that renders an SVG to illustrate the idea of the current screen. */\n Graphic: ForwardRefExoticComponent<\n Omit<SVGProps<SVGSVGElement>, \"ref\"> & RefAttributes<SVGSVGElement>\n >;\n /** A headless component that renders the title of the current screen. */\n Title: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLHeadingElement>\n >;\n /** A headless component that renders the description text of the current screen. */\n Description: ForwardRefExoticComponent<\n HeadlessComponentProps & RefAttributes<HTMLParagraphElement>\n >;\n /** The index of the current education screen. */\n screenIndex: number;\n /** The total number of education screens. */\n totalScreens: number;\n /**\n * An array of headless components for indicating the current screen of the set.\n * Each indicator will navigate the user to the screen it represents when clicked.\n */\n screenIndicators: typeof educationScreenIndicators;\n /**\n * A function that navigates the user to the previous education screen.\n * If the user is on the first education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n back: () => void;\n /**\n * A function that navigates the user to the next education screen.\n * If the user is on the last education screen, they will be navigated to the\n * initial wallet selection screen.\n */\n next: () => void;\n /** A function that navigates the user to the initial wallet selection screen. */\n cancel: () => void;\n}\n\nexport interface AboutPetraWebProps {\n /**\n * A function for defining how each education screen should be rendered.\n * Each screen is modeled as a uniform set of headless components and utilities\n * that allow you to construct your UI and apply your own styles.\n */\n renderEducationScreen: (screen: AboutPetraWebEducationScreen) => ReactNode;\n /**\n * The initial wallet selection UI that will be replaced by the education\n * screens when `AboutPetraWeb.Trigger` is clicked.\n */\n children?: ReactNode;\n}\n\nconst Root = ({ renderEducationScreen, children }: AboutPetraWebProps) => {\n const [screenIndex, setScreenIndex] = useState(0);\n\n const currentEducationScreen: AboutPetraWebEducationScreen = useMemo(\n () =>\n educationScreens.map((screen, i) => ({\n ...screen,\n screenIndex: i,\n totalScreens: educationScreens.length,\n screenIndicators: educationScreenIndicators,\n back: () => {\n setScreenIndex(screenIndex - 1);\n },\n next: () => {\n setScreenIndex(\n screenIndex === educationScreens.length ? 0 : screenIndex + 1,\n );\n },\n cancel: () => {\n setScreenIndex(0);\n },\n }))[screenIndex - 1],\n [screenIndex],\n );\n\n return (\n <AboutPetraWebContext.Provider value={{ screenIndex, setScreenIndex }}>\n {screenIndex === 0\n ? children\n : renderEducationScreen(currentEducationScreen)}\n </AboutPetraWebContext.Provider>\n );\n};\nRoot.displayName = \"AboutPetraWeb\";\n\nconst Trigger = createHeadlessComponent(\n \"AboutPetraWeb.Trigger\",\n \"button\",\n (displayName) => {\n const context = useAboutPetraWebContext(displayName);\n\n return {\n onClick: () => {\n context.setScreenIndex(1);\n },\n };\n },\n);\n\n/**\n * A headless component for rendering education screens that explain the basics\n * of Petra Web and web3 wallets.\n */\nexport const AboutPetraWeb = Object.assign(Root, {\n Trigger,\n});\n","import { forwardRef } from \"react\";\nimport { SmallAptosLogo } from \"../graphics/SmallAptosLogo\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nexport const APTOS_PRIVACY_POLICY_URL = \"https://aptoslabs.com/privacy\";\n\nconst Root = createHeadlessComponent(\"AptosPrivacyPolicy.Root\", \"div\");\n\nconst Disclaimer = createHeadlessComponent(\n \"AptosPrivacyPolicy.Disclaimer\",\n \"span\",\n { children: \"By continuing, you agree to Aptos Labs'\" },\n);\n\nconst Link = createHeadlessComponent(\"AptosPrivacyPolicy.Disclaimer\", \"a\", {\n href: APTOS_PRIVACY_POLICY_URL,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n children: \"Privacy Policy\",\n});\n\nconst PoweredBy = forwardRef<\n HTMLDivElement,\n Pick<HeadlessComponentProps, \"className\">\n>(({ className }, ref) => {\n return (\n <div ref={ref} className={className}>\n <span>Powered by</span>\n <SmallAptosLogo />\n <span>Aptos Labs</span>\n </div>\n );\n});\nPoweredBy.displayName = \"AptosPrivacyPolicy.PoweredBy\";\n\n/**\n * A headless component for rendering the Aptos Labs privacy policy disclaimer\n * that should be placed under the Petra Web login options.\n */\nexport const AptosPrivacyPolicy = Object.assign(Root, {\n Disclaimer,\n Link,\n PoweredBy,\n});\n","import { SVGProps, forwardRef } from \"react\";\n\nexport const SmallAptosLogo = forwardRef<\n SVGSVGElement,\n SVGProps<SVGSVGElement>\n>((props, ref) => {\n return (\n <svg\n ref={ref}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6 12C9.31371 12 12 9.31371 12 6C12 2.68629 9.31371 0 6 0C2.68629 0 0 2.68629 0 6C0 9.31371 2.68629 12 6 12ZM7.17547 3.67976C7.13401 3.72309 7.07649 3.74757 7.01648 3.74757H3.00775C3.69185 2.83824 4.77995 2.25 6.00569 2.25C7.23142 2.25 8.31953 2.83824 9.00362 3.74757H8.28524C8.20824 3.74757 8.13498 3.71468 8.08401 3.65701L7.81608 3.35416C7.77618 3.30896 7.71882 3.28308 7.6585 3.28308H7.6454C7.58805 3.28308 7.53318 3.30646 7.49343 3.34792L7.17547 3.67976ZM8.05656 4.75897H7.39569C7.31869 4.75897 7.24543 4.72593 7.19447 4.66842L6.92638 4.36557C6.88647 4.32036 6.82896 4.29465 6.7688 4.29465C6.70863 4.29465 6.65112 4.32052 6.61121 4.36557L6.38131 4.6254C6.30603 4.71034 6.19801 4.75913 6.08454 4.75913H2.46703C2.36401 5.05278 2.29683 5.36296 2.27002 5.68467H5.68505C5.74506 5.68467 5.80258 5.66019 5.84404 5.61686L6.16201 5.28502C6.20175 5.24356 6.25662 5.22018 6.31398 5.22018H6.32707C6.38739 5.22018 6.44475 5.24606 6.48465 5.29126L6.75258 5.59411C6.80355 5.65178 6.87681 5.68467 6.95381 5.68467H9.74133C9.71452 5.3628 9.64734 5.05263 9.54431 4.75913H8.05641L8.05656 4.75897ZM4.33651 7.63095C4.39652 7.63095 4.45404 7.60648 4.4955 7.56315L4.81347 7.23131C4.85321 7.18985 4.90808 7.16647 4.96544 7.16647H4.97853C5.03885 7.16647 5.09621 7.19234 5.13611 7.23739L5.40404 7.54024C5.45501 7.59791 5.52827 7.6308 5.60527 7.6308H9.38285C9.52438 7.33839 9.62803 7.02463 9.68975 6.69591H6.06383C5.98683 6.69591 5.91357 6.66287 5.8626 6.60535L5.59467 6.3025C5.55477 6.2573 5.49725 6.23158 5.43709 6.23158C5.37692 6.23158 5.31941 6.25746 5.27951 6.3025L5.0496 6.56233C4.97432 6.64728 4.86631 6.69606 4.75268 6.69606H2.32147C2.3832 7.02479 2.487 7.33855 2.62837 7.63095H4.33651ZM5.57359 8.55745H4.59116C4.51417 8.55745 4.44091 8.52441 4.38994 8.46689L4.12201 8.16404C4.0821 8.11884 4.02459 8.09312 3.96442 8.09312C3.90426 8.09312 3.84675 8.119 3.80684 8.16404L3.57694 8.42387C3.50166 8.50882 3.39364 8.55761 3.28001 8.55761H3.26474C3.94915 9.29096 4.92378 9.74998 6.00596 9.74998C7.08815 9.74998 8.06262 9.29096 8.74719 8.55761H5.57359V8.55745Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n});\nSmallAptosLogo.displayName = \"SmallAptosLogo\";\n","import {\n AdapterNotDetectedWallet,\n AdapterWallet,\n WalletReadyState,\n isRedirectable,\n shouldUseFallbackWallet,\n} from \"@aptos-labs/wallet-adapter-core\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { createContext, forwardRef, useCallback, useContext } from \"react\";\nimport { useWallet } from \"../useWallet\";\nimport { HeadlessComponentProps, createHeadlessComponent } from \"./utils\";\n\nexport interface WalletItemProps extends HeadlessComponentProps {\n /** The wallet option to be displayed. */\n wallet: AdapterWallet | AdapterNotDetectedWallet;\n /** A callback to be invoked when the wallet is connected. */\n onConnect?: () => void;\n}\n\nfunction useWalletItemContext(displayName: string) {\n const context = useContext(WalletItemContext);\n\n if (!context) {\n throw new Error(`\\`${displayName}\\` must be used within \\`WalletItem\\``);\n }\n\n return context;\n}\n\nconst WalletItemContext = createContext<{\n wallet: AdapterWallet | AdapterNotDetectedWallet;\n connectWallet: () => void;\n} | null>(null);\n\nconst Root = forwardRef<HTMLDivElement, WalletItemProps>(\n ({ wallet, onConnect, className, asChild, children }, ref) => {\n const { connect } = useWallet();\n\n const isWalletReady = wallet.readyState === WalletReadyState.Installed;\n\n const mobileSupport =\n \"deeplinkProvider\" in wallet && wallet.deeplinkProvider;\n\n const connectWallet = useCallback(() => {\n const connectionWallet = shouldUseFallbackWallet(wallet)\n ? wallet.fallbackWallet\n : wallet;\n if (!connectionWallet) return;\n connect(connectionWallet.name);\n onConnect?.();\n }, [wallet, connect, onConnect]);\n\n if (!isWalletReady && isRedirectable() && !mobileSupport) return null;\n\n const Component = asChild ? Slot : \"div\";\n\n return (\n <WalletItemContext.Provider value={{ wallet, connectWallet }}>\n <Component ref={ref} className={className}>\n {children}\n </Component>\n </WalletItemContext.Provider>\n );\n },\n);\nRoot.displayName = \"WalletItem\";\n\nconst Icon = createHeadlessComponent(\n \"WalletItem.Icon\",\n \"img\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n src: context.wallet.icon,\n alt: `${context.wallet.name} icon`,\n };\n },\n);\n\nconst Name = createHeadlessComponent(\n \"WalletItem.Name\",\n \"div\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n children: context.wallet.name,\n };\n },\n);\n\nconst ConnectButton = createHeadlessComponent(\n \"WalletItem.ConnectButton\",\n \"button\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n onClick: context.connectWallet,\n children: \"Connect\",\n };\n },\n);\n\nconst InstallLink = createHeadlessComponent(\n \"WalletItem.InstallLink\",\n \"a\",\n (displayName) => {\n const context = useWalletItemContext(displayName);\n\n return {\n href: context.wallet.url,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n children: \"Install\",\n };\n },\n);\n\n/** A headless component for rendering a wallet option's name, icon, and either connect button or install link. */\nexport const WalletItem = Object.assign(Root, {\n Icon,\n Name,\n ConnectButton,\n InstallLink,\n});\n"],"mappings":"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","names":["walletCore","network","wallet","wallets","hiddenWallets","createContext","useContext","useState","jsx","forwardRef","jsx","jsxs","forwardRef","forwardRef","jsx","jsxs","forwardRef","forwardRef","jsx","forwardRef","jsx","jsxs","createContext","useContext","useState","createContext","useContext","useMemo","useState","Fragment","jsx","jsxs","EXPLORE_ECOSYSTEM_URL","createContext","useContext","educationScreens","educationScreenIndicators","Root","useState","useMemo","Trigger","forwardRef","forwardRef","jsx","forwardRef","jsx","jsxs","Root","forwardRef","WalletReadyState","Slot","createContext","forwardRef","useCallback","useContext","jsx","useContext","createContext","Root","forwardRef","WalletReadyState","useCallback","Slot"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aptos-labs/wallet-adapter-react",
3
- "version": "8.2.0",
3
+ "version": "8.2.1",
4
4
  "description": "Aptos Wallet Adapter React Provider",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -29,11 +29,16 @@
29
29
  "React"
30
30
  ],
31
31
  "devDependencies": {
32
+ "@testing-library/jest-dom": "^6.0.0",
33
+ "@testing-library/react": "^14.0.0",
34
+ "@testing-library/user-event": "^14.0.0",
32
35
  "@types/react": "^18.3.3",
33
36
  "@types/react-dom": "^18.3.0",
34
37
  "eslint": "^8.57.1",
38
+ "happy-dom": "^15.11.7",
35
39
  "tsup": "^8.4.0",
36
40
  "typescript": "^5.8.3",
41
+ "vitest": "^2.1.8",
37
42
  "@aptos-labs/wallet-adapter-tsconfig": "0.0.2"
38
43
  },
39
44
  "dependencies": {
@@ -45,15 +50,14 @@
45
50
  },
46
51
  "files": [
47
52
  "dist",
48
- "src",
49
- "!src/**.test.ts",
50
- "!src/**/__tests__"
53
+ "src"
51
54
  ],
52
55
  "scripts": {
53
56
  "build:bundle": "tsup src/index.tsx --format esm,cjs --sourcemap",
54
57
  "build:declarations": "tsc --emitDeclarationOnly --declaration --declarationMap",
55
58
  "build": "pnpm build:bundle && pnpm build:declarations",
56
59
  "dev": "tsup src/index.tsx --format esm,cjs --watch",
60
+ "test": "vitest run",
57
61
  "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
58
62
  "lint": "TIMING=1 eslint \"src/**/*.ts*\""
59
63
  }
@@ -57,6 +57,8 @@ export const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({
57
57
  onError,
58
58
  }: AptosWalletProviderProps) => {
59
59
  const didAttemptAutoConnectRef = useRef(false);
60
+ // Track whether initial loading phase is complete to avoid interfering with user-initiated connections
61
+ const initialLoadCompletedRef = useRef(false);
60
62
 
61
63
  const [{ account, network, connected, wallet }, setState] =
62
64
  useState(initialState);
@@ -94,18 +96,28 @@ export const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({
94
96
  if (didAttemptAutoConnectRef.current || !walletCore?.wallets.length) {
95
97
  return;
96
98
  }
97
- didAttemptAutoConnectRef.current = true;
98
99
 
99
- // If auto connect is not set or is false, ignore the attempt
100
+ // If auto connect is not set or is false, don't mark as attempted yet
101
+ // This allows retry when autoConnect becomes true asynchronously
100
102
  if (!autoConnect) {
101
- setIsLoading(false);
103
+ // Only set isLoading to false during initial load, not on subsequent effect runs
104
+ // to avoid interfering with user-initiated connect() calls
105
+ if (!initialLoadCompletedRef.current) {
106
+ initialLoadCompletedRef.current = true;
107
+ setIsLoading(false);
108
+ }
102
109
  return;
103
110
  }
104
111
 
105
112
  // Make sure the user has a previously connected wallet
106
113
  const walletName = localStorage.getItem("AptosWalletName");
107
114
  if (!walletName) {
108
- setIsLoading(false);
115
+ // No stored wallet name - mark as attempted since there's nothing to connect to
116
+ didAttemptAutoConnectRef.current = true;
117
+ if (!initialLoadCompletedRef.current) {
118
+ initialLoadCompletedRef.current = true;
119
+ setIsLoading(false);
120
+ }
109
121
  return;
110
122
  }
111
123
 
@@ -117,10 +129,18 @@ export const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({
117
129
  !selectedWallet ||
118
130
  selectedWallet.readyState !== WalletReadyState.Installed
119
131
  ) {
120
- setIsLoading(false);
132
+ // Wallet not found yet - DON'T mark as attempted
133
+ // This allows retry when the wallet registers later
134
+ if (!initialLoadCompletedRef.current) {
135
+ initialLoadCompletedRef.current = true;
136
+ setIsLoading(false);
137
+ }
121
138
  return;
122
139
  }
123
140
 
141
+ // Found the wallet and it's installed - mark as attempted to prevent duplicate connections
142
+ didAttemptAutoConnectRef.current = true;
143
+
124
144
  if (!connected) {
125
145
  (async () => {
126
146
  try {
@@ -141,10 +161,12 @@ export const AptosWalletAdapterProvider: FC<AptosWalletProviderProps> = ({
141
161
  if (onError) onError(error);
142
162
  return Promise.reject(error);
143
163
  } finally {
164
+ initialLoadCompletedRef.current = true;
144
165
  setIsLoading(false);
145
166
  }
146
167
  })();
147
168
  } else {
169
+ initialLoadCompletedRef.current = true;
148
170
  setIsLoading(false);
149
171
  }
150
172
  }, [autoConnect, wallets]);