@daimo/sdk 1.0.0-rc.1

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 (186) hide show
  1. package/dist/client/createDaimoClient.d.ts +33 -0
  2. package/dist/client/createDaimoClient.d.ts.map +1 -0
  3. package/dist/client/createDaimoClient.js +79 -0
  4. package/dist/client/createDaimoClient.js.map +1 -0
  5. package/dist/client/index.d.ts +4 -0
  6. package/dist/client/index.d.ts.map +1 -0
  7. package/dist/client/index.js +2 -0
  8. package/dist/client/index.js.map +1 -0
  9. package/dist/client/transport.d.ts +15 -0
  10. package/dist/client/transport.d.ts.map +1 -0
  11. package/dist/client/transport.js +95 -0
  12. package/dist/client/transport.js.map +1 -0
  13. package/dist/common/api.d.ts +184 -0
  14. package/dist/common/api.d.ts.map +1 -0
  15. package/dist/common/api.js +40 -0
  16. package/dist/common/api.js.map +1 -0
  17. package/dist/common/chain.d.ts +35 -0
  18. package/dist/common/chain.d.ts.map +1 -0
  19. package/dist/common/chain.js +198 -0
  20. package/dist/common/chain.js.map +1 -0
  21. package/dist/common/errors.d.ts +29 -0
  22. package/dist/common/errors.d.ts.map +1 -0
  23. package/dist/common/errors.js +41 -0
  24. package/dist/common/errors.js.map +1 -0
  25. package/dist/common/index.d.ts +7 -0
  26. package/dist/common/index.d.ts.map +1 -0
  27. package/dist/common/index.js +7 -0
  28. package/dist/common/index.js.map +1 -0
  29. package/dist/common/primitives.d.ts +13 -0
  30. package/dist/common/primitives.d.ts.map +1 -0
  31. package/dist/common/primitives.js +14 -0
  32. package/dist/common/primitives.js.map +1 -0
  33. package/dist/common/session.d.ts +140 -0
  34. package/dist/common/session.d.ts.map +1 -0
  35. package/dist/common/session.js +16 -0
  36. package/dist/common/session.js.map +1 -0
  37. package/dist/common/token.d.ts +130 -0
  38. package/dist/common/token.d.ts.map +1 -0
  39. package/dist/common/token.js +783 -0
  40. package/dist/common/token.js.map +1 -0
  41. package/dist/web/api/index.d.ts +3 -0
  42. package/dist/web/api/index.d.ts.map +1 -0
  43. package/dist/web/api/index.js +2 -0
  44. package/dist/web/api/index.js.map +1 -0
  45. package/dist/web/api/navTree.d.ts +52 -0
  46. package/dist/web/api/navTree.d.ts.map +1 -0
  47. package/dist/web/api/navTree.js +2 -0
  48. package/dist/web/api/navTree.js.map +1 -0
  49. package/dist/web/api/walletTypes.d.ts +25 -0
  50. package/dist/web/api/walletTypes.d.ts.map +1 -0
  51. package/dist/web/api/walletTypes.js +2 -0
  52. package/dist/web/api/walletTypes.js.map +1 -0
  53. package/dist/web/components/ChooseOptionPage.d.ts +9 -0
  54. package/dist/web/components/ChooseOptionPage.d.ts.map +1 -0
  55. package/dist/web/components/ChooseOptionPage.js +51 -0
  56. package/dist/web/components/ChooseOptionPage.js.map +1 -0
  57. package/dist/web/components/ConfirmationPage.d.ts +32 -0
  58. package/dist/web/components/ConfirmationPage.d.ts.map +1 -0
  59. package/dist/web/components/ConfirmationPage.js +72 -0
  60. package/dist/web/components/ConfirmationPage.js.map +1 -0
  61. package/dist/web/components/ConfirmationSpinner.d.ts +7 -0
  62. package/dist/web/components/ConfirmationSpinner.d.ts.map +1 -0
  63. package/dist/web/components/ConfirmationSpinner.js +20 -0
  64. package/dist/web/components/ConfirmationSpinner.js.map +1 -0
  65. package/dist/web/components/DaimoModal.d.ts +15 -0
  66. package/dist/web/components/DaimoModal.d.ts.map +1 -0
  67. package/dist/web/components/DaimoModal.js +314 -0
  68. package/dist/web/components/DaimoModal.js.map +1 -0
  69. package/dist/web/components/DeeplinkPage.d.ts +8 -0
  70. package/dist/web/components/DeeplinkPage.d.ts.map +1 -0
  71. package/dist/web/components/DeeplinkPage.js +13 -0
  72. package/dist/web/components/DeeplinkPage.js.map +1 -0
  73. package/dist/web/components/ErrorPage.d.ts +29 -0
  74. package/dist/web/components/ErrorPage.d.ts.map +1 -0
  75. package/dist/web/components/ErrorPage.js +47 -0
  76. package/dist/web/components/ErrorPage.js.map +1 -0
  77. package/dist/web/components/ExchangePage.d.ts +11 -0
  78. package/dist/web/components/ExchangePage.d.ts.map +1 -0
  79. package/dist/web/components/ExchangePage.js +13 -0
  80. package/dist/web/components/ExchangePage.js.map +1 -0
  81. package/dist/web/components/ExpiredPage.d.ts +9 -0
  82. package/dist/web/components/ExpiredPage.d.ts.map +1 -0
  83. package/dist/web/components/ExpiredPage.js +12 -0
  84. package/dist/web/components/ExpiredPage.js.map +1 -0
  85. package/dist/web/components/ModalSkeleton.d.ts +7 -0
  86. package/dist/web/components/ModalSkeleton.d.ts.map +1 -0
  87. package/dist/web/components/ModalSkeleton.js +13 -0
  88. package/dist/web/components/ModalSkeleton.js.map +1 -0
  89. package/dist/web/components/ProgressDots.d.ts +16 -0
  90. package/dist/web/components/ProgressDots.d.ts.map +1 -0
  91. package/dist/web/components/ProgressDots.js +55 -0
  92. package/dist/web/components/ProgressDots.js.map +1 -0
  93. package/dist/web/components/QRCode.d.ts +7 -0
  94. package/dist/web/components/QRCode.d.ts.map +1 -0
  95. package/dist/web/components/QRCode.js +69 -0
  96. package/dist/web/components/QRCode.js.map +1 -0
  97. package/dist/web/components/SelectAmountPage.d.ts +21 -0
  98. package/dist/web/components/SelectAmountPage.d.ts.map +1 -0
  99. package/dist/web/components/SelectAmountPage.js +27 -0
  100. package/dist/web/components/SelectAmountPage.js.map +1 -0
  101. package/dist/web/components/SelectTokenPage.d.ts +14 -0
  102. package/dist/web/components/SelectTokenPage.d.ts.map +1 -0
  103. package/dist/web/components/SelectTokenPage.js +71 -0
  104. package/dist/web/components/SelectTokenPage.js.map +1 -0
  105. package/dist/web/components/WaitingDepositAddressPage.d.ts +15 -0
  106. package/dist/web/components/WaitingDepositAddressPage.d.ts.map +1 -0
  107. package/dist/web/components/WaitingDepositAddressPage.js +126 -0
  108. package/dist/web/components/WaitingDepositAddressPage.js.map +1 -0
  109. package/dist/web/components/WalletAmountPage.d.ts +10 -0
  110. package/dist/web/components/WalletAmountPage.d.ts.map +1 -0
  111. package/dist/web/components/WalletAmountPage.js +158 -0
  112. package/dist/web/components/WalletAmountPage.js.map +1 -0
  113. package/dist/web/components/buttons.d.ts +15 -0
  114. package/dist/web/components/buttons.d.ts.map +1 -0
  115. package/dist/web/components/buttons.js +24 -0
  116. package/dist/web/components/buttons.js.map +1 -0
  117. package/dist/web/components/containers.d.ts +19 -0
  118. package/dist/web/components/containers.d.ts.map +1 -0
  119. package/dist/web/components/containers.js +77 -0
  120. package/dist/web/components/containers.js.map +1 -0
  121. package/dist/web/components/icons.d.ts +22 -0
  122. package/dist/web/components/icons.d.ts.map +1 -0
  123. package/dist/web/components/icons.js +33 -0
  124. package/dist/web/components/icons.js.map +1 -0
  125. package/dist/web/components/shared.d.ts +93 -0
  126. package/dist/web/components/shared.d.ts.map +1 -0
  127. package/dist/web/components/shared.js +202 -0
  128. package/dist/web/components/shared.js.map +1 -0
  129. package/dist/web/hooks/DaimoClientContext.d.ts +7 -0
  130. package/dist/web/hooks/DaimoClientContext.d.ts.map +1 -0
  131. package/dist/web/hooks/DaimoClientContext.js +15 -0
  132. package/dist/web/hooks/DaimoClientContext.js.map +1 -0
  133. package/dist/web/hooks/formatUserError.d.ts +3 -0
  134. package/dist/web/hooks/formatUserError.d.ts.map +1 -0
  135. package/dist/web/hooks/formatUserError.js +30 -0
  136. package/dist/web/hooks/formatUserError.js.map +1 -0
  137. package/dist/web/hooks/locale.d.ts +7 -0
  138. package/dist/web/hooks/locale.d.ts.map +1 -0
  139. package/dist/web/hooks/locale.js +15 -0
  140. package/dist/web/hooks/locale.js.map +1 -0
  141. package/dist/web/hooks/locales/en.d.ts +60 -0
  142. package/dist/web/hooks/locales/en.d.ts.map +1 -0
  143. package/dist/web/hooks/locales/en.js +76 -0
  144. package/dist/web/hooks/locales/en.js.map +1 -0
  145. package/dist/web/hooks/locales/es.d.ts +4 -0
  146. package/dist/web/hooks/locales/es.d.ts.map +1 -0
  147. package/dist/web/hooks/locales/es.js +60 -0
  148. package/dist/web/hooks/locales/es.js.map +1 -0
  149. package/dist/web/hooks/navEvent.d.ts +60 -0
  150. package/dist/web/hooks/navEvent.d.ts.map +1 -0
  151. package/dist/web/hooks/navEvent.js +12 -0
  152. package/dist/web/hooks/navEvent.js.map +1 -0
  153. package/dist/web/hooks/types.d.ts +72 -0
  154. package/dist/web/hooks/types.d.ts.map +1 -0
  155. package/dist/web/hooks/types.js +14 -0
  156. package/dist/web/hooks/types.js.map +1 -0
  157. package/dist/web/hooks/useCopyToClipboard.d.ts +6 -0
  158. package/dist/web/hooks/useCopyToClipboard.d.ts.map +1 -0
  159. package/dist/web/hooks/useCopyToClipboard.js +20 -0
  160. package/dist/web/hooks/useCopyToClipboard.js.map +1 -0
  161. package/dist/web/hooks/usePaymentCallbacks.d.ts +15 -0
  162. package/dist/web/hooks/usePaymentCallbacks.d.ts.map +1 -0
  163. package/dist/web/hooks/usePaymentCallbacks.js +27 -0
  164. package/dist/web/hooks/usePaymentCallbacks.js.map +1 -0
  165. package/dist/web/hooks/useSessionNav.d.ts +28 -0
  166. package/dist/web/hooks/useSessionNav.d.ts.map +1 -0
  167. package/dist/web/hooks/useSessionNav.js +422 -0
  168. package/dist/web/hooks/useSessionNav.js.map +1 -0
  169. package/dist/web/hooks/useSessionPolling.d.ts +10 -0
  170. package/dist/web/hooks/useSessionPolling.d.ts.map +1 -0
  171. package/dist/web/hooks/useSessionPolling.js +60 -0
  172. package/dist/web/hooks/useSessionPolling.js.map +1 -0
  173. package/dist/web/hooks/useWalletFlow.d.ts +22 -0
  174. package/dist/web/hooks/useWalletFlow.d.ts.map +1 -0
  175. package/dist/web/hooks/useWalletFlow.js +350 -0
  176. package/dist/web/hooks/useWalletFlow.js.map +1 -0
  177. package/dist/web/hooks/walletProvider.d.ts +34 -0
  178. package/dist/web/hooks/walletProvider.d.ts.map +1 -0
  179. package/dist/web/hooks/walletProvider.js +14 -0
  180. package/dist/web/hooks/walletProvider.js.map +1 -0
  181. package/dist/web/index.d.ts +33 -0
  182. package/dist/web/index.d.ts.map +1 -0
  183. package/dist/web/index.js +30 -0
  184. package/dist/web/index.js.map +1 -0
  185. package/dist/web/theme.css +183 -0
  186. package/package.json +64 -0
@@ -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 border-none ring-0 shadow-none caret-[var(--daimo-text-muted)] focus:outline-none", 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/components/shared.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type DaimoClient } from "../../client/createDaimoClient.js";
2
+ export declare function DaimoSDKProvider({ apiUrl, children, }: {
3
+ apiUrl?: string;
4
+ children: React.ReactNode;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ export declare function useDaimoClient(): DaimoClient;
7
+ //# sourceMappingURL=DaimoClientContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DaimoClientContext.d.ts","sourceRoot":"","sources":["../../../src/web/hooks/DaimoClientContext.tsx"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAIxF,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CAUA;AAED,wBAAgB,cAAc,IAAI,WAAW,CAI5C"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useMemo } from "react";
3
+ import { createDaimoClient } from "../../client/createDaimoClient.js";
4
+ const DaimoClientContext = createContext(null);
5
+ export function DaimoSDKProvider({ apiUrl, children, }) {
6
+ const client = useMemo(() => createDaimoClient({ baseUrl: apiUrl ?? "https://api.daimo.com" }), [apiUrl]);
7
+ return (_jsx(DaimoClientContext.Provider, { value: client, children: children }));
8
+ }
9
+ export function useDaimoClient() {
10
+ const client = useContext(DaimoClientContext);
11
+ if (!client)
12
+ throw new Error("wrap your app in <DaimoSDKProvider>");
13
+ return client;
14
+ }
15
+ //# sourceMappingURL=DaimoClientContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DaimoClientContext.js","sourceRoot":"","sources":["../../../src/web/hooks/DaimoClientContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAoB,MAAM,mCAAmC,CAAC;AAExF,MAAM,kBAAkB,GAAG,aAAa,CAAqB,IAAI,CAAC,CAAC;AAEnE,MAAM,UAAU,gBAAgB,CAAC,EAC/B,MAAM,EACN,QAAQ,GAIT;IACC,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,uBAAuB,EAAE,CAAC,EACvE,CAAC,MAAM,CAAC,CACT,CAAC;IACF,OAAO,CACL,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YACvC,QAAQ,GACmB,CAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACpE,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Convert error to user-friendly display message */
2
+ export declare function formatUserError(err: unknown, fallback?: string): string;
3
+ //# sourceMappingURL=formatUserError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatUserError.d.ts","sourceRoot":"","sources":["../../../src/web/hooks/formatUserError.ts"],"names":[],"mappings":"AASA,qDAAqD;AACrD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,EACZ,QAAQ,SAAuB,GAC9B,MAAM,CAmBR"}
@@ -0,0 +1,30 @@
1
+ import { t } from "./locale.js";
2
+ /** Known error patterns mapped to user-friendly messages */
3
+ function getErrorMappings() {
4
+ return [
5
+ ["Failed to fetch", t.networkErrorOffline],
6
+ ];
7
+ }
8
+ /** Convert error to user-friendly display message */
9
+ export function formatUserError(err, fallback = t.somethingWentWrong) {
10
+ let raw;
11
+ if (err instanceof Error) {
12
+ raw = err.message;
13
+ }
14
+ else if (err && typeof err === "object" && "message" in err) {
15
+ raw = String(err.message);
16
+ }
17
+ else if (typeof err === "string") {
18
+ raw = err;
19
+ }
20
+ else {
21
+ raw = "";
22
+ }
23
+ for (const [pattern, message] of getErrorMappings()) {
24
+ if (typeof pattern === "string" ? raw === pattern : pattern.test(raw)) {
25
+ return message;
26
+ }
27
+ }
28
+ return raw || fallback;
29
+ }
30
+ //# sourceMappingURL=formatUserError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatUserError.js","sourceRoot":"","sources":["../../../src/web/hooks/formatUserError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAEhC,4DAA4D;AAC5D,SAAS,gBAAgB;IACvB,OAAO;QACL,CAAC,iBAAiB,EAAE,CAAC,CAAC,mBAAmB,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,eAAe,CAC7B,GAAY,EACZ,QAAQ,GAAG,CAAC,CAAC,kBAAkB;IAE/B,IAAI,GAAW,CAAC;IAChB,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;IACpB,CAAC;SAAM,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;QAC9D,GAAG,GAAG,MAAM,CAAE,GAA4B,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,GAAG,GAAG,GAAG,CAAC;IACZ,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,EAAE,CAAC;IACX,CAAC;IAED,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACpD,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACtE,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,GAAG,IAAI,QAAQ,CAAC;AACzB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { en } from "./locales/en.js";
2
+ export type DaimoModalLocale = typeof en;
3
+ /** Current active translations. Defaults to English. */
4
+ export declare let t: DaimoModalLocale;
5
+ /** Set the active locale. Accepts full codes (es-ES) or short codes (es). */
6
+ export declare function setLocale(languageCode: string): void;
7
+ //# sourceMappingURL=locale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../../src/web/hooks/locale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAGrC,MAAM,MAAM,gBAAgB,GAAG,OAAO,EAAE,CAAC;AAIzC,wDAAwD;AACxD,eAAO,IAAI,CAAC,EAAE,gBAAqB,CAAC;AAEpC,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,QAO7C"}
@@ -0,0 +1,15 @@
1
+ import { en } from "./locales/en.js";
2
+ import { es } from "./locales/es.js";
3
+ const translations = { en, es };
4
+ /** Current active translations. Defaults to English. */
5
+ export let t = en;
6
+ /** Set the active locale. Accepts full codes (es-ES) or short codes (es). */
7
+ export function setLocale(languageCode) {
8
+ if (translations[languageCode]) {
9
+ t = translations[languageCode];
10
+ return;
11
+ }
12
+ const short = languageCode.split("-")[0].toLowerCase();
13
+ t = translations[short] ?? en;
14
+ }
15
+ //# sourceMappingURL=locale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.js","sourceRoot":"","sources":["../../../src/web/hooks/locale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAIrC,MAAM,YAAY,GAAqC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAElE,wDAAwD;AACxD,MAAM,CAAC,IAAI,CAAC,GAAqB,EAAE,CAAC;AAEpC,6EAA6E;AAC7E,MAAM,UAAU,SAAS,CAAC,YAAoB;IAC5C,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/B,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACvD,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,60 @@
1
+ /** English (default) strings for DaimoModal UI. */
2
+ export declare const en: {
3
+ confirmYourPayment: string;
4
+ waitingForYourPayment: string;
5
+ paymentReceived: string;
6
+ processingYourPayment: string;
7
+ paymentCompleted: string;
8
+ refundingYourPayment: string;
9
+ returnToApp: string;
10
+ onChain: string;
11
+ expired: string;
12
+ paymentSessionExpired: string;
13
+ continueIn: string;
14
+ toCompleteYourPayment: string;
15
+ openIn: string;
16
+ continueTo: string;
17
+ toCompleteYourDeposit: string;
18
+ open: string;
19
+ selectAmount: string;
20
+ loading: string;
21
+ continue: string;
22
+ selectToken: string;
23
+ noTokensFound: string;
24
+ minimum: string;
25
+ maximum: string;
26
+ deposit: string;
27
+ depositOn: string;
28
+ generateNewAddress: string;
29
+ showQR: string;
30
+ hideQR: string;
31
+ oneTimeAddress: string;
32
+ amount: string;
33
+ expiresIn: string;
34
+ enterAmount: string;
35
+ max: string;
36
+ balance: string;
37
+ error: string;
38
+ reload: string;
39
+ unknownError: string;
40
+ contactSupport: string;
41
+ tellUsHowWeCanHelp: string;
42
+ showReceipt: string;
43
+ poweredByDaimo: string;
44
+ close: string;
45
+ flowError: string;
46
+ back: string;
47
+ tryAgain: string;
48
+ tronUnavailable: string;
49
+ networkErrorOffline: string;
50
+ somethingWentWrong: string;
51
+ missingSessionParam: string;
52
+ failedToLoadSession: string;
53
+ connectWallet: string;
54
+ walletUnavailable: string;
55
+ walletDisconnected: string;
56
+ switchToChain: (chain: string) => string;
57
+ transactionFailed: string;
58
+ closeAndReturn: string;
59
+ };
60
+ //# sourceMappingURL=en.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../../src/web/hooks/locales/en.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAqFU,MAAM;;;CAG9B,CAAC"}
@@ -0,0 +1,76 @@
1
+ /** English (default) strings for DaimoModal UI. */
2
+ export const en = {
3
+ // ConfirmationPage
4
+ confirmYourPayment: "Confirm your payment",
5
+ waitingForYourPayment: "Waiting for your payment",
6
+ paymentReceived: "Payment Received",
7
+ processingYourPayment: "Processing your payment...",
8
+ paymentCompleted: "Payment Completed",
9
+ refundingYourPayment: "Refunding your payment",
10
+ returnToApp: "Return to app",
11
+ onChain: "on",
12
+ // ExpiredPage
13
+ expired: "Expired",
14
+ paymentSessionExpired: "This payment session has expired",
15
+ // DeeplinkPage
16
+ continueIn: "Continue in",
17
+ toCompleteYourPayment: "to complete your payment",
18
+ openIn: "Open in",
19
+ // ExchangePage
20
+ continueTo: "Continue to",
21
+ toCompleteYourDeposit: "to complete your deposit",
22
+ open: "Open",
23
+ // SelectAmountPage
24
+ selectAmount: "Select Amount",
25
+ loading: "Loading...",
26
+ continue: "Continue",
27
+ // SelectTokenPage
28
+ selectToken: "Select Token",
29
+ noTokensFound: "No tokens found",
30
+ minimum: "Minimum",
31
+ maximum: "Maximum",
32
+ // WaitingDepositAddressPage
33
+ deposit: "Deposit",
34
+ depositOn: "Deposit on",
35
+ generateNewAddress: "Generate New Address",
36
+ showQR: "Show QR",
37
+ hideQR: "Hide QR",
38
+ oneTimeAddress: "One-Time Address",
39
+ amount: "Amount",
40
+ expiresIn: "Expires in:",
41
+ // WalletAmountPage
42
+ enterAmount: "Enter Amount",
43
+ max: "Max",
44
+ balance: "Balance:",
45
+ // ErrorPage
46
+ error: "Error",
47
+ reload: "Reload",
48
+ unknownError: "unknown error",
49
+ // shared
50
+ contactSupport: "Contact support",
51
+ tellUsHowWeCanHelp: "Tell us how we can help",
52
+ showReceipt: "Show receipt",
53
+ poweredByDaimo: "Powered by Daimo",
54
+ // containers
55
+ close: "Close",
56
+ // flows
57
+ flowError: "Error:",
58
+ back: "Back",
59
+ tryAgain: "Try again",
60
+ // hooks/useSessionNav
61
+ tronUnavailable: "Tron unavailable. Try again later.",
62
+ // formatUserError
63
+ networkErrorOffline: "Network error. Offline?",
64
+ somethingWentWrong: "Something went wrong",
65
+ // embed page
66
+ missingSessionParam: "missing session parameter",
67
+ failedToLoadSession: "failed to load session",
68
+ // session page
69
+ connectWallet: "Connect Wallet",
70
+ walletUnavailable: "Wallet unavailable",
71
+ walletDisconnected: "Wallet disconnected",
72
+ switchToChain: (chain) => `Please switch to ${chain}`,
73
+ transactionFailed: "Transaction failed",
74
+ closeAndReturn: "Close this page and return to app",
75
+ };
76
+ //# sourceMappingURL=en.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../../../src/web/hooks/locales/en.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,mBAAmB;IACnB,kBAAkB,EAAE,sBAAsB;IAC1C,qBAAqB,EAAE,0BAA0B;IACjD,eAAe,EAAE,kBAAkB;IACnC,qBAAqB,EAAE,4BAA4B;IACnD,gBAAgB,EAAE,mBAAmB;IACrC,oBAAoB,EAAE,wBAAwB;IAC9C,WAAW,EAAE,eAAe;IAC5B,OAAO,EAAE,IAAI;IAEb,cAAc;IACd,OAAO,EAAE,SAAS;IAClB,qBAAqB,EAAE,kCAAkC;IAEzD,eAAe;IACf,UAAU,EAAE,aAAa;IACzB,qBAAqB,EAAE,0BAA0B;IACjD,MAAM,EAAE,SAAS;IAEjB,eAAe;IACf,UAAU,EAAE,aAAa;IACzB,qBAAqB,EAAE,0BAA0B;IACjD,IAAI,EAAE,MAAM;IAEZ,mBAAmB;IACnB,YAAY,EAAE,eAAe;IAC7B,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,UAAU;IAEpB,kBAAkB;IAClB,WAAW,EAAE,cAAc;IAC3B,aAAa,EAAE,iBAAiB;IAChC,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAElB,4BAA4B;IAC5B,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,YAAY;IACvB,kBAAkB,EAAE,sBAAsB;IAC1C,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE,kBAAkB;IAClC,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,aAAa;IAExB,mBAAmB;IACnB,WAAW,EAAE,cAAc;IAC3B,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,UAAU;IAEnB,YAAY;IACZ,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,eAAe;IAE7B,SAAS;IACT,cAAc,EAAE,iBAAiB;IACjC,kBAAkB,EAAE,yBAAyB;IAC7C,WAAW,EAAE,cAAc;IAC3B,cAAc,EAAE,kBAAkB;IAElC,aAAa;IACb,KAAK,EAAE,OAAO;IAEd,QAAQ;IACR,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,WAAW;IAErB,sBAAsB;IACtB,eAAe,EAAE,oCAAoC;IAErD,kBAAkB;IAClB,mBAAmB,EAAE,yBAAyB;IAC9C,kBAAkB,EAAE,sBAAsB;IAE1C,aAAa;IACb,mBAAmB,EAAE,2BAA2B;IAChD,mBAAmB,EAAE,wBAAwB;IAE7C,eAAe;IACf,aAAa,EAAE,gBAAgB;IAC/B,iBAAiB,EAAE,oBAAoB;IACvC,kBAAkB,EAAE,qBAAqB;IACzC,aAAa,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,oBAAoB,KAAK,EAAE;IAC7D,iBAAiB,EAAE,oBAAoB;IACvC,cAAc,EAAE,mCAAmC;CACpD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { en } from "./en.js";
2
+ /** Spanish translations for DaimoModal UI. */
3
+ export declare const es: typeof en;
4
+ //# sourceMappingURL=es.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../../../src/web/hooks/locales/es.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC,8CAA8C;AAC9C,eAAO,MAAM,EAAE,EAAE,OAAO,EAyDvB,CAAC"}
@@ -0,0 +1,60 @@
1
+ /** Spanish translations for DaimoModal UI. */
2
+ export const es = {
3
+ confirmYourPayment: "Confirma tu pago",
4
+ waitingForYourPayment: "Esperando tu pago",
5
+ paymentReceived: "Pago recibido",
6
+ processingYourPayment: "Procesando tu pago...",
7
+ paymentCompleted: "Pago completado",
8
+ refundingYourPayment: "Reembolsando tu pago",
9
+ returnToApp: "Volver a la app",
10
+ onChain: "en",
11
+ expired: "Expirado",
12
+ paymentSessionExpired: "Esta sesión de pago ha expirado",
13
+ continueIn: "Continuar en",
14
+ toCompleteYourPayment: "para completar tu pago",
15
+ openIn: "Abrir en",
16
+ continueTo: "Continuar a",
17
+ toCompleteYourDeposit: "para completar tu depósito",
18
+ open: "Abrir",
19
+ selectAmount: "Seleccionar monto",
20
+ loading: "Cargando...",
21
+ continue: "Continuar",
22
+ selectToken: "Seleccionar token",
23
+ noTokensFound: "No se encontraron tokens",
24
+ minimum: "Mínimo",
25
+ maximum: "Máximo",
26
+ deposit: "Depositar",
27
+ depositOn: "Depositar en",
28
+ generateNewAddress: "Generar nueva dirección",
29
+ showQR: "Mostrar QR",
30
+ hideQR: "Ocultar QR",
31
+ oneTimeAddress: "Dirección de uso único",
32
+ amount: "Monto",
33
+ expiresIn: "Expira en:",
34
+ enterAmount: "Ingresar monto",
35
+ max: "Máx",
36
+ balance: "Saldo:",
37
+ error: "Error",
38
+ reload: "Recargar",
39
+ unknownError: "error desconocido",
40
+ contactSupport: "Contactar soporte",
41
+ tellUsHowWeCanHelp: "Cuéntanos cómo podemos ayudarte",
42
+ showReceipt: "Ver recibo",
43
+ poweredByDaimo: "Powered by Daimo",
44
+ close: "Cerrar",
45
+ flowError: "Error:",
46
+ back: "Volver",
47
+ tryAgain: "Reintentar",
48
+ tronUnavailable: "Tron no disponible. Intenta más tarde.",
49
+ networkErrorOffline: "Error de red. ¿Sin conexión?",
50
+ somethingWentWrong: "Algo salió mal",
51
+ missingSessionParam: "falta el parámetro de sesión",
52
+ failedToLoadSession: "no se pudo cargar la sesión",
53
+ connectWallet: "Conectar billetera",
54
+ walletUnavailable: "Billetera no disponible",
55
+ walletDisconnected: "Billetera desconectada",
56
+ switchToChain: (chain) => `Cambia a ${chain}`,
57
+ transactionFailed: "Transacción fallida",
58
+ closeAndReturn: "Cierra esta página y vuelve a la app",
59
+ };
60
+ //# sourceMappingURL=es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"es.js","sourceRoot":"","sources":["../../../../src/web/hooks/locales/es.ts"],"names":[],"mappings":"AAEA,8CAA8C;AAC9C,MAAM,CAAC,MAAM,EAAE,GAAc;IAC3B,kBAAkB,EAAE,kBAAkB;IACtC,qBAAqB,EAAE,mBAAmB;IAC1C,eAAe,EAAE,eAAe;IAChC,qBAAqB,EAAE,uBAAuB;IAC9C,gBAAgB,EAAE,iBAAiB;IACnC,oBAAoB,EAAE,sBAAsB;IAC5C,WAAW,EAAE,iBAAiB;IAC9B,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,UAAU;IACnB,qBAAqB,EAAE,iCAAiC;IACxD,UAAU,EAAE,cAAc;IAC1B,qBAAqB,EAAE,wBAAwB;IAC/C,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,aAAa;IACzB,qBAAqB,EAAE,4BAA4B;IACnD,IAAI,EAAE,OAAO;IACb,YAAY,EAAE,mBAAmB;IACjC,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,WAAW;IACrB,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE,0BAA0B;IACzC,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,WAAW;IACpB,SAAS,EAAE,cAAc;IACzB,kBAAkB,EAAE,yBAAyB;IAC7C,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,cAAc,EAAE,wBAAwB;IACxC,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,YAAY;IACvB,WAAW,EAAE,gBAAgB;IAC7B,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,UAAU;IAClB,YAAY,EAAE,mBAAmB;IACjC,cAAc,EAAE,mBAAmB;IACnC,kBAAkB,EAAE,iCAAiC;IACrD,WAAW,EAAE,YAAY;IACzB,cAAc,EAAE,kBAAkB;IAClC,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,YAAY;IACtB,eAAe,EAAE,wCAAwC;IACzD,mBAAmB,EAAE,8BAA8B;IACnD,kBAAkB,EAAE,gBAAgB;IACpC,mBAAmB,EAAE,8BAA8B;IACnD,mBAAmB,EAAE,6BAA6B;IAClD,aAAa,EAAE,oBAAoB;IACnC,iBAAiB,EAAE,yBAAyB;IAC5C,kBAAkB,EAAE,wBAAwB;IAC5C,aAAa,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,YAAY,KAAK,EAAE;IACrD,iBAAiB,EAAE,qBAAqB;IACxC,cAAc,EAAE,sCAAsC;CACvD,CAAC"}
@@ -0,0 +1,60 @@
1
+ import type { NavNode } from "../api/navTree.js";
2
+ import type { DaimoClient } from "../../client/createDaimoClient.js";
3
+ /** Node types from NavNode union */
4
+ export type NavNodeType = NavNode["type"];
5
+ /** Context for every nav event */
6
+ export type NavEventContext = {
7
+ nodeId: string | null;
8
+ nodeType: NavNodeType | null;
9
+ };
10
+ /** All nav event actions with their data */
11
+ export type NavEventAction = {
12
+ action: "nav_open";
13
+ } | {
14
+ action: "nav_close";
15
+ } | {
16
+ action: "nav_select";
17
+ targetNodeId: string;
18
+ targetNodeType: NavNodeType;
19
+ } | {
20
+ action: "nav_back";
21
+ } | {
22
+ action: "nav_deeplink";
23
+ url: string;
24
+ } | {
25
+ action: "flow_amount_continue";
26
+ amountUsd: number;
27
+ } | {
28
+ action: "flow_refresh";
29
+ } | {
30
+ action: "flow_exchange_url";
31
+ exchangeId: string;
32
+ success: boolean;
33
+ url?: string;
34
+ error?: string;
35
+ } | {
36
+ action: "flow_tron_address";
37
+ success: boolean;
38
+ address?: string;
39
+ error?: string;
40
+ } | {
41
+ action: "qr_toggle";
42
+ visible: boolean;
43
+ } | {
44
+ action: "copy_address";
45
+ address: string;
46
+ } | {
47
+ action: "session_expired";
48
+ } | {
49
+ action: "session_completed";
50
+ } | {
51
+ action: "session_bounced";
52
+ } | {
53
+ action: "error_shown";
54
+ error: string;
55
+ };
56
+ /** Full nav event payload */
57
+ export type NavEvent = NavEventContext & NavEventAction;
58
+ /** Create a fire-and-forget nav event logger bound to a DaimoClient. */
59
+ export declare function createNavLogger(client: DaimoClient): (sessionId: string, clientSecret: string, event: NavEvent) => void;
60
+ //# sourceMappingURL=navEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navEvent.d.ts","sourceRoot":"","sources":["../../../src/web/hooks/navEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAErE,oCAAoC;AACpC,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE1C,kCAAkC;AAClC,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,cAAc,GACtB;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,WAAW,CAAA;CAAE,GAC3E;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,MAAM,EAAE,sBAAsB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAC1B;IACE,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACD;IACE,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACD;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC7B;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,GAC/B;IAAE,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC7B;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,6BAA6B;AAC7B,MAAM,MAAM,QAAQ,GAAG,eAAe,GAAG,cAAc,CAAC;AAExD,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,IAE/C,WAAW,MAAM,EACjB,cAAc,MAAM,EACpB,OAAO,QAAQ,KACd,IAAI,CAQR"}
@@ -0,0 +1,12 @@
1
+ /** Create a fire-and-forget nav event logger bound to a DaimoClient. */
2
+ export function createNavLogger(client) {
3
+ return function logNavEvent(sessionId, clientSecret, event) {
4
+ const { action } = event;
5
+ client.internal.sessions
6
+ .logNavEvent(sessionId, { clientSecret, event: action })
7
+ .catch((e) => {
8
+ console.error("[navEvent] failed to log:", action, e);
9
+ });
10
+ };
11
+ }
12
+ //# sourceMappingURL=navEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navEvent.js","sourceRoot":"","sources":["../../../src/web/hooks/navEvent.ts"],"names":[],"mappings":"AA4CA,wEAAwE;AACxE,MAAM,UAAU,eAAe,CAAC,MAAmB;IACjD,OAAO,SAAS,WAAW,CACzB,SAAiB,EACjB,YAAoB,EACpB,KAAe;QAEf,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,QAAQ;aACrB,WAAW,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aACvD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACJ,CAAC"}