@daimo/sdk 1.4.0 → 1.4.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.
Files changed (194) hide show
  1. package/dist/client/createDaimoClient.d.ts +31 -21
  2. package/dist/client/createDaimoClient.d.ts.map +1 -1
  3. package/dist/client/createDaimoClient.js +24 -16
  4. package/dist/client/createDaimoClient.js.map +1 -1
  5. package/dist/common/account.d.ts +75 -8
  6. package/dist/common/account.d.ts.map +1 -1
  7. package/dist/common/account.js +7 -1
  8. package/dist/common/account.js.map +1 -1
  9. package/dist/common/api.d.ts +47 -8
  10. package/dist/common/api.d.ts.map +1 -1
  11. package/dist/common/api.js +10 -1
  12. package/dist/common/api.js.map +1 -1
  13. package/dist/common/chain.d.ts +0 -1
  14. package/dist/common/chain.d.ts.map +1 -1
  15. package/dist/common/chain.js +0 -10
  16. package/dist/common/chain.js.map +1 -1
  17. package/dist/common/session.d.ts +11 -3
  18. package/dist/common/session.d.ts.map +1 -1
  19. package/dist/common/session.js.map +1 -1
  20. package/dist/common/token.d.ts +16 -4
  21. package/dist/common/token.d.ts.map +1 -1
  22. package/dist/common/token.js +12 -42
  23. package/dist/common/token.js.map +1 -1
  24. package/dist/version.d.ts +1 -1
  25. package/dist/version.js +1 -1
  26. package/dist/web/api/index.d.ts +3 -3
  27. package/dist/web/api/index.d.ts.map +1 -1
  28. package/dist/web/api/navTree.d.ts +12 -5
  29. package/dist/web/api/navTree.d.ts.map +1 -1
  30. package/dist/web/api/walletTypes.d.ts +2 -15
  31. package/dist/web/api/walletTypes.d.ts.map +1 -1
  32. package/dist/web/components/ConfirmationPage.d.ts.map +1 -1
  33. package/dist/web/components/ConfirmationPage.js +3 -3
  34. package/dist/web/components/ConfirmationPage.js.map +1 -1
  35. package/dist/web/components/DaimoModal.d.ts.map +1 -1
  36. package/dist/web/components/DaimoModal.js +41 -9
  37. package/dist/web/components/DaimoModal.js.map +1 -1
  38. package/dist/web/components/QRCode.d.ts.map +1 -1
  39. package/dist/web/components/QRCode.js +2 -2
  40. package/dist/web/components/QRCode.js.map +1 -1
  41. package/dist/web/components/StripeOnrampPage.d.ts +40 -0
  42. package/dist/web/components/StripeOnrampPage.d.ts.map +1 -0
  43. package/dist/web/components/StripeOnrampPage.js +121 -0
  44. package/dist/web/components/StripeOnrampPage.js.map +1 -0
  45. package/dist/web/components/TokenAmountEntry.d.ts +57 -0
  46. package/dist/web/components/TokenAmountEntry.d.ts.map +1 -0
  47. package/dist/web/components/TokenAmountEntry.js +155 -0
  48. package/dist/web/components/TokenAmountEntry.js.map +1 -0
  49. package/dist/web/components/WalletAmountPage.d.ts +2 -2
  50. package/dist/web/components/WalletAmountPage.d.ts.map +1 -1
  51. package/dist/web/components/WalletAmountPage.js +11 -146
  52. package/dist/web/components/WalletAmountPage.js.map +1 -1
  53. package/dist/web/components/account/AccountApplePayPage.d.ts +24 -0
  54. package/dist/web/components/account/AccountApplePayPage.d.ts.map +1 -0
  55. package/dist/web/components/account/AccountApplePayPage.js +253 -0
  56. package/dist/web/components/account/AccountApplePayPage.js.map +1 -0
  57. package/dist/web/components/account/AccountBankDetailsPage.d.ts +16 -0
  58. package/dist/web/components/account/AccountBankDetailsPage.d.ts.map +1 -0
  59. package/dist/web/components/account/AccountBankDetailsPage.js +140 -0
  60. package/dist/web/components/account/AccountBankDetailsPage.js.map +1 -0
  61. package/dist/web/components/account/AccountBankPickerPage.d.ts +8 -8
  62. package/dist/web/components/account/AccountBankPickerPage.d.ts.map +1 -1
  63. package/dist/web/components/account/AccountBankPickerPage.js +66 -19
  64. package/dist/web/components/account/AccountBankPickerPage.js.map +1 -1
  65. package/dist/web/components/account/AccountBankTransferSubmittedPage.d.ts +13 -0
  66. package/dist/web/components/account/AccountBankTransferSubmittedPage.d.ts.map +1 -0
  67. package/dist/web/components/account/AccountBankTransferSubmittedPage.js +27 -0
  68. package/dist/web/components/account/AccountBankTransferSubmittedPage.js.map +1 -0
  69. package/dist/web/components/account/AccountDeeplinkPage.d.ts +0 -2
  70. package/dist/web/components/account/AccountDeeplinkPage.d.ts.map +1 -1
  71. package/dist/web/components/account/AccountDeeplinkPage.js +7 -6
  72. package/dist/web/components/account/AccountDeeplinkPage.js.map +1 -1
  73. package/dist/web/components/account/AccountEnrollmentPage.d.ts +5 -18
  74. package/dist/web/components/account/AccountEnrollmentPage.d.ts.map +1 -1
  75. package/dist/web/components/account/AccountEnrollmentPage.js +86 -20
  76. package/dist/web/components/account/AccountEnrollmentPage.js.map +1 -1
  77. package/dist/web/components/account/AccountFlowProvider.d.ts.map +1 -1
  78. package/dist/web/components/account/AccountFlowProvider.js +26 -2
  79. package/dist/web/components/account/AccountFlowProvider.js.map +1 -1
  80. package/dist/web/components/account/AccountOtpCodeEntry.d.ts +16 -0
  81. package/dist/web/components/account/AccountOtpCodeEntry.d.ts.map +1 -0
  82. package/dist/web/components/account/AccountOtpCodeEntry.js +101 -0
  83. package/dist/web/components/account/AccountOtpCodeEntry.js.map +1 -0
  84. package/dist/web/components/account/AccountOtpPage.d.ts.map +1 -1
  85. package/dist/web/components/account/AccountOtpPage.js +10 -53
  86. package/dist/web/components/account/AccountOtpPage.js.map +1 -1
  87. package/dist/web/components/account/AccountPaymentPage.d.ts +7 -4
  88. package/dist/web/components/account/AccountPaymentPage.d.ts.map +1 -1
  89. package/dist/web/components/account/AccountPaymentPage.js +29 -34
  90. package/dist/web/components/account/AccountPaymentPage.js.map +1 -1
  91. package/dist/web/components/account/AccountPhoneOtpPage.d.ts +14 -0
  92. package/dist/web/components/account/AccountPhoneOtpPage.d.ts.map +1 -0
  93. package/dist/web/components/account/AccountPhoneOtpPage.js +56 -0
  94. package/dist/web/components/account/AccountPhoneOtpPage.js.map +1 -0
  95. package/dist/web/components/account/AccountPhonePage.d.ts +11 -0
  96. package/dist/web/components/account/AccountPhonePage.d.ts.map +1 -0
  97. package/dist/web/components/account/AccountPhonePage.js +100 -0
  98. package/dist/web/components/account/AccountPhonePage.js.map +1 -0
  99. package/dist/web/components/account/AccountReadyPage.d.ts +2 -0
  100. package/dist/web/components/account/AccountReadyPage.d.ts.map +1 -0
  101. package/dist/web/components/account/AccountReadyPage.js +7 -0
  102. package/dist/web/components/account/AccountReadyPage.js.map +1 -0
  103. package/dist/web/components/account/AccountStatusPage.d.ts +1 -3
  104. package/dist/web/components/account/AccountStatusPage.d.ts.map +1 -1
  105. package/dist/web/components/account/AccountStatusPage.js +8 -8
  106. package/dist/web/components/account/AccountStatusPage.js.map +1 -1
  107. package/dist/web/components/account/accountNav.d.ts +14 -0
  108. package/dist/web/components/account/accountNav.d.ts.map +1 -0
  109. package/dist/web/components/account/accountNav.js +35 -0
  110. package/dist/web/components/account/accountNav.js.map +1 -0
  111. package/dist/web/components/account/openDeeplink.js +30 -14
  112. package/dist/web/components/account/openDeeplink.js.map +1 -1
  113. package/dist/web/components/account/phone.d.ts +6 -0
  114. package/dist/web/components/account/phone.d.ts.map +1 -0
  115. package/dist/web/components/account/phone.js +35 -0
  116. package/dist/web/components/account/phone.js.map +1 -0
  117. package/dist/web/components/account/useCoinbaseApplePayWidget.d.ts +20 -0
  118. package/dist/web/components/account/useCoinbaseApplePayWidget.d.ts.map +1 -0
  119. package/dist/web/components/account/useCoinbaseApplePayWidget.js +159 -0
  120. package/dist/web/components/account/useCoinbaseApplePayWidget.js.map +1 -0
  121. package/dist/web/components/buttons.d.ts +11 -1
  122. package/dist/web/components/buttons.d.ts.map +1 -1
  123. package/dist/web/components/buttons.js +11 -3
  124. package/dist/web/components/buttons.js.map +1 -1
  125. package/dist/web/components/icons.d.ts +5 -0
  126. package/dist/web/components/icons.d.ts.map +1 -1
  127. package/dist/web/components/icons.js +7 -0
  128. package/dist/web/components/icons.js.map +1 -1
  129. package/dist/web/components/shared.d.ts +8 -3
  130. package/dist/web/components/shared.d.ts.map +1 -1
  131. package/dist/web/components/shared.js +50 -16
  132. package/dist/web/components/shared.js.map +1 -1
  133. package/dist/web/hooks/locale.d.ts +4 -0
  134. package/dist/web/hooks/locale.d.ts.map +1 -1
  135. package/dist/web/hooks/locale.js +23 -1
  136. package/dist/web/hooks/locale.js.map +1 -1
  137. package/dist/web/hooks/locales/en.d.ts +17 -0
  138. package/dist/web/hooks/locales/en.d.ts.map +1 -1
  139. package/dist/web/hooks/locales/en.js +19 -2
  140. package/dist/web/hooks/locales/en.js.map +1 -1
  141. package/dist/web/hooks/locales/es.d.ts.map +1 -1
  142. package/dist/web/hooks/locales/es.js +17 -0
  143. package/dist/web/hooks/locales/es.js.map +1 -1
  144. package/dist/web/hooks/locales/ja.d.ts +4 -0
  145. package/dist/web/hooks/locales/ja.d.ts.map +1 -0
  146. package/dist/web/hooks/locales/ja.js +140 -0
  147. package/dist/web/hooks/locales/ja.js.map +1 -0
  148. package/dist/web/hooks/locales/ko.d.ts +4 -0
  149. package/dist/web/hooks/locales/ko.d.ts.map +1 -0
  150. package/dist/web/hooks/locales/ko.js +140 -0
  151. package/dist/web/hooks/locales/ko.js.map +1 -0
  152. package/dist/web/hooks/locales/zh.d.ts +4 -0
  153. package/dist/web/hooks/locales/zh.d.ts.map +1 -0
  154. package/dist/web/hooks/locales/zh.js +140 -0
  155. package/dist/web/hooks/locales/zh.js.map +1 -0
  156. package/dist/web/hooks/navEvent.d.ts +4 -0
  157. package/dist/web/hooks/navEvent.d.ts.map +1 -1
  158. package/dist/web/hooks/navEvent.js.map +1 -1
  159. package/dist/web/hooks/types.d.ts +25 -4
  160. package/dist/web/hooks/types.d.ts.map +1 -1
  161. package/dist/web/hooks/types.js.map +1 -1
  162. package/dist/web/hooks/useAccountFlow.d.ts +50 -13
  163. package/dist/web/hooks/useAccountFlow.d.ts.map +1 -1
  164. package/dist/web/hooks/useAccountFlow.js +93 -13
  165. package/dist/web/hooks/useAccountFlow.js.map +1 -1
  166. package/dist/web/hooks/useCreateDeposit.d.ts +1 -1
  167. package/dist/web/hooks/useCreateDeposit.d.ts.map +1 -1
  168. package/dist/web/hooks/useCreateDeposit.js +103 -15
  169. package/dist/web/hooks/useCreateDeposit.js.map +1 -1
  170. package/dist/web/hooks/useDepositAddress.d.ts.map +1 -1
  171. package/dist/web/hooks/useDepositAddress.js +23 -2
  172. package/dist/web/hooks/useDepositAddress.js.map +1 -1
  173. package/dist/web/hooks/useDraftDeposit.d.ts +35 -0
  174. package/dist/web/hooks/useDraftDeposit.d.ts.map +1 -0
  175. package/dist/web/hooks/useDraftDeposit.js +155 -0
  176. package/dist/web/hooks/useDraftDeposit.js.map +1 -0
  177. package/dist/web/hooks/useSessionNav.d.ts +1 -1
  178. package/dist/web/hooks/useSessionNav.d.ts.map +1 -1
  179. package/dist/web/hooks/useSessionNav.js +122 -12
  180. package/dist/web/hooks/useSessionNav.js.map +1 -1
  181. package/dist/web/hooks/useWalletFlow.d.ts.map +1 -1
  182. package/dist/web/hooks/useWalletFlow.js +9 -0
  183. package/dist/web/hooks/useWalletFlow.js.map +1 -1
  184. package/dist/web/index.d.ts +1 -1
  185. package/dist/web/index.d.ts.map +1 -1
  186. package/dist/web/index.js +1 -1
  187. package/dist/web/index.js.map +1 -1
  188. package/dist/web/platform.d.ts +1 -0
  189. package/dist/web/platform.d.ts.map +1 -1
  190. package/dist/web/platform.js +11 -0
  191. package/dist/web/platform.js.map +1 -1
  192. package/dist/web/styles.css +1 -1
  193. package/dist/web/theme.css +1 -1
  194. package/package.json +1 -1
@@ -0,0 +1,155 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from "react";
3
+ import { t } from "../hooks/locale.js";
4
+ import { isDesktop } from "../platform.js";
5
+ import { SwitchArrowsIcon } from "./icons.js";
6
+ import { TokenIconWithChainBadge } from "./shared.js";
7
+ /**
8
+ * Unified "Enter Amount" card: token icon with chain badge, dual-mode
9
+ * (USD ↔ native) amount input, FX swap arrow, and min/max/balance footer.
10
+ * Used by both the wallet deposit flow and the fiat/account deposit flow.
11
+ */
12
+ export function TokenAmountEntry({ token, minimumUsd, maximumUsd, nativeDisplay, initialMode = "usd", initialAmountUsd, onContinue, onChange, balance, showMax = true, iconLogoURI, iconAlt, badgeLogoURI, badgeAlt, platform, baseUrl, }) {
13
+ // Swap is meaningless when the token is pegged 1:1 to USD.
14
+ const isUsdPegged = token.fiatISO === "USD";
15
+ const initialUsd = initialAmountUsd ?? 0;
16
+ const initialNative = initialUsd > 0 ? usdToNativeStr(initialUsd, token) : "";
17
+ const [usdStr, setUsdStr] = useState(initialUsd > 0 ? roundUsd(initialUsd) : "");
18
+ const [nativeStr, setNativeStr] = useState(initialNative);
19
+ const [isEditingUsd, setIsEditingUsd] = useState(initialMode === "usd");
20
+ const amountUsd = parseFloat(usdStr) || 0;
21
+ const roundedMaxUsd = parseFloat(roundUsd(maximumUsd));
22
+ const isValid = amountUsd >= minimumUsd && amountUsd <= roundedMaxUsd;
23
+ const showMinWarning = usdStr !== "" && amountUsd < minimumUsd;
24
+ const showMaxWarning = usdStr !== "" && amountUsd > roundedMaxUsd;
25
+ useEffect(() => {
26
+ onChange?.(amountUsd, isValid);
27
+ }, [amountUsd, isValid, onChange]);
28
+ const handleInputChange = (e) => {
29
+ const value = e.target.value;
30
+ const maxDecimals = isEditingUsd ? 2 : token.displayDecimals;
31
+ const regex = new RegExp(`^\\d*\\.?\\d{0,${maxDecimals}}$`);
32
+ if (value !== "" && !regex.test(value))
33
+ return;
34
+ if (isEditingUsd) {
35
+ const newUsd = parseFloat(value) || 0;
36
+ setUsdStr(value);
37
+ setNativeStr(newUsd === 0 ? "" : usdToNativeStr(newUsd, token));
38
+ }
39
+ else {
40
+ const newNative = parseFloat(value) || 0;
41
+ setNativeStr(value);
42
+ setUsdStr(newNative === 0 ? "" : nativeToUsdStr(newNative, token));
43
+ }
44
+ };
45
+ const handleKeyDown = (e) => {
46
+ if (e.key === "Enter" && isValid)
47
+ onContinue(amountUsd);
48
+ };
49
+ const handleMax = () => {
50
+ const maxUsdStr = roundUsd(maximumUsd);
51
+ const maxNativeStr = usdToNativeStr(maximumUsd, token);
52
+ setUsdStr(maxUsdStr);
53
+ setNativeStr(maxNativeStr);
54
+ };
55
+ const handleSwitch = useCallback(() => {
56
+ const nextEditingUsd = !isEditingUsd;
57
+ // Re-format the side the user just switched away from, so it reads nicely.
58
+ if (nextEditingUsd) {
59
+ const nativeNum = parseFloat(nativeStr) || 0;
60
+ const formatted = nativeNum > 0
61
+ ? stripTrailingZeros(roundNative(nativeNum, token))
62
+ : "";
63
+ setNativeStr(formatted);
64
+ }
65
+ else {
66
+ const usdNum = parseFloat(usdStr) || 0;
67
+ setUsdStr(usdNum > 0 ? roundUsd(usdNum) : "");
68
+ }
69
+ setIsEditingUsd(nextEditingUsd);
70
+ }, [isEditingUsd, nativeStr, usdStr, token]);
71
+ const shouldAutoFocus = isDesktop(platform);
72
+ const currentValue = isEditingUsd ? usdStr : nativeStr;
73
+ const inputWidth = currentValue.length === 0
74
+ ? "3.55ch"
75
+ : `${Math.min(currentValue.length - (currentValue.match(/\./g) || []).length * 0.55, 10)}ch`;
76
+ // Side decorations: $ prefix for USD mode; nativeDisplay for native mode.
77
+ const showPrefix = isEditingUsd || nativeDisplay.kind === "prefix";
78
+ const prefixText = isEditingUsd ? "$" : nativeDisplay.kind === "prefix" ? nativeDisplay.symbol : "";
79
+ const showSuffix = !isEditingUsd && nativeDisplay.kind === "suffix";
80
+ const suffixText = nativeDisplay.kind === "suffix" ? nativeDisplay.symbol : "";
81
+ const message = buildMessage({
82
+ showMinWarning,
83
+ showMaxWarning,
84
+ minimumUsd,
85
+ maximumUsd,
86
+ isEditingUsd,
87
+ token,
88
+ nativeDisplay,
89
+ balance,
90
+ });
91
+ const messageColor = showMinWarning || showMaxWarning
92
+ ? "daimo-text-[var(--daimo-text)]"
93
+ : "daimo-text-[var(--daimo-text-secondary)]";
94
+ // Secondary amount for the switch button.
95
+ const secondaryAmount = isEditingUsd
96
+ ? formatNative(nativeStr || "0", nativeDisplay)
97
+ : `$${usdStr || roundUsd(0)}`;
98
+ return (_jsxs("div", { className: "daimo-flex daimo-flex-col daimo-items-center", children: [_jsx("div", { className: "daimo-mb-3", children: _jsx(TokenIconWithChainBadge, { token: token, symbol: iconAlt, logoURI: iconLogoURI, size: "lg", badgeLogoURI: badgeLogoURI, badgeAlt: badgeAlt, baseUrl: baseUrl }) }), _jsxs("div", { className: "daimo-flex daimo-items-center daimo-justify-center daimo-gap-2", children: [showMax && (_jsx("span", { className: "daimo-invisible daimo-py-[3px] daimo-px-2 daimo-text-sm", children: t.max })), _jsxs("div", { className: "daimo-flex daimo-items-center daimo-justify-center daimo-gap-1", children: [showPrefix && (_jsx("span", { className: `daimo-text-[24px] daimo-font-semibold daimo-tabular-nums ${currentValue ? "daimo-text-[var(--daimo-text)]" : "daimo-text-[var(--daimo-placeholder)]"}`, children: prefixText })), _jsx("input", { type: "text", inputMode: "decimal", value: currentValue, onChange: handleInputChange, onKeyDown: handleKeyDown, placeholder: "0.00", className: "daimo-bg-transparent daimo-font-semibold daimo-text-[var(--daimo-text)] daimo-placeholder-[var(--daimo-placeholder)] daimo-outline-none daimo-border-none daimo-shadow-none daimo-caret-[var(--daimo-text-muted)] daimo-tabular-nums daimo-ring-0 focus:daimo-outline-none focus:daimo-ring-0 focus:daimo-border-none focus:daimo-shadow-none", style: {
99
+ width: inputWidth,
100
+ minWidth: "1ch",
101
+ maxWidth: "10ch",
102
+ fontSize: "clamp(16px, 30px, 30px)",
103
+ }, autoFocus: shouldAutoFocus }), showSuffix && (_jsx("span", { className: "daimo-text-base daimo-font-normal daimo-text-[var(--daimo-text-muted)]", children: suffixText }))] }), showMax && (_jsx("button", { onClick: handleMax, className: "daimo-py-[3px] daimo-px-2 daimo-text-sm daimo-font-normal daimo-rounded-full daimo-bg-[var(--daimo-surface-secondary)] daimo-text-[var(--daimo-text-secondary)] hover:[@media(hover:hover)]:daimo-bg-[var(--daimo-surface-hover)] daimo-touch-action-manipulation daimo-transition-[background-color] daimo-duration-100 daimo-ease", children: t.max }))] }), !isUsdPegged && (_jsx(SwitchButton, { onClick: handleSwitch, secondaryAmount: secondaryAmount, isEditingUsd: isEditingUsd })), _jsx("p", { className: `${messageColor} daimo-text-base daimo-font-normal daimo-leading-[21px] daimo-tabular-nums daimo-mb-6`, children: message })] }));
104
+ }
105
+ // --- Helpers ---
106
+ function usdToNativeStr(usd, token) {
107
+ if (usd === 0)
108
+ return "";
109
+ return roundNative(usd / token.usd, token);
110
+ }
111
+ function nativeToUsdStr(native, token) {
112
+ if (native === 0)
113
+ return "";
114
+ return roundUsd(native * token.usd);
115
+ }
116
+ function roundUsd(usd) {
117
+ return usd.toFixed(2);
118
+ }
119
+ function roundNative(amount, token) {
120
+ if (amount === 0)
121
+ return "0";
122
+ return amount.toFixed(token.displayDecimals);
123
+ }
124
+ function stripTrailingZeros(val) {
125
+ return val.includes(".") ? val.replace(/\.?0+$/, "") : val;
126
+ }
127
+ function formatNative(value, display) {
128
+ return display.kind === "prefix"
129
+ ? `${display.symbol}${value}`
130
+ : `${value} ${display.symbol}`;
131
+ }
132
+ function buildMessage(args) {
133
+ const { showMinWarning, showMaxWarning, minimumUsd, maximumUsd, isEditingUsd, token, nativeDisplay, balance } = args;
134
+ const fmt = (usd) => isEditingUsd
135
+ ? `$${roundUsd(usd)}`
136
+ : formatNative(usdToNativeStr(usd, token), nativeDisplay);
137
+ if (showMaxWarning)
138
+ return `${t.maximum} ${fmt(maximumUsd)}`;
139
+ if (showMinWarning)
140
+ return `${t.minimum} ${fmt(minimumUsd)}`;
141
+ if (balance) {
142
+ if (isEditingUsd) {
143
+ const isUsdPegged = token.fiatISO === "USD";
144
+ return isUsdPegged
145
+ ? `${t.balance} $${roundUsd(balance.usd)}`
146
+ : `${t.balance} $${roundUsd(balance.usd)} ${token.symbol}`;
147
+ }
148
+ return `${t.balance} ${formatNative(roundNative(balance.nativeAmountUnits, token), nativeDisplay)}`;
149
+ }
150
+ return `${t.minimum} ${fmt(minimumUsd)}`;
151
+ }
152
+ function SwitchButton({ onClick, secondaryAmount, isEditingUsd, }) {
153
+ return (_jsxs("button", { onClick: onClick, className: "daimo-flex daimo-items-center daimo-gap-1 daimo-py-3 daimo-px-4 hover:[@media(hover:hover)]:daimo-opacity-70 active:daimo-opacity-50 daimo-touch-action-manipulation daimo-transition-opacity daimo-duration-150 daimo-ease", children: [_jsx(SwitchArrowsIcon, { flipY: !isEditingUsd, animated: true }), _jsx("span", { className: "daimo-text-base daimo-font-normal daimo-leading-[21px] daimo-text-[var(--daimo-text-secondary)] daimo-tabular-nums", children: secondaryAmount })] }));
154
+ }
155
+ //# sourceMappingURL=TokenAmountEntry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenAmountEntry.js","sourceRoot":"","sources":["../../../src/web/components/TokenAmountEntry.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { WalletPaymentOption } from "../api/walletTypes.js";
2
- import { type DaimoPlatform } from "../platform.js";
2
+ import type { DaimoPlatform } from "../platform.js";
3
3
  type WalletAmountPageProps = {
4
4
  token: WalletPaymentOption;
5
5
  platform: DaimoPlatform;
@@ -7,7 +7,7 @@ type WalletAmountPageProps = {
7
7
  onContinue: (amountUsd: number) => void;
8
8
  baseUrl: string;
9
9
  };
10
- /** Amount entry page for wallet payment flow */
10
+ /** Amount entry page for wallet payment flow. */
11
11
  export declare function WalletAmountPage({ token, platform, onBack, onContinue, baseUrl, }: WalletAmountPageProps): import("react/jsx-runtime").JSX.Element;
12
12
  export {};
13
13
  //# sourceMappingURL=WalletAmountPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WalletAmountPage.d.ts","sourceRoot":"","sources":["../../../src/web/components/WalletAmountPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGhF,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAI/D,KAAK,qBAAqB,GAAG;IAC3B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,gDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,UAAU,EACV,OAAO,GACR,EAAE,qBAAqB,2CA8OvB"}
1
+ {"version":3,"file":"WalletAmountPage.d.ts","sourceRoot":"","sources":["../../../src/web/components/WalletAmountPage.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAKpD,KAAK,qBAAqB,GAAG;IAC3B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,iDAAiD;AACjD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,UAAU,EACV,OAAO,GACR,EAAE,qBAAqB,2CAyCvB"}
@@ -2,156 +2,21 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useState } from "react";
3
3
  import { formatUnits } from "viem";
4
4
  import { t } from "../hooks/locale.js";
5
- import { isDesktop } from "../platform.js";
6
5
  import { PrimaryButton } from "./buttons.js";
7
- import { PageHeader, TokenIconWithChainBadge } from "./shared.js";
8
- /** Amount entry page for wallet payment flow */
6
+ import { PageHeader } from "./shared.js";
7
+ import { TokenAmountEntry } from "./TokenAmountEntry.js";
8
+ /** Amount entry page for wallet payment flow. */
9
9
  export function WalletAmountPage({ token, platform, onBack, onContinue, baseUrl, }) {
10
10
  const balanceToken = token.balance.token;
11
11
  const minimumUsd = token.minimumRequired.usd;
12
12
  const maximumUsd = Math.min(token.balance.usd, balanceToken.maxAcceptUsd);
13
- // Check if this is a USD stablecoin (fiatISO is set on base Token type)
14
- const isUsdStablecoin = balanceToken.fiatISO === "USD";
15
- // Input state
16
- const [usdStr, setUsdStr] = useState("");
17
- const [tokenStr, setTokenStr] = useState("");
18
- const [isEditingUsd, setIsEditingUsd] = useState(true);
19
- // Derived values - use rounded max for comparison to avoid floating point issues
20
- const amountUsd = parseFloat(usdStr) || 0;
21
- const roundedMaxUsd = parseFloat(roundUsd(maximumUsd));
22
- const isValid = amountUsd >= minimumUsd && amountUsd <= roundedMaxUsd;
23
- const showMinWarning = usdStr !== "" && amountUsd < minimumUsd;
24
- const showMaxWarning = usdStr !== "" && amountUsd > roundedMaxUsd;
25
- // Convert between USD and token amounts using token.usd (price of 1 token in USD)
26
- const usdToTokenStr = useCallback((usd) => {
27
- if (usd === 0)
28
- return "";
29
- // usd / token.usd = how many tokens for that USD amount
30
- const tokenAmount = usd / balanceToken.usd;
31
- return roundTokenAmountUnits(tokenAmount, balanceToken);
32
- }, [balanceToken]);
33
- const tokenToUsdStr = useCallback((tokenAmountUnits) => {
34
- if (tokenAmountUnits === 0)
35
- return "";
36
- // tokenAmount * token.usd = USD value
37
- const usd = tokenAmountUnits * balanceToken.usd;
38
- return roundUsd(usd);
39
- }, [balanceToken]);
40
- // Update values when input changes
41
- const updateValues = useCallback((newUsdStr, newTokenStr, editingUsd) => {
42
- // When switching modes, format the non-edited value nicely
43
- if (editingUsd) {
44
- const tokenNum = parseFloat(newTokenStr) || 0;
45
- const formattedToken = tokenNum > 0
46
- ? stripTrailingZeros(roundTokenAmountUnits(tokenNum, balanceToken))
47
- : "";
48
- setUsdStr(newUsdStr);
49
- setTokenStr(formattedToken);
50
- }
51
- else {
52
- const usdNum = parseFloat(newUsdStr) || 0;
53
- const formattedUsd = usdNum > 0 ? roundUsd(usdNum) : "";
54
- setUsdStr(formattedUsd);
55
- setTokenStr(newTokenStr);
56
- }
57
- setIsEditingUsd(editingUsd);
58
- }, [balanceToken]);
59
- const handleInputChange = (e) => {
60
- const value = e.target.value;
61
- // Allow empty, or digits with up to appropriate decimal places
62
- const maxDecimals = isEditingUsd ? 2 : balanceToken.displayDecimals;
63
- const regex = new RegExp(`^\\d*\\.?\\d{0,${maxDecimals}}$`);
64
- if (value !== "" && !regex.test(value))
65
- return;
66
- if (isEditingUsd) {
67
- const newUsd = parseFloat(value) || 0;
68
- setUsdStr(value);
69
- setTokenStr(usdToTokenStr(newUsd));
70
- }
71
- else {
72
- const newToken = parseFloat(value) || 0;
73
- setTokenStr(value);
74
- setUsdStr(tokenToUsdStr(newToken));
75
- }
76
- };
77
- const handleKeyDown = (e) => {
78
- if (e.key === "Enter" && isValid) {
79
- onContinue(amountUsd);
80
- }
81
- };
82
- const handleMax = () => {
83
- const balanceTokenUnits = Number(formatUnits(BigInt(token.balance.amount), balanceToken.decimals));
84
- const cappedByLiquidity = balanceToken.maxAcceptUsd < token.balance.usd;
85
- const maxTokenAmountUnits = cappedByLiquidity
86
- ? maximumUsd / balanceToken.usd
87
- : balanceTokenUnits;
88
- const maxUsdStr = roundUsd(maximumUsd);
89
- const maxTokenStr = roundTokenAmountUnits(maxTokenAmountUnits, balanceToken);
90
- setUsdStr(maxUsdStr);
91
- setTokenStr(maxTokenStr);
92
- };
93
- const handleSwitchCurrency = () => {
94
- updateValues(usdStr, tokenStr, !isEditingUsd);
95
- };
96
- const shouldAutoFocus = isDesktop(platform);
97
- // Dynamic input width
98
- const currentValue = isEditingUsd ? usdStr : tokenStr;
99
- const inputWidth = currentValue.length === 0
100
- ? "3.55ch"
101
- : `${Math.min(currentValue.length - (currentValue.match(/\./g) || []).length * 0.55, 10)}ch`;
102
- // Balance/warning message
103
- const maxTokenAmountUnits = Number(formatUnits(BigInt(token.balance.amount), balanceToken.decimals));
104
- const balanceUsd = token.balance.usd;
105
- const getBalanceMessage = () => {
106
- if (isEditingUsd) {
107
- return isUsdStablecoin
108
- ? `${t.balance} $${roundUsd(balanceUsd)}`
109
- : `${t.balance} $${roundUsd(balanceUsd)} ${balanceToken.symbol}`;
110
- }
111
- return `${t.balance} ${roundTokenAmountUnits(maxTokenAmountUnits, balanceToken)} ${balanceToken.symbol}`;
112
- };
113
- const getMessage = () => {
114
- const formatAmount = (usd) => isEditingUsd
115
- ? `$${roundUsd(usd)}`
116
- : `${usdToTokenStr(usd)} ${balanceToken.symbol}`;
117
- if (showMaxWarning)
118
- return `${t.maximum} ${formatAmount(maximumUsd)}`;
119
- if (showMinWarning)
120
- return `${t.minimum} ${formatAmount(minimumUsd)}`;
121
- return getBalanceMessage();
122
- };
123
- const messageColor = showMinWarning || showMaxWarning
124
- ? "daimo-text-[var(--daimo-text)]"
125
- : "daimo-text-[var(--daimo-text-secondary)]";
126
- // Secondary amount for switch button
127
- const secondaryAmount = isEditingUsd
128
- ? `${tokenStr || "0"} ${balanceToken.symbol}`
129
- : `$${usdStr || roundUsd(0)}`;
130
- return (_jsxs("div", { className: "daimo-flex daimo-flex-col daimo-flex-1 daimo-min-h-0", children: [_jsx(PageHeader, { title: t.enterAmount, onBack: onBack }), _jsxs("div", { className: "daimo-flex-1 daimo-flex daimo-flex-col daimo-items-center daimo-justify-center daimo-p-6", children: [_jsx("div", { className: "daimo-mb-3", children: _jsx(TokenIconWithChainBadge, { token: balanceToken, size: "lg", baseUrl: baseUrl }) }), _jsxs("div", { className: "daimo-flex daimo-items-center daimo-justify-center daimo-gap-2", children: [_jsx("span", { className: "daimo-invisible daimo-py-[3px] daimo-px-2 daimo-text-sm", children: t.max }), _jsxs("div", { className: "daimo-flex daimo-items-center daimo-justify-center daimo-gap-1", children: [isEditingUsd && (_jsx("span", { className: `daimo-text-[24px] daimo-font-semibold daimo-tabular-nums ${usdStr ? "daimo-text-[var(--daimo-text)]" : "daimo-text-[var(--daimo-placeholder)]"}`, children: "$" })), _jsx("input", { type: "text", inputMode: "decimal", value: currentValue, onChange: handleInputChange, onKeyDown: handleKeyDown, placeholder: "0.00", className: "daimo-bg-transparent daimo-font-semibold daimo-text-[var(--daimo-text)] daimo-placeholder-[var(--daimo-placeholder)] daimo-outline-none daimo-border-none daimo-shadow-none daimo-caret-[var(--daimo-text-muted)] daimo-tabular-nums daimo-ring-0 focus:daimo-outline-none focus:daimo-ring-0 focus:daimo-border-none focus:daimo-shadow-none", style: {
131
- width: inputWidth,
132
- minWidth: "1ch",
133
- maxWidth: "10ch",
134
- fontSize: "clamp(16px, 30px, 30px)", // 30px with 16px min to prevent iOS zoom
135
- }, autoFocus: shouldAutoFocus }), !isEditingUsd && (_jsx("span", { className: "daimo-text-base daimo-font-normal daimo-text-[var(--daimo-text-muted)]", children: balanceToken.symbol }))] }), _jsx("button", { onClick: handleMax, className: "daimo-py-[3px] daimo-px-2 daimo-text-sm daimo-font-normal daimo-rounded-full daimo-bg-[var(--daimo-surface-secondary)] daimo-text-[var(--daimo-text-secondary)] hover:[@media(hover:hover)]:daimo-bg-[var(--daimo-surface-hover)] daimo-touch-action-manipulation daimo-transition-[background-color] daimo-duration-100 daimo-ease", children: t.max })] }), !isUsdStablecoin && (_jsx("div", { children: _jsx(SwitchButton, { onClick: handleSwitchCurrency, secondaryAmount: secondaryAmount, isEditingUsd: isEditingUsd }) })), _jsx("p", { className: `${messageColor} daimo-text-base daimo-font-normal daimo-leading-[21px] daimo-tabular-nums daimo-mb-6`, children: getMessage() }), _jsx(PrimaryButton, { onClick: () => isValid && onContinue(amountUsd), disabled: !isValid, className: "daimo-max-w-none", children: t.continue })] })] }));
136
- }
137
- // --- Helpers ---
138
- const USD_DECIMALS = 2;
139
- function roundUsd(usd) {
140
- return usd.toFixed(USD_DECIMALS);
141
- }
142
- function roundTokenAmountUnits(amountUnits, token) {
143
- if (amountUnits === 0)
144
- return "0";
145
- const decimals = token.displayDecimals;
146
- return amountUnits.toFixed(decimals);
147
- }
148
- function stripTrailingZeros(val) {
149
- return val.includes(".") ? val.replace(/\.?0+$/, "") : val;
150
- }
151
- function SwitchButton({ onClick, secondaryAmount, isEditingUsd, }) {
152
- return (_jsxs("button", { onClick: onClick, className: "daimo-flex daimo-items-center daimo-gap-1 daimo-py-3 daimo-px-4 hover:[@media(hover:hover)]:daimo-opacity-70 active:daimo-opacity-50 daimo-touch-action-manipulation daimo-transition-opacity daimo-duration-150 daimo-ease", children: [_jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", className: "daimo-text-[var(--daimo-text-muted)]", style: {
153
- transform: isEditingUsd ? "scaleY(1)" : "scaleY(-1)",
154
- transition: "transform 0.2s ease-in-out",
155
- }, children: _jsx("path", { d: "M3 7.5 7.5 3m0 0L12 7.5M7.5 3v13.5m13.5 0L16.5 21m0 0L12 16.5m4.5 4.5V7.5", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" }) }), _jsx("span", { className: "daimo-text-base daimo-font-normal daimo-leading-[21px] daimo-text-[var(--daimo-text-secondary)] daimo-tabular-nums", children: secondaryAmount })] }));
13
+ const balanceNativeUnits = Number(formatUnits(BigInt(token.balance.amount), balanceToken.decimals));
14
+ const [amountUsd, setAmountUsd] = useState(0);
15
+ const [isValid, setIsValid] = useState(false);
16
+ const handleChange = useCallback((usd, valid) => {
17
+ setAmountUsd(usd);
18
+ setIsValid(valid);
19
+ }, []);
20
+ return (_jsxs("div", { className: "daimo-flex daimo-flex-col daimo-flex-1 daimo-min-h-0", children: [_jsx(PageHeader, { title: t.enterAmount, onBack: onBack }), _jsxs("div", { className: "daimo-flex-1 daimo-flex daimo-flex-col daimo-items-center daimo-justify-center daimo-p-6", children: [_jsx(TokenAmountEntry, { token: balanceToken, minimumUsd: minimumUsd, maximumUsd: maximumUsd, nativeDisplay: { kind: "suffix", symbol: balanceToken.symbol }, initialMode: "usd", onContinue: onContinue, onChange: handleChange, balance: { usd: token.balance.usd, nativeAmountUnits: balanceNativeUnits }, platform: platform, baseUrl: baseUrl }), _jsx(PrimaryButton, { onClick: () => isValid && onContinue(amountUsd), disabled: !isValid, className: "daimo-max-w-none", children: t.continue })] })] }));
156
21
  }
157
22
  //# sourceMappingURL=WalletAmountPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WalletAmountPage.js","sourceRoot":"","sources":["../../../src/web/components/WalletAmountPage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WalletAmountPage.js","sourceRoot":"","sources":["../../../src/web/components/WalletAmountPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAUzD,iDAAiD;AACjD,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,UAAU,EACV,OAAO,GACe;IACtB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IACzC,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IAC1E,MAAM,kBAAkB,GAAG,MAAM,CAC/B,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CACjE,CAAC;IAEF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,GAAW,EAAE,KAAc,EAAE,EAAE;QAC/D,YAAY,CAAC,GAAG,CAAC,CAAC;QAClB,UAAU,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,eAAK,SAAS,EAAC,sDAAsD,aACnE,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,GAAI,EACpD,eAAK,SAAS,EAAC,0FAA0F,aACvG,KAAC,gBAAgB,IACf,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,EAC9D,WAAW,EAAC,KAAK,EACjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,EAC1E,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,GAChB,EACF,KAAC,aAAa,IACZ,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,CAAC,EAC/C,QAAQ,EAAE,CAAC,OAAO,EAClB,SAAS,EAAC,kBAAkB,YAE3B,CAAC,CAAC,QAAQ,GACG,IACZ,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { AccountRail } from "../../../common/account.js";
2
+ type AccountApplePayPageProps = {
3
+ rail: AccountRail;
4
+ sessionId: string;
5
+ clientSecret: string;
6
+ actionVerb: string;
7
+ initialAmount?: string;
8
+ onBack: () => void;
9
+ onAdvance: () => void;
10
+ };
11
+ /**
12
+ * Coinbase Headless payment page — amount entry + Apple Pay in a single
13
+ * screen. Amount edits keep the backend preview + signatures up to date.
14
+ * Coinbase webhooks drive the deposit lifecycle; iframe events only affect
15
+ * the widget layout.
16
+ *
17
+ * **Iframing + CSP**: pay.coinbase.com serves a `frame-ancestors` CSP
18
+ * header that only allows specific allowlisted domains. In sandbox we append
19
+ * `useApplePaySandbox=true`, but Coinbase may still require the current host
20
+ * to be allowlisted for the iframe to load.
21
+ */
22
+ export declare function AccountApplePayPage({ rail, sessionId, clientSecret, actionVerb, initialAmount, onBack, onAdvance, }: AccountApplePayPageProps): import("react/jsx-runtime").JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=AccountApplePayPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountApplePayPage.d.ts","sourceRoot":"","sources":["../../../../src/web/components/account/AccountApplePayPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EAGZ,MAAM,4BAA4B,CAAC;AAYpC,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAWF;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,UAAU,EACV,aAAa,EACb,MAAM,EACN,SAAS,GACV,EAAE,wBAAwB,2CA8V1B"}