nexus-elements-nexus-provider
9
总安装量
4
周安装量
#32993
全站排名
安装命令
npx skills add https://github.com/availproject/nexus-elements --skill nexus-elements-nexus-provider
Agent 安装分布
claude-code
4
opencode
3
cursor
3
gemini-cli
2
replit
1
Skill 文档
Nexus Elements – NexusProvider
Overview
Install NexusProvider, initialize the SDK once on wallet connect, and access Nexus context via useNexus. All Nexus Elements widgets depend on this provider.
What NexusProvider does
- Creates a single
NexusSDKinstance (configurablenetworkanddebug). - Initializes the SDK with an EIP-1193 provider (
handleInit). - Preloads:
- supported chains/tokens (bridge + swap)
- bridgeable and swappable balances
- exchange rates (Coinbase) for fiat display
- Attaches SDK hooks for intent, allowance, and swap intent previews.
- Exposes all of the above to components via
useNexus().
Install (shadcn registry)
- Ensure shadcn/ui is initialized (
components.jsonexists). - Ensure registry mapping exists:
"registries": {
"@nexus-elements/": "https://elements.nexus.availproject.org/r/{name}.json"
}
- Install:
npx shadcn@latest add @nexus-elements/nexus-provider
Alternative:
npx shadcn@latest add https://elements.nexus.availproject.org/r/nexus-provider.json
Manual install (no shadcn)
- Download
https://elements.nexus.availproject.org/r/nexus-provider.json. - Create each file in
files[].targetwithfiles[].content. - Install dependencies:
@avail-project/nexus-core@1.0.0-beta.64andwagmi.
Usage
Wrap your app:
"use client";
import NexusProvider from "@/components/nexus/NexusProvider";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return <NexusProvider>{children}</NexusProvider>;
}
Initialize on wallet connect (wagmi example):
"use client";
import { useEffect } from "react";
import { useAccount } from "wagmi";
import type { EthereumProvider } from "@avail-project/nexus-core";
import { useNexus } from "@/components/nexus/NexusProvider";
export function InitNexusOnConnect() {
const { status, connector } = useAccount();
const { handleInit } = useNexus();
useEffect(() => {
if (status === "connected") {
connector?.getProvider().then((p) => handleInit(p as EthereumProvider));
}
}, [status, connector, handleInit]);
return null;
}
What useNexus() provides
nexusSDK: initialized SDK instance (ornullbefore init)handleInit(provider): init + preload + attach hooksinitializeNexus(provider)/deinitializeNexus(): manual lifecycle controlintent,allowance,swapIntent: refs for SDK hooks (must callallow()/deny())supportedChainsAndTokens,swapSupportedChainsAndTokensbridgableBalance,swapBalanceexchangeRate,getFiatValue(amount, symbol)fetchBridgableBalance(),fetchSwapBalance()loading,network
Notes
handleInitexpects an EIP-1193 provider withrequest().- Optional
configsupportsnetwork("mainnet"/"testnet"or custom) anddebug. - Hooks are attached in
handleInit; if you override hooks elsewhere, always callallow()/deny()or flows will stall. - Provider auto-deinitializes on wallet disconnect via wagmi
useAccountEffect; if not using wagmi, calldeinitializeNexus()manually.