@phala/pay 0.8.3 → 0.9.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 +20 -83
- package/dist/checkout.d.ts +4 -2
- package/dist/checkout.d.ts.map +1 -1
- package/dist/checkout.js +16 -1
- package/dist/checkout.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/shared/checkout-params.d.ts +7 -0
- package/dist/shared/checkout-params.d.ts.map +1 -0
- package/dist/shared/checkout-params.js +2 -0
- package/dist/shared/checkout-params.js.map +1 -0
- package/package.json +12 -30
- package/src/checkout.ts +19 -2
- package/src/index.ts +5 -2
- package/src/shared/checkout-params.ts +6 -0
- package/dist/react/Checkout.d.ts +0 -43
- package/dist/react/Checkout.d.ts.map +0 -1
- package/dist/react/Checkout.js +0 -195
- package/dist/react/Checkout.js.map +0 -1
- package/dist/react/DepositAddress.d.ts +0 -32
- package/dist/react/DepositAddress.d.ts.map +0 -1
- package/dist/react/DepositAddress.js +0 -131
- package/dist/react/DepositAddress.js.map +0 -1
- package/dist/react/Field.d.ts +0 -7
- package/dist/react/Field.d.ts.map +0 -1
- package/dist/react/Field.js +0 -21
- package/dist/react/Field.js.map +0 -1
- package/dist/react/Icons.d.ts +0 -17
- package/dist/react/Icons.d.ts.map +0 -1
- package/dist/react/Icons.js +0 -18
- package/dist/react/Icons.js.map +0 -1
- package/dist/react/QrCode.d.ts +0 -8
- package/dist/react/QrCode.d.ts.map +0 -1
- package/dist/react/QrCode.js +0 -20
- package/dist/react/QrCode.js.map +0 -1
- package/dist/react/appearance.d.ts +0 -5
- package/dist/react/appearance.d.ts.map +0 -1
- package/dist/react/appearance.js +0 -2
- package/dist/react/appearance.js.map +0 -1
- package/dist/react/icon-paths.d.ts +0 -13
- package/dist/react/icon-paths.d.ts.map +0 -1
- package/dist/react/icon-paths.js +0 -14
- package/dist/react/icon-paths.js.map +0 -1
- package/dist/react/index.d.ts +0 -6
- package/dist/react/index.d.ts.map +0 -1
- package/dist/react/index.js +0 -6
- package/dist/react/index.js.map +0 -1
- package/dist/react/useCheckout.d.ts +0 -9
- package/dist/react/useCheckout.d.ts.map +0 -1
- package/dist/react/useCheckout.js +0 -32
- package/dist/react/useCheckout.js.map +0 -1
- package/dist/server/addresses.d.ts +0 -78
- package/dist/server/addresses.d.ts.map +0 -1
- package/dist/server/addresses.js +0 -118
- package/dist/server/addresses.js.map +0 -1
- package/dist/server/index.d.ts +0 -12
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js +0 -12
- package/dist/server/index.js.map +0 -1
- package/dist/server/sweeps.d.ts +0 -78
- package/dist/server/sweeps.d.ts.map +0 -1
- package/dist/server/sweeps.js +0 -117
- package/dist/server/sweeps.js.map +0 -1
- package/dist/server/webhook.d.ts +0 -61
- package/dist/server/webhook.d.ts.map +0 -1
- package/dist/server/webhook.js +0 -154
- package/dist/server/webhook.js.map +0 -1
- package/src/css.d.ts +0 -1
- package/src/react/Checkout.tsx +0 -475
- package/src/react/DepositAddress.tsx +0 -240
- package/src/react/Field.tsx +0 -46
- package/src/react/Icons.tsx +0 -43
- package/src/react/QrCode.tsx +0 -39
- package/src/react/appearance.ts +0 -4
- package/src/react/icon-paths.tsx +0 -13
- package/src/react/index.ts +0 -7
- package/src/react/useCheckout.ts +0 -58
- package/src/server/addresses.ts +0 -223
- package/src/server/index.ts +0 -38
- package/src/server/sweeps.ts +0 -197
- package/src/server/webhook.ts +0 -208
- package/src/styles.css +0 -80
package/dist/react/Checkout.js
DELETED
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { useEffect, useId, useRef, useState } from "react";
|
|
4
|
-
import { networkName, transactionUrl } from "../chains.js";
|
|
5
|
-
import { formatAmount, formatCountdown, formatMinorAmount, formatTokenAmount, formatWait, tokenAmount, } from "../format.js";
|
|
6
|
-
import { quoteTransfer } from "../payment.js";
|
|
7
|
-
import { WalletError, payWithWallet, watchWallets, } from "../wallet.js";
|
|
8
|
-
import { AssetIcon, NetworkIcon } from "./Icons.js";
|
|
9
|
-
import { Field } from "./Field.js";
|
|
10
|
-
import { QrCode } from "./QrCode.js";
|
|
11
|
-
import { useCheckout } from "./useCheckout.js";
|
|
12
|
-
const METHODS = [
|
|
13
|
-
{ id: "wallet", label: "Wallet" },
|
|
14
|
-
{ id: "qr", label: "QR code" },
|
|
15
|
-
{ id: "manual", label: "Manual" },
|
|
16
|
-
];
|
|
17
|
-
/** A checkout for one quote: pay from a browser wallet, by QR code, or manually, with live status. */
|
|
18
|
-
export function Checkout({ clientSecret, expectedAddress, apiBase, onSuccess, onExpire, onChange, onWalletError, appearance, pollInterval, className, buttonText = "Pay with crypto", walletClient, }) {
|
|
19
|
-
const { status, quote, error, refresh } = useCheckout({
|
|
20
|
-
clientSecret,
|
|
21
|
-
expectedAddress,
|
|
22
|
-
apiBase,
|
|
23
|
-
...(pollInterval === undefined ? {} : { pollInterval }),
|
|
24
|
-
});
|
|
25
|
-
const [txHash, setTxHash] = useState(null);
|
|
26
|
-
const now = useNow(status === "waiting");
|
|
27
|
-
const callbacks = useRef({ onSuccess, onExpire, onChange });
|
|
28
|
-
const state = useRef({ status, quote, error });
|
|
29
|
-
useEffect(() => {
|
|
30
|
-
callbacks.current = { onSuccess, onExpire, onChange };
|
|
31
|
-
state.current = { status, quote, error };
|
|
32
|
-
});
|
|
33
|
-
// Once per status change, not on every poll.
|
|
34
|
-
useEffect(() => {
|
|
35
|
-
callbacks.current.onChange?.(state.current);
|
|
36
|
-
}, [status]);
|
|
37
|
-
const notified = useRef(new Set());
|
|
38
|
-
useEffect(() => {
|
|
39
|
-
if (quote === null) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
if (status === "credited") {
|
|
43
|
-
const key = `${quote.id}:success`;
|
|
44
|
-
if (!notified.current.has(key)) {
|
|
45
|
-
notified.current.add(key);
|
|
46
|
-
callbacks.current.onSuccess?.(quote);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
else if (status === "expired" || status === "canceled") {
|
|
50
|
-
const key = `${quote.id}:expire`;
|
|
51
|
-
if (!notified.current.has(key)) {
|
|
52
|
-
notified.current.add(key);
|
|
53
|
-
callbacks.current.onExpire?.(quote);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}, [status, quote]);
|
|
57
|
-
return (_jsxs("div", { className: className === undefined ? "pp-root" : `pp-root ${className}`, "data-theme": appearance?.theme ?? "light", children: [quote !== null && (_jsxs(_Fragment, { children: [_jsxs("p", { className: "pp-amount", children: [_jsx(AssetIcon, { asset: quote.asset, size: 20 }), " ", formatTokenAmount(quote), " ", quote.asset.toUpperCase()] }), _jsxs("p", { className: "pp-subtitle", children: [formatAmount(quote), " top-up \u00B7 ", _jsx(NetworkIcon, { chainId: quote.chain_id, size: 16 }), " ", networkName(quote.chain_id), !quote.livemode && _jsx("span", { className: "pp-badge", children: " \u00B7 Test mode" })] })] })), _jsx(StatusLine, { status: status, quote: quote, now: now, error: error }), txHash !== null && quote !== null && _jsx(Transaction, { hash: txHash, chainId: quote.chain_id }), status === "waiting" && quote !== null && (_jsx(PaymentOptions, { quote: quote, buttonText: buttonText, walletClient: walletClient, onSent: (hash) => {
|
|
58
|
-
setTxHash(hash);
|
|
59
|
-
refresh();
|
|
60
|
-
}, onWalletError: onWalletError }))] }));
|
|
61
|
-
}
|
|
62
|
-
function StatusLine({ status, quote, now, error, }) {
|
|
63
|
-
const tone = status === "credited"
|
|
64
|
-
? "success"
|
|
65
|
-
: ["rejected", "reversed", "expired", "canceled", "error"].includes(status)
|
|
66
|
-
? "danger"
|
|
67
|
-
: "neutral";
|
|
68
|
-
return (_jsxs("div", { className: "pp-status", "data-tone": tone, children: [_jsxs("span", { role: "status", "aria-live": "polite", children: [statusMessage(status, quote, error?.code), error !== null && status !== "error" ? " (reconnecting…)" : ""] }), status === "waiting" && quote !== null && (_jsx("span", { className: "pp-countdown", "aria-label": "Time left to pay", children: formatCountdown(quote.expires_at, now) }))] }));
|
|
69
|
-
}
|
|
70
|
-
function statusMessage(status, quote, code) {
|
|
71
|
-
switch (status) {
|
|
72
|
-
case "loading":
|
|
73
|
-
return "Loading payment details…";
|
|
74
|
-
case "waiting":
|
|
75
|
-
return "Waiting for your payment";
|
|
76
|
-
case "seen":
|
|
77
|
-
return seenMessage(quote);
|
|
78
|
-
case "confirming":
|
|
79
|
-
return "Confirmed on chain, crediting…";
|
|
80
|
-
case "credited":
|
|
81
|
-
return creditedMessage(quote);
|
|
82
|
-
case "rejected":
|
|
83
|
-
return "This payment cannot be credited. Contact support with your transaction.";
|
|
84
|
-
case "reversed":
|
|
85
|
-
return "Payment reversed: a chain reorganization replaced it and its credit was removed. Check your wallet, then start a new top-up.";
|
|
86
|
-
case "expired":
|
|
87
|
-
return "Quote expired. Do not send funds; start a new top-up.";
|
|
88
|
-
case "canceled":
|
|
89
|
-
return "Quote canceled. Do not send funds.";
|
|
90
|
-
case "error":
|
|
91
|
-
return code === "address_mismatch"
|
|
92
|
-
? "This payment address could not be verified. Do not send funds; contact support."
|
|
93
|
-
: "This payment link is not valid. Start a new top-up.";
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
function seenMessage(quote) {
|
|
97
|
-
if (quote === null) {
|
|
98
|
-
return "Received, crediting after confirmation";
|
|
99
|
-
}
|
|
100
|
-
const wait = formatWait(quote.typical_credit_seconds);
|
|
101
|
-
return quote.confirmations === null
|
|
102
|
-
? `Received, crediting in ${wait}`
|
|
103
|
-
: `Received, ${quote.confirmations} confirmation${quote.confirmations === 1 ? "" : "s"}. Crediting in ${wait}`;
|
|
104
|
-
}
|
|
105
|
-
/** What was credited and, when the payment was valued at the market price, the quote it missed. */
|
|
106
|
-
function creditedMessage(quote) {
|
|
107
|
-
if (quote?.amount_credited == null) {
|
|
108
|
-
return "Payment credited";
|
|
109
|
-
}
|
|
110
|
-
const credited = formatMinorAmount(quote, quote.amount_credited);
|
|
111
|
-
if (quote.amount_credited < quote.amount) {
|
|
112
|
-
return `Payment credited: ${credited} of ${formatAmount(quote)}`;
|
|
113
|
-
}
|
|
114
|
-
if (quote.amount_credited > quote.amount) {
|
|
115
|
-
return `Payment credited: ${credited} (${formatAmount(quote)} quoted)`;
|
|
116
|
-
}
|
|
117
|
-
return `Payment credited: ${credited}`;
|
|
118
|
-
}
|
|
119
|
-
function Transaction({ hash, chainId }) {
|
|
120
|
-
const url = transactionUrl(chainId, hash);
|
|
121
|
-
return (_jsxs("p", { className: "pp-tx", children: ["Transaction sent:", " ", url === undefined ? (_jsx("span", { className: "pp-value", children: hash })) : (_jsx("a", { className: "pp-value", href: url, target: "_blank", rel: "noreferrer", children: hash }))] }));
|
|
122
|
-
}
|
|
123
|
-
function PaymentOptions({ quote, buttonText, walletClient, onSent, onWalletError, }) {
|
|
124
|
-
const [selectedMethod, setMethod] = useState(null);
|
|
125
|
-
const [discovered, setDiscovered] = useState([]);
|
|
126
|
-
useEffect(() => (walletClient === undefined ? watchWallets(setDiscovered) : undefined), [walletClient]);
|
|
127
|
-
const method = selectedMethod ?? (walletClient !== undefined || discovered.length > 0 ? "wallet" : "qr");
|
|
128
|
-
const id = useId();
|
|
129
|
-
const tabs = useRef([]);
|
|
130
|
-
const amount = `${formatTokenAmount(quote)} ${quote.asset.toUpperCase()}`;
|
|
131
|
-
const onKeyDown = (event) => {
|
|
132
|
-
const index = METHODS.findIndex((m) => m.id === method);
|
|
133
|
-
const next = event.key === "ArrowRight"
|
|
134
|
-
? (index + 1) % METHODS.length
|
|
135
|
-
: event.key === "ArrowLeft"
|
|
136
|
-
? (index - 1 + METHODS.length) % METHODS.length
|
|
137
|
-
: event.key === "Home"
|
|
138
|
-
? 0
|
|
139
|
-
: event.key === "End"
|
|
140
|
-
? METHODS.length - 1
|
|
141
|
-
: null;
|
|
142
|
-
const target = next === null ? undefined : METHODS[next];
|
|
143
|
-
if (next !== null && target !== undefined) {
|
|
144
|
-
event.preventDefault();
|
|
145
|
-
setMethod(target.id);
|
|
146
|
-
tabs.current[next]?.focus();
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
return (_jsxs(_Fragment, { children: [_jsxs("p", { className: "pp-notice", children: ["Send ", _jsxs("strong", { children: ["exactly ", amount] }), " on ", networkName(quote.chain_id), " in one transfer before the timer ends. Otherwise it\u2019s credited at the market rate."] }), _jsx("div", { className: "pp-tabs", role: "tablist", "aria-label": "Payment method", onKeyDown: onKeyDown, children: METHODS.map((m, index) => (_jsx("button", { ref: (element) => {
|
|
150
|
-
tabs.current[index] = element;
|
|
151
|
-
}, type: "button", role: "tab", className: "pp-tab", id: `${id}-tab-${m.id}`, "aria-label": m.id === "wallet" ? "Browser wallet" : m.id === "manual" ? "Manual transfer" : m.label, "aria-selected": method === m.id, "aria-controls": `${id}-panel-${m.id}`, tabIndex: method === m.id ? 0 : -1, onClick: () => setMethod(m.id), children: m.label }, m.id))) }), _jsxs("div", { role: "tabpanel", id: `${id}-panel-${method}`, "aria-labelledby": `${id}-tab-${method}`, tabIndex: 0, children: [method === "wallet" && (_jsx(WalletPanel, { quote: quote, buttonText: buttonText, walletClient: walletClient, discovered: discovered, onSent: onSent, onWalletError: onWalletError })), method === "qr" && (_jsxs("div", { className: "pp-qr-panel", children: [_jsx(QrCode, { value: quote.payment_uri, label: `Payment request for ${amount}` }), _jsxs("p", { className: "pp-message", children: ["Scan with your wallet app and check it shows ", amount, " on ", networkName(quote.chain_id), "."] })] })), method === "manual" && _jsx(ManualPanel, { quote: quote })] })] }));
|
|
152
|
-
}
|
|
153
|
-
function WalletPanel({ quote, buttonText, walletClient, discovered, onSent, onWalletError, }) {
|
|
154
|
-
const [step, setStep] = useState({ kind: "idle" });
|
|
155
|
-
const wallets = walletClient === undefined
|
|
156
|
-
? discovered.map(({ info: { uuid, name, icon }, provider }) => ({ id: uuid, name, icon, wallet: provider }))
|
|
157
|
-
: [{ id: "client", name: "your wallet", icon: "", wallet: walletClient }];
|
|
158
|
-
const pay = async ({ name, wallet }) => {
|
|
159
|
-
setStep({ kind: "pending", wallet: name });
|
|
160
|
-
try {
|
|
161
|
-
onSent(await payWithWallet(wallet, quote));
|
|
162
|
-
setStep({ kind: "idle" });
|
|
163
|
-
}
|
|
164
|
-
catch (error) {
|
|
165
|
-
setStep({
|
|
166
|
-
kind: "failed",
|
|
167
|
-
message: error instanceof WalletError ? error.message : "The payment could not be sent",
|
|
168
|
-
});
|
|
169
|
-
if (error instanceof WalletError) {
|
|
170
|
-
onWalletError?.(error, wallet);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
};
|
|
174
|
-
if (wallets.length === 0) {
|
|
175
|
-
return (_jsx("p", { className: "pp-message", children: "Install a browser wallet to pay here." }));
|
|
176
|
-
}
|
|
177
|
-
return (_jsxs("div", { className: "pp-wallets", children: [wallets.map((choice) => (_jsxs("button", { type: "button", className: "pp-button", disabled: step.kind === "pending", onClick: () => void pay(choice), "aria-label": walletClient === undefined ? `${buttonText} (${choice.name})` : buttonText, children: [choice.icon !== "" && _jsx("img", { src: choice.icon, alt: "" }), _jsx("span", { children: buttonText }), walletClient === undefined && _jsx("span", { className: "pp-wallet-name", children: choice.name })] }, choice.id))), _jsxs("p", { className: "pp-message", "data-tone": step.kind === "failed" ? "danger" : undefined, "aria-live": "polite", children: [step.kind === "pending" && `Confirm the payment in ${step.wallet}…`, step.kind === "failed" && step.message] })] }));
|
|
178
|
-
}
|
|
179
|
-
function ManualPanel({ quote }) {
|
|
180
|
-
const token = quoteTransfer(quote).token;
|
|
181
|
-
return (_jsxs(_Fragment, { children: [_jsxs("dl", { className: "pp-fields", children: [_jsx(Field, { label: "Network", value: `${networkName(quote.chain_id)} (chain ID ${quote.chain_id})` }), _jsx(Field, { label: `Token (${quote.asset.toUpperCase()}) contract`, value: token, copy: true }), _jsx(Field, { label: "Send to address", value: quote.address, copy: true }), _jsx(Field, { label: "Exact amount", value: formatTokenAmount(quote), copy: tokenAmount(quote) })] }), _jsxs("p", { className: "pp-message", children: ["Only ", quote.asset.toUpperCase(), " on ", networkName(quote.chain_id), " is credited. Exchange withdrawal fees must not reduce the amount received."] })] }));
|
|
182
|
-
}
|
|
183
|
-
/** The current time in milliseconds, updated every second while `active`. */
|
|
184
|
-
function useNow(active) {
|
|
185
|
-
const [now, setNow] = useState(() => Date.now());
|
|
186
|
-
useEffect(() => {
|
|
187
|
-
if (!active) {
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
const timer = setInterval(() => setNow(Date.now()), 1000);
|
|
191
|
-
return () => clearInterval(timer);
|
|
192
|
-
}, [active]);
|
|
193
|
-
return now;
|
|
194
|
-
}
|
|
195
|
-
//# sourceMappingURL=Checkout.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Checkout.js","sourceRoot":"","sources":["../../src/react/Checkout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { type DepositAddressDetails } from "../payment.js";
|
|
2
|
-
import type { Appearance } from "./appearance.js";
|
|
3
|
-
export interface DepositAddressProps {
|
|
4
|
-
/** `address` and `networks` from your backend's `POST /v1/deposit_addresses`. */
|
|
5
|
-
depositAddress: DepositAddressDetails;
|
|
6
|
-
/** The network shown first; the first of `networks` by default. */
|
|
7
|
-
chainId?: number;
|
|
8
|
-
/** The token shown first, for example `pha`; the network's first token by default. */
|
|
9
|
-
asset?: string;
|
|
10
|
-
/**
|
|
11
|
-
* The `client_secret` of the same response. With `apiBase`, the component follows the
|
|
12
|
-
* address's payments and shows each one within about a block of arriving: received with its
|
|
13
|
-
* confirmations, then credited, and states each network's typical credit time. Display only;
|
|
14
|
-
* credit from your `deposit.credited` webhook.
|
|
15
|
-
*/
|
|
16
|
-
clientSecret?: string;
|
|
17
|
-
/** The service origin, for example `https://pay.example.com`; needed with `clientSecret`. */
|
|
18
|
-
apiBase?: string;
|
|
19
|
-
/** Milliseconds between payment reads; default 3000. */
|
|
20
|
-
pollInterval?: number;
|
|
21
|
-
appearance?: Appearance;
|
|
22
|
-
className?: string;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* A customer's persistent deposit address: one address for every supported token on every
|
|
26
|
-
* supported network. The payer picks a network and a token; the component shows a QR code of that
|
|
27
|
-
* EIP-681 transfer request and the address and token contract to copy. Any amount of a supported
|
|
28
|
-
* token sent is credited at the market rate when it arrives; follow it from your backend's
|
|
29
|
-
* `deposit.credited` webhook.
|
|
30
|
-
*/
|
|
31
|
-
export declare function DepositAddress({ depositAddress, chainId, asset, clientSecret, apiBase, pollInterval, appearance, className, }: DepositAddressProps): import("react").JSX.Element;
|
|
32
|
-
//# sourceMappingURL=DepositAddress.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DepositAddress.d.ts","sourceRoot":"","sources":["../../src/react/DepositAddress.tsx"],"names":[],"mappings":"AAYA,OAAO,EAA0B,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKlD,MAAM,WAAW,mBAAmB;IAClC,iFAAiF;IACjF,cAAc,EAAE,qBAAqB,CAAC;IACtC,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAC7B,cAAc,EACd,OAAO,EACP,KAAK,EACL,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,UAAU,EACV,SAAS,GACV,EAAE,mBAAmB,+BAsFrB"}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useEffect, useId, useState } from "react";
|
|
4
|
-
import { formatUnits } from "viem";
|
|
5
|
-
import { networkName } from "../chains.js";
|
|
6
|
-
import { retrieveDepositAddress, } from "../deposit-address.js";
|
|
7
|
-
import { CheckoutError, pollDelay } from "../checkout.js";
|
|
8
|
-
import { formatWait } from "../format.js";
|
|
9
|
-
import { depositAddressTransfer } from "../payment.js";
|
|
10
|
-
import { AssetIcon, NetworkIcon } from "./Icons.js";
|
|
11
|
-
import { Field } from "./Field.js";
|
|
12
|
-
import { QrCode } from "./QrCode.js";
|
|
13
|
-
/**
|
|
14
|
-
* A customer's persistent deposit address: one address for every supported token on every
|
|
15
|
-
* supported network. The payer picks a network and a token; the component shows a QR code of that
|
|
16
|
-
* EIP-681 transfer request and the address and token contract to copy. Any amount of a supported
|
|
17
|
-
* token sent is credited at the market rate when it arrives; follow it from your backend's
|
|
18
|
-
* `deposit.credited` webhook.
|
|
19
|
-
*/
|
|
20
|
-
export function DepositAddress({ depositAddress, chainId, asset, clientSecret, apiBase, pollInterval, appearance, className, }) {
|
|
21
|
-
const { networks } = depositAddress;
|
|
22
|
-
const id = useId();
|
|
23
|
-
const view = useClientView(clientSecret, apiBase, pollInterval ?? 3000);
|
|
24
|
-
const payments = view?.payments ?? [];
|
|
25
|
-
const [selectedChain, setSelectedChain] = useState(chainId ?? networks[0]?.chain_id);
|
|
26
|
-
const [selectedAsset, setSelectedAsset] = useState(asset);
|
|
27
|
-
const network = networks.find((candidate) => candidate.chain_id === selectedChain) ?? networks[0];
|
|
28
|
-
if (network === undefined) {
|
|
29
|
-
throw new TypeError("the deposit address has no network");
|
|
30
|
-
}
|
|
31
|
-
const token = network.assets.find((candidate) => candidate.asset === selectedAsset) ?? network.assets[0];
|
|
32
|
-
if (token === undefined) {
|
|
33
|
-
throw new TypeError(`the deposit address takes no token on chain ${network.chain_id}`);
|
|
34
|
-
}
|
|
35
|
-
const { token: contract, to } = depositAddressTransfer(network, token);
|
|
36
|
-
const symbol = token.asset.toUpperCase();
|
|
37
|
-
const name = networkName(network.chain_id);
|
|
38
|
-
return (_jsxs("div", { className: className === undefined ? "pp-root" : `pp-root ${className}`, "data-theme": appearance?.theme ?? "light", children: [_jsx("p", { className: "pp-subtitle", children: depositAddress.address === null
|
|
39
|
-
? "Reusable deposit address; varies by network"
|
|
40
|
-
: "One reusable address for supported tokens and networks" }), networks.length > 1 && (_jsxs("fieldset", { className: "pp-choices", children: [_jsx("legend", { children: "Network" }), networks.map((each) => (_jsxs("label", { children: [_jsx("input", { type: "radio", name: `${id}-network`, checked: each.chain_id === network.chain_id, onChange: () => setSelectedChain(each.chain_id) }), _jsx(NetworkIcon, { chainId: each.chain_id, size: 16 }), " ", networkName(each.chain_id)] }, each.chain_id)))] })), network.assets.length > 1 && (_jsxs("fieldset", { className: "pp-choices", children: [_jsx("legend", { children: "Token" }), network.assets.map((each) => (_jsxs("label", { children: [_jsx("input", { type: "radio", name: `${id}-token`, checked: each.asset === token.asset, onChange: () => setSelectedAsset(each.asset) }), _jsx(AssetIcon, { asset: each.asset, size: 16 }), " ", each.asset.toUpperCase()] }, each.asset)))] })), _jsx("div", { className: "pp-qr-panel", children: _jsx(QrCode, { value: token.payment_uri, label: `Deposit address for ${symbol} on ${name}` }) }), _jsxs("dl", { className: "pp-fields", children: [_jsx(Field, { label: "Network", value: `${name} (chain ID ${network.chain_id})` }), _jsx(Field, { label: `Token (${symbol}) contract`, value: contract, copy: true }), _jsx(Field, { label: "Deposit address", value: to, copy: true })] }), payments.length > 0 && (_jsx("ul", { className: "pp-payments", "aria-live": "polite", "aria-label": "Payments", children: payments.map((payment) => (_jsx("li", { children: paymentMessage(payment) }, `${payment.chain_id}:${payment.tx_hash}:${payment.created}`))) })), _jsxs("p", { className: "pp-message", children: ["Send ", symbol, " on ", name, ". Unsupported tokens or networks are not credited.", " ", creditMessage(networks.map((each) => each.chain_id), view)] })] }));
|
|
41
|
-
}
|
|
42
|
-
/** The address's public view, read every `interval` while mounted; `null` without a secret. */
|
|
43
|
-
function useClientView(clientSecret, apiBase, interval) {
|
|
44
|
-
const key = clientSecret === undefined || apiBase === undefined ? "" : `${apiBase} ${clientSecret}`;
|
|
45
|
-
const [current, setCurrent] = useState({
|
|
46
|
-
key: "",
|
|
47
|
-
view: null,
|
|
48
|
-
});
|
|
49
|
-
useEffect(() => {
|
|
50
|
-
if (clientSecret === undefined || apiBase === undefined) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
const controller = new AbortController();
|
|
54
|
-
let stopped = false;
|
|
55
|
-
let timer;
|
|
56
|
-
let failures = 0;
|
|
57
|
-
const load = async () => {
|
|
58
|
-
let failure = null;
|
|
59
|
-
try {
|
|
60
|
-
const view = await retrieveDepositAddress({ clientSecret, apiBase, signal: controller.signal });
|
|
61
|
-
failures = 0;
|
|
62
|
-
if (!stopped) {
|
|
63
|
-
setCurrent({ key, view });
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
failures += 1;
|
|
68
|
-
// A secret that is not valid will not become valid: stop, keep showing the address.
|
|
69
|
-
if (error instanceof CheckoutError && error.code === "invalid_client_secret") {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
failure = error instanceof CheckoutError ? error : null;
|
|
73
|
-
}
|
|
74
|
-
if (!stopped) {
|
|
75
|
-
timer = setTimeout(() => void load(), pollDelay(interval, failures, failure));
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
void load();
|
|
79
|
-
return () => {
|
|
80
|
-
stopped = true;
|
|
81
|
-
controller.abort();
|
|
82
|
-
clearTimeout(timer);
|
|
83
|
-
};
|
|
84
|
-
}, [key, clientSecret, apiBase, interval]);
|
|
85
|
-
// Another address starts without the previous one's view.
|
|
86
|
-
return current.key === key && key !== "" ? current.view : null;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* When a payment on each of `chainIds` is credited, from `view`'s typical credit times, for
|
|
90
|
-
* example "usually in about 30 seconds on Ethereum and about 7 seconds on Base". Before the view
|
|
91
|
-
* is loaded it names no time.
|
|
92
|
-
*/
|
|
93
|
-
function creditMessage(chainIds, view) {
|
|
94
|
-
const names = new Map();
|
|
95
|
-
for (const network of view?.networks ?? []) {
|
|
96
|
-
if (chainIds.includes(network.chain_id)) {
|
|
97
|
-
const seconds = network.typical_credit_seconds;
|
|
98
|
-
names.set(seconds, [...(names.get(seconds) ?? []), networkName(network.chain_id)]);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
if (names.size === 0) {
|
|
102
|
-
return "Any amount is credited at the market rate after confirmation.";
|
|
103
|
-
}
|
|
104
|
-
const list = new Intl.ListFormat("en", { type: "conjunction" });
|
|
105
|
-
const [only, ...others] = names.keys();
|
|
106
|
-
const usually = only !== undefined && others.length === 0
|
|
107
|
-
? formatWait(only)
|
|
108
|
-
: list.format([...names].map(([seconds, on]) => `${formatWait(seconds)} on ${list.format(on)}`));
|
|
109
|
-
return `Any amount is credited at the market rate on arrival, usually in ${usually}.`;
|
|
110
|
-
}
|
|
111
|
-
function paymentMessage(payment) {
|
|
112
|
-
const amount = payment.asset === null || payment.decimals === null
|
|
113
|
-
? "A payment"
|
|
114
|
-
: `${formatUnits(BigInt(payment.amount_atomic), payment.decimals)} ${payment.asset.toUpperCase()}`;
|
|
115
|
-
const on = `on ${networkName(payment.chain_id)}`;
|
|
116
|
-
switch (payment.status) {
|
|
117
|
-
case "seen":
|
|
118
|
-
return payment.confirmations === null
|
|
119
|
-
? `${amount} received ${on}, crediting shortly`
|
|
120
|
-
: `${amount} received ${on}, ${payment.confirmations} confirmation${payment.confirmations === 1 ? "" : "s"}`;
|
|
121
|
-
case "confirming":
|
|
122
|
-
return `${amount} confirmed ${on}, crediting…`;
|
|
123
|
-
case "credited":
|
|
124
|
-
return `${amount} ${on} credited`;
|
|
125
|
-
case "rejected":
|
|
126
|
-
return `${amount} ${on} cannot be credited. Contact support with your transaction.`;
|
|
127
|
-
case "reversed":
|
|
128
|
-
return `${amount} ${on} was reversed: a chain reorganization replaced it and its credit was removed.`;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
//# sourceMappingURL=DepositAddress.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DepositAddress.js","sourceRoot":"","sources":["../../src/react/DepositAddress.tsx"],"names":[],"mappings":"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"}
|
package/dist/react/Field.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/** `copy` adds a copy button, copying `value`, or the given string when it differs from it. */
|
|
2
|
-
export declare function Field({ label, value, copy, }: {
|
|
3
|
-
label: string;
|
|
4
|
-
value: string;
|
|
5
|
-
copy?: boolean | string;
|
|
6
|
-
}): import("react").JSX.Element;
|
|
7
|
-
//# sourceMappingURL=Field.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/react/Field.tsx"],"names":[],"mappings":"AAEA,+FAA+F;AAC/F,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,KAAK,EACL,IAAY,GACb,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACzB,+BAYA"}
|
package/dist/react/Field.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useState } from "react";
|
|
3
|
-
/** `copy` adds a copy button, copying `value`, or the given string when it differs from it. */
|
|
4
|
-
export function Field({ label, value, copy = false, }) {
|
|
5
|
-
return (_jsxs("div", { className: "pp-field", children: [_jsx("dt", { children: label }), _jsxs("dd", { children: [_jsx("span", { className: copy === false ? undefined : "pp-value", children: value }), copy !== false && (_jsx(CopyButton, { value: typeof copy === "string" ? copy : value, label: label }))] })] }));
|
|
6
|
-
}
|
|
7
|
-
function CopyButton({ value, label }) {
|
|
8
|
-
const [copied, setCopied] = useState(null);
|
|
9
|
-
useEffect(() => {
|
|
10
|
-
if (copied === null) {
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
const timer = setTimeout(() => setCopied(null), 2000);
|
|
14
|
-
return () => clearTimeout(timer);
|
|
15
|
-
}, [copied]);
|
|
16
|
-
const onClick = () => {
|
|
17
|
-
navigator.clipboard.writeText(value).then(() => setCopied(true), () => setCopied(false));
|
|
18
|
-
};
|
|
19
|
-
return (_jsx("button", { type: "button", className: "pp-copy", onClick: onClick, "aria-label": `Copy ${label}`, children: _jsx("span", { "aria-live": "polite", children: copied === null ? "Copy" : copied ? "Copied" : "Copy failed" }) }));
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=Field.js.map
|
package/dist/react/Field.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Field.js","sourceRoot":"","sources":["../../src/react/Field.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,+FAA+F;AAC/F,MAAM,UAAU,KAAK,CAAC,EACpB,KAAK,EACL,KAAK,EACL,IAAI,GAAG,KAAK,GAKb;IACC,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aACvB,uBAAK,KAAK,GAAM,EAChB,yBACE,eAAM,SAAS,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,YAAG,KAAK,GAAQ,EACvE,IAAI,KAAK,KAAK,IAAI,CACjB,KAAC,UAAU,IAAC,KAAK,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,CAC7E,IACE,IACD,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAoC;IACpE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAiB,IAAI,CAAC,CAAC;IAC3D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACtD,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACb,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CACvC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EACrB,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CACvB,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,CACL,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAC,OAAO,EAAE,OAAO,gBAAc,QAAQ,KAAK,EAAE,YACrF,4BAAgB,QAAQ,YAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,GAAQ,GACvF,CACV,CAAC;AACJ,CAAC"}
|
package/dist/react/Icons.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export interface IconProps {
|
|
2
|
-
/** Width and height in pixels; default 18. No inline styles are injected. */
|
|
3
|
-
size?: number;
|
|
4
|
-
/** Default true next to visible text. Set false when the icon is used alone. */
|
|
5
|
-
decorative?: boolean;
|
|
6
|
-
}
|
|
7
|
-
export interface NetworkIconProps extends IconProps {
|
|
8
|
-
chainId: number;
|
|
9
|
-
}
|
|
10
|
-
export interface AssetIconProps extends IconProps {
|
|
11
|
-
asset: string;
|
|
12
|
-
}
|
|
13
|
-
/** Branded network icon; testnets reuse their mainnet family artwork. */
|
|
14
|
-
export declare function NetworkIcon({ chainId, ...props }: NetworkIconProps): import("react").JSX.Element;
|
|
15
|
-
/** Branded token icon, or a neutral first-letter monogram for unknown symbols. */
|
|
16
|
-
export declare function AssetIcon({ asset, ...props }: AssetIconProps): import("react").JSX.Element;
|
|
17
|
-
//# sourceMappingURL=Icons.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Icons.d.ts","sourceRoot":"","sources":["../../src/react/Icons.tsx"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IACxB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AACD,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAAG,OAAO,EAAE,MAAM,CAAA;CAAE;AACvE,MAAM,WAAW,cAAe,SAAQ,SAAS;IAAG,KAAK,EAAE,MAAM,CAAA;CAAE;AAqBnE,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,+BAElE;AAED,kFAAkF;AAClF,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BAE5D"}
|
package/dist/react/Icons.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { networkName, networkIconName } from "../chains.js";
|
|
4
|
-
import { assetIconName, iconMonogram } from "../icon-names.js";
|
|
5
|
-
import { ICON_PATHS } from "./icon-paths.js";
|
|
6
|
-
function Icon({ name, label, size = 18, decorative = true }) {
|
|
7
|
-
const pixels = Number.isFinite(size) && size > 0 ? size : 18;
|
|
8
|
-
return (_jsx("span", { className: "pp-icon-label", role: decorative ? undefined : "img", "aria-label": decorative ? undefined : label || "Unknown asset", children: _jsx("svg", { className: "pp-icon", xmlns: "http://www.w3.org/2000/svg", width: pixels, height: pixels, viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", focusable: "false", children: name === undefined ? _jsxs(_Fragment, { children: [_jsx("circle", { cx: "12", cy: "12", r: "11", fill: "currentColor", opacity: "0.12" }), _jsx("text", { x: "12", y: "16", textAnchor: "middle", fontFamily: "sans-serif", fontSize: "12", fill: "currentColor", children: iconMonogram(label) })] }) : ICON_PATHS[name] }) }));
|
|
9
|
-
}
|
|
10
|
-
/** Branded network icon; testnets reuse their mainnet family artwork. */
|
|
11
|
-
export function NetworkIcon({ chainId, ...props }) {
|
|
12
|
-
return _jsx(Icon, { ...props, name: networkIconName(chainId), label: networkName(chainId) });
|
|
13
|
-
}
|
|
14
|
-
/** Branded token icon, or a neutral first-letter monogram for unknown symbols. */
|
|
15
|
-
export function AssetIcon({ asset, ...props }) {
|
|
16
|
-
return _jsx(Icon, { ...props, name: assetIconName(asset), label: asset.trim().toUpperCase() });
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=Icons.js.map
|
package/dist/react/Icons.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Icons.js","sourceRoot":"","sources":["../../src/react/Icons.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAiB,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAW7C,SAAS,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,UAAU,GAAG,IAAI,EAGxD;IACC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,OAAO,CACL,eAAM,SAAS,EAAC,eAAe,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,gBACtD,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,eAAe,YAC7D,cAAK,SAAS,EAAC,SAAS,EAAC,KAAK,EAAC,4BAA4B,EAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACvF,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,EAAC,SAAS,EAAC,OAAO,YACnE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,8BACpB,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,cAAc,EAAC,OAAO,EAAC,MAAM,GAAG,EACpE,eAAM,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAC,UAAU,EAAC,YAAY,EAAC,QAAQ,EAAC,IAAI,EAAC,IAAI,EAAC,cAAc,YAAE,YAAY,CAAC,KAAK,CAAC,GAAQ,IAC7H,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAClB,GACD,CACR,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAoB;IACjE,OAAO,KAAC,IAAI,OAAK,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAI,CAAC;AAC1F,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAkB;IAC3D,OAAO,KAAC,IAAI,OAAK,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,GAAI,CAAC;AAC5F,CAAC"}
|
package/dist/react/QrCode.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export interface QrCodeProps {
|
|
2
|
-
value: string;
|
|
3
|
-
label: string;
|
|
4
|
-
size?: number;
|
|
5
|
-
}
|
|
6
|
-
/** A QR code as an SVG path, one unit per module. */
|
|
7
|
-
export declare function QrCode({ value, label, size }: QrCodeProps): import("react").JSX.Element;
|
|
8
|
-
//# sourceMappingURL=QrCode.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QrCode.d.ts","sourceRoot":"","sources":["../../src/react/QrCode.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qDAAqD;AACrD,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAU,EAAE,EAAE,WAAW,+BA4B/D"}
|
package/dist/react/QrCode.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo } from "react";
|
|
3
|
-
import { encode } from "uqr";
|
|
4
|
-
/** A QR code as an SVG path, one unit per module. */
|
|
5
|
-
export function QrCode({ value, label, size = 208 }) {
|
|
6
|
-
const { path, width } = useMemo(() => {
|
|
7
|
-
const { data, size: modules } = encode(value, { ecc: "M", border: 2 });
|
|
8
|
-
let d = "";
|
|
9
|
-
data.forEach((row, y) => {
|
|
10
|
-
row.forEach((dark, x) => {
|
|
11
|
-
if (dark) {
|
|
12
|
-
d += `M${x} ${y}h1v1h-1z`;
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
return { path: d, width: modules };
|
|
17
|
-
}, [value]);
|
|
18
|
-
return (_jsxs("svg", { className: "pp-qr", role: "img", "aria-label": label, width: size, height: size, viewBox: `0 0 ${width} ${width}`, shapeRendering: "crispEdges", children: [_jsx("rect", { width: width, height: width, fill: "#fff" }), _jsx("path", { d: path, fill: "#000" })] }));
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=QrCode.js.map
|
package/dist/react/QrCode.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QrCode.js","sourceRoot":"","sources":["../../src/react/QrCode.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAQ7B,qDAAqD;AACrD,MAAM,UAAU,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAG,GAAG,EAAe;IAC9D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACtB,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACtB,IAAI,IAAI,EAAE,CAAC;oBACT,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACrC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,CACL,eACE,SAAS,EAAC,OAAO,EACjB,IAAI,EAAC,KAAK,gBACE,KAAK,EACjB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,OAAO,KAAK,IAAI,KAAK,EAAE,EAChC,cAAc,EAAC,YAAY,aAE3B,eAAM,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,GAAG,EACjD,eAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,GAAG,IACzB,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"appearance.d.ts","sourceRoot":"","sources":["../../src/react/appearance.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B"}
|
package/dist/react/appearance.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"appearance.js","sourceRoot":"","sources":["../../src/react/appearance.ts"],"names":[],"mappings":""}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/** Generated from @web3icons/core@4.0.57 by scripts/generate-icons.mjs.
|
|
2
|
-
* SPDX-License-Identifier: MIT; Copyright (c) 2024 0xa3k5.
|
|
3
|
-
* See THIRD_PARTY_NOTICES for the full license. Do not edit.
|
|
4
|
-
*/
|
|
5
|
-
export declare const ICON_PATHS: {
|
|
6
|
-
usdc: import("react").JSX.Element;
|
|
7
|
-
usdt: import("react").JSX.Element;
|
|
8
|
-
pha: import("react").JSX.Element;
|
|
9
|
-
eth: import("react").JSX.Element;
|
|
10
|
-
ethereum: import("react").JSX.Element;
|
|
11
|
-
base: import("react").JSX.Element;
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=icon-paths.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icon-paths.d.ts","sourceRoot":"","sources":["../../src/react/icon-paths.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,UAAU;;;;;;;CAOtB,CAAC"}
|
package/dist/react/icon-paths.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/** Generated from @web3icons/core@4.0.57 by scripts/generate-icons.mjs.
|
|
3
|
-
* SPDX-License-Identifier: MIT; Copyright (c) 2024 0xa3k5.
|
|
4
|
-
* See THIRD_PARTY_NOTICES for the full license. Do not edit.
|
|
5
|
-
*/
|
|
6
|
-
export const ICON_PATHS = {
|
|
7
|
-
usdc: _jsxs(_Fragment, { children: [_jsx("path", { fill: "#0B53BF", d: "M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18" }), _jsx("path", { fill: "#fff", d: "M13.62 5.45v1.159a5.64 5.64 0 0 1 4.005 5.394 5.64 5.64 0 0 1-4.005 5.394v1.16a6.74 6.74 0 0 0 5.13-6.554 6.74 6.74 0 0 0-5.13-6.553m-7.245 6.553a5.64 5.64 0 0 1 4.005-5.394V5.45a6.74 6.74 0 0 0-5.13 6.553 6.74 6.74 0 0 0 5.13 6.553v-1.159a5.63 5.63 0 0 1-4.005-5.394" }), _jsx("path", { fill: "#fff", d: "M14.419 13.258c0-2.301-3.606-1.356-3.606-2.627 0-.456.366-.748 1.063-.748.833 0 1.12.405 1.21.95h1.147c-.102-1.024-.69-1.67-1.67-1.863v-.904h-1.125v.872c-1.075.137-1.75.762-1.75 1.693 0 2.312 3.611 1.445 3.611 2.694 0 .472-.455.787-1.226.787-1.007 0-1.339-.444-1.462-1.057H9.49c.073 1.122.764 1.823 1.947 1.999v.886h1.125v-.875c1.153-.149 1.856-.82 1.856-1.807" })] }),
|
|
8
|
-
usdt: _jsx(_Fragment, { children: _jsx("path", { fill: "#009393", d: "m12 19.2-9-8.88L6.433 4.8h11.134L21 10.32zm.9-8.1v-1.098c1.62.08 3.132.396 3.6.805-.544.477-2.493.824-4.5.824s-3.956-.347-4.5-.824c.463-.41 1.98-.72 3.6-.81V11.1zm-5.4-.297v.661c.463.41 1.975.72 3.6.81V14.7h1.8v-2.43c1.62-.081 3.136-.396 3.6-.806v-1.318c-.464-.41-1.98-.725-3.6-.81V8.4h2.7V7.05H8.4V8.4h2.7v.936c-1.625.085-3.137.4-3.6.81z" }) }),
|
|
9
|
-
pha: _jsxs(_Fragment, { children: [_jsx("circle", { cx: "12", cy: "12", r: "12", fill: "#252525" }), _jsx("path", { fill: "#D1FF52", fillRule: "evenodd", d: "M3 3h14.143v3.857H21V12h-3.857V6.857H6.857V12H3zm3.857 12.857h10.286V12H6.857zm0 0V21H3v-5.143z", clipRule: "evenodd" })] }),
|
|
10
|
-
eth: _jsxs(_Fragment, { children: [_jsx("path", { fill: "#8FFCF3", d: "M12 3v6.65l5.625 2.516z" }), _jsx("path", { fill: "#CABCF8", d: "m12 3-5.625 9.166L12 9.651z" }), _jsx("path", { fill: "#CBA7F5", d: "M12 16.477v4.522l5.625-7.784z" }), _jsx("path", { fill: "#74A0F3", d: "M12 21v-4.523l-5.625-3.262z" }), _jsx("path", { fill: "#CBA7F5", d: "m12 15.43 5.625-3.263L12 9.65z" }), _jsx("path", { fill: "#74A0F3", d: "M6.375 12.167 12 15.429V9.651z" }), _jsx("path", { fill: "#202699", fillRule: "evenodd", d: "m12 15.429-5.625-3.263L12 3l5.625 9.166zM6.749 11.9l5.16-8.41v6.115zm-.077.23 5.238-2.327v5.364zm5.418-2.327v5.364l5.233-3.038zm0-.198 5.16 2.295-5.16-8.41z", clipRule: "evenodd" }), _jsx("path", { fill: "#202699", fillRule: "evenodd", d: "M12 16.406 6.375 13.21 12 21l5.625-7.79zm-4.995-2.633 4.905 2.79v4.005zm5.085 2.79v4.005l4.905-6.795z", clipRule: "evenodd" })] }),
|
|
11
|
-
ethereum: _jsxs(_Fragment, { children: [_jsx("path", { fill: "#8FFCF3", d: "M12 3v6.651l5.625 2.516z" }), _jsx("path", { fill: "#CABCF8", d: "m12 3-5.625 9.166L12 9.653z" }), _jsx("path", { fill: "#CBA7F5", d: "M12 16.478V21l5.625-7.784z" }), _jsx("path", { fill: "#74A0F3", d: "M12 21v-4.522l-5.625-3.262z" }), _jsx("path", { fill: "#CBA7F5", d: "m12 15.43 5.625-3.263L12 9.652z" }), _jsx("path", { fill: "#74A0F3", d: "M6.375 12.167 12 15.43V9.652z" }), _jsx("path", { fill: "#202699", fillRule: "evenodd", d: "m12 15.43-5.625-3.263L12 3l5.624 9.166zm-5.252-3.528 5.161-8.41v6.114zm-.077.229 5.238-2.327v5.364zm5.418-2.327v5.364l5.234-3.037zm0-.198 5.161 2.296-5.161-8.41z", clipRule: "evenodd" }), _jsx("path", { fill: "#202699", fillRule: "evenodd", d: "m12 16.406-5.625-3.195L12 21l5.624-7.79zm-4.995-2.633 4.904 2.79v4.005zm5.084 2.79v4.005l4.905-6.795z", clipRule: "evenodd" })] }),
|
|
12
|
-
base: _jsx(_Fragment, { children: _jsx("path", { fill: "#00F", d: "M3 4.706c0-.585 0-.877.11-1.101.106-.215.28-.39.496-.495C3.83 3 4.122 3 4.706 3h14.588c.585 0 .876 0 1.101.11.215.105.389.28.494.495.111.225.111.517.111 1.101v14.588c0 .585 0 .876-.11 1.101-.106.215-.28.389-.495.494-.225.111-.517.111-1.101.111H4.706c-.585 0-.876 0-1.101-.11a1.08 1.08 0 0 1-.494-.495C3 20.17 3 19.878 3 19.294z" }) }),
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=icon-paths.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icon-paths.js","sourceRoot":"","sources":["../../src/react/icon-paths.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,8BAAE,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,sCAAsC,GAAE,EAAA,eAAM,IAAI,EAAC,MAAM,EAAC,CAAC,EAAC,6QAA6Q,GAAE,EAAA,eAAM,IAAI,EAAC,MAAM,EAAC,CAAC,EAAC,0WAA0W,GAAE,IAAG;IAC7uB,IAAI,EAAE,4BAAE,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,oVAAoV,GAAE,GAAG;IACxX,GAAG,EAAE,8BAAE,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,iGAAiG,EAAC,QAAQ,EAAC,SAAS,GAAE,IAAG;IACzN,GAAG,EAAE,8BAAE,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,yBAAyB,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,6BAA6B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,+BAA+B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,6BAA6B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,gCAAgC,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,gCAAgC,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,8JAA8J,EAAC,QAAQ,EAAC,SAAS,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,uGAAuG,EAAC,QAAQ,EAAC,SAAS,GAAE,IAAG;IACrtB,QAAQ,EAAE,8BAAE,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,0BAA0B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,6BAA6B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,4BAA4B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,6BAA6B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,iCAAiC,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,CAAC,EAAC,+BAA+B,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,mKAAmK,EAAC,QAAQ,EAAC,SAAS,GAAE,EAAA,eAAM,IAAI,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,uGAAuG,EAAC,QAAQ,EAAC,SAAS,GAAE,IAAG;IAC7tB,IAAI,EAAE,4BAAE,eAAM,IAAI,EAAC,MAAM,EAAC,CAAC,EAAC,yUAAyU,GAAE,GAAG;CAC3W,CAAC"}
|