@funkit/connect 10.1.0 → 10.2.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,36 @@
1
1
  # @funkit/connect
2
2
 
3
+ ## 10.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 4851fe3: Add Lighter Unified Trading account support. When the connected wallet's Lighter main account reports `account_trading_mode: 1` (unified), the deposit flow hides the `USDC (Spot)` destination and shows `USDC (Perps)` as plain `USDC`, and the withdrawal flow does the same for the Fast/Secure source-token dropdowns. Simple-mode accounts (`account_trading_mode: 0`) are unchanged.
8
+
9
+ ### Patch Changes
10
+
11
+ - 1ee3c30: Export `getWithdrawButtonText` from the withdrawal module so its CTA
12
+ label/disabled-reason precedence ladder can be unit-tested directly. Internal
13
+ helper only — no runtime or public-API behavior change.
14
+ - 1af584f: Lighter Unified Trading accounts: the Fast withdrawal method subtitle now reads "USDC only" instead of "USDC Perps only" (new `withdrawal.fastDisclaimerUnified` key, all 8 locales). Simple-mode accounts are unchanged.
15
+ - 8ae9a55: Move the Statsig fallback generator into connect-core's own prebuild
16
+ - cc2f674: Migrate the on-ramp fops request to the typed FIAT_TO_CRYPTO rail config
17
+ - 81dc85c: Add WithdrawRecipientAddress snapshot coverage (default/use-connected/error/risk/non-EVM). Test-only; no runtime change.
18
+ - Updated dependencies [8ae9a55]
19
+ - @funkit/connect-core@1.7.1
20
+
21
+ ## 10.1.1
22
+
23
+ ### Patch Changes
24
+
25
+ - 045cd95: feat(connect): update source change wordings
26
+ - 2a5b19a: fix(connect): make swapped iframe scrollable
27
+ - 6ae84b0: Hide fiat withdrawal limits when the user's balance is below the payment method limit
28
+ - 36423cd: test(connect): test TransferToken
29
+ - a074ecf: feat(connect): order connect wallet chain icons via config
30
+ - Updated dependencies [6ae84b0]
31
+ - Updated dependencies [a074ecf]
32
+ - @funkit/connect-core@1.7.0
33
+
3
34
  ## 10.1.0
4
35
 
5
36
  ### Minor Changes
@@ -16491,6 +16491,24 @@
16491
16491
  animation-name: stgjxld;
16492
16492
  }
16493
16493
 
16494
+ /* vanilla-extract-css-ns:src/modals/CheckoutModal/SwappedIframe/SwappedIframe.css.ts.vanilla.css?source=Lm94dGxjcDAgewogIHNjcm9sbGJhci1ndXR0ZXI6IHN0YWJsZTsKICBzY3JvbGxiYXItd2lkdGg6IHRoaW47CiAgc2Nyb2xsYmFyLWNvbG9yOiB2YXIoLS1yay1jb2xvcnMtdGVydGlhcnlUZXh0KSB2YXIoLS1yay1jb2xvcnMtbW9kYWxCYWNrZ3JvdW5kKTsKfQoub3h0bGNwMDo6LXdlYmtpdC1zY3JvbGxiYXIgewogIHdpZHRoOiA2cHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcmstY29sb3JzLW1vZGFsQmFja2dyb3VuZCk7Cn0KLm94dGxjcDA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yay1yYWRpaS1tb2RhbCk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcmstY29sb3JzLXRlcnRpYXJ5VGV4dCk7Cn0KLm94dGxjcDA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1yay1jb2xvcnMtbW9kYWxCYWNrZ3JvdW5kKTsKfQ */
16495
+ [data-rk] .oxtlcp0 {
16496
+ scrollbar-gutter: stable;
16497
+ scrollbar-width: thin;
16498
+ scrollbar-color: var(--rk-colors-tertiaryText) var(--rk-colors-modalBackground);
16499
+ }
16500
+ [data-rk] .oxtlcp0::-webkit-scrollbar {
16501
+ width: 6px;
16502
+ background-color: var(--rk-colors-modalBackground);
16503
+ }
16504
+ [data-rk] .oxtlcp0::-webkit-scrollbar-thumb {
16505
+ border-radius: var(--rk-radii-modal);
16506
+ background-color: var(--rk-colors-tertiaryText);
16507
+ }
16508
+ [data-rk] .oxtlcp0::-webkit-scrollbar-track {
16509
+ background-color: var(--rk-colors-modalBackground);
16510
+ }
16511
+
16494
16512
  /* vanilla-extract-css-ns:src/components/FunDivider/FunDivider.css.ts.vanilla.css?source=Ll8zZGtkc2MwIHsKICBib3JkZXItd2lkdGg6IDA7CiAgYm9yZGVyLXRvcC13aWR0aDogMXB4OwogIGJvcmRlci1zdHlsZTogc29saWQ7CiAgZmxleDogMTsKfQ */
16495
16513
  [data-rk] ._3dkdsc0 {
16496
16514
  border-width: 0;
@@ -94,6 +94,10 @@ function isLighterxyzCustomer(apiKey) {
94
94
 
95
95
  // src/utils/customer.ts
96
96
  var LIGHTER_MAIN_ACCOUNT_TYPE = 0;
97
+ var LIGHTER_TRADING_MODE = {
98
+ SIMPLE: 0,
99
+ UNIFIED: 1
100
+ };
97
101
  async function getLighterAccountsByL1Address(address) {
98
102
  const response = await fetch(
99
103
  `https://mainnet.zklighter.elliot.ai/api/v1/accountsByL1Address?l1_address=${address}`
@@ -127,6 +131,9 @@ function useLighterAccounts({
127
131
  return {
128
132
  ...query,
129
133
  mainAccountIndex: mainAccount?.index?.toString(),
134
+ // False until the accounts load — consumers fall back to the simple-mode
135
+ // UI (both USDC variants shown) while the trading mode is unknown.
136
+ isUnifiedTradingMode: mainAccount?.account_trading_mode === LIGHTER_TRADING_MODE.UNIFIED,
130
137
  subAccounts
131
138
  };
132
139
  }
@@ -575,7 +582,8 @@ function buildLighterMultiMethodConfig({
575
582
  config,
576
583
  accountIndex,
577
584
  t,
578
- secureDelayText
585
+ secureDelayText,
586
+ isUnifiedTradingMode
579
587
  }) {
580
588
  const fastConfig = buildLighterFastWalletWithdrawalConfig({
581
589
  signerClient: config.signerClient,
@@ -603,7 +611,9 @@ function buildLighterMultiMethodConfig({
603
611
  const fast = {
604
612
  id: LIGHTER_FAST_METHOD_ID,
605
613
  keyText: t("withdrawal.methodFast"),
606
- subtitleText: t("withdrawal.fastDisclaimer"),
614
+ subtitleText: t(
615
+ isUnifiedTradingMode ? "withdrawal.fastDisclaimerUnified" : "withdrawal.fastDisclaimer"
616
+ ),
607
617
  icon: /* @__PURE__ */ React3.createElement(EvmWallet, { size: 20 }),
608
618
  valueIcon: /* @__PURE__ */ React3.createElement(ChainIconStack, { chainIds: LIGHTER_FAST_PREVIEW_CHAIN_IDS }),
609
619
  config: fastConfig
@@ -629,7 +639,7 @@ function buildLighterMultiMethodConfig({
629
639
  }
630
640
  function useLighterWithdrawalConfig(config) {
631
641
  const { t } = useFunkitTranslation();
632
- const { mainAccountIndex } = useLighterAccounts({
642
+ const { mainAccountIndex, isUnifiedTradingMode } = useLighterAccounts({
633
643
  address: config?.l1Address
634
644
  });
635
645
  const accountIndex = mainAccountIndex && /^\d+$/.test(mainAccountIndex) ? mainAccountIndex : void 0;
@@ -642,9 +652,10 @@ function useLighterWithdrawalConfig(config) {
642
652
  config,
643
653
  accountIndex,
644
654
  t,
645
- secureDelayText
655
+ secureDelayText,
656
+ isUnifiedTradingMode
646
657
  });
647
- }, [config, accountIndex, t, secureDelayText]);
658
+ }, [config, accountIndex, t, secureDelayText, isUnifiedTradingMode]);
648
659
  }
649
660
  export {
650
661
  LIGHTER_DEFAULT_SECURE_MIN_WITHDRAWAL_AMOUNTS,
@@ -16491,6 +16491,24 @@
16491
16491
  animation-name: stgjxld;
16492
16492
  }
16493
16493
 
16494
+ /* vanilla-extract-css-ns:src/modals/CheckoutModal/SwappedIframe/SwappedIframe.css.ts.vanilla.css?source=Lm94dGxjcDAgewogIHNjcm9sbGJhci1ndXR0ZXI6IHN0YWJsZTsKICBzY3JvbGxiYXItd2lkdGg6IHRoaW47CiAgc2Nyb2xsYmFyLWNvbG9yOiB2YXIoLS1yay1jb2xvcnMtdGVydGlhcnlUZXh0KSB2YXIoLS1yay1jb2xvcnMtbW9kYWxCYWNrZ3JvdW5kKTsKfQoub3h0bGNwMDo6LXdlYmtpdC1zY3JvbGxiYXIgewogIHdpZHRoOiA2cHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcmstY29sb3JzLW1vZGFsQmFja2dyb3VuZCk7Cn0KLm94dGxjcDA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yay1yYWRpaS1tb2RhbCk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcmstY29sb3JzLXRlcnRpYXJ5VGV4dCk7Cn0KLm94dGxjcDA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1yay1jb2xvcnMtbW9kYWxCYWNrZ3JvdW5kKTsKfQ */
16495
+ [data-rk] .oxtlcp0 {
16496
+ scrollbar-gutter: stable;
16497
+ scrollbar-width: thin;
16498
+ scrollbar-color: var(--rk-colors-tertiaryText) var(--rk-colors-modalBackground);
16499
+ }
16500
+ [data-rk] .oxtlcp0::-webkit-scrollbar {
16501
+ width: 6px;
16502
+ background-color: var(--rk-colors-modalBackground);
16503
+ }
16504
+ [data-rk] .oxtlcp0::-webkit-scrollbar-thumb {
16505
+ border-radius: var(--rk-radii-modal);
16506
+ background-color: var(--rk-colors-tertiaryText);
16507
+ }
16508
+ [data-rk] .oxtlcp0::-webkit-scrollbar-track {
16509
+ background-color: var(--rk-colors-modalBackground);
16510
+ }
16511
+
16494
16512
  /* vanilla-extract-css-ns:src/components/FunInput/FunInput.css.ts.vanilla.css?source=#H4sIAAAAAAAAA9VUzU7DMAy-7yl8QRpSU6X8TCgTF8aBB-CGOLipt0VrncpNgQ7x7qgdbGXTEGIIxDHJ5-_Hjhwva9JupOF5ABAEuXLBeTaAeQ7JuS4qsHXqrEpp6UiGOj6NQEegYz2KIDkeD14G8Yoj2eFgz9QDnBijHilduKB8HUhUVTpWaR2C5wh2QY75I6gTKFBmjg3o8QDgHYplSSjIlnZV70JT0iXXRUpy31Gowi8_KznrUCnaxUx8zZmyPvdiVtlKFOLQiqdeMpL3agBfh9wxbS4eXRbmBhKtj9rj1HNQUyxc3hhwPCdxHc9hbT8zpszR0tznGUnn_M3uA8pQKVms7FeqIus5Q2lu6Sn0KUa_mXejerjxi38wKABfonWhMaDj8775L-dH22pO2sO1qzDNKet3AX-3C3vi4E_Fsf9gqBuzh3_i7Ed2716yrd2mzdw_kKzx68WbbD3smcJ2rLqiiWcmGyi7WqNvWqq-wemfrJjp96fzCplzuQIZBwAA */
16495
16513
  [data-rk] .zue0i60 {
16496
16514
  transition: all 150ms cubic-bezier(0.3, 0, 0.06, 1);
@@ -16491,6 +16491,24 @@
16491
16491
  animation-name: stgjxld;
16492
16492
  }
16493
16493
 
16494
+ /* vanilla-extract-css-ns:src/modals/CheckoutModal/SwappedIframe/SwappedIframe.css.ts.vanilla.css?source=Lm94dGxjcDAgewogIHNjcm9sbGJhci1ndXR0ZXI6IHN0YWJsZTsKICBzY3JvbGxiYXItd2lkdGg6IHRoaW47CiAgc2Nyb2xsYmFyLWNvbG9yOiB2YXIoLS1yay1jb2xvcnMtdGVydGlhcnlUZXh0KSB2YXIoLS1yay1jb2xvcnMtbW9kYWxCYWNrZ3JvdW5kKTsKfQoub3h0bGNwMDo6LXdlYmtpdC1zY3JvbGxiYXIgewogIHdpZHRoOiA2cHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcmstY29sb3JzLW1vZGFsQmFja2dyb3VuZCk7Cn0KLm94dGxjcDA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yay1yYWRpaS1tb2RhbCk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcmstY29sb3JzLXRlcnRpYXJ5VGV4dCk7Cn0KLm94dGxjcDA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1yay1jb2xvcnMtbW9kYWxCYWNrZ3JvdW5kKTsKfQ */
16495
+ [data-rk] .oxtlcp0 {
16496
+ scrollbar-gutter: stable;
16497
+ scrollbar-width: thin;
16498
+ scrollbar-color: var(--rk-colors-tertiaryText) var(--rk-colors-modalBackground);
16499
+ }
16500
+ [data-rk] .oxtlcp0::-webkit-scrollbar {
16501
+ width: 6px;
16502
+ background-color: var(--rk-colors-modalBackground);
16503
+ }
16504
+ [data-rk] .oxtlcp0::-webkit-scrollbar-thumb {
16505
+ border-radius: var(--rk-radii-modal);
16506
+ background-color: var(--rk-colors-tertiaryText);
16507
+ }
16508
+ [data-rk] .oxtlcp0::-webkit-scrollbar-track {
16509
+ background-color: var(--rk-colors-modalBackground);
16510
+ }
16511
+
16494
16512
  /* vanilla-extract-css-ns:src/components/FunInput/FunInput.css.ts.vanilla.css?source=#H4sIAAAAAAAAA9VUzU7DMAy-7yl8QRpSU6X8TCgTF8aBB-CGOLipt0VrncpNgQ7x7qgdbGXTEGIIxDHJ5-_Hjhwva9JupOF5ABAEuXLBeTaAeQ7JuS4qsHXqrEpp6UiGOj6NQEegYz2KIDkeD14G8Yoj2eFgz9QDnBijHilduKB8HUhUVTpWaR2C5wh2QY75I6gTKFBmjg3o8QDgHYplSSjIlnZV70JT0iXXRUpy31Gowi8_KznrUCnaxUx8zZmyPvdiVtlKFOLQiqdeMpL3agBfh9wxbS4eXRbmBhKtj9rj1HNQUyxc3hhwPCdxHc9hbT8zpszR0tznGUnn_M3uA8pQKVms7FeqIus5Q2lu6Sn0KUa_mXejerjxi38wKABfonWhMaDj8775L-dH22pO2sO1qzDNKet3AX-3C3vi4E_Fsf9gqBuzh3_i7Ed2716yrd2mzdw_kKzx68WbbD3smcJ2rLqiiWcmGyi7WqNvWqq-wemfrJjp96fzCplzuQIZBwAA */
16495
16513
  [data-rk] .zue0i60 {
16496
16514
  transition: all 150ms cubic-bezier(0.3, 0, 0.06, 1);
@@ -10,6 +10,12 @@ import type { AssetHoldingsItem } from '../../domains/wallet';
10
10
  */
11
11
  export declare function getIconFromUiConfig(paymentMethod: PaymentMethod, iconConfig: FunkitPaymentMethodIconsConfig | undefined, defaultIconSize?: number): ReactNode | undefined;
12
12
  export declare const getDynamicValueIconComponent: () => React.JSX.Element;
13
+ /**
14
+ * Statsig's `connectwalletchainiconorder` only carries the chains we want to
15
+ * lead with (e.g. by TVL/usage) — anything else checkout-supports still needs
16
+ * to render after them rather than being silently dropped.
17
+ */
18
+ export declare function resolveConnectWalletChainOrder(configuredOrder: readonly (string | number)[]): string[];
13
19
  export declare function SupportedChainList({ chainIdList, iconSize, style, }: {
14
20
  chainIdList: string[];
15
21
  iconSize?: number;
@@ -90,7 +96,11 @@ export declare function PaymentMethodDisabledBadge(props: {
90
96
  */
91
97
  export declare function FopPaymentMethodItem({ fop, isActive, onClick, testId, disclaimerLimit, disabled, isBelowMinimum, }: BasePaymentMethodItemProps & {
92
98
  fop: SwappedFormOfPayment;
93
- disclaimerLimit: string;
99
+ /**
100
+ * Omit to show processing time only — withdrawal hides the limit when the
101
+ * user's balance is below the method's limit (no meaningful limit to show).
102
+ */
103
+ disclaimerLimit?: string;
94
104
  disabled?: boolean;
95
105
  /** Withdrawal off-ramp only: balance can't meet the cash sell minimum. */
96
106
  isBelowMinimum?: boolean;
package/dist/index.css CHANGED
@@ -16541,6 +16541,24 @@
16541
16541
  animation-name: stgjxld;
16542
16542
  }
16543
16543
 
16544
+ /* vanilla-extract-css-ns:src/modals/CheckoutModal/SwappedIframe/SwappedIframe.css.ts.vanilla.css?source=Lm94dGxjcDAgewogIHNjcm9sbGJhci1ndXR0ZXI6IHN0YWJsZTsKICBzY3JvbGxiYXItd2lkdGg6IHRoaW47CiAgc2Nyb2xsYmFyLWNvbG9yOiB2YXIoLS1yay1jb2xvcnMtdGVydGlhcnlUZXh0KSB2YXIoLS1yay1jb2xvcnMtbW9kYWxCYWNrZ3JvdW5kKTsKfQoub3h0bGNwMDo6LXdlYmtpdC1zY3JvbGxiYXIgewogIHdpZHRoOiA2cHg7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcmstY29sb3JzLW1vZGFsQmFja2dyb3VuZCk7Cn0KLm94dGxjcDA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yay1yYWRpaS1tb2RhbCk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcmstY29sb3JzLXRlcnRpYXJ5VGV4dCk7Cn0KLm94dGxjcDA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1yay1jb2xvcnMtbW9kYWxCYWNrZ3JvdW5kKTsKfQ */
16545
+ [data-rk] .oxtlcp0 {
16546
+ scrollbar-gutter: stable;
16547
+ scrollbar-width: thin;
16548
+ scrollbar-color: var(--rk-colors-tertiaryText) var(--rk-colors-modalBackground);
16549
+ }
16550
+ [data-rk] .oxtlcp0::-webkit-scrollbar {
16551
+ width: 6px;
16552
+ background-color: var(--rk-colors-modalBackground);
16553
+ }
16554
+ [data-rk] .oxtlcp0::-webkit-scrollbar-thumb {
16555
+ border-radius: var(--rk-radii-modal);
16556
+ background-color: var(--rk-colors-tertiaryText);
16557
+ }
16558
+ [data-rk] .oxtlcp0::-webkit-scrollbar-track {
16559
+ background-color: var(--rk-colors-modalBackground);
16560
+ }
16561
+
16544
16562
  /* vanilla-extract-css-ns:src/components/FunInput/FunInput.css.ts.vanilla.css?source=#H4sIAAAAAAAAA9VUzU7DMAy-7yl8QRpSU6X8TCgTF8aBB-CGOLipt0VrncpNgQ7x7qgdbGXTEGIIxDHJ5-_Hjhwva9JupOF5ABAEuXLBeTaAeQ7JuS4qsHXqrEpp6UiGOj6NQEegYz2KIDkeD14G8Yoj2eFgz9QDnBijHilduKB8HUhUVTpWaR2C5wh2QY75I6gTKFBmjg3o8QDgHYplSSjIlnZV70JT0iXXRUpy31Gowi8_KznrUCnaxUx8zZmyPvdiVtlKFOLQiqdeMpL3agBfh9wxbS4eXRbmBhKtj9rj1HNQUyxc3hhwPCdxHc9hbT8zpszR0tznGUnn_M3uA8pQKVms7FeqIus5Q2lu6Sn0KUa_mXejerjxi38wKABfonWhMaDj8775L-dH22pO2sO1qzDNKet3AX-3C3vi4E_Fsf9gqBuzh3_i7Ed2716yrd2mzdw_kKzx68WbbD3smcJ2rLqiiWcmGyi7WqNvWqq-wemfrJjp96fzCplzuQIZBwAA */
16545
16563
  [data-rk] .zue0i60 {
16546
16564
  transition: all 150ms cubic-bezier(0.3, 0, 0.06, 1);