@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.
Files changed (41) hide show
  1. package/README.md +238 -0
  2. package/dist/components/PaymentButton.d.ts +4 -0
  3. package/dist/components/PaymentButton.d.ts.map +1 -0
  4. package/dist/components/PaymentStatus.d.ts +4 -0
  5. package/dist/components/PaymentStatus.d.ts.map +1 -0
  6. package/dist/components/WalletSection.d.ts +4 -0
  7. package/dist/components/WalletSection.d.ts.map +1 -0
  8. package/dist/components/X402Paywall.d.ts +4 -0
  9. package/dist/components/X402Paywall.d.ts.map +1 -0
  10. package/dist/components/ui/badge.d.ts +10 -0
  11. package/dist/components/ui/badge.d.ts.map +1 -0
  12. package/dist/components/ui/button.d.ts +12 -0
  13. package/dist/components/ui/button.d.ts.map +1 -0
  14. package/dist/components/ui/card.d.ts +9 -0
  15. package/dist/components/ui/card.d.ts.map +1 -0
  16. package/dist/components/ui/spinner.d.ts +8 -0
  17. package/dist/components/ui/spinner.d.ts.map +1 -0
  18. package/dist/demo/App.d.ts +4 -0
  19. package/dist/demo/App.d.ts.map +1 -0
  20. package/dist/demo/main.d.ts +2 -0
  21. package/dist/demo/main.d.ts.map +1 -0
  22. package/dist/hooks/useX402Payment.d.ts +29 -0
  23. package/dist/hooks/useX402Payment.d.ts.map +1 -0
  24. package/dist/index.d.ts +13 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +31 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/index.mjs +3723 -0
  29. package/dist/index.mjs.map +1 -0
  30. package/dist/lib/balance.d.ts +19 -0
  31. package/dist/lib/balance.d.ts.map +1 -0
  32. package/dist/lib/utils.d.ts +4 -0
  33. package/dist/lib/utils.d.ts.map +1 -0
  34. package/dist/style.css +1 -0
  35. package/dist/types/index.d.ts +3 -0
  36. package/dist/types/index.d.ts.map +1 -0
  37. package/dist/types/paywall.d.ts +83 -0
  38. package/dist/types/paywall.d.ts.map +1 -0
  39. package/dist/types/theme.d.ts +34 -0
  40. package/dist/types/theme.d.ts.map +1 -0
  41. 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,4 @@
1
+ import { PaymentButtonProps } from '../types';
2
+ import * as React from 'react';
3
+ export declare const PaymentButton: React.ForwardRefExoticComponent<PaymentButtonProps & React.RefAttributes<HTMLButtonElement>>;
4
+ //# sourceMappingURL=PaymentButton.d.ts.map
@@ -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,4 @@
1
+ import { PaymentStatusProps } from '../types';
2
+ import * as React from 'react';
3
+ export declare const PaymentStatus: React.FC<PaymentStatusProps>;
4
+ //# sourceMappingURL=PaymentStatus.d.ts.map
@@ -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,4 @@
1
+ import { WalletSectionProps } from '../types';
2
+ import * as React from 'react';
3
+ export declare const WalletSection: React.FC<WalletSectionProps>;
4
+ //# sourceMappingURL=WalletSection.d.ts.map
@@ -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,4 @@
1
+ import { X402PaywallProps } from '../types';
2
+ import * as React from 'react';
3
+ export declare const X402Paywall: React.FC<X402PaywallProps>;
4
+ //# sourceMappingURL=X402Paywall.d.ts.map
@@ -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,4 @@
1
+
2
+ declare function App(): import("react/jsx-runtime").JSX.Element;
3
+ export default App;
4
+ //# sourceMappingURL=App.d.ts.map
@@ -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,2 @@
1
+
2
+ //# sourceMappingURL=main.d.ts.map
@@ -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"}
@@ -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