@funkit/connect 9.13.0 → 9.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @funkit/connect
2
2
 
3
+ ## 9.14.0
4
+
5
+ ### Minor Changes
6
+
7
+ - c32bc92: feat(connect): Aave source-select renders Native + Use other assets sections; Native row fast-paths to InputAmount when wallet holds the target asset.
8
+ - ccd1855: Register Bitcoin on Cash App as a payment source on the crypto tab of the checkout modal.
9
+
10
+ ### Patch Changes
11
+
12
+ - bc5ce6f: test(connect): add checkout transfer init coverage
13
+ - b69e713: Fix CopyAddress button border-radius to account for parent 1px border.
14
+ - c097446: Fix withdrawal modal conflating source-token amount with USD value. No-op for
15
+ 1:1 stablecoin sources; corrects target-amount, receive-fiat, and min-amount
16
+ math for non-stable sources.
17
+ - beb12ee: test(connect): add unit test coverage
18
+ - Updated dependencies [d67a842]
19
+ - Updated dependencies [e9e960a]
20
+ - @funkit/api-base@4.2.3
21
+ - @funkit/chains@1.2.0
22
+
3
23
  ## 9.13.0
4
24
 
5
25
  ### Minor Changes
@@ -276,6 +276,9 @@ declare const _default: {
276
276
  readonly enablebitcoin: {
277
277
  readonly value: true;
278
278
  };
279
+ readonly enablebitcoinlightning: {
280
+ readonly value: false;
281
+ };
279
282
  readonly enablebluvobrokerage: {
280
283
  readonly value: true;
281
284
  };
@@ -48,6 +48,7 @@ import { useQuery } from "@tanstack/react-query";
48
48
 
49
49
  // src/consts/customers.ts
50
50
  import {
51
+ AAVE_API_KEY,
51
52
  AVANTIS_API_KEY,
52
53
  BASED_API_KEY,
53
54
  BSX_API_KEY,
@@ -82,6 +83,7 @@ var DEFAULT_TEXT_CUSTOMIZATIONS = {
82
83
  sourceMethodTitle: "Your source",
83
84
  tokensListTitle: "Your tokens",
84
85
  transferTokens: "Transfer Crypto",
86
+ bitcoinLightning: "Bitcoin on Cash App",
85
87
  receiveDropdownTitle: "",
86
88
  // Default to empty
87
89
  receiveDropdownLabel: "Asset to Receive",
@@ -165,6 +167,7 @@ function useFunkitConfig() {
165
167
  sourceMethodTitle: t("textCustomizations.sourceMethodTitle"),
166
168
  tokensListTitle: t("textCustomizations.tokensListTitle"),
167
169
  transferTokens: t("textCustomizations.transferTokens"),
170
+ bitcoinLightning: t("textCustomizations.bitcoinLightning"),
168
171
  receiveDropdownTitle: t("textCustomizations.receiveDropdownTitle"),
169
172
  receiveDropdownLabel: t("textCustomizations.receiveDropdownLabel"),
170
173
  confirmationScreen: {
@@ -286,6 +286,12 @@ function createPaymentMethodInfo(params) {
286
286
  title: "QR Code Transfer",
287
287
  description: ""
288
288
  };
289
+ case "bitcoin_lightning" /* BITCOIN_LIGHTNING */:
290
+ return {
291
+ paymentMethod: "bitcoin_lightning" /* BITCOIN_LIGHTNING */,
292
+ title: "Bitcoin on Cash App",
293
+ description: ""
294
+ };
289
295
  case "virtual_bank" /* VIRTUAL_BANK */:
290
296
  return {
291
297
  paymentMethod: "virtual_bank" /* VIRTUAL_BANK */,
@@ -2,6 +2,7 @@ import { type SwappedFormOfPayment } from '@funkit/api-base';
2
2
  import React, { type ReactNode } from 'react';
3
3
  import { type FunkitPaymentMethodIconsConfig } from '../../providers/FunkitConfigContext';
4
4
  import { PaymentMethod, type PaymentMethodBrokerageInfo, type PaymentMethodVirtualBankInfo } from '../../domains/paymentMethods';
5
+ import type { AssetHoldingsItem } from '../../domains/wallet';
5
6
  /**
6
7
  * Get a custom icon passed in from UI customization config
7
8
  * These icons are passed in from client to support enhanced branding+design
@@ -38,6 +39,7 @@ interface ConnectedPaymentMethodItemProps {
38
39
  disabled?: boolean;
39
40
  }
40
41
  export declare const AccountBalancePaymentMethodItem: ({ isSelected, showSelectedCheckmark, onSelect, targetChainId, testId, disabled, }: ConnectedPaymentMethodItemProps) => React.JSX.Element;
42
+ export declare const BitcoinLightningPaymentMethodItem: ({ isActive, onClick, isClickable, customValueIcon, paymentIcon, }: PaymentMethodItemProps) => React.JSX.Element;
41
43
  export declare const ActiveFiatAccountPaymentMethodItem: ({ isActive, onClick, paymentMethodInfo, customValueIcon, testId, disabled, }: BasePaymentMethodItemProps & {
42
44
  paymentMethodInfo: PaymentMethodVirtualBankInfo;
43
45
  testId?: string;
@@ -50,10 +52,24 @@ type BasePaymentMethodItemProps = {
50
52
  customValueIcon?: ReactNode;
51
53
  testId?: string;
52
54
  };
55
+ type PaymentMethodItemProps = BasePaymentMethodItemProps & {
56
+ paymentIcon: ReactNode;
57
+ };
53
58
  export declare function AddPaymentMethodItem({ paymentMethod, isClickable, isActive, onClick, customValueIcon, testId, }: BasePaymentMethodItemProps & {
54
59
  paymentMethod: PaymentMethod;
55
60
  dynamicLimit?: string;
56
61
  }): React.JSX.Element | undefined;
62
+ /**
63
+ * Source-list row for the underlying asset a customer is supplying
64
+ * (e.g. USDT for an Aave aUSDT checkout) when the user already holds
65
+ * it. Click pre-selects the asset as the source and skips
66
+ * asset-select via SourceChange's `skipAssetSelect` routing.
67
+ */
68
+ export declare function NativeAssetItem({ asset, label, onClick, }: {
69
+ asset: AssetHoldingsItem;
70
+ label: string;
71
+ onClick: () => void;
72
+ }): React.JSX.Element;
57
73
  export declare function PayPalPaymentMethodItem({ isActive, isClickable, onClick, isLoading, }: BasePaymentMethodItemProps & {
58
74
  isLoading: boolean;
59
75
  }): React.JSX.Element;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ export declare const CashAppIcon: ({ size }: {
3
+ size?: number;
4
+ }) => React.JSX.Element;
@@ -12,5 +12,13 @@ export declare function isAvantisCustomer(apiKey: string): apiKey is "6TUi99Tq3O
12
12
  export declare function isPerplCustomer(apiKey: string): apiKey is "wQDLu86Qab61vbtru7thf8Yj0xaeqVUH4ohoXESu";
13
13
  export declare function isLighterxyzCustomer(apiKey: string): apiKey is "i6e1I8cfX625TTwRJlD2DshKyAoaUtO8aeoaR4i2";
14
14
  export declare function isFanaticsCustomer(apiKey: string): apiKey is "lI7amueGK94QtGa7sGGVf8n0XhIcn4sHFAZRu5Jj";
15
+ export declare function isAaveCustomer(apiKey: string): apiKey is "EWzSv8tWnQ7UcZ2IsDqFw1dYo3Df56FX6KBJ5ztS";
16
+ /**
17
+ * Gates the source-select "Native" fast-path: when the connected wallet
18
+ * already holds `checkoutConfig.targetAsset`, surface a one-click row
19
+ * that skips asset-select and lands on InputAmount. Currently Aave-only;
20
+ * extend by OR-ing additional `is<Customer>Customer` predicates.
21
+ */
22
+ export declare function isCustomerNativeFastPathEnabled(apiKey: string): apiKey is "EWzSv8tWnQ7UcZ2IsDqFw1dYo3Df56FX6KBJ5ztS";
15
23
  export declare function isLighterEthSpot(apiKey: string, checkoutConfig: FunkitCheckoutConfig | undefined): boolean | undefined;
16
24
  export declare function isLighterSlowDeposit(apiKey: string, checkoutConfig: Pick<FunkitCheckoutConfig, 'targetChain'> | undefined): boolean;
@@ -9,6 +9,7 @@ export declare enum PaymentMethod {
9
9
  /** Bluvo - Exchange / Brokerage **/
10
10
  BROKERAGE = "brokerage",
11
11
  TOKEN_TRANSFER = "token_transfer",
12
+ BITCOIN_LIGHTNING = "bitcoin_lightning",
12
13
  VIRTUAL_BANK = "virtual_bank",
13
14
  SWAPPED_CARD = "swapped_card",
14
15
  SEPA = "sepa",
@@ -38,6 +39,9 @@ export interface PaymentMethodAccountInfo extends PaymentMethodInfoBase {
38
39
  export interface PaymentMethodTokenTransferInfo extends PaymentMethodInfoBase {
39
40
  paymentMethod: PaymentMethod.TOKEN_TRANSFER;
40
41
  }
42
+ export interface PaymentMethodBitcoinLightningInfo extends PaymentMethodInfoBase {
43
+ paymentMethod: PaymentMethod.BITCOIN_LIGHTNING;
44
+ }
41
45
  export interface PaymentMethodVirtualBankIncompleteInfo extends PaymentMethodInfoBase {
42
46
  paymentMethod: PaymentMethod.VIRTUAL_BANK;
43
47
  matchingFiatAccount: BridgeVirtualBankAccount | undefined;
@@ -48,7 +52,7 @@ export interface PaymentMethodVirtualBankInfo extends PaymentMethodVirtualBankIn
48
52
  }
49
53
  export type ConnectablePaymentMethodInfo = PaymentMethodAccountInfo | PaymentMethodBrokerageInfo | PaymentMethodVirtualBankInfo;
50
54
  export declare function isConnectablePaymentMethodInfo(value: unknown): value is ConnectablePaymentMethodInfo;
51
- export type PaymentMethodInfo = PaymentMethodCardInfo | PaymentMethodBrokerageInfo | PaymentMethodAccountInfo | PaymentMethodTokenTransferInfo | PaymentMethodVirtualBankIncompleteInfo;
55
+ export type PaymentMethodInfo = PaymentMethodCardInfo | PaymentMethodBrokerageInfo | PaymentMethodAccountInfo | PaymentMethodTokenTransferInfo | PaymentMethodBitcoinLightningInfo | PaymentMethodVirtualBankIncompleteInfo;
52
56
  interface CardPaymentMethodParams {
53
57
  paymentMethod: PaymentMethod.CARD;
54
58
  /** We also store client's customization in our database :( */
@@ -66,6 +70,9 @@ interface BrokeragePaymentMethodParams {
66
70
  interface TokenTransferPaymentMethodParams {
67
71
  paymentMethod: PaymentMethod.TOKEN_TRANSFER;
68
72
  }
73
+ interface BitcoinLightningPaymentMethodParams {
74
+ paymentMethod: PaymentMethod.BITCOIN_LIGHTNING;
75
+ }
69
76
  interface VirtualBankPaymentMethodIncompleteParams {
70
77
  paymentMethod: PaymentMethod.VIRTUAL_BANK;
71
78
  matchingFiatAccount: undefined;
@@ -79,6 +86,7 @@ interface VirtualBankPaymentMethodParams {
79
86
  export declare function createPaymentMethodInfo(params: CardPaymentMethodParams): PaymentMethodCardInfo;
80
87
  export declare function createPaymentMethodInfo(params: AccountPaymentMethodParams): PaymentMethodAccountInfo;
81
88
  export declare function createPaymentMethodInfo(params: TokenTransferPaymentMethodParams): PaymentMethodTokenTransferInfo;
89
+ export declare function createPaymentMethodInfo(params: BitcoinLightningPaymentMethodParams): PaymentMethodBitcoinLightningInfo;
82
90
  export declare function createPaymentMethodInfo(params: VirtualBankPaymentMethodIncompleteParams): PaymentMethodVirtualBankIncompleteInfo;
83
91
  export declare function createPaymentMethodInfo(params: VirtualBankPaymentMethodParams): PaymentMethodVirtualBankInfo;
84
92
  export declare function createPaymentMethodInfo(params: BrokeragePaymentMethodParams): PaymentMethodBrokerageInfo;
@@ -5,6 +5,7 @@ export declare function usePaymentMethodEnablement(): {
5
5
  isTokenTransferEnabled: boolean;
6
6
  isMeldEnabled: boolean;
7
7
  isBrokerageEnabled: boolean;
8
+ isLightningEnabled: boolean;
8
9
  };
9
10
  export type PaymentMethodType = 'crypto' | 'fiat';
10
11
  export type UnavailablePaymentSource = {
package/dist/index.css CHANGED
@@ -15203,6 +15203,14 @@
15203
15203
  opacity: 0;
15204
15204
  }
15205
15205
 
15206
+ /* vanilla-extract-css-ns:src/components/FunAssetAvatar/FunAssetAvatar.css.ts.vanilla.css?source=LnV3cmRjMjAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoudXdyZGMyMiB7CiAgcG9zaXRpb246IGFic29sdXRlOwp9 */
15207
+ [data-rk] .uwrdc20 {
15208
+ position: relative;
15209
+ }
15210
+ [data-rk] .uwrdc22 {
15211
+ position: absolute;
15212
+ }
15213
+
15206
15214
  /* vanilla-extract-css-ns:src/components/FunBadge/FunBadge.css.ts.vanilla.css?source=QGtleWZyYW1lcyBiYzJ1enkwIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMCUpOwogIH0KICAzNSUsIDEwMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMCUpOwogIH0KfQouYmMydXp5MSB7CiAgZGlzcGxheTogZmxleDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIHdpZHRoOiBmaXQtY29udGVudDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5iYzJ1enkyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouYmMydXp5Mjo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgaW5zZXQ6IDA7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQgMzAlLCB3aGl0ZSA0NSUsIHdoaXRlIDU1JSwgdHJhbnNwYXJlbnQgNzAlKSBuby1yZXBlYXQ7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0yMDAlKTsKICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgMTAwJTsKICBvcGFjaXR5OiAwLjk7CiAgZmlsdGVyOiBibHVyKDJweCk7CiAgYW5pbWF0aW9uOiBiYzJ1enkwIDVzIGxpbmVhciBpbmZpbml0ZSAxczsKICBtaXgtYmxlbmQtbW9kZTogc29mdC1saWdodDsKfQ== */
15207
15215
  @keyframes bc2uzy0 {
15208
15216
  0% {
@@ -15501,14 +15509,6 @@
15501
15509
  flex: 1;
15502
15510
  }
15503
15511
 
15504
- /* vanilla-extract-css-ns:src/components/FunAssetAvatar/FunAssetAvatar.css.ts.vanilla.css?source=LnV3cmRjMjAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoudXdyZGMyMiB7CiAgcG9zaXRpb246IGFic29sdXRlOwp9 */
15505
- [data-rk] .uwrdc20 {
15506
- position: relative;
15507
- }
15508
- [data-rk] .uwrdc22 {
15509
- position: absolute;
15510
- }
15511
-
15512
15512
  /* vanilla-extract-css-ns:src/components/FunCountdown/FunCountdown.css.ts.vanilla.css?source=Ll8xdDBiYzExMSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGxlZnQ6IDA7CiAgdG9wOiAwOwogIGJvdHRvbTogMDsKICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOwp9Ci5fMXQwYmMxMTMgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBsZWZ0OiAwOwogIHRvcDogMDsKICBib3R0b206IDA7CiAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsKfQ== */
15513
15513
  [data-rk] ._1t0bc111 {
15514
15514
  position: absolute;
@@ -15620,7 +15620,7 @@
15620
15620
  inset: 0;
15621
15621
  }
15622
15622
 
15623
- /* vanilla-extract-css-ns:src/components/CopyAddress/CopyInputDisplayedAddress.css.ts.vanilla.css?source=#H4sIAAAAAAAAA81WXavbOBB9v79iKFxIwDJyUqe97ktp90e0+7LI8jgRkSUjKfcmXe5/L5LtxLLTNN2FUgKx9TEzZ2aOj/Rxj6fasAYt/JPty28onhD+fQCgj+EB4AxTttamIdqIrVAF5PQR6OOHeLXoXiVz+HVBl2C0Yw6/LGiF2yVYziQusmVnpFvGhTsVkPnx6wNAlg/h5msbOluj6dvOUy2kQ1NAKQ9msWqPy7ND+r8S2NDHSwpkPU4i3UyzoFewbM5YXh8+zmtc9zVORplfx+kTuYWURFDvQerL835e0+zu0v0M0i92//UhHcqyDnH1wUmhkHAttSngmZkFIWbfjS1h3AmtPvvBX8KyUmIVPJfaVGhIqZ3TDZFYO2JYJQ525MJPCMK1Usjdp4NzWl2xNWK7+wXjkLrwoApgUkKW08YCP5SCkxK/CTQLmq4ToAnQlG4S8JUYZf02ZE0I3yHfE8G1IhVKdiogzXL7YbbG7I7ourboCt+L2YZubfBBg4dWDwgNSubEM/rZF1G5XQHZpj364Q594pdxJWwbfGyNqIIXyTgS4bCxBXBUDk2cSVGUWGvTSQjXyqFyBbx5E0NgpdXy4AIEp9sCVl0837PzoMf2FEPrh32/hhathtkjsTtW6ZcChLLogIZflubtEfjBGFQuEGfatjORIV3lNumC9+9d6H4QBQ5zsauh6h1pph2d0IU40Qi1JfVB8Q7HhDSrPFAmECenCWQppctpxVnt0NxfcNMV8lwyz/jfV3QuRUta5oO0Wp62Wnmp9J9GkJ3h6f8S76R/btpj4v9g0NW5Mp3tftbbXn/+gObloWsjER3pdrTNFyzstc7oPQYJGBRgDvaiD6GaAffIkBnjk8xoV+xk0JB+S0+BVZpPCzkLDul6pnM/yPquMo+FKy7B5opEjmVwdUUGI/27IZDpysaxIhEbJHLt6RyJ5Hlm8l2862avnY0Lkr7LPZW753Ia9/Ipz0jRFXF8ko9M319srpJ+dhiNmkRnTZqA/nsxoe3TFOF565fFirbH5Q1bFmyvn0bn40aocP7XEo+RcXnDuEVjW+R+GLg9aQKx7iSxgNagRfOMZF1FrnlwPUVQSs333g9TomGBu4o1OFA3nk1AaYXLeHtE9cl0AtROtx8M63KjgzxdFv+j4Ixd1EJK0ugKC6i1eWGmshGtpjj7hdmVpfohBe65kd6+Vt64J9DLLYHehzvQ7zsc4XsT5QwAAA== */
15623
+ /* vanilla-extract-css-ns:src/components/CopyAddress/CopyInputDisplayedAddress.css.ts.vanilla.css?source=#H4sIAAAAAAAAA81W247bNhB9368YBFhABkSBsiMnq7wEST8i7UtBUSObME0KJL3rTbH/XpC6WJQcx02BojBgibeZwzNHh/x8wNfGsCNa+DM/VN9RPCH89QBAH8MDwBmmbKPNkWgjdkKVUNBHoI+f4tGye5XM4e8JXYHRjjn8ltAadyuwnElM8lW3SLeMC/daQu7bbw8AeTGkW45t6WKMZu+7SI2QDk0JlTyZZN2eV2NA+q82sKWPly2QzXQT2Xa+C3oFy3bE8vbweclx03OcTnZ+HaffyC2kJIJ6D1JPz8clp/nd1P0M0j+s/ttDNtCyCXn1yUmhkHAttSnhmZmEEHPo2pYw7oRWX33jN2FZJbEOkSttajSk0s7pI5HYOGJYLU62BM4kT8Y4vlcQrpVC7r6cnNNqBQTyvmRxHCN2+18MFCgRHmwJTErIC3q0wE+V4KTC7wJNQrNNCjQFmtFtCp6hCRvvAxuE8D3yAxFcK1KjZK8lZHlhPy3GmN0T3TQWXelrtJjQjQ0xaIjQ6gGhQcmceEbf+yJqty8h37Zn39yjJ+HSroVtQ4ydEXWIIhlHIhwePUeoHJp4J2VZYaNNZy1cK4fKlfDuXQyBVVbLkwsQnG5LWHf5fC3HRo/tKYbWN/vaDeVaD71nYves1i8lCGXRAQ2/PCvaM/CTMahcENS8bKPAIVsXNu2S9+9d6r4RJQ59caiB9U4784rO5EKcOAq1I81J8Q7HTDTrIkgmCKegKeQZpas546xxaO4n3HREjpR59f93pHMpWtIyn6TV8nWnlbdQ/2kEOxqe/i/1Qfrntj2n/g+2028ucqxx3c9q2/vS/6B4RajaxFwnfh5N84SFudYZfcBgAYMDLMFe/CGwGXBPFjJj/CZz2pGdDh7ST+klsM6KOZGL5JBtFj73g13fRfPUuGIKtlcscmqD6ys2GPnfDYPM1jbOFZnYYJEbL+fIJMee2Xfxoeu9dmYmJPtQeCl3z9U87+VTXoiiI3F6wk+WfrysuSr6xWE0KRJdFGkG+o9kJtunOcJx6rdkTdvz6sZaFtZeP43G40aocC9oJJ6jxdWNxS0a2yL3zaDtWRGIda8SS2gNWjTPSDZ1FJqH0HMEldT84OMwJY4saFexIw7SjXtTUFrhKp4eSX3WnQK18+knw7q90cGeLoO/aDjTEI2Qkhx1jSU02rwwU9tIVnOc/cDiylL/UAL33FRvXzdv3BPo5ZZA78Md5Pc3djwXAf0MAAA= */
15624
15624
  @keyframes _1kbzei9e {
15625
15625
  0% {
15626
15626
  transform-origin: 50% 0%;
@@ -15658,8 +15658,8 @@
15658
15658
  }
15659
15659
  [data-rk] ._1kbzei93 {
15660
15660
  outline-color: var(--rk-colors-actionColorDisabled);
15661
- border-bottom-left-radius: var(--rk-radii-connectButton);
15662
- border-bottom-right-radius: var(--rk-radii-connectButton);
15661
+ border-bottom-left-radius: calc(var(--rk-radii-connectButton) - 1px);
15662
+ border-bottom-right-radius: calc(var(--rk-radii-connectButton) - 1px);
15663
15663
  transition: all 150ms cubic-bezier(0.3, 0, 0.06, 1);
15664
15664
  }
15665
15665
  [data-rk] ._1kbzei94 {