@svp-chain-sdk/ui 0.1.3 → 0.1.4

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.
package/README.md CHANGED
@@ -2,7 +2,88 @@
2
2
 
3
3
  ## 1. 适用范围
4
4
 
5
- `@svp-chain-sdk/ui` 当前的主要接入方式是 Tailwind provider:消费方把 `@svp-chain-sdk/ui/tailwind` 注册为 Tailwind 插件,然后直接在 HTML、React、Vue 或其他模板中组合 `.ui-button` CSS class。
5
+ `@svp-chain-sdk/ui` 提供 Tailwind provider,也提供 React 钱包公共能力。钱包支持链、钱包分组、RainbowKit 主题、SVP Wallet 检测与安装地址统一维护在 `src/wallet.tsx` `walletDefaults` 及相关导出中。
6
+
7
+ React 项目可直接复用 Provider 和连接按钮:
8
+
9
+ ```tsx
10
+ import {
11
+ ConnectWalletButton,
12
+ SvpWalletProvider,
13
+ } from '@svp-chain-sdk/ui'
14
+ import '@rainbow-me/rainbowkit/styles.css'
15
+
16
+ export function App() {
17
+ return (
18
+ <SvpWalletProvider appName="SVP Bridge" projectId={walletConnectProjectId}>
19
+ <ConnectWalletButton
20
+ labels={{ connect: '连接钱包', wrongNetwork: '网络错误' }}
21
+ />
22
+ </SvpWalletProvider>
23
+ )
24
+ }
25
+ ```
26
+
27
+ 消费项目需要安装本包声明的 React、RainbowKit、TanStack Query、Wagmi 和 Viem peer dependencies。业务层只传应用名、WalletConnect Project ID 和本地化文案;默认链、钱包顺序、弹窗主题与 SVP Wallet 行为由 SDK 统一提供。
28
+
29
+ ### 在现有项目中接入(以 swap-v2 为例)
30
+
31
+ 1. 安装公共包及 peer dependencies:
32
+
33
+ ```sh
34
+ pnpm add @svp-chain-sdk/ui @rainbow-me/rainbowkit @tanstack/react-query wagmi viem
35
+ ```
36
+
37
+ 本地联调尚未发布的 SDK 时,可以把依赖临时指向仓库中的 UI 包:
38
+
39
+ ```json
40
+ {
41
+ "dependencies": {
42
+ "@svp-chain-sdk/ui": "file:../svp-chain-sdk-monorepo/packages/ui"
43
+ }
44
+ }
45
+ ```
46
+
47
+ 2. 在应用入口导入 SDK 与 RainbowKit 样式,并用 `SvpWalletProvider` 包裹应用。`projectId` 应读取项目自己的 `VITE_WALLETCONNECT_PROJECT_ID`,不要提交真实凭据:
48
+
49
+ ```tsx
50
+ import { SvpWalletProvider } from '@svp-chain-sdk/ui'
51
+ import '@svp-chain-sdk/ui/styles.css'
52
+ import '@rainbow-me/rainbowkit/styles.css'
53
+
54
+ createRoot(document.getElementById('root')!).render(
55
+ <SvpWalletProvider
56
+ appName="NovaSwap"
57
+ projectId={import.meta.env.VITE_WALLETCONNECT_PROJECT_ID}
58
+ locale="zh-CN"
59
+ >
60
+ <App />
61
+ </SvpWalletProvider>,
62
+ )
63
+ ```
64
+
65
+ 如果项目已经自行声明了 `WagmiProvider`、`QueryClientProvider` 和 `RainbowKitProvider`,应删除重复 Provider,避免出现两个 Wagmi/Query Client 上下文。默认网络、钱包排序、SVP Wallet 图标、安装跳转和弹窗主题由 SDK 提供。
66
+
67
+ 3. 在 Header 或其他业务组件中直接使用连接按钮:
68
+
69
+ ```tsx
70
+ import { ConnectWalletButton } from '@svp-chain-sdk/ui'
71
+
72
+ export function HeaderWallet() {
73
+ return (
74
+ <ConnectWalletButton
75
+ labels={{
76
+ connect: '连接钱包',
77
+ wrongNetwork: '网络错误',
78
+ }}
79
+ />
80
+ )
81
+ }
82
+ ```
83
+
84
+ 按钮会自动处理未连接、错误网络和已连接三种状态。`showChain={false}` 可以在已连接时隐藏独立网络按钮;`className` 只应用到钱包操作按钮。SVP Wallet 图标已经随 npm 包构建,不需要消费项目把图片复制到 `public`。
85
+
86
+ 4. 升级 SDK 后执行项目自身的测试与生产构建,至少确认连接弹窗、SVP Wallet 图标、未安装跳转、网络切换和账户弹窗正常。
6
87
 
7
88
  这是**框架无关、非 React 组件优先**的模式。包根入口仍提供可选的 React `Button`、`buttonVariants` 和 `cn`,也导出 `@svp-chain-sdk/ui/styles.css` 样式入口,但它们不是本文的主要接入方式。目前 Tailwind provider 只注册按钮相关 class,不应假定它包含表单、弹窗或其他尚未实现的组件。
8
89
 
package/dist/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  export { Button, buttonVariants } from './button';
2
2
  export type { ButtonProps } from './button';
3
3
  export { cn } from './utils';
4
+ export { ConnectWalletButton, createSvpWalletConfig, resolveSvpProvider, resolveSvpProviderForConnection, SVP_WALLET_DOWNLOAD_URL, svpTestnet, svpWallet, SvpWalletProvider, walletDefaults, walletTheme, } from './wallet';
5
+ export type { ConnectWalletButtonProps, ConnectWalletLabels, CreateSvpWalletConfigOptions, SvpWalletProviderProps, SvpWalletDefaults, } from './wallet';