@daimo/sdk 1.0.1 → 1.0.2
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/dist/client/createDaimoClient.d.ts +2 -6
- package/dist/client/createDaimoClient.d.ts.map +1 -1
- package/dist/client/createDaimoClient.js +2 -1
- package/dist/client/createDaimoClient.js.map +1 -1
- package/dist/common/legacy/assert.d.ts +6 -0
- package/dist/common/legacy/assert.d.ts.map +1 -0
- package/dist/common/legacy/assert.js +25 -0
- package/dist/common/legacy/assert.js.map +1 -0
- package/dist/common/legacy/client.d.ts +67 -0
- package/dist/common/legacy/client.d.ts.map +1 -0
- package/dist/common/legacy/client.js +55 -0
- package/dist/common/legacy/client.js.map +1 -0
- package/dist/common/legacy/debug.d.ts +5 -0
- package/dist/common/legacy/debug.d.ts.map +1 -0
- package/dist/common/legacy/debug.js +21 -0
- package/dist/common/legacy/debug.js.map +1 -0
- package/dist/common/legacy/format.d.ts +16 -0
- package/dist/common/legacy/format.d.ts.map +1 -0
- package/dist/common/legacy/format.js +34 -0
- package/dist/common/legacy/format.js.map +1 -0
- package/dist/common/legacy/index.d.ts +11 -0
- package/dist/common/legacy/index.d.ts.map +1 -0
- package/dist/common/legacy/index.js +11 -0
- package/dist/common/legacy/index.js.map +1 -0
- package/dist/common/legacy/primitiveTypes.d.ts +11 -0
- package/dist/common/legacy/primitiveTypes.d.ts.map +1 -0
- package/dist/common/legacy/primitiveTypes.js +14 -0
- package/dist/common/legacy/primitiveTypes.js.map +1 -0
- package/dist/common/legacy/session.d.ts +246 -0
- package/dist/common/legacy/session.d.ts.map +1 -0
- package/dist/common/legacy/session.js +124 -0
- package/dist/common/legacy/session.js.map +1 -0
- package/dist/common/legacy/try.d.ts +4 -0
- package/dist/common/legacy/try.d.ts.map +1 -0
- package/dist/common/legacy/try.js +26 -0
- package/dist/common/legacy/try.js.map +1 -0
- package/dist/hooks/DaimoClientContext.d.ts +7 -0
- package/dist/hooks/DaimoClientContext.d.ts.map +1 -0
- package/dist/hooks/DaimoClientContext.js +15 -0
- package/dist/hooks/DaimoClientContext.js.map +1 -0
- package/dist/hooks/formatUserError.d.ts +3 -0
- package/dist/hooks/formatUserError.d.ts.map +1 -0
- package/dist/hooks/formatUserError.js +30 -0
- package/dist/hooks/formatUserError.js.map +1 -0
- package/dist/hooks/index.d.ts +12 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +9 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/locale.d.ts +7 -0
- package/dist/hooks/locale.d.ts.map +1 -0
- package/dist/hooks/locale.js +15 -0
- package/dist/hooks/locale.js.map +1 -0
- package/dist/hooks/locales/en.d.ts +60 -0
- package/dist/hooks/locales/en.d.ts.map +1 -0
- package/dist/hooks/locales/en.js +76 -0
- package/dist/hooks/locales/en.js.map +1 -0
- package/dist/hooks/locales/es.d.ts +4 -0
- package/dist/hooks/locales/es.d.ts.map +1 -0
- package/dist/hooks/locales/es.js +60 -0
- package/dist/hooks/locales/es.js.map +1 -0
- package/dist/hooks/navEvent.d.ts +60 -0
- package/dist/hooks/navEvent.d.ts.map +1 -0
- package/dist/hooks/navEvent.js +16 -0
- package/dist/hooks/navEvent.js.map +1 -0
- package/dist/hooks/types.d.ts +71 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +14 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/hooks/usePaymentCallbacks.d.ts +15 -0
- package/dist/hooks/usePaymentCallbacks.d.ts.map +1 -0
- package/dist/hooks/usePaymentCallbacks.js +27 -0
- package/dist/hooks/usePaymentCallbacks.js.map +1 -0
- package/dist/hooks/useSessionNav.d.ts +31 -0
- package/dist/hooks/useSessionNav.d.ts.map +1 -0
- package/dist/hooks/useSessionNav.js +439 -0
- package/dist/hooks/useSessionNav.js.map +1 -0
- package/dist/hooks/useSessionPolling.d.ts +10 -0
- package/dist/hooks/useSessionPolling.d.ts.map +1 -0
- package/dist/hooks/useSessionPolling.js +61 -0
- package/dist/hooks/useSessionPolling.js.map +1 -0
- package/dist/web/ChooseOptionPage.d.ts +9 -0
- package/dist/web/ChooseOptionPage.d.ts.map +1 -0
- package/dist/web/ChooseOptionPage.js +51 -0
- package/dist/web/ChooseOptionPage.js.map +1 -0
- package/dist/web/ConfirmationPage.d.ts +32 -0
- package/dist/web/ConfirmationPage.d.ts.map +1 -0
- package/dist/web/ConfirmationPage.js +72 -0
- package/dist/web/ConfirmationPage.js.map +1 -0
- package/dist/web/ConfirmationSpinner.d.ts +7 -0
- package/dist/web/ConfirmationSpinner.d.ts.map +1 -0
- package/dist/web/ConfirmationSpinner.js +20 -0
- package/dist/web/ConfirmationSpinner.js.map +1 -0
- package/dist/web/DaimoModal.d.ts +15 -0
- package/dist/web/DaimoModal.d.ts.map +1 -0
- package/dist/web/DaimoModal.js +283 -0
- package/dist/web/DaimoModal.js.map +1 -0
- package/dist/web/DeeplinkPage.d.ts +8 -0
- package/dist/web/DeeplinkPage.d.ts.map +1 -0
- package/dist/web/DeeplinkPage.js +13 -0
- package/dist/web/DeeplinkPage.js.map +1 -0
- package/dist/web/ErrorPage.d.ts +28 -0
- package/dist/web/ErrorPage.d.ts.map +1 -0
- package/dist/web/ErrorPage.js +47 -0
- package/dist/web/ErrorPage.js.map +1 -0
- package/dist/web/ExchangePage.d.ts +11 -0
- package/dist/web/ExchangePage.d.ts.map +1 -0
- package/dist/web/ExchangePage.js +13 -0
- package/dist/web/ExchangePage.js.map +1 -0
- package/dist/web/ExpiredPage.d.ts +9 -0
- package/dist/web/ExpiredPage.d.ts.map +1 -0
- package/dist/web/ExpiredPage.js +12 -0
- package/dist/web/ExpiredPage.js.map +1 -0
- package/dist/web/ModalSkeleton.d.ts +7 -0
- package/dist/web/ModalSkeleton.d.ts.map +1 -0
- package/dist/web/ModalSkeleton.js +13 -0
- package/dist/web/ModalSkeleton.js.map +1 -0
- package/dist/web/ProgressDots.d.ts +16 -0
- package/dist/web/ProgressDots.d.ts.map +1 -0
- package/dist/web/ProgressDots.js +55 -0
- package/dist/web/ProgressDots.js.map +1 -0
- package/dist/web/QRCode.d.ts +7 -0
- package/dist/web/QRCode.d.ts.map +1 -0
- package/dist/web/QRCode.js +69 -0
- package/dist/web/QRCode.js.map +1 -0
- package/dist/web/SelectAmountPage.d.ts +21 -0
- package/dist/web/SelectAmountPage.d.ts.map +1 -0
- package/dist/web/SelectAmountPage.js +27 -0
- package/dist/web/SelectAmountPage.js.map +1 -0
- package/dist/web/SelectTokenPage.d.ts +14 -0
- package/dist/web/SelectTokenPage.d.ts.map +1 -0
- package/dist/web/SelectTokenPage.js +71 -0
- package/dist/web/SelectTokenPage.js.map +1 -0
- package/dist/web/WaitingDepositAddressPage.d.ts +14 -0
- package/dist/web/WaitingDepositAddressPage.d.ts.map +1 -0
- package/dist/web/WaitingDepositAddressPage.js +126 -0
- package/dist/web/WaitingDepositAddressPage.js.map +1 -0
- package/dist/web/WalletAmountPage.d.ts +10 -0
- package/dist/web/WalletAmountPage.d.ts.map +1 -0
- package/dist/web/WalletAmountPage.js +158 -0
- package/dist/web/WalletAmountPage.js.map +1 -0
- package/dist/web/api/index.d.ts +10 -0
- package/dist/web/api/index.d.ts.map +1 -1
- package/dist/web/api/navTree.d.ts +7 -2
- package/dist/web/api/navTree.d.ts.map +1 -1
- package/dist/web/buttons.d.ts +15 -0
- package/dist/web/buttons.d.ts.map +1 -0
- package/dist/web/buttons.js +24 -0
- package/dist/web/buttons.js.map +1 -0
- package/dist/web/components/ChooseChainPage.d.ts +2 -1
- package/dist/web/components/ChooseChainPage.d.ts.map +1 -1
- package/dist/web/components/ChooseChainPage.js +4 -4
- package/dist/web/components/ChooseChainPage.js.map +1 -1
- package/dist/web/components/ChooseOptionPage.d.ts +3 -1
- package/dist/web/components/ChooseOptionPage.d.ts.map +1 -1
- package/dist/web/components/ChooseOptionPage.js +31 -11
- package/dist/web/components/ChooseOptionPage.js.map +1 -1
- package/dist/web/components/ChooseWalletPage.d.ts +2 -1
- package/dist/web/components/ChooseWalletPage.d.ts.map +1 -1
- package/dist/web/components/ChooseWalletPage.js +9 -7
- package/dist/web/components/ChooseWalletPage.js.map +1 -1
- package/dist/web/components/ConfirmationPage.d.ts +6 -3
- package/dist/web/components/ConfirmationPage.d.ts.map +1 -1
- package/dist/web/components/ConfirmationPage.js +11 -9
- package/dist/web/components/ConfirmationPage.js.map +1 -1
- package/dist/web/components/DaimoModal.js +24 -17
- package/dist/web/components/DaimoModal.js.map +1 -1
- package/dist/web/components/DeeplinkPage.d.ts +2 -1
- package/dist/web/components/DeeplinkPage.d.ts.map +1 -1
- package/dist/web/components/DeeplinkPage.js +3 -3
- package/dist/web/components/DeeplinkPage.js.map +1 -1
- package/dist/web/components/ExchangePage.d.ts +2 -1
- package/dist/web/components/ExchangePage.d.ts.map +1 -1
- package/dist/web/components/ExchangePage.js +2 -2
- package/dist/web/components/ExchangePage.js.map +1 -1
- package/dist/web/components/SelectAmountPage.d.ts +2 -1
- package/dist/web/components/SelectAmountPage.d.ts.map +1 -1
- package/dist/web/components/SelectAmountPage.js +3 -3
- package/dist/web/components/SelectAmountPage.js.map +1 -1
- package/dist/web/components/SelectTokenPage.d.ts +2 -1
- package/dist/web/components/SelectTokenPage.d.ts.map +1 -1
- package/dist/web/components/SelectTokenPage.js +8 -13
- package/dist/web/components/SelectTokenPage.js.map +1 -1
- package/dist/web/components/WaitingDepositAddressPage.d.ts +2 -1
- package/dist/web/components/WaitingDepositAddressPage.d.ts.map +1 -1
- package/dist/web/components/WaitingDepositAddressPage.js +9 -9
- package/dist/web/components/WaitingDepositAddressPage.js.map +1 -1
- package/dist/web/components/WalletAmountPage.d.ts +2 -1
- package/dist/web/components/WalletAmountPage.d.ts.map +1 -1
- package/dist/web/components/WalletAmountPage.js +14 -11
- package/dist/web/components/WalletAmountPage.js.map +1 -1
- package/dist/web/components/buttons.d.ts.map +1 -1
- package/dist/web/components/buttons.js +4 -8
- package/dist/web/components/buttons.js.map +1 -1
- package/dist/web/components/containers.d.ts.map +1 -1
- package/dist/web/components/containers.js +7 -9
- package/dist/web/components/containers.js.map +1 -1
- package/dist/web/components/icons.d.ts +3 -1
- package/dist/web/components/icons.d.ts.map +1 -1
- package/dist/web/components/icons.js +9 -5
- package/dist/web/components/icons.js.map +1 -1
- package/dist/web/components/shared.d.ts +30 -8
- package/dist/web/components/shared.d.ts.map +1 -1
- package/dist/web/components/shared.js +48 -23
- package/dist/web/components/shared.js.map +1 -1
- package/dist/web/containers.d.ts +19 -0
- package/dist/web/containers.d.ts.map +1 -0
- package/dist/web/containers.js +77 -0
- package/dist/web/containers.js.map +1 -0
- package/dist/web/hooks/locales/en.d.ts +2 -0
- package/dist/web/hooks/locales/en.d.ts.map +1 -1
- package/dist/web/hooks/locales/en.js +10 -8
- package/dist/web/hooks/locales/en.js.map +1 -1
- package/dist/web/hooks/locales/es.d.ts.map +1 -1
- package/dist/web/hooks/locales/es.js +2 -0
- package/dist/web/hooks/locales/es.js.map +1 -1
- package/dist/web/hooks/types.d.ts +1 -0
- package/dist/web/hooks/types.d.ts.map +1 -1
- package/dist/web/hooks/types.js.map +1 -1
- package/dist/web/hooks/useInjectedWallets.d.ts +4 -1
- package/dist/web/hooks/useInjectedWallets.d.ts.map +1 -1
- package/dist/web/hooks/useInjectedWallets.js +84 -25
- package/dist/web/hooks/useInjectedWallets.js.map +1 -1
- package/dist/web/hooks/useSessionNav.d.ts.map +1 -1
- package/dist/web/hooks/useSessionNav.js +44 -25
- package/dist/web/hooks/useSessionNav.js.map +1 -1
- package/dist/web/hooks/useWalletFlow.d.ts +1 -1
- package/dist/web/hooks/useWalletFlow.d.ts.map +1 -1
- package/dist/web/hooks/useWalletFlow.js +46 -6
- package/dist/web/hooks/useWalletFlow.js.map +1 -1
- package/dist/web/hooks/walletProvider.d.ts +10 -2
- package/dist/web/hooks/walletProvider.d.ts.map +1 -1
- package/dist/web/hooks/walletProvider.js +69 -7
- package/dist/web/hooks/walletProvider.js.map +1 -1
- package/dist/web/icons.d.ts +22 -0
- package/dist/web/icons.d.ts.map +1 -0
- package/dist/web/icons.js +33 -0
- package/dist/web/icons.js.map +1 -0
- package/dist/web/shared.d.ts +93 -0
- package/dist/web/shared.d.ts.map +1 -0
- package/dist/web/shared.js +202 -0
- package/dist/web/shared.js.map +1 -0
- package/dist/web/styles.css +1 -1
- package/dist/web/theme.css +19 -18
- package/dist/web/useCopyToClipboard.d.ts +6 -0
- package/dist/web/useCopyToClipboard.d.ts.map +1 -0
- package/dist/web/useCopyToClipboard.js +20 -0
- package/dist/web/useCopyToClipboard.js.map +1 -0
- package/dist/web/useWalletFlow.d.ts +23 -0
- package/dist/web/useWalletFlow.d.ts.map +1 -0
- package/dist/web/useWalletFlow.js +334 -0
- package/dist/web/useWalletFlow.js.map +1 -0
- package/dist/web/walletProvider.d.ts +34 -0
- package/dist/web/walletProvider.d.ts.map +1 -0
- package/dist/web/walletProvider.js +14 -0
- package/dist/web/walletProvider.js.map +1 -0
- package/package.json +5 -1
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import { base58 } from "@scure/base";
|
|
2
|
+
// ─── Wallet Standard ────────────────────────────────────────────────────────
|
|
3
|
+
//
|
|
4
|
+
// Wallet Standard is the Solana equivalent of EIP-6963: an event-based
|
|
5
|
+
// discovery protocol that works with any compliant wallet (Phantom, Tria,
|
|
6
|
+
// Backpack, Solflare, etc.) without hardcoding wallet-specific globals.
|
|
7
|
+
const SOLANA_MAINNET = "solana:mainnet";
|
|
1
8
|
/** Get the EVM wallet provider from window.ethereum */
|
|
2
9
|
export function getEthereumProvider() {
|
|
3
10
|
if (typeof window === "undefined")
|
|
@@ -11,13 +18,68 @@ export function getSolanaProvider() {
|
|
|
11
18
|
const w = window;
|
|
12
19
|
return w.phantom?.solana ?? w.solana ?? null;
|
|
13
20
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
21
|
+
export function isSolanaWallet(wallet) {
|
|
22
|
+
return wallet.chains.some((c) => c === SOLANA_MAINNET);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Wrap a wallet-standard Wallet as our SolanaProvider interface.
|
|
26
|
+
* Returns null if the wallet lacks `standard:connect` or
|
|
27
|
+
* `solana:signAndSendTransaction` features (e.g. a watch-only or
|
|
28
|
+
* message-sign-only wallet).
|
|
29
|
+
*/
|
|
30
|
+
export function wrapWalletStandard(wallet) {
|
|
31
|
+
const connect = wallet.features["standard:connect"];
|
|
32
|
+
const send = wallet.features["solana:signAndSendTransaction"];
|
|
33
|
+
if (!connect || !send)
|
|
17
34
|
return null;
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return
|
|
35
|
+
const events = wallet.features["standard:events"];
|
|
36
|
+
const getSolAccount = () => wallet.accounts.find((a) => a.chains.some((c) => c === SOLANA_MAINNET));
|
|
37
|
+
const offFns = new Map();
|
|
38
|
+
return {
|
|
39
|
+
get publicKey() {
|
|
40
|
+
const a = getSolAccount();
|
|
41
|
+
return a ? { toBase58: () => a.address } : null;
|
|
42
|
+
},
|
|
43
|
+
async connect() {
|
|
44
|
+
const { accounts } = await connect.connect();
|
|
45
|
+
const a = accounts.find((ac) => ac.chains.some((c) => c === SOLANA_MAINNET));
|
|
46
|
+
if (!a)
|
|
47
|
+
throw new Error("no solana account");
|
|
48
|
+
return { publicKey: { toBase58: () => a.address } };
|
|
49
|
+
},
|
|
50
|
+
async signAndSendTransaction(tx, options) {
|
|
51
|
+
const a = getSolAccount();
|
|
52
|
+
if (!a)
|
|
53
|
+
throw new Error("no solana account");
|
|
54
|
+
const [result] = await send.signAndSendTransaction({
|
|
55
|
+
account: a,
|
|
56
|
+
transaction: tx.serialize(),
|
|
57
|
+
chain: SOLANA_MAINNET,
|
|
58
|
+
options,
|
|
59
|
+
});
|
|
60
|
+
return { signature: base58.encode(result.signature) };
|
|
61
|
+
},
|
|
62
|
+
on: events
|
|
63
|
+
? (event, callback) => {
|
|
64
|
+
if (event !== "accountChanged")
|
|
65
|
+
return;
|
|
66
|
+
const off = events.on("change", (props) => {
|
|
67
|
+
if (!props.accounts)
|
|
68
|
+
return;
|
|
69
|
+
const a = props.accounts.find((ac) => ac.chains.some((c) => c === SOLANA_MAINNET));
|
|
70
|
+
callback(a ? { toBase58: () => a.address } : null);
|
|
71
|
+
});
|
|
72
|
+
offFns.set(callback, off);
|
|
73
|
+
}
|
|
74
|
+
: undefined,
|
|
75
|
+
off: events
|
|
76
|
+
? (event, callback) => {
|
|
77
|
+
if (event !== "accountChanged")
|
|
78
|
+
return;
|
|
79
|
+
offFns.get(callback)?.();
|
|
80
|
+
offFns.delete(callback);
|
|
81
|
+
}
|
|
82
|
+
: undefined,
|
|
83
|
+
};
|
|
22
84
|
}
|
|
23
85
|
//# sourceMappingURL=walletProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletProvider.js","sourceRoot":"","sources":["../../../src/web/hooks/walletProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"walletProvider.js","sourceRoot":"","sources":["../../../src/web/hooks/walletProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
type IconProps = {
|
|
2
|
+
className?: string;
|
|
3
|
+
size?: number;
|
|
4
|
+
};
|
|
5
|
+
/** Green checkmark icon for success states */
|
|
6
|
+
export declare function CheckIcon({ className, size }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
/** Clock icon for expired/timeout states */
|
|
8
|
+
export declare function ExpiredIcon({ className, size }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
/** X icon for error states */
|
|
10
|
+
export declare function ErrorIcon({ className, size }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
/** Back arrow for navigation */
|
|
12
|
+
export declare function BackArrowIcon({ className, size }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
/** Close X icon for modal dismiss - matches BackArrowIcon style */
|
|
14
|
+
export declare function CloseIcon({ className, size }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
/** Copy icon with checkmark state */
|
|
16
|
+
export declare function CopyIcon({ className, size, copied, }: IconProps & {
|
|
17
|
+
copied?: boolean;
|
|
18
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
/** External link icon */
|
|
20
|
+
export declare function ExternalLinkIcon({ className, size }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=icons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/web/icons.tsx"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,8CAA8C;AAC9C,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CAgB5D;AAED,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CAiB9D;AAED,8BAA8B;AAC9B,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CAkB5D;AAED,gCAAgC;AAChC,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CAkBhE;AAED,mEAAmE;AACnE,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CAkB5D;AAED,qCAAqC;AACrC,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,IAAS,EACT,MAAc,GACf,EAAE,SAAS,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,2CAkClC;AAED,yBAAyB;AACzB,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,IAAS,EAAE,EAAE,SAAS,2CA2BnE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/** Green checkmark icon for success states */
|
|
3
|
+
export function CheckIcon({ className, size = 40 }) {
|
|
4
|
+
return (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: className ?? "text-[var(--daimo-success)]", children: _jsx("path", { d: "M20 6L9 17l-5-5" }) }));
|
|
5
|
+
}
|
|
6
|
+
/** Clock icon for expired/timeout states */
|
|
7
|
+
export function ExpiredIcon({ className, size = 40 }) {
|
|
8
|
+
return (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: className ?? "text-[var(--daimo-error)]", children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("path", { d: "M12 6v6l4 2" })] }));
|
|
9
|
+
}
|
|
10
|
+
/** X icon for error states */
|
|
11
|
+
export function ErrorIcon({ className, size = 40 }) {
|
|
12
|
+
return (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: className ?? "text-[var(--daimo-error)]", children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("path", { d: "M15 9l-6 6" }), _jsx("path", { d: "M9 9l6 6" })] }));
|
|
13
|
+
}
|
|
14
|
+
/** Back arrow for navigation */
|
|
15
|
+
export function BackArrowIcon({ className, size = 20 }) {
|
|
16
|
+
return (_jsx("svg", { width: size * 0.6, height: size, viewBox: "0 0 12 20", fill: "none", className: className ?? "text-[var(--daimo-text-muted)]", children: _jsx("path", { d: "M10 18L2 10L10 2", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
|
|
17
|
+
}
|
|
18
|
+
/** Close X icon for modal dismiss - matches BackArrowIcon style */
|
|
19
|
+
export function CloseIcon({ className, size = 20 }) {
|
|
20
|
+
return (_jsx("svg", { width: size * 0.6, height: size * 0.6, viewBox: "0 0 12 12", fill: "none", className: className ?? "text-[var(--daimo-text-muted)]", children: _jsx("path", { d: "M2 2L10 10M10 2L2 10", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }) }));
|
|
21
|
+
}
|
|
22
|
+
/** Copy icon with checkmark state */
|
|
23
|
+
export function CopyIcon({ className, size = 20, copied = false, }) {
|
|
24
|
+
if (copied) {
|
|
25
|
+
return (_jsx("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: className ?? "text-[var(--daimo-accent)]", children: _jsx("path", { d: "M20 6L9 17l-5-5" }) }));
|
|
26
|
+
}
|
|
27
|
+
return (_jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: className ?? "text-[var(--daimo-text-muted)]", children: [_jsx("rect", { x: "9", y: "9", width: "13", height: "13", rx: "2", ry: "2" }), _jsx("path", { d: "M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1" })] }));
|
|
28
|
+
}
|
|
29
|
+
/** External link icon */
|
|
30
|
+
export function ExternalLinkIcon({ className, size = 16 }) {
|
|
31
|
+
return (_jsxs("svg", { "aria-hidden": "true", width: size, height: size, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: className, children: [_jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M4 4C2.89543 4 2 4.89543 2 6V12C2 13.1046 2.89543 14 4 14H10C11.1046 14 12 13.1046 12 12V9.66667C12 9.11438 12.4477 8.66667 13 8.66667C13.5523 8.66667 14 9.11438 14 9.66667V12C14 14.2091 12.2091 16 10 16H4C1.79086 16 0 14.2091 0 12V6C0 3.79086 1.79086 2 4 2H6.33333C6.88562 2 7.33333 2.44772 7.33333 3C7.33333 3.55228 6.88562 4 6.33333 4H4Z", fill: "currentColor", fillOpacity: 0.4 }), _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M9.5 1C9.5 0.447715 9.94772 0 10.5 0H15C15.5523 0 16 0.447715 16 1V5.5C16 6.05228 15.5523 6.5 15 6.5C14.4477 6.5 14 6.05228 14 5.5V3.41421L8.70711 8.70711C8.31658 9.09763 7.68342 9.09763 7.29289 8.70711C6.90237 8.31658 6.90237 7.68342 7.29289 7.29289L12.5858 2H10.5C9.94772 2 9.5 1.55228 9.5 1Z", fill: "currentColor", fillOpacity: 0.4 })] }));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/web/icons.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { DaimoPayToken } from "../common/legacy/session.js";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
import { BackArrowIcon } from "./icons.js";
|
|
4
|
+
export { BackArrowIcon };
|
|
5
|
+
type AmountInputProps = {
|
|
6
|
+
minimumUsd: number;
|
|
7
|
+
maximumUsd: number;
|
|
8
|
+
/** Label shown below input (e.g., "Balance: $X.XX" or "Minimum $X.XX") */
|
|
9
|
+
defaultLabel?: string;
|
|
10
|
+
onSubmit: (amountUsd: number) => void;
|
|
11
|
+
/** Called whenever the amount changes */
|
|
12
|
+
onChange?: (amountUsd: number, isValid: boolean) => void;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* USD amount input with dynamic width and min/max validation.
|
|
16
|
+
* Shows warning messages when amount is outside valid range.
|
|
17
|
+
*/
|
|
18
|
+
export declare function AmountInput({ minimumUsd, maximumUsd, defaultLabel, onSubmit, onChange, }: AmountInputProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
/** Hook to manage amount input state externally */
|
|
20
|
+
export declare function useAmountInput(minimumUsd: number, maximumUsd: number): {
|
|
21
|
+
amountUsd: number;
|
|
22
|
+
isValid: boolean;
|
|
23
|
+
handleChange: (amount: number, valid: boolean) => void;
|
|
24
|
+
};
|
|
25
|
+
/** Resolve relative icon paths to absolute URLs */
|
|
26
|
+
export declare function resolveIconUrl(icon: string): string;
|
|
27
|
+
/** Standard page header with optional back button and centered title */
|
|
28
|
+
type PageHeaderProps = {
|
|
29
|
+
title: string;
|
|
30
|
+
onBack?: (() => void) | null;
|
|
31
|
+
};
|
|
32
|
+
export declare function PageHeader({ title, onBack }: PageHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
/** Standard page logo display */
|
|
34
|
+
type PageLogoProps = {
|
|
35
|
+
icon: string;
|
|
36
|
+
alt: string;
|
|
37
|
+
size?: "md" | "lg";
|
|
38
|
+
};
|
|
39
|
+
export declare function PageLogo({ icon, alt, size }: PageLogoProps): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
/** Centered content container for detail pages */
|
|
41
|
+
type PageContentProps = {
|
|
42
|
+
children: ReactNode;
|
|
43
|
+
};
|
|
44
|
+
export declare function PageContent({ children }: PageContentProps): import("react/jsx-runtime").JSX.Element;
|
|
45
|
+
/** Centered error message */
|
|
46
|
+
export declare function ErrorMessage({ message }: {
|
|
47
|
+
message: string;
|
|
48
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
49
|
+
type ContactSupportButtonProps = {
|
|
50
|
+
subject: string;
|
|
51
|
+
info: Record<string, string>;
|
|
52
|
+
};
|
|
53
|
+
/** Contact support mailto link button */
|
|
54
|
+
export declare function ContactSupportButton({ subject, info, }: ContactSupportButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
55
|
+
/** Show receipt link button */
|
|
56
|
+
export declare function ShowReceiptButton({ sessionId }: {
|
|
57
|
+
sessionId: string;
|
|
58
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
59
|
+
type TokenIconWithChainBadgeProps = {
|
|
60
|
+
/** Full token object (preferred — provides logoURI) */
|
|
61
|
+
token?: DaimoPayToken;
|
|
62
|
+
/** Alternative: just chainId, symbol, and logoURI (for cases without full token) */
|
|
63
|
+
chainId?: number;
|
|
64
|
+
symbol?: string;
|
|
65
|
+
logoURI?: string;
|
|
66
|
+
/** Size variant: "sm" (32px) for lists, "lg" (80px) for headers, "qr" (48px) for QR codes */
|
|
67
|
+
size?: "sm" | "lg" | "qr";
|
|
68
|
+
/** Border color class for the chain badge (defaults to row background colors) */
|
|
69
|
+
badgeBorderClass?: string;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Token icon with chain badge overlay.
|
|
73
|
+
* - "sm": 32x32 token, 15x15 badge (for list rows)
|
|
74
|
+
* - "lg": 80x80 token, 32x32 badge (for page headers)
|
|
75
|
+
* - "qr": 48x48 token, 16x16 badge at top-right (for QR code centers)
|
|
76
|
+
*/
|
|
77
|
+
export declare function TokenIconWithChainBadge({ token, chainId, symbol, logoURI, size, badgeBorderClass, }: TokenIconWithChainBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
78
|
+
/** Map chainId to logo filename */
|
|
79
|
+
export declare function getChainLogoFilename(chainId: number): string;
|
|
80
|
+
type CopyableInfoCardProps = {
|
|
81
|
+
label: string;
|
|
82
|
+
value: string;
|
|
83
|
+
/** Display value (if different from copy value) */
|
|
84
|
+
displayValue?: string;
|
|
85
|
+
/** Suffix shown after display value */
|
|
86
|
+
suffix?: string;
|
|
87
|
+
disabled?: boolean;
|
|
88
|
+
/** Callback when value is copied */
|
|
89
|
+
onCopy?: (value: string) => void;
|
|
90
|
+
};
|
|
91
|
+
/** Card with label, value, and copy button */
|
|
92
|
+
export declare function CopyableInfoCard({ label, value, displayValue, suffix, disabled, onCopy, }: CopyableInfoCardProps): import("react/jsx-runtime").JSX.Element;
|
|
93
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/web/shared.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { arbitrum, base, bsc, celo, ethereum, getChainName, gnosis, hyperEvm, linea, monad, optimism, polygon, scroll, solana, tron, worldchain, } from "../common/chain.js";
|
|
3
|
+
import { useCallback, useState } from "react";
|
|
4
|
+
import { BackArrowIcon, CopyIcon } from "./icons.js";
|
|
5
|
+
import { t } from "../hooks/locale.js";
|
|
6
|
+
export { BackArrowIcon };
|
|
7
|
+
const PAY_BASE_URL = "https://daimo.com";
|
|
8
|
+
const CHAIN_LOGOS = {
|
|
9
|
+
[arbitrum.chainId]: "arbitrum.svg",
|
|
10
|
+
[base.chainId]: "base.svg",
|
|
11
|
+
[bsc.chainId]: "bsc.svg",
|
|
12
|
+
[celo.chainId]: "celo.svg",
|
|
13
|
+
[ethereum.chainId]: "ethereum.svg",
|
|
14
|
+
[gnosis.chainId]: "gnosis.svg",
|
|
15
|
+
[hyperEvm.chainId]: "hyperevm.svg",
|
|
16
|
+
[linea.chainId]: "linea.svg",
|
|
17
|
+
[monad.chainId]: "monad.svg",
|
|
18
|
+
[optimism.chainId]: "optimism.svg",
|
|
19
|
+
[polygon.chainId]: "polygon.svg",
|
|
20
|
+
[scroll.chainId]: "scroll.svg",
|
|
21
|
+
[solana.chainId]: "solana.svg",
|
|
22
|
+
[tron.chainId]: "tron.svg",
|
|
23
|
+
[worldchain.chainId]: "worldchain.svg",
|
|
24
|
+
};
|
|
25
|
+
// --- Copy to Clipboard Hook ---
|
|
26
|
+
function useCopyToClipboard(resetDelayMs = 1500) {
|
|
27
|
+
const [copied, setCopied] = useState(false);
|
|
28
|
+
const copy = useCallback(async (text) => {
|
|
29
|
+
try {
|
|
30
|
+
await navigator.clipboard.writeText(text);
|
|
31
|
+
setCopied(true);
|
|
32
|
+
setTimeout(() => setCopied(false), resetDelayMs);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
console.error("failed to copy to clipboard");
|
|
36
|
+
}
|
|
37
|
+
}, [resetDelayMs]);
|
|
38
|
+
return { copy, copied };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* USD amount input with dynamic width and min/max validation.
|
|
42
|
+
* Shows warning messages when amount is outside valid range.
|
|
43
|
+
*/
|
|
44
|
+
export function AmountInput({ minimumUsd, maximumUsd, defaultLabel, onSubmit, onChange, }) {
|
|
45
|
+
const [inputValue, setInputValue] = useState("");
|
|
46
|
+
const amountUsd = parseFloat(inputValue) || 0;
|
|
47
|
+
const isValid = amountUsd >= minimumUsd && amountUsd <= maximumUsd;
|
|
48
|
+
const showMinWarning = inputValue !== "" && amountUsd < minimumUsd;
|
|
49
|
+
const showMaxWarning = inputValue !== "" && amountUsd > maximumUsd;
|
|
50
|
+
const handleInputChange = (e) => {
|
|
51
|
+
const value = e.target.value;
|
|
52
|
+
// Allow empty, or digits with up to 2 decimal places
|
|
53
|
+
if (value === "" || /^\d*\.?\d{0,2}$/.test(value)) {
|
|
54
|
+
setInputValue(value);
|
|
55
|
+
const newAmount = parseFloat(value) || 0;
|
|
56
|
+
const newIsValid = newAmount >= minimumUsd && newAmount <= maximumUsd;
|
|
57
|
+
onChange?.(newAmount, newIsValid);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const handleKeyDown = (e) => {
|
|
61
|
+
if (e.key === "Enter" && isValid) {
|
|
62
|
+
onSubmit(amountUsd);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
// Dynamic width: shrink for decimal point, min 1ch, max 10ch
|
|
66
|
+
const inputWidth = inputValue.length === 0
|
|
67
|
+
? "3.55ch"
|
|
68
|
+
: `${Math.min(inputValue.length - (inputValue.match(/\./g) || []).length * 0.45, 10)}ch`;
|
|
69
|
+
const label = showMinWarning
|
|
70
|
+
? `${t.minimum} $${minimumUsd.toFixed(2)}`
|
|
71
|
+
: showMaxWarning
|
|
72
|
+
? `${t.maximum} $${maximumUsd.toFixed(0)}`
|
|
73
|
+
: (defaultLabel ?? `${t.minimum} $${minimumUsd.toFixed(2)}`);
|
|
74
|
+
const labelClass = showMinWarning || showMaxWarning
|
|
75
|
+
? "text-sm text-[var(--daimo-text)]"
|
|
76
|
+
: "text-sm text-[var(--daimo-text-secondary)]";
|
|
77
|
+
// $ sign color: placeholder when empty, text color when typed
|
|
78
|
+
const dollarColor = inputValue
|
|
79
|
+
? "text-[var(--daimo-text)]"
|
|
80
|
+
: "text-[var(--daimo-placeholder)]";
|
|
81
|
+
return (_jsxs("div", { className: "flex flex-col items-center gap-6", children: [_jsxs("div", { className: "flex items-center justify-center gap-1", children: [_jsx("span", { className: `text-3xl font-semibold ${dollarColor}`, children: "$" }), _jsx("input", { type: "text", inputMode: "decimal", value: inputValue, onChange: handleInputChange, onKeyDown: handleKeyDown, placeholder: "0.00", className: "bg-transparent text-5xl font-semibold text-[var(--daimo-text)] placeholder-[var(--daimo-placeholder)] outline-none caret-[var(--daimo-text-muted)]", style: {
|
|
82
|
+
width: inputWidth,
|
|
83
|
+
minWidth: "1ch",
|
|
84
|
+
maxWidth: "10ch",
|
|
85
|
+
}, autoFocus: true })] }), _jsx("p", { className: labelClass, children: label })] }));
|
|
86
|
+
}
|
|
87
|
+
/** Hook to manage amount input state externally */
|
|
88
|
+
export function useAmountInput(minimumUsd, maximumUsd) {
|
|
89
|
+
const [amountUsd, setAmountUsd] = useState(0);
|
|
90
|
+
const [isValid, setIsValid] = useState(false);
|
|
91
|
+
const handleChange = (amount, valid) => {
|
|
92
|
+
setAmountUsd(amount);
|
|
93
|
+
setIsValid(valid);
|
|
94
|
+
};
|
|
95
|
+
return { amountUsd, isValid, handleChange };
|
|
96
|
+
}
|
|
97
|
+
/** Resolve relative icon paths to absolute URLs */
|
|
98
|
+
export function resolveIconUrl(icon) {
|
|
99
|
+
if (icon.startsWith("http://") ||
|
|
100
|
+
icon.startsWith("https://") ||
|
|
101
|
+
icon.startsWith("data:")) {
|
|
102
|
+
return icon;
|
|
103
|
+
}
|
|
104
|
+
return `${PAY_BASE_URL}${icon}`;
|
|
105
|
+
}
|
|
106
|
+
export function PageHeader({ title, onBack }) {
|
|
107
|
+
return (_jsxs("div", { className: "sticky top-0 z-10 flex items-center justify-center p-6 bg-[var(--daimo-surface)]", children: [onBack && (_jsx("button", { onClick: onBack, "aria-label": "Go back", className: "absolute left-2 min-w-[44px] min-h-[44px] flex items-center justify-center px-4 py-2 rounded-lg touch-action-manipulation hover:[@media(hover:hover)]:bg-[var(--daimo-surface-secondary)] active:bg-[var(--daimo-surface-secondary)] active:scale-[0.95] transition-[background-color,transform] duration-150 ease-out", children: _jsx(BackArrowIcon, {}) })), _jsx("h1", { className: "text-lg font-semibold text-[var(--daimo-title)] text-balance", children: title })] }));
|
|
108
|
+
}
|
|
109
|
+
export function PageLogo({ icon, alt, size = "lg" }) {
|
|
110
|
+
const sizeClass = size === "lg" ? "w-20 h-20" : "w-16 h-16";
|
|
111
|
+
return (_jsx("img", { src: resolveIconUrl(icon), alt: alt, className: `${sizeClass} object-contain rounded-[25%]` }));
|
|
112
|
+
}
|
|
113
|
+
export function PageContent({ children }) {
|
|
114
|
+
return (_jsx("div", { className: "flex-1 flex flex-col items-center justify-center p-6 gap-6", children: children }));
|
|
115
|
+
}
|
|
116
|
+
/** Centered error message */
|
|
117
|
+
export function ErrorMessage({ message }) {
|
|
118
|
+
return (_jsx("p", { className: "text-sm text-[var(--daimo-text-secondary)] text-center max-w-xs truncate", children: message }));
|
|
119
|
+
}
|
|
120
|
+
/** Contact support mailto link button */
|
|
121
|
+
export function ContactSupportButton({ subject, info, }) {
|
|
122
|
+
const email = "support@daimo.com";
|
|
123
|
+
const bodyLines = [
|
|
124
|
+
...Object.entries(info).map(([key, value]) => `${key}: ${value}`),
|
|
125
|
+
"",
|
|
126
|
+
t.tellUsHowWeCanHelp,
|
|
127
|
+
];
|
|
128
|
+
const body = bodyLines.join("\n");
|
|
129
|
+
const href = `mailto:${email}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
|
|
130
|
+
return (_jsx("a", { href: href, className: "text-sm text-[var(--daimo-text-secondary)] hover:text-[var(--daimo-text)] underline", children: t.contactSupport }));
|
|
131
|
+
}
|
|
132
|
+
/** Show receipt link button */
|
|
133
|
+
export function ShowReceiptButton({ sessionId }) {
|
|
134
|
+
return (_jsx("a", { href: `${PAY_BASE_URL}/receipt?id=${sessionId}`, target: "_blank", rel: "noopener noreferrer", className: "text-sm text-[var(--daimo-text-muted)] underline", children: t.showReceipt }));
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Token icon with chain badge overlay.
|
|
138
|
+
* - "sm": 32x32 token, 15x15 badge (for list rows)
|
|
139
|
+
* - "lg": 80x80 token, 32x32 badge (for page headers)
|
|
140
|
+
* - "qr": 48x48 token, 16x16 badge at top-right (for QR code centers)
|
|
141
|
+
*/
|
|
142
|
+
export function TokenIconWithChainBadge({ token, chainId, symbol, logoURI, size = "sm", badgeBorderClass, }) {
|
|
143
|
+
const tokenSymbol = token?.symbol ?? symbol ?? "USDC";
|
|
144
|
+
const tokenChainId = token?.chainId ?? chainId ?? 1;
|
|
145
|
+
const logoUrl = token?.logoURI ?? logoURI;
|
|
146
|
+
const chainLogoUrl = `/chain-logos/${getChainLogoFilename(tokenChainId)}`;
|
|
147
|
+
const sizeConfig = {
|
|
148
|
+
sm: {
|
|
149
|
+
container: "w-8 h-8 shrink-0",
|
|
150
|
+
icon: "w-8 h-8 rounded-full",
|
|
151
|
+
badge: "w-[15px] h-[15px]",
|
|
152
|
+
position: "absolute -bottom-0.5 -right-0.5",
|
|
153
|
+
style: {
|
|
154
|
+
borderWidth: "1px",
|
|
155
|
+
borderColor: "var(--daimo-surface-secondary)",
|
|
156
|
+
backgroundColor: "var(--daimo-surface-secondary)",
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
lg: {
|
|
160
|
+
container: "w-20 h-20",
|
|
161
|
+
icon: "w-20 h-20 object-contain rounded-full",
|
|
162
|
+
badge: "w-8 h-8",
|
|
163
|
+
position: "absolute -bottom-1 -right-1",
|
|
164
|
+
style: {
|
|
165
|
+
borderWidth: "2px",
|
|
166
|
+
borderColor: "var(--daimo-surface)",
|
|
167
|
+
backgroundColor: "var(--daimo-surface)",
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
qr: {
|
|
171
|
+
container: "w-12 h-12",
|
|
172
|
+
icon: "w-12 h-12 object-contain rounded-full",
|
|
173
|
+
badge: "w-5 h-5",
|
|
174
|
+
position: "absolute -bottom-0.5 -right-0.5",
|
|
175
|
+
style: {
|
|
176
|
+
borderWidth: "1.5px",
|
|
177
|
+
borderColor: "var(--daimo-surface)",
|
|
178
|
+
backgroundColor: "var(--daimo-surface)",
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
const config = sizeConfig[size];
|
|
183
|
+
return (_jsxs("div", { className: `relative ${config.container}`, children: [logoUrl && (_jsx("img", { src: resolveIconUrl(logoUrl), alt: tokenSymbol, className: config.icon, onError: (e) => {
|
|
184
|
+
e.target.style.display = "none";
|
|
185
|
+
} })), _jsx("img", { src: resolveIconUrl(chainLogoUrl), alt: getChainName(tokenChainId), className: `${config.position} ${config.badge} rounded-full ${badgeBorderClass ?? ""}`, style: badgeBorderClass ? undefined : config.style, onError: (e) => {
|
|
186
|
+
e.target.style.display = "none";
|
|
187
|
+
} })] }));
|
|
188
|
+
}
|
|
189
|
+
/** Map chainId to logo filename */
|
|
190
|
+
export function getChainLogoFilename(chainId) {
|
|
191
|
+
return CHAIN_LOGOS[chainId] ?? "ethereum.svg";
|
|
192
|
+
}
|
|
193
|
+
/** Card with label, value, and copy button */
|
|
194
|
+
export function CopyableInfoCard({ label, value, displayValue, suffix, disabled = false, onCopy, }) {
|
|
195
|
+
const { copy, copied } = useCopyToClipboard();
|
|
196
|
+
const handleCopy = () => {
|
|
197
|
+
copy(value);
|
|
198
|
+
onCopy?.(value);
|
|
199
|
+
};
|
|
200
|
+
return (_jsxs("button", { onClick: handleCopy, disabled: disabled, "aria-label": `Copy ${label}`, className: "w-full min-h-[56px] p-4 bg-[var(--daimo-surface-secondary)] rounded-[var(--daimo-radius-lg)] flex items-center justify-between touch-action-manipulation hover:[@media(hover:hover)]:bg-[var(--daimo-surface-hover)] active:scale-[0.98] transition-[background-color,transform] duration-150 ease-out disabled:opacity-50 disabled:cursor-not-allowed", children: [_jsxs("div", { className: "text-left", children: [_jsx("p", { className: "text-sm text-[var(--daimo-text-secondary)] font-medium mb-1", children: label }), _jsxs("p", { className: "text-lg font-semibold text-[var(--daimo-text)] tabular-nums", children: [displayValue ?? value, suffix && _jsx("span", { className: "ml-2", children: suffix })] })] }), _jsx(CopyIcon, { copied: copied })] }));
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/web/shared.tsx"],"names":[],"mappings":"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"}
|
package/dist/web/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--daimo-bg:#00000008;--daimo-surface:#fff;--daimo-surface-secondary:#f6f7f9;--daimo-surface-hover:#f0f2f5;--daimo-skeleton:#f6f7f9;--daimo-title:#373737;--daimo-text:#373737;--daimo-text-secondary:#999;--daimo-text-muted:#9ca3af;--daimo-success:#22c55e;--daimo-success-light:#dcfce7;--daimo-checkmark:#22c55e;--daimo-error:#ef4444;--daimo-error-light:#fee2e2;--daimo-warning:#f97316;--daimo-accent:#3b82f6;--daimo-placeholder:#d1d5db;--daimo-border:#fbfafb;--daimo-qr-bg:#fff;--daimo-qr-dot:#373737;--daimo-radius-sm:0.5rem;--daimo-radius-md:0.75rem;--daimo-radius-lg:1rem}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--daimo-bg:#00000008;--daimo-surface:#2b2b2b;--daimo-surface-secondary:#383838;--daimo-surface-hover:#404040;--daimo-skeleton:#2b2b2b;--daimo-title:#fff;--daimo-text:#fff;--daimo-text-secondary:#7e7e7e;--daimo-text-muted:#858585;--daimo-success:#4ade80;--daimo-success-light:#14532d;--daimo-checkmark:#f3f4f6;--daimo-error:#f87171;--daimo-error-light:#7f1d1d;--daimo-warning:#fb923c;--daimo-accent:#0977d5;--daimo-placeholder:#9ca3af;--daimo-border:#3d3d3d;--daimo-qr-bg:#2b2b2b;--daimo-qr-dot:#fff}}.scroll-fade{padding-top:4px;mask-image:linear-gradient(180deg,transparent,#000 4px,#000 calc(100% - 4px),transparent);-webkit-mask-image:linear-gradient(180deg,transparent,#000 4px,#000 calc(100% - 4px),transparent)}.daimo-page-enter{animation:daimo-page-in .15s cubic-bezier(.23,1,.32,1) both}@keyframes daimo-page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.daimo-page-enter{animation:none}}.transition-qr{transition:opacity .28s cubic-bezier(.215,.61,.355,1),transform .28s cubic-bezier(.215,.61,.355,1);will-change:opacity,transform}.transition-qr-icon{transition:transform .28s cubic-bezier(.645,.045,.355,1),opacity .28s cubic-bezier(.645,.045,.355,1);will-change:transform,opacity}.transition-qr-spacer{transition:height .28s cubic-bezier(.645,.045,.355,1)}@media (prefers-reduced-motion:reduce){.transition-qr,.transition-qr-icon,.transition-qr-spacer{transition:none}}[data-theme=dark]{--daimo-bg:#111827;--daimo-surface:#1f2937;--daimo-surface-secondary:#374151;--daimo-surface-hover:#4b5563;--daimo-skeleton:#4b5563;--daimo-title:#f3f4f6;--daimo-text:#f3f4f6;--daimo-text-secondary:#9ca3af;--daimo-text-muted:#6b7280;--daimo-success:#4ade80;--daimo-success-light:#14532d;--daimo-checkmark:#f3f4f6;--daimo-error:#f87171;--daimo-error-light:#7f1d1d;--daimo-warning:#fb923c;--daimo-accent:#0977d5;--daimo-placeholder:#6b7280}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-\[13px\]{inset:13px}.inset-\[6px\]{inset:6px}.inset-x-0{left:0;right:0}.-bottom-0\.5{bottom:-.125rem}.-bottom-1{bottom:-.25rem}.-right-0\.5{right:-.125rem}.-right-1{right:-.25rem}.bottom-0{bottom:0}.left-1\/2{left:50%}.left-2{left:.5rem}.right-2{right:.5rem}.top-0{top:0}.top-1\/2{top:50%}.top-6{top:1.5rem}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mr-3{margin-right:.75rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-0\.5{height:.125rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-8{height:2rem}.h-\[100px\]{height:100px}.h-\[15px\]{height:15px}.h-\[28\%\]{height:28%}.h-auto{height:auto}.h-full{height:100%}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0}.min-h-\[100px\]{min-height:100px}.min-h-\[44px\]{min-height:44px}.min-h-\[56px\]{min-height:56px}.min-h-full{min-height:100%}.w-12{width:3rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\/5{width:60%}.w-32{width:8rem}.w-4\/5{width:80%}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-8{width:2rem}.w-\[100px\]{width:100px}.w-\[15px\]{width:15px}.w-\[28\%\]{width:28%}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[44px\]{min-width:44px}.max-w-16{max-width:4rem}.max-w-\[200px\]{max-width:200px}.max-w-\[512px\]{max-width:512px}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.-rotate-90{--tw-rotate:-90deg}.-rotate-90,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-50{--tw-scale-x:.5;--tw-scale-y:.5}.scale-50,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-not-allowed{cursor:not-allowed}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.text-balance{text-wrap:balance}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[25\%\]{border-radius:25%}.rounded-\[var\(--daimo-radius-lg\)\]{border-radius:var(--daimo-radius-lg)}.rounded-\[var\(--daimo-radius-md\)\]{border-radius:var(--daimo-radius-md)}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-t-\[var\(--daimo-radius-lg\)\]{border-top-left-radius:var(--daimo-radius-lg);border-top-right-radius:var(--daimo-radius-lg)}.border{border-width:1px}.border-2{border-width:2px}.border-\[1\.5px\]{border-width:1.5px}.border-none{border-style:none}.border-\[var\(--daimo-border\)\]{border-color:var(--daimo-border)}.border-\[var\(--daimo-qr-bg\2c white\)\]{border-color:var(--daimo-qr-bg,#fff)}.border-\[var\(--daimo-surface\)\]{border-color:var(--daimo-surface)}.bg-\[var\(--daimo-primary\)\]{background-color:var(--daimo-primary)}.bg-\[var\(--daimo-qr-bg\2c white\)\]{background-color:var(--daimo-qr-bg,#fff)}.bg-\[var\(--daimo-surface\)\]{background-color:var(--daimo-surface)}.bg-\[var\(--daimo-surface-secondary\)\]{background-color:var(--daimo-surface-secondary)}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-transparent{background-color:transparent}.object-contain{-o-object-fit:contain;object-fit:contain}.p-1{padding:.25rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem}.pb-4,.py-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-\[100\%\]{padding-bottom:100%}.text-left{text-align:left}.text-center{text-align:center}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-tight{line-height:1.25}.text-\[var\(--daimo-accent\)\]{color:var(--daimo-accent)}.text-\[var\(--daimo-error\)\]{color:var(--daimo-error)}.text-\[var\(--daimo-placeholder\)\]{color:var(--daimo-placeholder)}.text-\[var\(--daimo-success\)\]{color:var(--daimo-success)}.text-\[var\(--daimo-text\)\]{color:var(--daimo-text)}.text-\[var\(--daimo-text-muted\)\]{color:var(--daimo-text-muted)}.text-\[var\(--daimo-text-secondary\)\]{color:var(--daimo-text-secondary)}.text-\[var\(--daimo-title\)\]{color:var(--daimo-title)}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.placeholder-\[var\(--daimo-placeholder\)\]::-moz-placeholder{color:var(--daimo-placeholder)}.placeholder-\[var\(--daimo-placeholder\)\]::placeholder{color:var(--daimo-placeholder)}.caret-\[var\(--daimo-text-muted\)\]{caret-color:var(--daimo-text-muted)}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[background-color\2c transform\]{transition-property:background-color,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[opacity\2c transform\]{transition-property:opacity,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-opacity{transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.hover\:bg-\[var\(--daimo-surface-hover\)\]:hover{background-color:var(--daimo-surface-hover)}.hover\:text-\[var\(--daimo-text\)\]:hover{color:var(--daimo-text)}.hover\:opacity-90:hover{opacity:.9}.focus\:border-none:focus{border-style:none}.focus\:shadow-none:focus{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.active\:scale-\[0\.95\]:active{--tw-scale-x:0.95;--tw-scale-y:0.95}.active\:scale-\[0\.95\]:active,.active\:scale-\[0\.97\]:active{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:scale-\[0\.97\]:active{--tw-scale-x:0.97;--tw-scale-y:0.97}.active\:scale-\[0\.98\]:active{--tw-scale-x:0.98;--tw-scale-y:0.98;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:bg-\[var\(--daimo-surface-secondary\)\]:active{background-color:var(--daimo-surface-secondary)}.active\:opacity-50:active{opacity:.5}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media (prefers-reduced-motion:no-preference){@keyframes pulse{50%{opacity:.5}}.motion-safe\:animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}}@media (min-width:640px){.sm\:max-w-\[260px\]{max-width:260px}.sm\:rounded-\[var\(--daimo-radius-lg\)\]{border-radius:var(--daimo-radius-lg)}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:pb-4{padding-bottom:1rem}}@media(hover:hover){.hover\:\[\@media\(hover\:hover\)\]\:bg-\[var\(--daimo-surface-hover\)\]:hover{background-color:var(--daimo-surface-hover)}.hover\:\[\@media\(hover\:hover\)\]\:bg-\[var\(--daimo-surface-secondary\)\]:hover{background-color:var(--daimo-surface-secondary)}.hover\:\[\@media\(hover\:hover\)\]\:opacity-70:hover{opacity:.7}}
|
|
1
|
+
:root{--daimo-bg:#00000008;--daimo-surface:#fff;--daimo-surface-secondary:#f6f7f9;--daimo-surface-hover:#f0f2f5;--daimo-skeleton:#f6f7f9;--daimo-title:#373737;--daimo-text:#373737;--daimo-text-secondary:#999;--daimo-text-muted:#9ca3af;--daimo-success:#22c55e;--daimo-success-light:#dcfce7;--daimo-checkmark:#22c55e;--daimo-error:#ef4444;--daimo-error-light:#fee2e2;--daimo-warning:#f97316;--daimo-accent:#3b82f6;--daimo-placeholder:#d1d5db;--daimo-border:#fbfafb;--daimo-qr-bg:#fff;--daimo-qr-dot:#373737;--daimo-radius-sm:0.5rem;--daimo-radius-md:0.75rem;--daimo-radius-lg:1rem;--daimo-radius-xl:20px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--daimo-bg:#00000008;--daimo-surface:#2b2b2b;--daimo-surface-secondary:#383838;--daimo-surface-hover:#404040;--daimo-skeleton:#2b2b2b;--daimo-title:#fff;--daimo-text:#fff;--daimo-text-secondary:#7e7e7e;--daimo-text-muted:#858585;--daimo-success:#4ade80;--daimo-success-light:#14532d;--daimo-checkmark:#f3f4f6;--daimo-error:#f87171;--daimo-error-light:#7f1d1d;--daimo-warning:#fb923c;--daimo-accent:#0977d5;--daimo-placeholder:#9ca3af;--daimo-border:#3d3d3d;--daimo-qr-bg:#2b2b2b;--daimo-qr-dot:#fff}}.scroll-fade:after{content:"";pointer-events:none;z-index:10;position:sticky;bottom:0;left:0;right:0;display:block;height:32px;margin-top:-32px;background:linear-gradient(to bottom,transparent,var(--daimo-surface));transition:opacity .3s ease}.scroll-fade.scroll-end:after{opacity:0}.daimo-page-enter{animation:daimo-page-in .15s cubic-bezier(.23,1,.32,1) both}@keyframes daimo-page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.daimo-page-enter{animation:none}}.transition-qr{transition:opacity .28s cubic-bezier(.215,.61,.355,1),transform .28s cubic-bezier(.215,.61,.355,1);will-change:opacity,transform}.transition-qr-icon{transition:transform .28s cubic-bezier(.645,.045,.355,1),opacity .28s cubic-bezier(.645,.045,.355,1);will-change:transform,opacity}.transition-qr-spacer{transition:height .28s cubic-bezier(.645,.045,.355,1)}@media (prefers-reduced-motion:reduce){.transition-qr,.transition-qr-icon,.transition-qr-spacer{transition:none}}[data-theme=dark]{--daimo-bg:#111827;--daimo-surface:#1f2937;--daimo-surface-secondary:#374151;--daimo-surface-hover:#4b5563;--daimo-skeleton:#4b5563;--daimo-title:#f3f4f6;--daimo-text:#f3f4f6;--daimo-text-secondary:#9ca3af;--daimo-text-muted:#6b7280;--daimo-success:#4ade80;--daimo-success-light:#14532d;--daimo-checkmark:#f3f4f6;--daimo-error:#f87171;--daimo-error-light:#7f1d1d;--daimo-warning:#fb923c;--daimo-accent:#0977d5;--daimo-placeholder:#6b7280}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-\[13px\]{inset:13px}.inset-\[6px\]{inset:6px}.inset-x-0{left:0;right:0}.-bottom-0\.5{bottom:-.125rem}.-bottom-1{bottom:-.25rem}.-right-0\.5{right:-.125rem}.-right-1{right:-.25rem}.bottom-0{bottom:0}.left-1\/2{left:50%}.left-5{left:1.25rem}.right-\[17px\]{right:17px}.top-0{top:0}.top-1\/2{top:50%}.top-\[22px\]{top:22px}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-6{margin-bottom:1.5rem}.ml-2{margin-left:.5rem}.mr-3{margin-right:.75rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-0\.5{height:.125rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-8{height:2rem}.h-\[100px\]{height:100px}.h-\[15px\]{height:15px}.h-\[28\%\]{height:28%}.h-auto{height:auto}.h-full{height:100%}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0}.min-h-\[100px\]{min-height:100px}.min-h-\[44px\]{min-height:44px}.min-h-\[56px\]{min-height:56px}.w-12{width:3rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\/5{width:60%}.w-32{width:8rem}.w-4\/5{width:80%}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-8{width:2rem}.w-\[100px\]{width:100px}.w-\[15px\]{width:15px}.w-\[28\%\]{width:28%}.w-full{width:100%}.min-w-0{min-width:0}.max-w-16{max-width:4rem}.max-w-\[200px\]{max-width:200px}.max-w-\[420px\]{max-width:420px}.max-w-\[512px\]{max-width:512px}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.-rotate-90{--tw-rotate:-90deg}.-rotate-90,.scale-100{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-50{--tw-scale-x:.5;--tw-scale-y:.5}.scale-50,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-not-allowed{cursor:not-allowed}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.text-balance{text-wrap:balance}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[25\%\]{border-radius:25%}.rounded-\[var\(--daimo-radius-lg\)\]{border-radius:var(--daimo-radius-lg)}.rounded-\[var\(--daimo-radius-md\)\]{border-radius:var(--daimo-radius-md)}.rounded-\[var\(--daimo-radius-sm\)\]{border-radius:var(--daimo-radius-sm)}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-t-\[var\(--daimo-radius-xl\)\]{border-top-left-radius:var(--daimo-radius-xl);border-top-right-radius:var(--daimo-radius-xl)}.border{border-width:1px}.border-2{border-width:2px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-none{border-style:none}.border-\[var\(--daimo-border\)\]{border-color:var(--daimo-border)}.border-\[var\(--daimo-qr-bg\2c white\)\]{border-color:var(--daimo-qr-bg,#fff)}.border-\[var\(--daimo-surface\)\]{border-color:var(--daimo-surface)}.bg-\[var\(--daimo-primary\)\]{background-color:var(--daimo-primary)}.bg-\[var\(--daimo-qr-bg\2c white\)\]{background-color:var(--daimo-qr-bg,#fff)}.bg-\[var\(--daimo-surface\)\]{background-color:var(--daimo-surface)}.bg-\[var\(--daimo-surface-secondary\)\]{background-color:var(--daimo-surface-secondary)}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-transparent{background-color:transparent}.object-contain{-o-object-fit:contain;object-fit:contain}.p-1{padding:.25rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-\[3px\]{padding-top:3px;padding-bottom:3px}.pb-0{padding-bottom:0}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-\[100\%\]{padding-bottom:100%}.text-left{text-align:left}.text-center{text-align:center}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[24px\]{font-size:24px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[21px\]{line-height:21px}.leading-tight{line-height:1.25}.text-\[var\(--daimo-accent\)\]{color:var(--daimo-accent)}.text-\[var\(--daimo-error\)\]{color:var(--daimo-error)}.text-\[var\(--daimo-placeholder\)\]{color:var(--daimo-placeholder)}.text-\[var\(--daimo-success\)\]{color:var(--daimo-success)}.text-\[var\(--daimo-text\)\]{color:var(--daimo-text)}.text-\[var\(--daimo-text-muted\)\]{color:var(--daimo-text-muted)}.text-\[var\(--daimo-text-secondary\)\]{color:var(--daimo-text-secondary)}.text-\[var\(--daimo-title\)\]{color:var(--daimo-title)}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.placeholder-\[var\(--daimo-placeholder\)\]::-moz-placeholder{color:var(--daimo-placeholder)}.placeholder-\[var\(--daimo-placeholder\)\]::placeholder{color:var(--daimo-placeholder)}.caret-\[var\(--daimo-text-muted\)\]{caret-color:var(--daimo-text-muted)}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[background-color\2c transform\]{transition-property:background-color,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[background-color\]{transition-property:background-color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[border-color\]{transition-property:border-color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[opacity\2c transform\]{transition-property:opacity,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[transition-duration\:200ms\2c 100ms\]{transition-duration:.2s,.1s}.hover\:bg-\[var\(--daimo-surface-hover\)\]:hover{background-color:var(--daimo-surface-hover)}.hover\:text-\[var\(--daimo-text\)\]:hover{color:var(--daimo-text)}.hover\:opacity-90:hover{opacity:.9}.focus\:border-none:focus{border-style:none}.focus\:shadow-none:focus{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.active\:scale-\[0\.9\]:active{--tw-scale-x:0.9;--tw-scale-y:0.9;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:opacity-50:active{opacity:.5}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media (prefers-reduced-motion:no-preference){@keyframes pulse{50%{opacity:.5}}.motion-safe\:animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}}@media (min-width:640px){.sm\:max-w-\[260px\]{max-width:260px}.sm\:rounded-\[var\(--daimo-radius-xl\)\]{border-radius:var(--daimo-radius-xl)}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:pb-4{padding-bottom:1rem}}@media(hover:hover){.hover\:\[\@media\(hover\:hover\)\]\:\!bg-\[var\(--daimo-surface-secondary\)\]:hover{background-color:var(--daimo-surface-secondary)!important}.hover\:\[\@media\(hover\:hover\)\]\:bg-\[var\(--daimo-surface-hover\)\]:hover{background-color:var(--daimo-surface-hover)}.hover\:\[\@media\(hover\:hover\)\]\:bg-\[var\(--daimo-surface-secondary\)\]:hover{background-color:var(--daimo-surface-secondary)}.hover\:\[\@media\(hover\:hover\)\]\:opacity-70:hover{opacity:.7}}
|
package/dist/web/theme.css
CHANGED
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
--daimo-radius-sm: 0.5rem;
|
|
43
43
|
--daimo-radius-md: 0.75rem;
|
|
44
44
|
--daimo-radius-lg: 1rem;
|
|
45
|
+
--daimo-radius-xl: 20px;
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
/* Dark mode: system preference */
|
|
@@ -81,24 +82,24 @@
|
|
|
81
82
|
}
|
|
82
83
|
}
|
|
83
84
|
|
|
84
|
-
/* Scroll fade —
|
|
85
|
-
|
|
86
|
-
.scroll-fade {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
85
|
+
/* Scroll fade — 32px sticky gradient at bottom of scrollable areas.
|
|
86
|
+
Fades content into the background; disappears when scrolled to bottom. */
|
|
87
|
+
.scroll-fade::after {
|
|
88
|
+
content: "";
|
|
89
|
+
pointer-events: none;
|
|
90
|
+
z-index: 10;
|
|
91
|
+
position: sticky;
|
|
92
|
+
bottom: 0;
|
|
93
|
+
left: 0;
|
|
94
|
+
right: 0;
|
|
95
|
+
display: block;
|
|
96
|
+
height: 32px;
|
|
97
|
+
margin-top: -32px;
|
|
98
|
+
background: linear-gradient(to bottom, transparent, var(--daimo-surface));
|
|
99
|
+
transition: opacity 300ms ease;
|
|
100
|
+
}
|
|
101
|
+
.scroll-fade.scroll-end::after {
|
|
102
|
+
opacity: 0;
|
|
102
103
|
}
|
|
103
104
|
|
|
104
105
|
/* Page enter animation — subtle fade + slide on page change */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCopyToClipboard.d.ts","sourceRoot":"","sources":["../../src/web/useCopyToClipboard.ts"],"names":[],"mappings":"AAEA,oDAAoD;AACpD,wBAAgB,kBAAkB,CAAC,OAAO,SAAO;iBAKhC,MAAM;;EActB"}
|