@daimo/sdk 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/dist/web/components/ChooseOptionPage.d.ts.map +1 -1
  2. package/dist/web/components/ChooseOptionPage.js +2 -2
  3. package/dist/web/components/ChooseOptionPage.js.map +1 -1
  4. package/dist/web/components/DaimoModal.d.ts.map +1 -1
  5. package/dist/web/components/DaimoModal.js +2 -2
  6. package/dist/web/components/DaimoModal.js.map +1 -1
  7. package/dist/web/components/WalletAmountPage.d.ts.map +1 -1
  8. package/dist/web/components/WalletAmountPage.js +9 -4
  9. package/dist/web/components/WalletAmountPage.js.map +1 -1
  10. package/dist/web/components/modalContext.d.ts +4 -0
  11. package/dist/web/components/modalContext.d.ts.map +1 -0
  12. package/dist/web/components/modalContext.js +5 -0
  13. package/dist/web/components/modalContext.js.map +1 -0
  14. package/dist/web/hooks/types.d.ts +2 -0
  15. package/dist/web/hooks/types.d.ts.map +1 -1
  16. package/dist/web/hooks/types.js +13 -0
  17. package/dist/web/hooks/types.js.map +1 -1
  18. package/dist/web/index.d.ts +1 -1
  19. package/dist/web/index.d.ts.map +1 -1
  20. package/dist/web/index.js +1 -1
  21. package/dist/web/index.js.map +1 -1
  22. package/dist/web/styles.css +1 -1
  23. package/package.json +1 -1
  24. package/dist/common/legacy/assert.d.ts +0 -6
  25. package/dist/common/legacy/assert.d.ts.map +0 -1
  26. package/dist/common/legacy/assert.js +0 -25
  27. package/dist/common/legacy/assert.js.map +0 -1
  28. package/dist/common/legacy/client.d.ts +0 -67
  29. package/dist/common/legacy/client.d.ts.map +0 -1
  30. package/dist/common/legacy/client.js +0 -55
  31. package/dist/common/legacy/client.js.map +0 -1
  32. package/dist/common/legacy/debug.d.ts +0 -5
  33. package/dist/common/legacy/debug.d.ts.map +0 -1
  34. package/dist/common/legacy/debug.js +0 -21
  35. package/dist/common/legacy/debug.js.map +0 -1
  36. package/dist/common/legacy/format.d.ts +0 -16
  37. package/dist/common/legacy/format.d.ts.map +0 -1
  38. package/dist/common/legacy/format.js +0 -34
  39. package/dist/common/legacy/format.js.map +0 -1
  40. package/dist/common/legacy/index.d.ts +0 -11
  41. package/dist/common/legacy/index.d.ts.map +0 -1
  42. package/dist/common/legacy/index.js +0 -11
  43. package/dist/common/legacy/index.js.map +0 -1
  44. package/dist/common/legacy/primitiveTypes.d.ts +0 -11
  45. package/dist/common/legacy/primitiveTypes.d.ts.map +0 -1
  46. package/dist/common/legacy/primitiveTypes.js +0 -14
  47. package/dist/common/legacy/primitiveTypes.js.map +0 -1
  48. package/dist/common/legacy/session.d.ts +0 -246
  49. package/dist/common/legacy/session.d.ts.map +0 -1
  50. package/dist/common/legacy/session.js +0 -124
  51. package/dist/common/legacy/session.js.map +0 -1
  52. package/dist/common/legacy/try.d.ts +0 -4
  53. package/dist/common/legacy/try.d.ts.map +0 -1
  54. package/dist/common/legacy/try.js +0 -26
  55. package/dist/common/legacy/try.js.map +0 -1
  56. package/dist/hooks/DaimoClientContext.d.ts +0 -7
  57. package/dist/hooks/DaimoClientContext.d.ts.map +0 -1
  58. package/dist/hooks/DaimoClientContext.js +0 -15
  59. package/dist/hooks/DaimoClientContext.js.map +0 -1
  60. package/dist/hooks/formatUserError.d.ts +0 -3
  61. package/dist/hooks/formatUserError.d.ts.map +0 -1
  62. package/dist/hooks/formatUserError.js +0 -30
  63. package/dist/hooks/formatUserError.js.map +0 -1
  64. package/dist/hooks/index.d.ts +0 -12
  65. package/dist/hooks/index.d.ts.map +0 -1
  66. package/dist/hooks/index.js +0 -9
  67. package/dist/hooks/index.js.map +0 -1
  68. package/dist/hooks/locale.d.ts +0 -7
  69. package/dist/hooks/locale.d.ts.map +0 -1
  70. package/dist/hooks/locale.js +0 -15
  71. package/dist/hooks/locale.js.map +0 -1
  72. package/dist/hooks/locales/en.d.ts +0 -60
  73. package/dist/hooks/locales/en.d.ts.map +0 -1
  74. package/dist/hooks/locales/en.js +0 -76
  75. package/dist/hooks/locales/en.js.map +0 -1
  76. package/dist/hooks/locales/es.d.ts +0 -4
  77. package/dist/hooks/locales/es.d.ts.map +0 -1
  78. package/dist/hooks/locales/es.js +0 -60
  79. package/dist/hooks/locales/es.js.map +0 -1
  80. package/dist/hooks/navEvent.d.ts +0 -60
  81. package/dist/hooks/navEvent.d.ts.map +0 -1
  82. package/dist/hooks/navEvent.js +0 -16
  83. package/dist/hooks/navEvent.js.map +0 -1
  84. package/dist/hooks/types.d.ts +0 -71
  85. package/dist/hooks/types.d.ts.map +0 -1
  86. package/dist/hooks/types.js +0 -14
  87. package/dist/hooks/types.js.map +0 -1
  88. package/dist/hooks/usePaymentCallbacks.d.ts +0 -15
  89. package/dist/hooks/usePaymentCallbacks.d.ts.map +0 -1
  90. package/dist/hooks/usePaymentCallbacks.js +0 -27
  91. package/dist/hooks/usePaymentCallbacks.js.map +0 -1
  92. package/dist/hooks/useSessionNav.d.ts +0 -31
  93. package/dist/hooks/useSessionNav.d.ts.map +0 -1
  94. package/dist/hooks/useSessionNav.js +0 -439
  95. package/dist/hooks/useSessionNav.js.map +0 -1
  96. package/dist/hooks/useSessionPolling.d.ts +0 -10
  97. package/dist/hooks/useSessionPolling.d.ts.map +0 -1
  98. package/dist/hooks/useSessionPolling.js +0 -61
  99. package/dist/hooks/useSessionPolling.js.map +0 -1
  100. package/dist/web/ChooseOptionPage.d.ts +0 -9
  101. package/dist/web/ChooseOptionPage.d.ts.map +0 -1
  102. package/dist/web/ChooseOptionPage.js +0 -51
  103. package/dist/web/ChooseOptionPage.js.map +0 -1
  104. package/dist/web/ConfirmationPage.d.ts +0 -32
  105. package/dist/web/ConfirmationPage.d.ts.map +0 -1
  106. package/dist/web/ConfirmationPage.js +0 -72
  107. package/dist/web/ConfirmationPage.js.map +0 -1
  108. package/dist/web/ConfirmationSpinner.d.ts +0 -7
  109. package/dist/web/ConfirmationSpinner.d.ts.map +0 -1
  110. package/dist/web/ConfirmationSpinner.js +0 -20
  111. package/dist/web/ConfirmationSpinner.js.map +0 -1
  112. package/dist/web/DaimoModal.d.ts +0 -15
  113. package/dist/web/DaimoModal.d.ts.map +0 -1
  114. package/dist/web/DaimoModal.js +0 -283
  115. package/dist/web/DaimoModal.js.map +0 -1
  116. package/dist/web/DeeplinkPage.d.ts +0 -8
  117. package/dist/web/DeeplinkPage.d.ts.map +0 -1
  118. package/dist/web/DeeplinkPage.js +0 -13
  119. package/dist/web/DeeplinkPage.js.map +0 -1
  120. package/dist/web/ErrorPage.d.ts +0 -28
  121. package/dist/web/ErrorPage.d.ts.map +0 -1
  122. package/dist/web/ErrorPage.js +0 -47
  123. package/dist/web/ErrorPage.js.map +0 -1
  124. package/dist/web/ExchangePage.d.ts +0 -11
  125. package/dist/web/ExchangePage.d.ts.map +0 -1
  126. package/dist/web/ExchangePage.js +0 -13
  127. package/dist/web/ExchangePage.js.map +0 -1
  128. package/dist/web/ExpiredPage.d.ts +0 -9
  129. package/dist/web/ExpiredPage.d.ts.map +0 -1
  130. package/dist/web/ExpiredPage.js +0 -12
  131. package/dist/web/ExpiredPage.js.map +0 -1
  132. package/dist/web/ModalSkeleton.d.ts +0 -7
  133. package/dist/web/ModalSkeleton.d.ts.map +0 -1
  134. package/dist/web/ModalSkeleton.js +0 -13
  135. package/dist/web/ModalSkeleton.js.map +0 -1
  136. package/dist/web/ProgressDots.d.ts +0 -16
  137. package/dist/web/ProgressDots.d.ts.map +0 -1
  138. package/dist/web/ProgressDots.js +0 -55
  139. package/dist/web/ProgressDots.js.map +0 -1
  140. package/dist/web/QRCode.d.ts +0 -7
  141. package/dist/web/QRCode.d.ts.map +0 -1
  142. package/dist/web/QRCode.js +0 -69
  143. package/dist/web/QRCode.js.map +0 -1
  144. package/dist/web/SelectAmountPage.d.ts +0 -21
  145. package/dist/web/SelectAmountPage.d.ts.map +0 -1
  146. package/dist/web/SelectAmountPage.js +0 -27
  147. package/dist/web/SelectAmountPage.js.map +0 -1
  148. package/dist/web/SelectTokenPage.d.ts +0 -14
  149. package/dist/web/SelectTokenPage.d.ts.map +0 -1
  150. package/dist/web/SelectTokenPage.js +0 -71
  151. package/dist/web/SelectTokenPage.js.map +0 -1
  152. package/dist/web/WaitingDepositAddressPage.d.ts +0 -14
  153. package/dist/web/WaitingDepositAddressPage.d.ts.map +0 -1
  154. package/dist/web/WaitingDepositAddressPage.js +0 -126
  155. package/dist/web/WaitingDepositAddressPage.js.map +0 -1
  156. package/dist/web/WalletAmountPage.d.ts +0 -10
  157. package/dist/web/WalletAmountPage.d.ts.map +0 -1
  158. package/dist/web/WalletAmountPage.js +0 -158
  159. package/dist/web/WalletAmountPage.js.map +0 -1
  160. package/dist/web/buttons.d.ts +0 -15
  161. package/dist/web/buttons.d.ts.map +0 -1
  162. package/dist/web/buttons.js +0 -24
  163. package/dist/web/buttons.js.map +0 -1
  164. package/dist/web/containers.d.ts +0 -19
  165. package/dist/web/containers.d.ts.map +0 -1
  166. package/dist/web/containers.js +0 -77
  167. package/dist/web/containers.js.map +0 -1
  168. package/dist/web/icons.d.ts +0 -22
  169. package/dist/web/icons.d.ts.map +0 -1
  170. package/dist/web/icons.js +0 -33
  171. package/dist/web/icons.js.map +0 -1
  172. package/dist/web/shared.d.ts +0 -93
  173. package/dist/web/shared.d.ts.map +0 -1
  174. package/dist/web/shared.js +0 -202
  175. package/dist/web/shared.js.map +0 -1
  176. package/dist/web/useCopyToClipboard.d.ts +0 -6
  177. package/dist/web/useCopyToClipboard.d.ts.map +0 -1
  178. package/dist/web/useCopyToClipboard.js +0 -20
  179. package/dist/web/useCopyToClipboard.js.map +0 -1
  180. package/dist/web/useWalletFlow.d.ts +0 -23
  181. package/dist/web/useWalletFlow.d.ts.map +0 -1
  182. package/dist/web/useWalletFlow.js +0 -334
  183. package/dist/web/useWalletFlow.js.map +0 -1
  184. package/dist/web/walletProvider.d.ts +0 -34
  185. package/dist/web/walletProvider.d.ts.map +0 -1
  186. package/dist/web/walletProvider.js +0 -14
  187. package/dist/web/walletProvider.js.map +0 -1
@@ -1,158 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useCallback, useEffect, useState } from "react";
3
- import { formatUnits } from "viem";
4
- import { PrimaryButton } from "./buttons.js";
5
- import { t } from "../hooks/locale.js";
6
- import { PageHeader, TokenIconWithChainBadge } from "./shared.js";
7
- /** Check if device supports touch (to avoid autofocus on mobile) */
8
- function isTouchDevice() {
9
- if (typeof window === "undefined")
10
- return false;
11
- return "ontouchstart" in window || navigator.maxTouchPoints > 0;
12
- }
13
- /** Amount entry page for wallet payment flow */
14
- export function WalletAmountPage({ token, onBack, onContinue, }) {
15
- const balanceToken = token.balance.token;
16
- const minimumUsd = token.minimumRequired.usd;
17
- const maximumUsd = token.balance.usd;
18
- // Check if this is a USD stablecoin (fiatISO is set on base Token type)
19
- const isUsdStablecoin = balanceToken.fiatISO === "USD";
20
- // Input state
21
- const [usdStr, setUsdStr] = useState("");
22
- const [tokenStr, setTokenStr] = useState("");
23
- const [isEditingUsd, setIsEditingUsd] = useState(true);
24
- // Derived values - use rounded max for comparison to avoid floating point issues
25
- const amountUsd = parseFloat(usdStr) || 0;
26
- const roundedMaxUsd = parseFloat(roundUsd(maximumUsd));
27
- const isValid = amountUsd >= minimumUsd && amountUsd <= roundedMaxUsd;
28
- const showMinWarning = usdStr !== "" && amountUsd < minimumUsd;
29
- const showMaxWarning = usdStr !== "" && amountUsd > roundedMaxUsd;
30
- // Convert between USD and token amounts using token.usd (price of 1 token in USD)
31
- const usdToTokenStr = useCallback((usd) => {
32
- if (usd === 0)
33
- return "";
34
- // usd / token.usd = how many tokens for that USD amount
35
- const tokenAmount = usd / balanceToken.usd;
36
- return roundTokenAmountUnits(tokenAmount, balanceToken);
37
- }, [balanceToken]);
38
- const tokenToUsdStr = useCallback((tokenAmountUnits) => {
39
- if (tokenAmountUnits === 0)
40
- return "";
41
- // tokenAmount * token.usd = USD value
42
- const usd = tokenAmountUnits * balanceToken.usd;
43
- return roundUsd(usd);
44
- }, [balanceToken]);
45
- // Update values when input changes
46
- const updateValues = useCallback((newUsdStr, newTokenStr, editingUsd) => {
47
- // When switching modes, format the non-edited value nicely
48
- if (editingUsd) {
49
- const tokenNum = parseFloat(newTokenStr) || 0;
50
- const formattedToken = tokenNum > 0
51
- ? stripTrailingZeros(roundTokenAmountUnits(tokenNum, balanceToken))
52
- : "";
53
- setUsdStr(newUsdStr);
54
- setTokenStr(formattedToken);
55
- }
56
- else {
57
- const usdNum = parseFloat(newUsdStr) || 0;
58
- const formattedUsd = usdNum > 0 ? roundUsd(usdNum) : "";
59
- setUsdStr(formattedUsd);
60
- setTokenStr(newTokenStr);
61
- }
62
- setIsEditingUsd(editingUsd);
63
- }, [balanceToken]);
64
- const handleInputChange = (e) => {
65
- const value = e.target.value;
66
- // Allow empty, or digits with up to appropriate decimal places
67
- const maxDecimals = isEditingUsd ? 2 : balanceToken.displayDecimals;
68
- const regex = new RegExp(`^\\d*\\.?\\d{0,${maxDecimals}}$`);
69
- if (value !== "" && !regex.test(value))
70
- return;
71
- if (isEditingUsd) {
72
- const newUsd = parseFloat(value) || 0;
73
- setUsdStr(value);
74
- setTokenStr(usdToTokenStr(newUsd));
75
- }
76
- else {
77
- const newToken = parseFloat(value) || 0;
78
- setTokenStr(value);
79
- setUsdStr(tokenToUsdStr(newToken));
80
- }
81
- };
82
- const handleKeyDown = (e) => {
83
- if (e.key === "Enter" && isValid) {
84
- onContinue(amountUsd);
85
- }
86
- };
87
- const handleMax = () => {
88
- const maxTokenAmountUnits = Number(formatUnits(BigInt(token.balance.amount), balanceToken.decimals));
89
- const maxUsdStr = roundUsd(maximumUsd);
90
- const maxTokenStr = roundTokenAmountUnits(maxTokenAmountUnits, balanceToken);
91
- setUsdStr(maxUsdStr);
92
- setTokenStr(maxTokenStr);
93
- };
94
- const handleSwitchCurrency = () => {
95
- updateValues(usdStr, tokenStr, !isEditingUsd);
96
- };
97
- // Autofocus only on non-touch devices to avoid keyboard popup
98
- const [shouldAutoFocus, setShouldAutoFocus] = useState(false);
99
- useEffect(() => {
100
- setShouldAutoFocus(!isTouchDevice());
101
- }, []);
102
- // Dynamic input width
103
- const currentValue = isEditingUsd ? usdStr : tokenStr;
104
- const inputWidth = currentValue.length === 0
105
- ? "3.55ch"
106
- : `${Math.min(currentValue.length - (currentValue.match(/\./g) || []).length * 0.45, 10)}ch`;
107
- // Balance/warning message
108
- const maxTokenAmountUnits = Number(formatUnits(BigInt(token.balance.amount), balanceToken.decimals));
109
- const getBalanceMessage = () => {
110
- if (isEditingUsd) {
111
- return isUsdStablecoin
112
- ? `${t.balance} $${roundUsd(maximumUsd)}`
113
- : `${t.balance} $${roundUsd(maximumUsd)} ${balanceToken.symbol}`;
114
- }
115
- return `${t.balance} ${roundTokenAmountUnits(maxTokenAmountUnits, balanceToken)} ${balanceToken.symbol}`;
116
- };
117
- const getMessage = () => {
118
- const formatAmount = (usd) => isEditingUsd
119
- ? `$${roundUsd(usd)}`
120
- : `${usdToTokenStr(usd)} ${balanceToken.symbol}`;
121
- if (showMaxWarning)
122
- return `${t.maximum} ${formatAmount(maximumUsd)}`;
123
- if (showMinWarning)
124
- return `${t.minimum} ${formatAmount(minimumUsd)}`;
125
- return getBalanceMessage();
126
- };
127
- const messageClass = showMinWarning || showMaxWarning
128
- ? "text-sm text-[var(--daimo-text)]"
129
- : "text-sm text-[var(--daimo-text-secondary)]";
130
- // Secondary amount for switch button
131
- const secondaryAmount = isEditingUsd
132
- ? `${tokenStr || "0"} ${balanceToken.symbol}`
133
- : `$${usdStr || roundUsd(0)}`;
134
- return (_jsxs("div", { className: "flex flex-col flex-1", children: [_jsx(PageHeader, { title: t.enterAmount, onBack: onBack }), _jsxs("div", { className: "flex-1 flex flex-col items-center justify-center p-6 gap-6", children: [_jsx(TokenIconWithChainBadge, { token: balanceToken, size: "lg" }), _jsxs("div", { className: "flex items-center justify-center gap-2", children: [_jsx("button", { className: "invisible px-3 py-1 text-sm min-h-[44px]", children: t.max }), _jsxs("div", { className: "flex items-center justify-center gap-1", children: [isEditingUsd && (_jsx("span", { className: `text-3xl font-semibold tabular-nums ${usdStr ? "text-[var(--daimo-text)]" : "text-[var(--daimo-placeholder)]"}`, children: "$" })), _jsx("input", { type: "text", inputMode: "decimal", value: currentValue, 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)] tabular-nums", style: {
135
- width: inputWidth,
136
- minWidth: "1ch",
137
- maxWidth: "10ch",
138
- fontSize: "clamp(16px, 3rem, 3rem)", // Ensure 16px minimum for iOS
139
- }, autoFocus: shouldAutoFocus }), !isEditingUsd && (_jsx("span", { className: "text-xl font-semibold text-[var(--daimo-text-muted)]", children: balanceToken.symbol }))] }), _jsx("button", { onClick: handleMax, className: "px-3 py-1 min-h-[44px] min-w-[44px] text-sm font-normal rounded-full bg-[var(--daimo-surface-secondary)] text-[var(--daimo-text-secondary)] hover:[@media(hover:hover)]:bg-[var(--daimo-surface-hover)] active:scale-[0.95] touch-action-manipulation transition-[background-color,transform] duration-150 ease-out", children: t.max })] }), !isUsdStablecoin && (_jsxs("button", { onClick: handleSwitchCurrency, className: "flex items-center gap-1 min-h-[44px] px-4 hover:[@media(hover:hover)]:opacity-70 active:opacity-50 touch-action-manipulation transition-opacity duration-150 ease", children: [_jsx(SwitchIcon, {}), _jsx("span", { className: "text-base text-[var(--daimo-text-secondary)] tabular-nums", children: secondaryAmount })] })), _jsx("p", { className: `${messageClass} tabular-nums`, children: getMessage() }), _jsx(PrimaryButton, { onClick: () => isValid && onContinue(amountUsd), disabled: !isValid, children: t.continue })] })] }));
140
- }
141
- // --- Helpers ---
142
- const USD_DECIMALS = 2;
143
- function roundUsd(usd) {
144
- return usd.toFixed(USD_DECIMALS);
145
- }
146
- function roundTokenAmountUnits(amountUnits, token) {
147
- if (amountUnits === 0)
148
- return "0";
149
- const decimals = token.displayDecimals;
150
- return amountUnits.toFixed(decimals);
151
- }
152
- function stripTrailingZeros(val) {
153
- return val.includes(".") ? val.replace(/\.?0+$/, "") : val;
154
- }
155
- function SwitchIcon() {
156
- return (_jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", className: "text-[var(--daimo-text-muted)]", children: _jsx("path", { d: "M7 10L12 5L17 10M17 14L12 19L7 14", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }));
157
- }
158
- //# sourceMappingURL=WalletAmountPage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WalletAmountPage.js","sourceRoot":"","sources":["../../src/web/WalletAmountPage.tsx"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { ReactNode } from "react";
2
- import { ExternalLinkIcon } from "./icons.js";
3
- export { ExternalLinkIcon };
4
- type ButtonProps = {
5
- children: ReactNode;
6
- onClick?: () => void;
7
- disabled?: boolean;
8
- icon?: ReactNode;
9
- className?: string;
10
- };
11
- /** Primary action button - full width, prominent styling */
12
- export declare function PrimaryButton({ children, onClick, disabled, icon, className, }: ButtonProps): import("react/jsx-runtime").JSX.Element;
13
- /** Secondary action button - for less prominent actions like "Done", "Close" */
14
- export declare function SecondaryButton({ children, onClick, disabled, icon, className, }: ButtonProps): import("react/jsx-runtime").JSX.Element;
15
- //# sourceMappingURL=buttons.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buttons.d.ts","sourceRoot":"","sources":["../../src/web/buttons.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,IAAI,EACJ,SAAc,GACf,EAAE,WAAW,2CAqBb;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,IAAI,EACJ,SAAc,GACf,EAAE,WAAW,2CAqBb"}
@@ -1,24 +0,0 @@
1
- import { jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ExternalLinkIcon } from "./icons.js";
3
- export { ExternalLinkIcon };
4
- /** Primary action button - full width, prominent styling */
5
- export function PrimaryButton({ children, onClick, disabled = false, icon, className = "", }) {
6
- // Base: min 44px tap target, prevent double-tap zoom
7
- const baseStyles = "w-full max-w-xs min-h-[44px] py-4 px-6 rounded-[var(--daimo-radius-lg)] font-semibold flex items-center justify-center gap-2 touch-action-manipulation transition-[background-color,transform] duration-150 ease-out";
8
- // Active press effect for responsive feel
9
- const activeStyles = "active:scale-[0.97]";
10
- const enabledStyles = "bg-[var(--daimo-surface-secondary)] text-[var(--daimo-text)] hover:[@media(hover:hover)]:bg-[var(--daimo-surface-hover)]";
11
- const disabledStyles = "bg-[var(--daimo-surface-secondary)] text-[var(--daimo-text-muted)] cursor-not-allowed";
12
- return (_jsxs("button", { onClick: onClick, disabled: disabled, className: `${baseStyles} ${disabled ? disabledStyles : `${enabledStyles} ${activeStyles}`} ${className}`, children: [icon, children] }));
13
- }
14
- /** Secondary action button - for less prominent actions like "Done", "Close" */
15
- export function SecondaryButton({ children, onClick, disabled = false, icon, className = "", }) {
16
- // Base: min 44px tap target, prevent double-tap zoom
17
- const baseStyles = "min-h-[44px] py-3 px-8 rounded-[var(--daimo-radius-md)] font-medium flex items-center justify-center gap-2 touch-action-manipulation transition-[background-color,transform] duration-150 ease-out";
18
- // Active press effect for responsive feel
19
- const activeStyles = "active:scale-[0.97]";
20
- const enabledStyles = "bg-[var(--daimo-surface-secondary)] text-[var(--daimo-text)] hover:[@media(hover:hover)]:bg-[var(--daimo-surface-hover)]";
21
- const disabledStyles = "bg-[var(--daimo-surface-secondary)] text-[var(--daimo-text-muted)] cursor-not-allowed";
22
- return (_jsxs("button", { onClick: onClick, disabled: disabled, className: `${baseStyles} ${disabled ? disabledStyles : `${enabledStyles} ${activeStyles}`} ${className}`, children: [icon, children] }));
23
- }
24
- //# sourceMappingURL=buttons.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buttons.js","sourceRoot":"","sources":["../../src/web/buttons.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAU5B,4DAA4D;AAC5D,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,IAAI,EACJ,SAAS,GAAG,EAAE,GACF;IACZ,qDAAqD;IACrD,MAAM,UAAU,GACd,sNAAsN,CAAC;IACzN,0CAA0C;IAC1C,MAAM,YAAY,GAAG,qBAAqB,CAAC;IAC3C,MAAM,aAAa,GACjB,0HAA0H,CAAC;IAC7H,MAAM,cAAc,GAClB,uFAAuF,CAAC;IAE1F,OAAO,CACL,kBACE,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,GAAG,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,YAAY,EAAE,IAAI,SAAS,EAAE,aAExG,IAAI,EACJ,QAAQ,IACF,CACV,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,IAAI,EACJ,SAAS,GAAG,EAAE,GACF;IACZ,qDAAqD;IACrD,MAAM,UAAU,GACd,oMAAoM,CAAC;IACvM,0CAA0C;IAC1C,MAAM,YAAY,GAAG,qBAAqB,CAAC;IAC3C,MAAM,aAAa,GACjB,0HAA0H,CAAC;IAC7H,MAAM,cAAc,GAClB,uFAAuF,CAAC;IAE1F,OAAO,CACL,kBACE,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,GAAG,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,YAAY,EAAE,IAAI,SAAS,EAAE,aAExG,IAAI,EACJ,QAAQ,IACF,CACV,CAAC;AACJ,CAAC"}
@@ -1,19 +0,0 @@
1
- import { ReactNode } from "react";
2
- type ContainerProps = {
3
- children: ReactNode;
4
- showFooterSpacer?: boolean;
5
- };
6
- type ModalContainerProps = ContainerProps & {
7
- /** Handler for closing the modal (backdrop click + close button) */
8
- onClose?: () => void;
9
- /** Whether to animate the modal entrance. Default: true */
10
- animate?: boolean;
11
- /** Key identifying current page — height morphs on change */
12
- pageKey?: string;
13
- /** Fixed max height in pixels. When set, content may scroll. */
14
- maxHeight?: number;
15
- };
16
- export declare function ModalContainer({ children, showFooterSpacer, onClose, animate, pageKey, maxHeight, }: ModalContainerProps): import("react/jsx-runtime").JSX.Element;
17
- export declare function EmbeddedContainer({ children, showFooterSpacer, }: ContainerProps): import("react/jsx-runtime").JSX.Element;
18
- export {};
19
- //# sourceMappingURL=containers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../src/web/containers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,OAAO,CAAC;AAKrD,KAAK,cAAc,GAAG;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,KAAK,mBAAmB,GAAG,cAAc,GAAG;IAC1C,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAgDF,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,gBAAuB,EACvB,OAAO,EACP,OAAc,EACd,OAAO,EACP,SAAS,GACV,EAAE,mBAAmB,2CA0CrB;AAsBD,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,gBAAuB,GACxB,EAAE,cAAc,2CAShB"}
@@ -1,77 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useEffect, useRef } from "react";
3
- import { CloseIcon } from "./icons.js";
4
- import { t } from "../hooks/locale.js";
5
- /**
6
- * Quick height morph on discrete page changes.
7
- * Snapshots current height, measures new, tweens between.
8
- * Does NOT run on continuous resizes (QR spacer handles its own).
9
- */
10
- function usePageHeightMorph(ref, pageKey) {
11
- const prevKey = useRef(pageKey);
12
- useEffect(() => {
13
- if (prevKey.current === pageKey)
14
- return;
15
- prevKey.current = pageKey;
16
- const el = ref.current;
17
- if (!el)
18
- return;
19
- // Snapshot current rendered height
20
- const from = el.offsetHeight;
21
- // Remove any leftover explicit height so we can measure natural size
22
- el.style.transition = "none";
23
- el.style.height = "auto";
24
- // Read new natural height
25
- const to = el.scrollHeight;
26
- if (from === to)
27
- return;
28
- // FLIP: set to old height, then animate to new
29
- el.style.height = `${from}px`;
30
- // Force reflow so the browser registers the start value
31
- void el.offsetHeight;
32
- el.style.transition = "height 180ms cubic-bezier(0.23, 1, 0.32, 1)";
33
- el.style.height = `${to}px`;
34
- const cleanup = () => {
35
- el.style.transition = "";
36
- el.style.height = "";
37
- el.removeEventListener("transitionend", cleanup);
38
- };
39
- el.addEventListener("transitionend", cleanup);
40
- }, [ref, pageKey]);
41
- }
42
- export function ModalContainer({ children, showFooterSpacer = true, onClose, animate = true, pageKey, maxHeight, }) {
43
- const backdropClass = animate
44
- ? "daimo-modal-backdrop fixed inset-0 z-50 bg-black/50"
45
- : "fixed inset-0 z-50 bg-black/50";
46
- const overflow = maxHeight ? "overflow-hidden" : "max-h-[90vh] overflow-y-auto";
47
- const baseContentClass = `relative w-full max-w-md ${overflow} bg-[var(--daimo-surface)] rounded-t-[var(--daimo-radius-lg)] sm:rounded-[var(--daimo-radius-lg)] shadow-lg flex flex-col`;
48
- const contentClass = animate
49
- ? `daimo-modal-content ${baseContentClass}`
50
- : baseContentClass;
51
- const contentRef = useRef(null);
52
- usePageHeightMorph(contentRef, pageKey);
53
- return (_jsxs(_Fragment, { children: [animate && _jsx("style", { children: modalAnimationStyles }), _jsx("div", { className: backdropClass, onClick: onClose }), _jsx("div", { className: "fixed inset-x-0 bottom-0 z-50 flex justify-center px-0 sm:px-4 sm:pb-4", children: _jsxs("div", { ref: contentRef, className: contentClass, style: maxHeight ? { maxHeight } : undefined, onClick: (e) => e.stopPropagation(), children: [onClose && (_jsx("button", { onClick: onClose, className: "absolute right-2 top-6 z-20 px-4 py-2", "aria-label": t.close, children: _jsx(CloseIcon, { size: 30 }) })), _jsx("div", { className: "flex-1 min-h-0 flex flex-col", children: children }), showFooterSpacer && _jsx("div", { className: "h-8 shrink-0" })] }) })] }));
54
- }
55
- const modalAnimationStyles = `
56
- .daimo-modal-backdrop {
57
- animation: daimo-backdrop-in 200ms ease-out forwards;
58
- }
59
- @keyframes daimo-backdrop-in {
60
- from { opacity: 0; }
61
- to { opacity: 1; }
62
- }
63
- .daimo-modal-content {
64
- animation: daimo-modal-slide-up 200ms ease-out forwards;
65
- }
66
- @keyframes daimo-modal-slide-up {
67
- from { opacity: 0; transform: translateY(100%); }
68
- to { opacity: 1; transform: translateY(0); }
69
- }
70
- @media (prefers-reduced-motion: reduce) {
71
- .daimo-modal-backdrop, .daimo-modal-content { animation: none; }
72
- }
73
- `;
74
- export function EmbeddedContainer({ children, showFooterSpacer = true, }) {
75
- return (_jsx("div", { className: "bg-transparent flex flex-col items-center", children: _jsxs("div", { className: "w-full max-w-[512px] bg-[var(--daimo-surface)] flex flex-col", children: [children, showFooterSpacer && _jsx("div", { className: "h-8" })] }) }));
76
- }
77
- //# sourceMappingURL=containers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"containers.js","sourceRoot":"","sources":["../../src/web/containers.tsx"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
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
@@ -1 +0,0 @@
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"}
package/dist/web/icons.js DELETED
@@ -1,33 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/web/icons.tsx"],"names":[],"mappings":"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"}
@@ -1,93 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/web/shared.tsx"],"names":[],"mappings":"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"}