aomi-wallet-kit
aomi/aomi-wallet-kitFreeComponent
Generic Aomi wallet kit context. Identity → UserState sync is mounted automatically by AomiWalletKitContextProvider.
Install it
npx shadcn@latest add https://aomi.dev/r/aomi-wallet-kit.jsonSource
1"use client";23import { createContext, useContext, useEffect, type ReactNode } from "react";4import { useUser } from "@aomi-labs/react";5import { AOMI_SESSION_DISCONNECTED_IDENTITY } from "./identity";6import type { AomiWalletKit } from "./types";78const DISCONNECTED_WALLET_KIT: AomiWalletKit = {9 identity: AOMI_SESSION_DISCONNECTED_IDENTITY,10 isReady: true,11 isSwitchingChain: false,12 canConnect: false,13 canOpenAccountUI: false,14 canDisconnect: false,15 accounts: [],16 selectAccount: async () => undefined,17 evmWallets: [],18 solanaWallets: [],19 socialLoginOptions: [],20 supportedNetworks: {21 evm: [],22 solana: [],23 },24 connect: async () => undefined,25};2627const AomiWalletKitContext =28 createContext<AomiWalletKit>(DISCONNECTED_WALLET_KIT);2930function toSvmCapabilities(31 capabilities: AomiWalletKit["identity"]["svmCapabilities"],32): string[] | undefined {33 if (!capabilities) return undefined;34 return Object.entries(capabilities)35 .filter(([, enabled]) => enabled)36 .map(([name]) =>37 name.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`),38 );39}4041function AomiWalletKitSync({ walletKit }: { walletKit: AomiWalletKit }) {42 const { setUser } = useUser();43 const identity = walletKit.identity;4445 useEffect(() => {46 // NOTE: aaMode / SmartAccount4337 / Delegation7702 are NOT forwarded47 // here. They are session-owned: `session.ts` writes them on tx-complete48 // and providers read them back via `useUser()`. Forwarding them from49 // identity would create a write loop (UserState -> identity -> setUser50 // -> UserState). walletKind is provider-static and forwarded normally.51 setUser({52 address: identity.address ?? undefined,53 walletKind: identity.walletKind ?? undefined,54 chainId: identity.chainId ?? undefined,55 isConnected: identity.isConnected,56 svm: {57 address: identity.svmAddress ?? null,58 cluster: identity.svmCluster ?? undefined,59 wallet_name: identity.svmWalletName ?? null,60 transport: identity.svmTransport ?? null,61 capabilities: toSvmCapabilities(identity.svmCapabilities) ?? [],62 },63 walletProvider: identity.isConnected64 ? (identity.sessionProvider ??65 identity.embeddedProvider ??66 identity.walletProvider ??67 null)68 : null,69 walletProviderSubject: identity.isConnected70 ? (identity.walletProviderSubject ?? null)71 : null,72// … truncated
What it pulls in
npm packages
Files it writes
More from aomi
All 34 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| accordionaccordion | aomi | Components | Free | 2 deps | |
| alertalert | aomi | Components | Free | 1 dep | |
| aomi-frameaomi-frame | aomi | Components | Free | 1 dep | |
| aomi-para-provideraomi-para-provider | aomi | Components | Free | 9 deps · 27 files | |
| aomi-privy-provideraomi-privy-provider | aomi | Components | Free | 7 deps · 15 files | |
| aomi-widgetaomi-widget | aomi | Components | Free | 2 deps | |
| assistant-threadassistant-thread | aomi | Components | Free | 6 deps · 26 files | |
| assistant-thread-listassistant-thread-list | aomi | Components | Free | 2 deps |
