@payai/x402-solana-react 0.1.0-beta.0
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 +238 -0
- package/dist/components/PaymentButton.d.ts +4 -0
- package/dist/components/PaymentButton.d.ts.map +1 -0
- package/dist/components/PaymentStatus.d.ts +4 -0
- package/dist/components/PaymentStatus.d.ts.map +1 -0
- package/dist/components/WalletSection.d.ts +4 -0
- package/dist/components/WalletSection.d.ts.map +1 -0
- package/dist/components/X402Paywall.d.ts +4 -0
- package/dist/components/X402Paywall.d.ts.map +1 -0
- package/dist/components/ui/badge.d.ts +10 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/button.d.ts +12 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/card.d.ts +9 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/spinner.d.ts +8 -0
- package/dist/components/ui/spinner.d.ts.map +1 -0
- package/dist/demo/App.d.ts +4 -0
- package/dist/demo/App.d.ts.map +1 -0
- package/dist/demo/main.d.ts +2 -0
- package/dist/demo/main.d.ts.map +1 -0
- package/dist/hooks/useX402Payment.d.ts +29 -0
- package/dist/hooks/useX402Payment.d.ts.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3723 -0
- package/dist/index.mjs.map +1 -0
- package/dist/lib/balance.d.ts +19 -0
- package/dist/lib/balance.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +4 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/style.css +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/paywall.d.ts +83 -0
- package/dist/types/paywall.d.ts.map +1 -0
- package/dist/types/theme.d.ts +34 -0
- package/dist/types/theme.d.ts.map +1 -0
- package/package.json +86 -0
package/README.md
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# x402 Solana React Paywall
|
|
2
|
+
|
|
3
|
+
A reusable React component library that provides drop-in paywall functionality for Solana-based applications using the x402 payment protocol.
|
|
4
|
+
|
|
5
|
+
## 🚀 Features
|
|
6
|
+
|
|
7
|
+
- ✅ **Drop-in React Components**: Easy integration with existing apps
|
|
8
|
+
- ✅ **Solana Native**: Built specifically for Solana blockchain
|
|
9
|
+
- ✅ **Multi-Wallet Support**: Works with Phantom, Solflare, and more
|
|
10
|
+
- ✅ **Tailwind CSS**: Utility-first styling with customization
|
|
11
|
+
- ✅ **shadcn/ui**: Accessible, beautiful components
|
|
12
|
+
- ✅ **TypeScript**: Full type safety and IntelliSense
|
|
13
|
+
- ✅ **Solana Theming**: Beautiful purple/green gradients by default
|
|
14
|
+
|
|
15
|
+
## 📋 Prerequisites
|
|
16
|
+
|
|
17
|
+
- **Node.js**: v18.0.0 or higher
|
|
18
|
+
- **React**: v18.0.0 or higher
|
|
19
|
+
- **Solana Wallet**: Phantom, Solflare, or any Solana wallet adapter compatible wallet
|
|
20
|
+
- **USDC Balance**: For mainnet payments (devnet for testing)
|
|
21
|
+
|
|
22
|
+
## 📦 Installation
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install x402-solana-react
|
|
26
|
+
# or
|
|
27
|
+
yarn add x402-solana-react
|
|
28
|
+
# or
|
|
29
|
+
pnpm add x402-solana-react
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Install Peer Dependencies
|
|
33
|
+
|
|
34
|
+
You'll also need Solana wallet adapter packages:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm install @solana/wallet-adapter-react @solana/wallet-adapter-react-ui @solana/wallet-adapter-wallets @solana/web3.js
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## ⚙️ Setup
|
|
41
|
+
|
|
42
|
+
### 1. Import Styles
|
|
43
|
+
|
|
44
|
+
Import the component styles in your main file (e.g., `main.tsx` or `App.tsx`):
|
|
45
|
+
|
|
46
|
+
```tsx
|
|
47
|
+
import 'x402-solana-react/styles';
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 2. Wallet Provider Setup
|
|
51
|
+
|
|
52
|
+
Wrap your app with Solana wallet providers:
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
import { WalletAdapterNetwork } from '@solana/wallet-adapter-base';
|
|
56
|
+
import { ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react';
|
|
57
|
+
import { WalletModalProvider } from '@solana/wallet-adapter-react-ui';
|
|
58
|
+
import { PhantomWalletAdapter, SolflareWalletAdapter } from '@solana/wallet-adapter-wallets';
|
|
59
|
+
import { clusterApiUrl } from '@solana/web3.js';
|
|
60
|
+
import '@solana/wallet-adapter-react-ui/styles.css';
|
|
61
|
+
|
|
62
|
+
function App() {
|
|
63
|
+
const network = WalletAdapterNetwork.Devnet;
|
|
64
|
+
const endpoint = clusterApiUrl(network);
|
|
65
|
+
const wallets = [
|
|
66
|
+
new PhantomWalletAdapter(),
|
|
67
|
+
new SolflareWalletAdapter(),
|
|
68
|
+
];
|
|
69
|
+
|
|
70
|
+
return (
|
|
71
|
+
<ConnectionProvider endpoint={endpoint}>
|
|
72
|
+
<WalletProvider wallets={wallets} autoConnect>
|
|
73
|
+
<WalletModalProvider>
|
|
74
|
+
{/* Your app components */}
|
|
75
|
+
</WalletModalProvider>
|
|
76
|
+
</WalletProvider>
|
|
77
|
+
</ConnectionProvider>
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## 🎯 Quick Start
|
|
83
|
+
|
|
84
|
+
```tsx
|
|
85
|
+
import { X402Paywall } from 'x402-solana-react';
|
|
86
|
+
import { useWallet } from '@solana/wallet-adapter-react';
|
|
87
|
+
|
|
88
|
+
function PremiumPage() {
|
|
89
|
+
const wallet = useWallet();
|
|
90
|
+
|
|
91
|
+
return (
|
|
92
|
+
<X402Paywall
|
|
93
|
+
amount={2.50}
|
|
94
|
+
description="Premium AI Chat Access"
|
|
95
|
+
wallet={wallet}
|
|
96
|
+
network="solana-devnet"
|
|
97
|
+
onPaymentSuccess={(txId) => console.log('Payment successful!', txId)}
|
|
98
|
+
>
|
|
99
|
+
<PremiumContent />
|
|
100
|
+
</X402Paywall>
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## 🎨 Custom Styling
|
|
106
|
+
|
|
107
|
+
The component comes with built-in Solana-themed styles. You can customize using props:
|
|
108
|
+
|
|
109
|
+
```tsx
|
|
110
|
+
<X402Paywall
|
|
111
|
+
amount={5.00}
|
|
112
|
+
description="Premium Features"
|
|
113
|
+
wallet={wallet}
|
|
114
|
+
theme="custom"
|
|
115
|
+
classNames={{
|
|
116
|
+
container: "bg-gradient-to-r from-purple-600 to-blue-600",
|
|
117
|
+
button: "bg-white text-purple-600 hover:bg-gray-50 font-bold"
|
|
118
|
+
}}
|
|
119
|
+
customStyles={{
|
|
120
|
+
button: { boxShadow: '0 10px 30px rgba(153, 69, 255, 0.4)' }
|
|
121
|
+
}}
|
|
122
|
+
>
|
|
123
|
+
<AdvancedFeatures />
|
|
124
|
+
</X402Paywall>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## 📚 API Reference
|
|
128
|
+
|
|
129
|
+
### X402Paywall Props
|
|
130
|
+
|
|
131
|
+
| Prop | Type | Required | Default | Description |
|
|
132
|
+
|------|------|----------|---------|-------------|
|
|
133
|
+
| `amount` | `number` | ✅ | - | Payment amount in USD |
|
|
134
|
+
| `description` | `string` | ✅ | - | Payment description |
|
|
135
|
+
| `wallet` | `WalletAdapter` | ✅ | - | Solana wallet adapter instance |
|
|
136
|
+
| `network` | `'solana' \| 'solana-devnet'` | ❌ | `'solana-devnet'` | Network to use |
|
|
137
|
+
| `rpcUrl` | `string` | ❌ | - | Custom RPC URL |
|
|
138
|
+
| `treasuryAddress` | `string` | ❌ | - | Custom treasury address |
|
|
139
|
+
| `facilitatorUrl` | `string` | ❌ | - | Custom facilitator URL |
|
|
140
|
+
| `theme` | `'solana' \| 'dark' \| 'light' \| 'custom'` | ❌ | `'solana'` | Visual theme |
|
|
141
|
+
| `showBalance` | `boolean` | ❌ | `true` | Show wallet balance |
|
|
142
|
+
| `showNetworkInfo` | `boolean` | ❌ | `true` | Show network info |
|
|
143
|
+
| `maxPaymentAmount` | `number` | ❌ | - | Maximum payment amount |
|
|
144
|
+
| `onPaymentSuccess` | `(txId: string) => void` | ❌ | - | Success callback |
|
|
145
|
+
| `onPaymentError` | `(error: Error) => void` | ❌ | - | Error callback |
|
|
146
|
+
|
|
147
|
+
See [full API documentation](./docs/API_REFERENCE.md) for complete reference.
|
|
148
|
+
|
|
149
|
+
## 🛠️ Development
|
|
150
|
+
|
|
151
|
+
### Setup
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# Clone the repository
|
|
155
|
+
git clone https://github.com/payainetwork/x402-solana-react.git
|
|
156
|
+
cd x402-solana-react
|
|
157
|
+
|
|
158
|
+
# Install dependencies
|
|
159
|
+
npm install
|
|
160
|
+
|
|
161
|
+
# Copy environment variables
|
|
162
|
+
cp .env.example .env
|
|
163
|
+
# Edit .env and add your Helius API key
|
|
164
|
+
|
|
165
|
+
# Start development server
|
|
166
|
+
npm run dev
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Build
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# Build library
|
|
173
|
+
npm run build
|
|
174
|
+
|
|
175
|
+
# Type check
|
|
176
|
+
npm run typecheck
|
|
177
|
+
|
|
178
|
+
# Lint
|
|
179
|
+
npm run lint
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## 🐛 Troubleshooting
|
|
183
|
+
|
|
184
|
+
### Common Issues
|
|
185
|
+
|
|
186
|
+
**"Wallet not connected"**
|
|
187
|
+
- Ensure wallet provider is properly configured
|
|
188
|
+
- Check that wallet extension is installed and unlocked
|
|
189
|
+
- Verify network matches (mainnet vs devnet)
|
|
190
|
+
|
|
191
|
+
**"Insufficient USDC balance"**
|
|
192
|
+
- Check wallet has enough USDC for payment + gas
|
|
193
|
+
- On devnet: Use [Solana Faucet](https://faucet.solana.com/) for SOL
|
|
194
|
+
- Get devnet USDC from test token faucets like [Circle](https://faucet.circle.com/)
|
|
195
|
+
|
|
196
|
+
**"RPC rate limit exceeded"**
|
|
197
|
+
- Add Helius API key to `.env` file
|
|
198
|
+
- Use custom RPC URL via `rpcUrl` prop
|
|
199
|
+
|
|
200
|
+
**"Transaction failed"**
|
|
201
|
+
- Verify network connectivity
|
|
202
|
+
- Check Solana network status
|
|
203
|
+
- Ensure sufficient SOL for transaction fees
|
|
204
|
+
|
|
205
|
+
**Styling not working**
|
|
206
|
+
- Make sure you imported `x402-solana-react/styles` in your main file
|
|
207
|
+
- Check browser console for CSS loading errors
|
|
208
|
+
|
|
209
|
+
## ✅ Status
|
|
210
|
+
|
|
211
|
+
**Ready for Production** - Fully functional x402 paywall components with PayAI facilitator integration.
|
|
212
|
+
|
|
213
|
+
### Features Complete
|
|
214
|
+
- ✅ Core paywall component with Solana integration
|
|
215
|
+
- ✅ Payment processing via x402 protocol
|
|
216
|
+
- ✅ Multi-wallet support (Phantom, Solflare, etc.)
|
|
217
|
+
- ✅ Beautiful Solana-themed UI with Tailwind CSS
|
|
218
|
+
- ✅ TypeScript support with full type safety
|
|
219
|
+
- ✅ Devnet integration with PayAI facilitator
|
|
220
|
+
- ✅ Responsive design and accessibility
|
|
221
|
+
|
|
222
|
+
## 🤝 Contributing
|
|
223
|
+
|
|
224
|
+
This project is currently in early development. Contributions welcome!
|
|
225
|
+
|
|
226
|
+
## 📄 License
|
|
227
|
+
|
|
228
|
+
MIT License
|
|
229
|
+
|
|
230
|
+
## 🔗 Related Projects
|
|
231
|
+
|
|
232
|
+
- [x402-solana](../x402-solana/) - Base Solana payment protocol implementation
|
|
233
|
+
- [x402](../x402/) - Core x402 payment protocol
|
|
234
|
+
- [PayAI Network](https://payai.network) - x402 payment infrastructure
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
Built with ❤️ for the Solana ecosystem
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaymentButton.d.ts","sourceRoot":"","sources":["../../src/components/PaymentButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG7C,eAAO,MAAM,aAAa,8FAsDzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaymentStatus.d.ts","sourceRoot":"","sources":["../../src/components/PaymentStatus.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG7C,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAkGtD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletSection.d.ts","sourceRoot":"","sources":["../../src/components/WalletSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG7C,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAoEtD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"X402Paywall.d.ts","sourceRoot":"","sources":["../../src/components/X402Paywall.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA0LlD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare const badgeVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | null | undefined;
|
|
5
|
+
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
6
|
+
export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
|
|
7
|
+
}
|
|
8
|
+
declare function Badge({ className, variant, ...props }: BadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export { Badge, badgeVariants };
|
|
10
|
+
//# sourceMappingURL=badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/components/ui/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,aAAa;;8EAkBlB,CAAA;AAED,MAAM,WAAW,UACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,YAAY,CAAC,OAAO,aAAa,CAAC;CAAG;AAEzC,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CAI1D;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare const buttonVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "link" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
|
|
5
|
+
size?: "default" | "sm" | "lg" | "icon" | null | undefined;
|
|
6
|
+
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
7
|
+
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
8
|
+
asChild?: boolean;
|
|
9
|
+
}
|
|
10
|
+
declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
11
|
+
export { Button, buttonVariants };
|
|
12
|
+
//# sourceMappingURL=button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,cAAc;;;8EA4BnB,CAAA;AAED,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EACnD,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,QAAA,MAAM,MAAM,uFAWX,CAAA;AAGD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare const Card: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
3
|
+
declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
4
|
+
declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
5
|
+
declare const CardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
7
|
+
declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };
|
|
9
|
+
//# sourceMappingURL=card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,QAAA,MAAM,IAAI,6GAYR,CAAA;AAGF,QAAA,MAAM,UAAU,6GASd,CAAA;AAGF,QAAA,MAAM,SAAS,6GASb,CAAA;AAGF,QAAA,MAAM,eAAe,6GASnB,CAAA;AAGF,QAAA,MAAM,WAAW,6GAKf,CAAA;AAGF,QAAA,MAAM,UAAU,6GASd,CAAA;AAGF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface SpinnerProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
size?: 'sm' | 'md' | 'lg';
|
|
4
|
+
variant?: 'default' | 'solana';
|
|
5
|
+
}
|
|
6
|
+
declare const Spinner: React.ForwardRefExoticComponent<SpinnerProps & React.RefAttributes<HTMLDivElement>>;
|
|
7
|
+
export { Spinner };
|
|
8
|
+
//# sourceMappingURL=spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../src/components/ui/spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACxE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;CAChC;AAED,QAAA,MAAM,OAAO,qFA8BZ,CAAC;AAIF,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/demo/App.tsx"],"names":[],"mappings":"AAWA,OAAO,4CAA4C,CAAC;AA+IpD,iBAAS,GAAG,4CAqBX;AAED,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/demo/main.tsx"],"names":[],"mappings":"AAGA,OAAO,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { WalletAdapter, SolanaNetwork, PaymentStatus } from '../types';
|
|
2
|
+
|
|
3
|
+
export interface PaymentConfig {
|
|
4
|
+
wallet: WalletAdapter;
|
|
5
|
+
network: SolanaNetwork;
|
|
6
|
+
rpcUrl?: string;
|
|
7
|
+
apiEndpoint?: string;
|
|
8
|
+
treasuryAddress?: string;
|
|
9
|
+
facilitatorUrl?: string;
|
|
10
|
+
maxPaymentAmount?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface PaymentResult {
|
|
13
|
+
transactionId: string | null;
|
|
14
|
+
status: PaymentStatus;
|
|
15
|
+
error: Error | null;
|
|
16
|
+
}
|
|
17
|
+
export interface UseX402PaymentReturn {
|
|
18
|
+
pay: (amount: number, description: string) => Promise<string | null>;
|
|
19
|
+
isLoading: boolean;
|
|
20
|
+
status: PaymentStatus;
|
|
21
|
+
error: Error | null;
|
|
22
|
+
transactionId: string | null;
|
|
23
|
+
reset: () => void;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Hook for managing x402 payments on Solana
|
|
27
|
+
*/
|
|
28
|
+
export declare function useX402Payment(config: PaymentConfig): UseX402PaymentReturn;
|
|
29
|
+
//# sourceMappingURL=useX402Payment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useX402Payment.d.ts","sourceRoot":"","sources":["../../src/hooks/useX402Payment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEtE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACrE,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,oBAAoB,CA4H1E"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { X402Paywall } from './components/X402Paywall';
|
|
2
|
+
export { PaymentButton } from './components/PaymentButton';
|
|
3
|
+
export { PaymentStatus } from './components/PaymentStatus';
|
|
4
|
+
export { WalletSection } from './components/WalletSection';
|
|
5
|
+
export { Button } from './components/ui/button';
|
|
6
|
+
export { Card, CardContent, CardDescription, CardHeader, CardTitle } from './components/ui/card';
|
|
7
|
+
export { Badge } from './components/ui/badge';
|
|
8
|
+
export { Spinner } from './components/ui/spinner';
|
|
9
|
+
export { useX402Payment } from './hooks/useX402Payment';
|
|
10
|
+
export type { PaymentConfig, UseX402PaymentReturn } from './hooks/useX402Payment';
|
|
11
|
+
export type { SolanaNetwork, WalletAdapter, PaymentStatus as PaymentStatusType, X402PaywallProps, PaymentButtonProps, PaymentStatusProps, WalletSectionProps, ThemePreset, ComponentClassNames, ComponentStyles, ThemeConfig, } from './types';
|
|
12
|
+
export { cn } from './lib/utils';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjG,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGlD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGlF,YAAY,EACV,aAAa,EACb,aAAa,EACb,aAAa,IAAI,iBAAiB,EAClC,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAGjC,OAAO,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";var Qr=Object.defineProperty;var et=(e,n,t)=>n in e?Qr(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var lr=(e,n,t)=>et(e,typeof n!="symbol"?n+"":n,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const V=require("react"),L=require("@solana/web3.js"),re=require("@solana/spl-token");function rt(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const A=rt(V);var Ie={exports:{}},be={};/**
|
|
2
|
+
* @license React
|
|
3
|
+
* react-jsx-runtime.production.min.js
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/var cr;function tt(){if(cr)return be;cr=1;var e=V,n=Symbol.for("react.element"),t=Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,a=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function d(l,f,p){var b,h={},g=null,m=null;p!==void 0&&(g=""+p),f.key!==void 0&&(g=""+f.key),f.ref!==void 0&&(m=f.ref);for(b in f)o.call(f,b)&&!s.hasOwnProperty(b)&&(h[b]=f[b]);if(l&&l.defaultProps)for(b in f=l.defaultProps,f)h[b]===void 0&&(h[b]=f[b]);return{$$typeof:n,type:l,key:g,ref:m,props:h,_owner:a.current}}return be.Fragment=t,be.jsx=d,be.jsxs=d,be}var ge={};/**
|
|
10
|
+
* @license React
|
|
11
|
+
* react-jsx-runtime.development.js
|
|
12
|
+
*
|
|
13
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
14
|
+
*
|
|
15
|
+
* This source code is licensed under the MIT license found in the
|
|
16
|
+
* LICENSE file in the root directory of this source tree.
|
|
17
|
+
*/var dr;function nt(){return dr||(dr=1,process.env.NODE_ENV!=="production"&&function(){var e=V,n=Symbol.for("react.element"),t=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),l=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),b=Symbol.for("react.suspense_list"),h=Symbol.for("react.memo"),g=Symbol.for("react.lazy"),m=Symbol.for("react.offscreen"),S=Symbol.iterator,E="@@iterator";function y(r){if(r===null||typeof r!="object")return null;var i=S&&r[S]||r[E];return typeof i=="function"?i:null}var k=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function C(r){{for(var i=arguments.length,u=new Array(i>1?i-1:0),v=1;v<i;v++)u[v-1]=arguments[v];M("error",r,u)}}function M(r,i,u){{var v=k.ReactDebugCurrentFrame,R=v.getStackAddendum();R!==""&&(i+="%s",u=u.concat([R]));var _=u.map(function(j){return String(j)});_.unshift("Warning: "+i),Function.prototype.apply.call(console[r],console,_)}}var D=!1,$=!1,G=!1,W=!1,Q=!1,X;X=Symbol.for("react.module.reference");function Y(r){return!!(typeof r=="string"||typeof r=="function"||r===o||r===s||Q||r===a||r===p||r===b||W||r===m||D||$||G||typeof r=="object"&&r!==null&&(r.$$typeof===g||r.$$typeof===h||r.$$typeof===d||r.$$typeof===l||r.$$typeof===f||r.$$typeof===X||r.getModuleId!==void 0))}function z(r,i,u){var v=r.displayName;if(v)return v;var R=i.displayName||i.name||"";return R!==""?u+"("+R+")":u}function P(r){return r.displayName||"Context"}function K(r){if(r==null)return null;if(typeof r.tag=="number"&&C("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof r=="function")return r.displayName||r.name||null;if(typeof r=="string")return r;switch(r){case o:return"Fragment";case t:return"Portal";case s:return"Profiler";case a:return"StrictMode";case p:return"Suspense";case b:return"SuspenseList"}if(typeof r=="object")switch(r.$$typeof){case l:var i=r;return P(i)+".Consumer";case d:var u=r;return P(u._context)+".Provider";case f:return z(r,r.render,"ForwardRef");case h:var v=r.displayName||null;return v!==null?v:K(r.type)||"Memo";case g:{var R=r,_=R._payload,j=R._init;try{return K(j(_))}catch{return null}}}return null}var B=Object.assign,H=0,Z,ue,se,te,fe,J,Ge;function Ye(){}Ye.__reactDisabledLog=!0;function Pr(){{if(H===0){Z=console.log,ue=console.info,se=console.warn,te=console.error,fe=console.group,J=console.groupCollapsed,Ge=console.groupEnd;var r={configurable:!0,enumerable:!0,value:Ye,writable:!0};Object.defineProperties(console,{info:r,log:r,warn:r,error:r,group:r,groupCollapsed:r,groupEnd:r})}H++}}function Rr(){{if(H--,H===0){var r={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:B({},r,{value:Z}),info:B({},r,{value:ue}),warn:B({},r,{value:se}),error:B({},r,{value:te}),group:B({},r,{value:fe}),groupCollapsed:B({},r,{value:J}),groupEnd:B({},r,{value:Ge})})}H<0&&C("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var ke=k.ReactCurrentDispatcher,Pe;function xe(r,i,u){{if(Pe===void 0)try{throw Error()}catch(R){var v=R.stack.trim().match(/\n( *(at )?)/);Pe=v&&v[1]||""}return`
|
|
18
|
+
`+Pe+r}}var Re=!1,ye;{var Sr=typeof WeakMap=="function"?WeakMap:Map;ye=new Sr}function Ke(r,i){if(!r||Re)return"";{var u=ye.get(r);if(u!==void 0)return u}var v;Re=!0;var R=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var _;_=ke.current,ke.current=null,Pr();try{if(i){var j=function(){throw Error()};if(Object.defineProperty(j.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(j,[])}catch(U){v=U}Reflect.construct(r,[],j)}else{try{j.call()}catch(U){v=U}r.call(j.prototype)}}else{try{throw Error()}catch(U){v=U}r()}}catch(U){if(U&&v&&typeof U.stack=="string"){for(var w=U.stack.split(`
|
|
19
|
+
`),F=v.stack.split(`
|
|
20
|
+
`),N=w.length-1,O=F.length-1;N>=1&&O>=0&&w[N]!==F[O];)O--;for(;N>=1&&O>=0;N--,O--)if(w[N]!==F[O]){if(N!==1||O!==1)do if(N--,O--,O<0||w[N]!==F[O]){var q=`
|
|
21
|
+
`+w[N].replace(" at new "," at ");return r.displayName&&q.includes("<anonymous>")&&(q=q.replace("<anonymous>",r.displayName)),typeof r=="function"&&ye.set(r,q),q}while(N>=1&&O>=0);break}}}finally{Re=!1,ke.current=_,Rr(),Error.prepareStackTrace=R}var le=r?r.displayName||r.name:"",ae=le?xe(le):"";return typeof r=="function"&&ye.set(r,ae),ae}function _r(r,i,u){return Ke(r,!1)}function Tr(r){var i=r.prototype;return!!(i&&i.isReactComponent)}function we(r,i,u){if(r==null)return"";if(typeof r=="function")return Ke(r,Tr(r));if(typeof r=="string")return xe(r);switch(r){case p:return xe("Suspense");case b:return xe("SuspenseList")}if(typeof r=="object")switch(r.$$typeof){case f:return _r(r.render);case h:return we(r.type,i,u);case g:{var v=r,R=v._payload,_=v._init;try{return we(_(R),i,u)}catch{}}}return""}var pe=Object.prototype.hasOwnProperty,Xe={},He=k.ReactDebugCurrentFrame;function Ce(r){if(r){var i=r._owner,u=we(r.type,r._source,i?i.type:null);He.setExtraStackFrame(u)}else He.setExtraStackFrame(null)}function Ar(r,i,u,v,R){{var _=Function.call.bind(pe);for(var j in r)if(_(r,j)){var w=void 0;try{if(typeof r[j]!="function"){var F=Error((v||"React class")+": "+u+" type `"+j+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof r[j]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw F.name="Invariant Violation",F}w=r[j](i,j,v,u,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(N){w=N}w&&!(w instanceof Error)&&(Ce(R),C("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",v||"React class",u,j,typeof w),Ce(null)),w instanceof Error&&!(w.message in Xe)&&(Xe[w.message]=!0,Ce(R),C("Failed %s type: %s",u,w.message),Ce(null))}}}var Nr=Array.isArray;function Se(r){return Nr(r)}function Or(r){{var i=typeof Symbol=="function"&&Symbol.toStringTag,u=i&&r[Symbol.toStringTag]||r.constructor.name||"Object";return u}}function Ir(r){try{return Je(r),!1}catch{return!0}}function Je(r){return""+r}function qe(r){if(Ir(r))return C("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Or(r)),Je(r)}var Ze=k.ReactCurrentOwner,Mr={key:!0,ref:!0,__self:!0,__source:!0},Qe,er;function zr(r){if(pe.call(r,"ref")){var i=Object.getOwnPropertyDescriptor(r,"ref").get;if(i&&i.isReactWarning)return!1}return r.ref!==void 0}function Dr(r){if(pe.call(r,"key")){var i=Object.getOwnPropertyDescriptor(r,"key").get;if(i&&i.isReactWarning)return!1}return r.key!==void 0}function Fr(r,i){typeof r.ref=="string"&&Ze.current}function Lr(r,i){{var u=function(){Qe||(Qe=!0,C("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",i))};u.isReactWarning=!0,Object.defineProperty(r,"key",{get:u,configurable:!0})}}function Wr(r,i){{var u=function(){er||(er=!0,C("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",i))};u.isReactWarning=!0,Object.defineProperty(r,"ref",{get:u,configurable:!0})}}var Br=function(r,i,u,v,R,_,j){var w={$$typeof:n,type:r,key:i,ref:u,props:j,_owner:_};return w._store={},Object.defineProperty(w._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(w,"_self",{configurable:!1,enumerable:!1,writable:!1,value:v}),Object.defineProperty(w,"_source",{configurable:!1,enumerable:!1,writable:!1,value:R}),Object.freeze&&(Object.freeze(w.props),Object.freeze(w)),w};function Ur(r,i,u,v,R){{var _,j={},w=null,F=null;u!==void 0&&(qe(u),w=""+u),Dr(i)&&(qe(i.key),w=""+i.key),zr(i)&&(F=i.ref,Fr(i,R));for(_ in i)pe.call(i,_)&&!Mr.hasOwnProperty(_)&&(j[_]=i[_]);if(r&&r.defaultProps){var N=r.defaultProps;for(_ in N)j[_]===void 0&&(j[_]=N[_])}if(w||F){var O=typeof r=="function"?r.displayName||r.name||"Unknown":r;w&&Lr(j,O),F&&Wr(j,O)}return Br(r,w,F,R,v,Ze.current,j)}}var _e=k.ReactCurrentOwner,rr=k.ReactDebugCurrentFrame;function ie(r){if(r){var i=r._owner,u=we(r.type,r._source,i?i.type:null);rr.setExtraStackFrame(u)}else rr.setExtraStackFrame(null)}var Te;Te=!1;function Ae(r){return typeof r=="object"&&r!==null&&r.$$typeof===n}function tr(){{if(_e.current){var r=K(_e.current.type);if(r)return`
|
|
22
|
+
|
|
23
|
+
Check the render method of \``+r+"`."}return""}}function Vr(r){return""}var nr={};function $r(r){{var i=tr();if(!i){var u=typeof r=="string"?r:r.displayName||r.name;u&&(i=`
|
|
24
|
+
|
|
25
|
+
Check the top-level render call using <`+u+">.")}return i}}function or(r,i){{if(!r._store||r._store.validated||r.key!=null)return;r._store.validated=!0;var u=$r(i);if(nr[u])return;nr[u]=!0;var v="";r&&r._owner&&r._owner!==_e.current&&(v=" It was passed a child from "+K(r._owner.type)+"."),ie(r),C('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',u,v),ie(null)}}function ar(r,i){{if(typeof r!="object")return;if(Se(r))for(var u=0;u<r.length;u++){var v=r[u];Ae(v)&&or(v,i)}else if(Ae(r))r._store&&(r._store.validated=!0);else if(r){var R=y(r);if(typeof R=="function"&&R!==r.entries)for(var _=R.call(r),j;!(j=_.next()).done;)Ae(j.value)&&or(j.value,i)}}}function Gr(r){{var i=r.type;if(i==null||typeof i=="string")return;var u;if(typeof i=="function")u=i.propTypes;else if(typeof i=="object"&&(i.$$typeof===f||i.$$typeof===h))u=i.propTypes;else return;if(u){var v=K(i);Ar(u,r.props,"prop",v,r)}else if(i.PropTypes!==void 0&&!Te){Te=!0;var R=K(i);C("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",R||"Unknown")}typeof i.getDefaultProps=="function"&&!i.getDefaultProps.isReactClassApproved&&C("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Yr(r){{for(var i=Object.keys(r.props),u=0;u<i.length;u++){var v=i[u];if(v!=="children"&&v!=="key"){ie(r),C("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",v),ie(null);break}}r.ref!==null&&(ie(r),C("Invalid attribute `ref` supplied to `React.Fragment`."),ie(null))}}var sr={};function ir(r,i,u,v,R,_){{var j=Y(r);if(!j){var w="";(r===void 0||typeof r=="object"&&r!==null&&Object.keys(r).length===0)&&(w+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var F=Vr();F?w+=F:w+=tr();var N;r===null?N="null":Se(r)?N="array":r!==void 0&&r.$$typeof===n?(N="<"+(K(r.type)||"Unknown")+" />",w=" Did you accidentally export a JSX literal instead of a component?"):N=typeof r,C("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",N,w)}var O=Ur(r,i,u,R,_);if(O==null)return O;if(j){var q=i.children;if(q!==void 0)if(v)if(Se(q)){for(var le=0;le<q.length;le++)ar(q[le],r);Object.freeze&&Object.freeze(q)}else C("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else ar(q,r)}if(pe.call(i,"key")){var ae=K(r),U=Object.keys(i).filter(function(Zr){return Zr!=="key"}),Ne=U.length>0?"{key: someKey, "+U.join(": ..., ")+": ...}":"{key: someKey}";if(!sr[ae+Ne]){var qr=U.length>0?"{"+U.join(": ..., ")+": ...}":"{}";C(`A props object containing a "key" prop is being spread into JSX:
|
|
26
|
+
let props = %s;
|
|
27
|
+
<%s {...props} />
|
|
28
|
+
React keys must be passed directly to JSX without using spread:
|
|
29
|
+
let props = %s;
|
|
30
|
+
<%s key={someKey} {...props} />`,Ne,ae,qr,ae),sr[ae+Ne]=!0}}return r===o?Yr(O):Gr(O),O}}function Kr(r,i,u){return ir(r,i,u,!0)}function Xr(r,i,u){return ir(r,i,u,!1)}var Hr=Xr,Jr=Kr;ge.Fragment=o,ge.jsx=Hr,ge.jsxs=Jr}()),ge}process.env.NODE_ENV==="production"?Ie.exports=tt():Ie.exports=nt();var c=Ie.exports;function ot(e){return e==="solana"?"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v":"4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"}function at(e){return e==="solana"?"https://api.mainnet-beta.solana.com":"https://api.devnet.solana.com"}async function st(e,n,t){try{const o=t||at(n),a=new L.Connection(o,"confirmed"),s=new L.PublicKey(e),d=new L.PublicKey(ot(n)),l=await re.getAssociatedTokenAddress(d,s),f=await re.getAccount(a,l);return(Number(f.amount)/1e6).toFixed(2)}catch(o){return console.error("Error fetching USDC balance:",o),"0.00"}}function mr(e){var n,t,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var a=e.length;for(n=0;n<a;n++)e[n]&&(t=mr(e[n]))&&(o&&(o+=" "),o+=t)}else for(t in e)e[t]&&(o&&(o+=" "),o+=t);return o}function hr(){for(var e,n,t=0,o="",a=arguments.length;t<a;t++)(e=arguments[t])&&(n=mr(e))&&(o&&(o+=" "),o+=n);return o}const ze="-",it=e=>{const n=ct(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:d=>{const l=d.split(ze);return l[0]===""&&l.length!==1&&l.shift(),vr(l,n)||lt(d)},getConflictingClassGroupIds:(d,l)=>{const f=t[d]||[];return l&&o[d]?[...f,...o[d]]:f}}},vr=(e,n)=>{var d;if(e.length===0)return n.classGroupId;const t=e[0],o=n.nextPart.get(t),a=o?vr(e.slice(1),o):void 0;if(a)return a;if(n.validators.length===0)return;const s=e.join(ze);return(d=n.validators.find(({validator:l})=>l(s)))==null?void 0:d.classGroupId},ur=/^\[(.+)\]$/,lt=e=>{if(ur.test(e)){const n=ur.exec(e)[1],t=n==null?void 0:n.substring(0,n.indexOf(":"));if(t)return"arbitrary.."+t}},ct=e=>{const{theme:n,prefix:t}=e,o={nextPart:new Map,validators:[]};return ut(Object.entries(e.classGroups),t).forEach(([s,d])=>{Me(d,o,s,n)}),o},Me=(e,n,t,o)=>{e.forEach(a=>{if(typeof a=="string"){const s=a===""?n:fr(n,a);s.classGroupId=t;return}if(typeof a=="function"){if(dt(a)){Me(a(o),n,t,o);return}n.validators.push({validator:a,classGroupId:t});return}Object.entries(a).forEach(([s,d])=>{Me(d,fr(n,s),t,o)})})},fr=(e,n)=>{let t=e;return n.split(ze).forEach(o=>{t.nextPart.has(o)||t.nextPart.set(o,{nextPart:new Map,validators:[]}),t=t.nextPart.get(o)}),t},dt=e=>e.isThemeGetter,ut=(e,n)=>n?e.map(([t,o])=>{const a=o.map(s=>typeof s=="string"?n+s:typeof s=="object"?Object.fromEntries(Object.entries(s).map(([d,l])=>[n+d,l])):s);return[t,a]}):e,ft=e=>{if(e<1)return{get:()=>{},set:()=>{}};let n=0,t=new Map,o=new Map;const a=(s,d)=>{t.set(s,d),n++,n>e&&(n=0,o=t,t=new Map)};return{get(s){let d=t.get(s);if(d!==void 0)return d;if((d=o.get(s))!==void 0)return a(s,d),d},set(s,d){t.has(s)?t.set(s,d):a(s,d)}}},xr="!",pt=e=>{const{separator:n,experimentalParseClassName:t}=e,o=n.length===1,a=n[0],s=n.length,d=l=>{const f=[];let p=0,b=0,h;for(let y=0;y<l.length;y++){let k=l[y];if(p===0){if(k===a&&(o||l.slice(y,y+s)===n)){f.push(l.slice(b,y)),b=y+s;continue}if(k==="/"){h=y;continue}}k==="["?p++:k==="]"&&p--}const g=f.length===0?l:l.substring(b),m=g.startsWith(xr),S=m?g.substring(1):g,E=h&&h>b?h-b:void 0;return{modifiers:f,hasImportantModifier:m,baseClassName:S,maybePostfixModifierPosition:E}};return t?l=>t({className:l,parseClassName:d}):d},bt=e=>{if(e.length<=1)return e;const n=[];let t=[];return e.forEach(o=>{o[0]==="["?(n.push(...t.sort(),o),t=[]):t.push(o)}),n.push(...t.sort()),n},gt=e=>({cache:ft(e.cacheSize),parseClassName:pt(e),...it(e)}),mt=/\s+/,ht=(e,n)=>{const{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:a}=n,s=[],d=e.trim().split(mt);let l="";for(let f=d.length-1;f>=0;f-=1){const p=d[f],{modifiers:b,hasImportantModifier:h,baseClassName:g,maybePostfixModifierPosition:m}=t(p);let S=!!m,E=o(S?g.substring(0,m):g);if(!E){if(!S){l=p+(l.length>0?" "+l:l);continue}if(E=o(g),!E){l=p+(l.length>0?" "+l:l);continue}S=!1}const y=bt(b).join(":"),k=h?y+xr:y,C=k+E;if(s.includes(C))continue;s.push(C);const M=a(E,S);for(let D=0;D<M.length;++D){const $=M[D];s.push(k+$)}l=p+(l.length>0?" "+l:l)}return l};function vt(){let e=0,n,t,o="";for(;e<arguments.length;)(n=arguments[e++])&&(t=yr(n))&&(o&&(o+=" "),o+=t);return o}const yr=e=>{if(typeof e=="string")return e;let n,t="";for(let o=0;o<e.length;o++)e[o]&&(n=yr(e[o]))&&(t&&(t+=" "),t+=n);return t};function xt(e,...n){let t,o,a,s=d;function d(f){const p=n.reduce((b,h)=>h(b),e());return t=gt(p),o=t.cache.get,a=t.cache.set,s=l,l(f)}function l(f){const p=o(f);if(p)return p;const b=ht(f,t);return a(f,b),b}return function(){return s(vt.apply(null,arguments))}}const T=e=>{const n=t=>t[e]||[];return n.isThemeGetter=!0,n},wr=/^\[(?:([a-z-]+):)?(.+)\]$/i,yt=/^\d+\/\d+$/,wt=new Set(["px","full","screen"]),Ct=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,jt=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Et=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,kt=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Pt=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ee=e=>ce(e)||wt.has(e)||yt.test(e),ne=e=>de(e,"length",It),ce=e=>!!e&&!Number.isNaN(Number(e)),Oe=e=>de(e,"number",ce),me=e=>!!e&&Number.isInteger(Number(e)),Rt=e=>e.endsWith("%")&&ce(e.slice(0,-1)),x=e=>wr.test(e),oe=e=>Ct.test(e),St=new Set(["length","size","percentage"]),_t=e=>de(e,St,Cr),Tt=e=>de(e,"position",Cr),At=new Set(["image","url"]),Nt=e=>de(e,At,zt),Ot=e=>de(e,"",Mt),he=()=>!0,de=(e,n,t)=>{const o=wr.exec(e);return o?o[1]?typeof n=="string"?o[1]===n:n.has(o[1]):t(o[2]):!1},It=e=>jt.test(e)&&!Et.test(e),Cr=()=>!1,Mt=e=>kt.test(e),zt=e=>Pt.test(e),Dt=()=>{const e=T("colors"),n=T("spacing"),t=T("blur"),o=T("brightness"),a=T("borderColor"),s=T("borderRadius"),d=T("borderSpacing"),l=T("borderWidth"),f=T("contrast"),p=T("grayscale"),b=T("hueRotate"),h=T("invert"),g=T("gap"),m=T("gradientColorStops"),S=T("gradientColorStopPositions"),E=T("inset"),y=T("margin"),k=T("opacity"),C=T("padding"),M=T("saturate"),D=T("scale"),$=T("sepia"),G=T("skew"),W=T("space"),Q=T("translate"),X=()=>["auto","contain","none"],Y=()=>["auto","hidden","clip","visible","scroll"],z=()=>["auto",x,n],P=()=>[x,n],K=()=>["",ee,ne],B=()=>["auto",ce,x],H=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],Z=()=>["solid","dashed","dotted","double","none"],ue=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],se=()=>["start","end","center","between","around","evenly","stretch"],te=()=>["","0",x],fe=()=>["auto","avoid","all","avoid-page","page","left","right","column"],J=()=>[ce,x];return{cacheSize:500,separator:":",theme:{colors:[he],spacing:[ee,ne],blur:["none","",oe,x],brightness:J(),borderColor:[e],borderRadius:["none","","full",oe,x],borderSpacing:P(),borderWidth:K(),contrast:J(),grayscale:te(),hueRotate:J(),invert:te(),gap:P(),gradientColorStops:[e],gradientColorStopPositions:[Rt,ne],inset:z(),margin:z(),opacity:J(),padding:P(),saturate:J(),scale:J(),sepia:te(),skew:J(),space:P(),translate:P()},classGroups:{aspect:[{aspect:["auto","square","video",x]}],container:["container"],columns:[{columns:[oe]}],"break-after":[{"break-after":fe()}],"break-before":[{"break-before":fe()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...H(),x]}],overflow:[{overflow:Y()}],"overflow-x":[{"overflow-x":Y()}],"overflow-y":[{"overflow-y":Y()}],overscroll:[{overscroll:X()}],"overscroll-x":[{"overscroll-x":X()}],"overscroll-y":[{"overscroll-y":X()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[E]}],"inset-x":[{"inset-x":[E]}],"inset-y":[{"inset-y":[E]}],start:[{start:[E]}],end:[{end:[E]}],top:[{top:[E]}],right:[{right:[E]}],bottom:[{bottom:[E]}],left:[{left:[E]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",me,x]}],basis:[{basis:z()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",x]}],grow:[{grow:te()}],shrink:[{shrink:te()}],order:[{order:["first","last","none",me,x]}],"grid-cols":[{"grid-cols":[he]}],"col-start-end":[{col:["auto",{span:["full",me,x]},x]}],"col-start":[{"col-start":B()}],"col-end":[{"col-end":B()}],"grid-rows":[{"grid-rows":[he]}],"row-start-end":[{row:["auto",{span:[me,x]},x]}],"row-start":[{"row-start":B()}],"row-end":[{"row-end":B()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",x]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",x]}],gap:[{gap:[g]}],"gap-x":[{"gap-x":[g]}],"gap-y":[{"gap-y":[g]}],"justify-content":[{justify:["normal",...se()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...se(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...se(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[C]}],px:[{px:[C]}],py:[{py:[C]}],ps:[{ps:[C]}],pe:[{pe:[C]}],pt:[{pt:[C]}],pr:[{pr:[C]}],pb:[{pb:[C]}],pl:[{pl:[C]}],m:[{m:[y]}],mx:[{mx:[y]}],my:[{my:[y]}],ms:[{ms:[y]}],me:[{me:[y]}],mt:[{mt:[y]}],mr:[{mr:[y]}],mb:[{mb:[y]}],ml:[{ml:[y]}],"space-x":[{"space-x":[W]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[W]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",x,n]}],"min-w":[{"min-w":[x,n,"min","max","fit"]}],"max-w":[{"max-w":[x,n,"none","full","min","max","fit","prose",{screen:[oe]},oe]}],h:[{h:[x,n,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[x,n,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[x,n,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[x,n,"auto","min","max","fit"]}],"font-size":[{text:["base",oe,ne]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Oe]}],"font-family":[{font:[he]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",x]}],"line-clamp":[{"line-clamp":["none",ce,Oe]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",ee,x]}],"list-image":[{"list-image":["none",x]}],"list-style-type":[{list:["none","disc","decimal",x]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[k]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[k]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Z(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",ee,ne]}],"underline-offset":[{"underline-offset":["auto",ee,x]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:P()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",x]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",x]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[k]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...H(),Tt]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",_t]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Nt]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[S]}],"gradient-via-pos":[{via:[S]}],"gradient-to-pos":[{to:[S]}],"gradient-from":[{from:[m]}],"gradient-via":[{via:[m]}],"gradient-to":[{to:[m]}],rounded:[{rounded:[s]}],"rounded-s":[{"rounded-s":[s]}],"rounded-e":[{"rounded-e":[s]}],"rounded-t":[{"rounded-t":[s]}],"rounded-r":[{"rounded-r":[s]}],"rounded-b":[{"rounded-b":[s]}],"rounded-l":[{"rounded-l":[s]}],"rounded-ss":[{"rounded-ss":[s]}],"rounded-se":[{"rounded-se":[s]}],"rounded-ee":[{"rounded-ee":[s]}],"rounded-es":[{"rounded-es":[s]}],"rounded-tl":[{"rounded-tl":[s]}],"rounded-tr":[{"rounded-tr":[s]}],"rounded-br":[{"rounded-br":[s]}],"rounded-bl":[{"rounded-bl":[s]}],"border-w":[{border:[l]}],"border-w-x":[{"border-x":[l]}],"border-w-y":[{"border-y":[l]}],"border-w-s":[{"border-s":[l]}],"border-w-e":[{"border-e":[l]}],"border-w-t":[{"border-t":[l]}],"border-w-r":[{"border-r":[l]}],"border-w-b":[{"border-b":[l]}],"border-w-l":[{"border-l":[l]}],"border-opacity":[{"border-opacity":[k]}],"border-style":[{border:[...Z(),"hidden"]}],"divide-x":[{"divide-x":[l]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[l]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[k]}],"divide-style":[{divide:Z()}],"border-color":[{border:[a]}],"border-color-x":[{"border-x":[a]}],"border-color-y":[{"border-y":[a]}],"border-color-s":[{"border-s":[a]}],"border-color-e":[{"border-e":[a]}],"border-color-t":[{"border-t":[a]}],"border-color-r":[{"border-r":[a]}],"border-color-b":[{"border-b":[a]}],"border-color-l":[{"border-l":[a]}],"divide-color":[{divide:[a]}],"outline-style":[{outline:["",...Z()]}],"outline-offset":[{"outline-offset":[ee,x]}],"outline-w":[{outline:[ee,ne]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:K()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[k]}],"ring-offset-w":[{"ring-offset":[ee,ne]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",oe,Ot]}],"shadow-color":[{shadow:[he]}],opacity:[{opacity:[k]}],"mix-blend":[{"mix-blend":[...ue(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":ue()}],filter:[{filter:["","none"]}],blur:[{blur:[t]}],brightness:[{brightness:[o]}],contrast:[{contrast:[f]}],"drop-shadow":[{"drop-shadow":["","none",oe,x]}],grayscale:[{grayscale:[p]}],"hue-rotate":[{"hue-rotate":[b]}],invert:[{invert:[h]}],saturate:[{saturate:[M]}],sepia:[{sepia:[$]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[t]}],"backdrop-brightness":[{"backdrop-brightness":[o]}],"backdrop-contrast":[{"backdrop-contrast":[f]}],"backdrop-grayscale":[{"backdrop-grayscale":[p]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[b]}],"backdrop-invert":[{"backdrop-invert":[h]}],"backdrop-opacity":[{"backdrop-opacity":[k]}],"backdrop-saturate":[{"backdrop-saturate":[M]}],"backdrop-sepia":[{"backdrop-sepia":[$]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[d]}],"border-spacing-x":[{"border-spacing-x":[d]}],"border-spacing-y":[{"border-spacing-y":[d]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",x]}],duration:[{duration:J()}],ease:[{ease:["linear","in","out","in-out",x]}],delay:[{delay:J()}],animate:[{animate:["none","spin","ping","pulse","bounce",x]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[D]}],"scale-x":[{"scale-x":[D]}],"scale-y":[{"scale-y":[D]}],rotate:[{rotate:[me,x]}],"translate-x":[{"translate-x":[Q]}],"translate-y":[{"translate-y":[Q]}],"skew-x":[{"skew-x":[G]}],"skew-y":[{"skew-y":[G]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",x]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",x]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":P()}],"scroll-mx":[{"scroll-mx":P()}],"scroll-my":[{"scroll-my":P()}],"scroll-ms":[{"scroll-ms":P()}],"scroll-me":[{"scroll-me":P()}],"scroll-mt":[{"scroll-mt":P()}],"scroll-mr":[{"scroll-mr":P()}],"scroll-mb":[{"scroll-mb":P()}],"scroll-ml":[{"scroll-ml":P()}],"scroll-p":[{"scroll-p":P()}],"scroll-px":[{"scroll-px":P()}],"scroll-py":[{"scroll-py":P()}],"scroll-ps":[{"scroll-ps":P()}],"scroll-pe":[{"scroll-pe":P()}],"scroll-pt":[{"scroll-pt":P()}],"scroll-pr":[{"scroll-pr":P()}],"scroll-pb":[{"scroll-pb":P()}],"scroll-pl":[{"scroll-pl":P()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",x]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[ee,ne,Oe]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Ft=xt(Dt);function I(...e){return Ft(hr(e))}const je=A.forwardRef(({className:e,...n},t)=>c.jsx("div",{ref:t,className:I("rounded-xl border bg-card text-card-foreground shadow",e),...n}));je.displayName="Card";const De=A.forwardRef(({className:e,...n},t)=>c.jsx("div",{ref:t,className:I("flex flex-col space-y-1.5 p-6",e),...n}));De.displayName="CardHeader";const Fe=A.forwardRef(({className:e,...n},t)=>c.jsx("div",{ref:t,className:I("font-semibold leading-none tracking-tight",e),...n}));Fe.displayName="CardTitle";const Le=A.forwardRef(({className:e,...n},t)=>c.jsx("div",{ref:t,className:I("text-sm text-muted-foreground",e),...n}));Le.displayName="CardDescription";const Ee=A.forwardRef(({className:e,...n},t)=>c.jsx("div",{ref:t,className:I("p-6 pt-0",e),...n}));Ee.displayName="CardContent";const Lt=A.forwardRef(({className:e,...n},t)=>c.jsx("div",{ref:t,className:I("flex items-center p-6 pt-0",e),...n}));Lt.displayName="CardFooter";function pr(e,n){if(typeof e=="function")return e(n);e!=null&&(e.current=n)}function Wt(...e){return n=>{let t=!1;const o=e.map(a=>{const s=pr(a,n);return!t&&typeof s=="function"&&(t=!0),s});if(t)return()=>{for(let a=0;a<o.length;a++){const s=o[a];typeof s=="function"?s():pr(e[a],null)}}}}function Bt(e){const n=Vt(e),t=A.forwardRef((o,a)=>{const{children:s,...d}=o,l=A.Children.toArray(s),f=l.find(Gt);if(f){const p=f.props.children,b=l.map(h=>h===f?A.Children.count(p)>1?A.Children.only(null):A.isValidElement(p)?p.props.children:null:h);return c.jsx(n,{...d,ref:a,children:A.isValidElement(p)?A.cloneElement(p,void 0,b):null})}return c.jsx(n,{...d,ref:a,children:s})});return t.displayName=`${e}.Slot`,t}var Ut=Bt("Slot");function Vt(e){const n=A.forwardRef((t,o)=>{const{children:a,...s}=t;if(A.isValidElement(a)){const d=Kt(a),l=Yt(s,a.props);return a.type!==A.Fragment&&(l.ref=o?Wt(o,d):d),A.cloneElement(a,l)}return A.Children.count(a)>1?A.Children.only(null):null});return n.displayName=`${e}.SlotClone`,n}var $t=Symbol("radix.slottable");function Gt(e){return A.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===$t}function Yt(e,n){const t={...n};for(const o in n){const a=e[o],s=n[o];/^on[A-Z]/.test(o)?a&&s?t[o]=(...l)=>{const f=s(...l);return a(...l),f}:a&&(t[o]=a):o==="style"?t[o]={...a,...s}:o==="className"&&(t[o]=[a,s].filter(Boolean).join(" "))}return{...e,...t}}function Kt(e){var o,a;let n=(o=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:o.get,t=n&&"isReactWarning"in n&&n.isReactWarning;return t?e.ref:(n=(a=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:a.get,t=n&&"isReactWarning"in n&&n.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}const br=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,gr=hr,jr=(e,n)=>t=>{var o;if((n==null?void 0:n.variants)==null)return gr(e,t==null?void 0:t.class,t==null?void 0:t.className);const{variants:a,defaultVariants:s}=n,d=Object.keys(a).map(p=>{const b=t==null?void 0:t[p],h=s==null?void 0:s[p];if(b===null)return null;const g=br(b)||br(h);return a[p][g]}),l=t&&Object.entries(t).reduce((p,b)=>{let[h,g]=b;return g===void 0||(p[h]=g),p},{}),f=n==null||(o=n.compoundVariants)===null||o===void 0?void 0:o.reduce((p,b)=>{let{class:h,className:g,...m}=b;return Object.entries(m).every(S=>{let[E,y]=S;return Array.isArray(y)?y.includes({...s,...l}[E]):{...s,...l}[E]===y})?[...p,h,g]:p},[]);return gr(e,d,f,t==null?void 0:t.class,t==null?void 0:t.className)},Xt=jr("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),We=A.forwardRef(({className:e,variant:n,size:t,asChild:o=!1,...a},s)=>{const d=o?Ut:"button";return c.jsx(d,{className:I(Xt({variant:n,size:t,className:e})),ref:s,...a})});We.displayName="Button";const ve=A.forwardRef(({className:e,size:n="md",variant:t="default",...o},a)=>{const s={sm:"h-4 w-4",md:"h-6 w-6",lg:"h-8 w-8"},d={default:"border-gray-200 border-t-gray-900",solana:"border-gray-200 border-t-solana-primary"};return c.jsx("div",{ref:a,className:I("inline-block animate-spin rounded-full border-2",s[n],d[t],e),role:"status","aria-label":"Loading",...o,children:c.jsx("span",{className:"sr-only",children:"Loading..."})})});ve.displayName="Spinner";const Be=A.forwardRef(({amount:e,description:n,onClick:t,disabled:o=!1,loading:a=!1,className:s,style:d,...l},f)=>{const p=b=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:2}).format(b);return c.jsx(We,{ref:f,onClick:t,disabled:o||a,className:I("w-full bg-solana-gradient hover:opacity-90 text-white font-semibold shadow-lg hover:shadow-xl transition-all duration-200 transform hover:scale-[1.02] rounded-xl",o||a?"opacity-50 cursor-not-allowed":"",s),style:d,...l,children:a?c.jsxs("div",{className:"flex items-center gap-3",children:[c.jsx(ve,{size:"sm",variant:"default",className:"border-white/30 border-t-white"}),c.jsx("span",{children:"Processing Payment..."})]}):c.jsxs("div",{className:"flex items-center justify-center gap-3",children:[c.jsx("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:c.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm3.5 6L12 10.5 8.5 8 12 5.5 15.5 8zM8.5 16L12 13.5 15.5 16 12 18.5 8.5 16z"})}),c.jsxs("span",{children:["Pay ",p(e)," USDC"]})]})})});Be.displayName="PaymentButton";const Ht=jr("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Ue({className:e,variant:n,...t}){return c.jsx("div",{className:I(Ht({variant:n}),e),...t})}const Ve=({status:e,message:n,progress:t,className:o,style:a})=>{const d=(()=>{switch(e){case"idle":return{label:"Ready",color:"bg-gray-100 text-gray-800",icon:null};case"connecting":return{label:"Connecting",color:"bg-blue-100 text-blue-800",icon:c.jsx(ve,{size:"sm",variant:"default"})};case"pending":return{label:"Processing",color:"bg-yellow-100 text-yellow-800",icon:c.jsx(ve,{size:"sm",variant:"solana"})};case"success":return{label:"Paid",color:"bg-green-100 text-green-800",icon:c.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:c.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})})};case"error":return{label:"Failed",color:"bg-red-100 text-red-800",icon:c.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:c.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})};default:return{label:"Unknown",color:"bg-gray-100 text-gray-800",icon:null}}})();return c.jsxs("div",{className:I("flex flex-col gap-2",o),style:a,children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsxs(Ue,{className:I("flex items-center gap-1.5",d.color),children:[d.icon,c.jsx("span",{children:d.label})]}),n&&c.jsx("span",{className:"text-sm text-muted-foreground",children:n})]}),t!==void 0&&t>0&&c.jsx("div",{className:"w-full bg-gray-200 rounded-full h-2 overflow-hidden",children:c.jsx("div",{className:"bg-solana-gradient h-full transition-all duration-300",style:{width:`${t}%`}})})]})};Ve.displayName="PaymentStatus";const $e=({wallet:e,balance:n,network:t,showBalance:o=!0,className:a,style:s})=>{var p;const d=((p=e==null?void 0:e.publicKey)==null?void 0:p.toString())||(e==null?void 0:e.address),l=b=>`${b.slice(0,4)}...${b.slice(-4)}`,f=()=>t==="solana"?"Mainnet":"Devnet";return!e||!d?c.jsx(je,{className:I("border-dashed",a),style:s,children:c.jsx(Ee,{className:"p-4 text-center text-muted-foreground",children:c.jsx("p",{className:"text-sm",children:"No wallet connected"})})}):c.jsx("div",{className:I("bg-slate-50 rounded-lg p-4 border border-slate-200",a),style:s,children:c.jsxs("div",{className:"space-y-3",children:[c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("div",{className:"w-2 h-2 bg-green-500 rounded-full"}),c.jsx("span",{className:"text-sm font-medium text-slate-600",children:"Connected Wallet"})]}),c.jsx("code",{className:"text-sm font-mono bg-white px-3 py-1.5 rounded-md border border-slate-300 text-slate-800",children:l(d)})]}),o&&n&&c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsx("span",{className:"text-sm font-medium text-slate-600",children:"USDC Balance"}),c.jsxs("div",{className:"flex items-center gap-2",children:[c.jsx("span",{className:"text-lg font-bold text-slate-900",children:n}),c.jsx("span",{className:"text-xs font-semibold text-slate-500 bg-slate-200 px-2 py-1 rounded-md",children:"USDC"})]})]}),t&&c.jsxs("div",{className:"flex items-center justify-between",children:[c.jsx("span",{className:"text-sm font-medium text-slate-600",children:"Network"}),c.jsx(Ue,{variant:"outline",className:"text-xs border-slate-300 text-slate-700",children:f()})]})]})})};$e.displayName="WalletSection";function Jt(e,n,t){const o=Buffer.from(e.serialize()).toString("base64"),a={x402Version:t,scheme:n.scheme,network:n.network,payload:{transaction:o}};return Buffer.from(JSON.stringify(a)).toString("base64")}function qt(e){if(e==="solana")return"https://api.mainnet-beta.solana.com";if(e==="solana-devnet")return"https://api.devnet.solana.com";throw new Error(`Unexpected network: ${e}`)}async function Zt(e,n,t,o){var Q,X,Y;const a=new L.Connection(o,"confirmed"),s=(Q=t==null?void 0:t.extra)==null?void 0:Q.feePayer;if(typeof s!="string"||!s)throw new Error("Missing facilitator feePayer in payment requirements (extra.feePayer).");const d=new L.PublicKey(s),l=((X=e==null?void 0:e.publicKey)==null?void 0:X.toString())||(e==null?void 0:e.address);if(!l)throw new Error("Missing connected Solana wallet address or publicKey");const f=new L.PublicKey(l);if(!(t!=null&&t.payTo))throw new Error("Missing payTo in payment requirements");const p=new L.PublicKey(t.payTo),b=[];if(b.push(L.ComputeBudgetProgram.setComputeUnitLimit({units:4e4})),b.push(L.ComputeBudgetProgram.setComputeUnitPrice({microLamports:1})),!t.asset)throw new Error("Missing token mint for SPL transfer");const h=new L.PublicKey(t.asset),g=await a.getAccountInfo(h,"confirmed"),m=((Y=g==null?void 0:g.owner)==null?void 0:Y.toBase58())===re.TOKEN_2022_PROGRAM_ID.toBase58()?re.TOKEN_2022_PROGRAM_ID:re.TOKEN_PROGRAM_ID,S=await re.getMint(a,h,void 0,m),E=await re.getAssociatedTokenAddress(h,f,!1,m),y=await re.getAssociatedTokenAddress(h,p,!1,m);if(!await a.getAccountInfo(E,"confirmed"))throw new Error(`User does not have an Associated Token Account for ${t.asset}. Please create one first or ensure you have the required token.`);if(!await a.getAccountInfo(y,"confirmed")){const z=new L.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),P=new L.TransactionInstruction({keys:[{pubkey:d,isSigner:!0,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!1},{pubkey:L.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1}],programId:z,data:Buffer.from([0])});b.push(P)}const M=BigInt(t.maxAmountRequired);b.push(re.createTransferCheckedInstruction(E,h,y,f,M,S.decimals,[],m));const{blockhash:D}=await a.getLatestBlockhash("confirmed"),$=new L.TransactionMessage({payerKey:d,recentBlockhash:D,instructions:b}).compileToV0Message(),G=new L.VersionedTransaction($);if(typeof(e==null?void 0:e.signTransaction)!="function")throw new Error("Connected wallet does not support signTransaction");const W=await e.signTransaction(G);return Jt(W,t,n)}function Qt(e,n,t,o=BigInt(0)){return async(a,s)=>{const d=await e(a,s);if(d.status!==402)return d;const l=await d.json(),f=l.x402Version,p=l.accepts||[],b=p.find(m=>m.scheme==="exact"&&(m.network==="solana-devnet"||m.network==="solana"));if(!b)throw console.error("❌ No suitable Solana payment requirements found. Available networks:",p.map(m=>m.network)),new Error("No suitable Solana payment requirements found");if(o>BigInt(0)&&BigInt(b.maxAmountRequired)>o)throw new Error("Payment amount exceeds maximum allowed");const h=await Zt(n,f,b,t),g={...s,headers:{...(s==null?void 0:s.headers)||{},"X-PAYMENT":h,"Access-Control-Expose-Headers":"X-PAYMENT-RESPONSE"}};return await e(a,g)}}var en=class{constructor(e){lr(this,"paymentFetch");const n=e.rpcUrl||qt(e.network);this.paymentFetch=Qt(fetch.bind(window),e.wallet,n,e.maxPaymentAmount||BigInt(0))}async fetch(e,n){return this.paymentFetch(e,n)}};function rn(e){return new en(e)}function Er(e){const[n,t]=V.useState("idle"),[o,a]=V.useState(null),[s,d]=V.useState(null),[l,f]=V.useState(!1),p=V.useCallback(()=>{t("idle"),a(null),d(null),f(!1)},[]);return{pay:V.useCallback(async(h,g)=>{var m;try{if(f(!0),t("pending"),a(null),e.maxPaymentAmount&&h>e.maxPaymentAmount)throw new Error(`Payment amount ${h} exceeds maximum allowed ${e.maxPaymentAmount}`);const S=((m=e.wallet.publicKey)==null?void 0:m.toString())||e.wallet.address;if(!S)throw new Error("Wallet not connected");const E=rn({wallet:e.wallet,network:e.network,rpcUrl:e.rpcUrl,maxPaymentAmount:e.maxPaymentAmount?BigInt(Math.floor(e.maxPaymentAmount*1e6)):void 0}),y="https://x402.payai.network/api/solana/paid-content",k=e.apiEndpoint||y;console.log("Initiating x402 payment:",{endpoint:k,isDemo:k===y,amount:h,description:g,wallet:S,network:e.network});const M=await E.fetch(k,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:g,amount:h})});if(!M.ok)throw new Error(`Payment request failed: ${M.statusText}`);const D=await M.json();console.log("Payment successful:",D);const $=M.headers.get("X-PAYMENT-RESPONSE");let G=`tx_${Date.now()}`;if($)try{const W=JSON.parse(atob($));G=W.transactionId||W.signature||G,console.log("Payment details:",W)}catch(W){console.warn("Could not decode payment response:",W)}return d(G),t("success"),f(!1),G}catch(S){const E=S instanceof Error?S:new Error("Payment failed");return a(E),t("error"),f(!1),null}},[e]),isLoading:l,status:n,error:o,transactionId:s,reset:p}}const kr=({amount:e,description:n,wallet:t,network:o="solana-devnet",rpcUrl:a,apiEndpoint:s,treasuryAddress:d,facilitatorUrl:l,theme:f="solana",showBalance:p=!0,showNetworkInfo:b=!0,showPaymentDetails:h=!0,classNames:g,customStyles:m,maxPaymentAmount:S,onPaymentStart:E,onPaymentSuccess:y,onPaymentError:k,onWalletConnect:C,children:M})=>{const[D,$]=V.useState(!1),[G,W]=V.useState("0.00"),{pay:Q,isLoading:X,status:Y,error:z,transactionId:P}=Er({wallet:t,network:o,rpcUrl:a,apiEndpoint:s,treasuryAddress:d,facilitatorUrl:l,maxPaymentAmount:S});V.useEffect(()=>{var Z;const H=((Z=t.publicKey)==null?void 0:Z.toString())||t.address;H&&(C==null||C(H),st(H,o,a).then(W))},[t,o,C]),V.useEffect(()=>{Y==="success"&&P&&($(!0),y==null||y(P))},[Y,P,y]),V.useEffect(()=>{z&&(k==null||k(z))},[z,k]);const K=async()=>{E==null||E(),await Q(e,n)};if(D)return c.jsx(c.Fragment,{children:M});const B=()=>{switch(f){case"solana":return"border-solana-primary/20";case"dark":return"bg-card";case"light":return"bg-background";default:return""}};return c.jsx("div",{className:I("flex items-center justify-center min-h-screen p-4","bg-gradient-to-br from-slate-900 via-slate-800 to-slate-900",g==null?void 0:g.container),style:m==null?void 0:m.container,children:c.jsxs(je,{className:I("w-full max-w-lg shadow-2xl border-0 bg-white/95 backdrop-blur-sm",B(),g==null?void 0:g.card),style:m==null?void 0:m.card,children:[c.jsxs(De,{className:"text-center pb-6",children:[c.jsx("div",{className:"mx-auto w-16 h-16 bg-solana-gradient rounded-full flex items-center justify-center mb-4",children:c.jsx("svg",{className:"w-8 h-8 text-white",fill:"currentColor",viewBox:"0 0 24 24",children:c.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})})}),c.jsx(Fe,{className:I("text-3xl font-bold bg-solana-gradient bg-clip-text text-transparent",g==null?void 0:g.text),style:m==null?void 0:m.text,children:"Unlock Premium Access"}),c.jsx(Le,{className:"text-lg text-slate-600 mt-2",children:n})]}),c.jsxs(Ee,{className:"space-y-6",children:[c.jsx($e,{wallet:t,balance:p?G:void 0,network:b?o:void 0,showBalance:p}),h&&c.jsxs("div",{className:"bg-gradient-to-r from-slate-50 to-slate-100 rounded-xl p-6 border border-slate-200",children:[c.jsxs("div",{className:"flex justify-between items-center mb-2",children:[c.jsx("span",{className:"text-sm font-medium text-slate-600",children:"Payment Amount"}),c.jsxs("span",{className:"text-2xl font-bold text-slate-900",children:["$",e.toFixed(2)]})]}),c.jsxs("div",{className:"flex justify-between items-center",children:[c.jsx("span",{className:"text-xs text-slate-500",children:"Currency"}),c.jsx("span",{className:"text-sm font-semibold text-slate-700 bg-slate-200 px-2 py-1 rounded-md",children:"USDC"})]}),S&&c.jsxs("div",{className:"flex justify-between items-center mt-2",children:[c.jsx("span",{className:"text-xs text-slate-500",children:"Maximum Amount"}),c.jsxs("span",{className:"text-xs text-slate-600",children:["$",S.toFixed(2)]})]})]}),Y!=="idle"&&c.jsx(Ve,{status:Y,message:z==null?void 0:z.message,className:g==null?void 0:g.status,style:m==null?void 0:m.status}),c.jsx(Be,{amount:e,description:n,onClick:K,loading:X,disabled:X,className:I("w-full h-12 text-lg font-semibold",g==null?void 0:g.button),style:m==null?void 0:m.button}),z&&c.jsx("div",{className:"bg-red-50 border border-red-200 rounded-lg p-4",children:c.jsxs("p",{className:"text-sm text-red-800 text-center",children:[c.jsx("span",{className:"font-semibold",children:"Payment Error:"})," ",z.message]})}),c.jsx("div",{className:"bg-amber-50 border border-amber-200 rounded-lg p-4",children:c.jsxs("p",{className:"text-xs text-amber-800 text-center",children:[c.jsx("span",{className:"font-semibold",children:"Live Payments:"})," Uses PayAI facilitator on Solana Mainnet.",c.jsx("br",{}),"Requires real USDC balance. Test payments are refunded automatically."]})})]})]})})};kr.displayName="X402Paywall";exports.Badge=Ue;exports.Button=We;exports.Card=je;exports.CardContent=Ee;exports.CardDescription=Le;exports.CardHeader=De;exports.CardTitle=Fe;exports.PaymentButton=Be;exports.PaymentStatus=Ve;exports.Spinner=ve;exports.WalletSection=$e;exports.X402Paywall=kr;exports.cn=I;exports.useX402Payment=Er;
|
|
31
|
+
//# sourceMappingURL=index.js.map
|