Documentation
Examples
Complete examples and use cases for PyHard integration
Basic Integration
Simple subscription creation
1import {
2 PyHardProvider,
3 WalletConnect,
4 SubscriptionQRGenerator
5} from 'pyhard-vendor-sdk';
6
7function MyApp() {
8 return (
9 <PyHardProvider>
10 <div className="max-w-md mx-auto p-6 space-y-6">
11 <WalletConnect />
12 <SubscriptionQRGenerator
13 onQRGenerated={(qrData) => {
14 console.log('QR Generated:', qrData);
15 }}
16 />
17 </div>
18 </PyHardProvider>
19 );
20}Complete Dashboard
Full vendor dashboard with all features
1import {
2 PyHardProvider,
3 WalletConnect,
4 SubscriptionQRGenerator,
5 PaymentQRGenerator,
6 SubscriptionList,
7 PaymentHistory,
8 useWallet,
9 useSubscriptions
10} from 'pyhard-vendor-sdk';
11
12function VendorDashboard() {
13 const { address } = useWallet();
14 const { subscriptions } = useSubscriptions(address);
15
16 return (
17 <PyHardProvider>
18 <div className="max-w-6xl mx-auto p-6">
19 <WalletConnect />
20 <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
21 <SubscriptionQRGenerator />
22 <PaymentQRGenerator subscriptionId="123" />
23 </div>
24 <SubscriptionList vendorAddress={address} />
25 <PaymentHistory subscriptionId="123" smartWalletAddress="0x..." />
26 </div>
27 </PyHardProvider>
28 );
29}Custom Styling
Headless components with custom styling
1import { HeadlessSubscriptionQRGenerator } from 'pyhard-vendor-sdk';
2
3function CustomSubscriptionForm() {
4 return (
5 <HeadlessSubscriptionQRGenerator>
6 {({
7 amount,
8 setAmount,
9 interval,
10 setInterval,
11 generateQR,
12 qrData
13 }) => (
14 <div className="bg-white p-6 rounded-lg shadow-lg">
15 <h2 className="text-2xl font-bold mb-4">Create Subscription</h2>
16 <div className="space-y-4">
17 <div>
18 <label className="block text-sm font-medium mb-2">
19 Amount (PYUSD)
20 </label>
21 <input
22 type="number"
23 value={amount}
24 onChange={(e) => setAmount(e.target.value)}
25 className="w-full p-2 border rounded"
26 />
27 </div>
28 <div>
29 <label className="block text-sm font-medium mb-2">
30 Interval
31 </label>
32 <select
33 value={interval}
34 onChange={(e) => setInterval(e.target.value)}
35 className="w-full p-2 border rounded"
36 >
37 <option value="daily">Daily</option>
38 <option value="weekly">Weekly</option>
39 <option value="monthly">Monthly</option>
40 </select>
41 </div>
42 <button
43 onClick={generateQR}
44 className="w-full bg-blue-600 text-white py-2 px-4 rounded hover:bg-blue-700"
45 >
46 Generate QR Code
47 </button>
48 {qrData && (
49 <div className="text-center">
50 <img src={qrData.qrCode} alt="Subscription QR" />
51 <p className="text-sm text-gray-600 mt-2">
52 Scan with PyHard mobile app
53 </p>
54 </div>
55 )}
56 </div>
57 </div>
58 )}
59 </HeadlessSubscriptionQRGenerator>
60 );
61}