@funkit/connect 5.5.13-next.1 → 5.5.13-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @funkit/connect
2
2
 
3
+ ## 5.5.13-next.3
4
+
5
+ ### Patch Changes
6
+
7
+ - b0f4092: feat: direct execution notification center
8
+ - 76158e3: feat(connect): show empty UI when withdrawal amount is empty
9
+ - 7752acf: remove unused hacky code
10
+ - 19260d7: add meld supported currency in check
11
+ - 7c584f2: do not use alias in external typing file
12
+ - Updated dependencies [19260d7]
13
+ - @funkit/utils@1.1.4-next.1
14
+ - @funkit/api-base@1.9.5-next.2
15
+ - @funkit/core@2.3.27-next.2
16
+ - @funkit/wagmi-tools@3.0.49-next.2
17
+
18
+ ## 5.5.13-next.2
19
+
20
+ ### Patch Changes
21
+
22
+ - 17e47e1: move withdrawSourceBalance to top level config
23
+ - df1b830: chore: deprecate dydx fee handling
24
+ - 9ce2ee3: chore(connect): add meld util tests
25
+
3
26
  ## 5.5.13-next.1
4
27
 
5
28
  ### Patch Changes
@@ -24,7 +24,7 @@ interface DialogProps {
24
24
  */
25
25
  export declare function Dialog({ children, onClose, onAnimationComplete, open, titleId, isHidden, isSmartCloseable, withoutSidePadding, withoutBottomPadding, withTransition, }: DialogProps): React.ReactPortal | null;
26
26
  export declare namespace Dialog {
27
- var Title: ({ title, titleMeta, hasCloseButton: hasCloseButtonProp, isCloseDisabled, onClose, hasBackButton: hasBackButtonProp, helpButtonUrl, isBackDisabled, onBack, dydxHideBack, className, }: DialogTitleProps) => React.JSX.Element;
27
+ var Title: ({ title, titleMeta, hasCloseButton: hasCloseButtonProp, isCloseDisabled, onClose, hasBackButton: hasBackButtonProp, helpButtonUrl, isBackDisabled, onBack, className, }: DialogTitleProps) => React.JSX.Element;
28
28
  var Content: ({ children, fullHeight, paddingLeft, paddingBottom, paddingTop, className, withTopDivider, withBottomDivider, id, withoutInternalPadding, ...boxProps }: DialogContentProps) => React.JSX.Element;
29
29
  var BottomSection: ({ paddingX, children, ...boxProps }: BoxProps) => React.JSX.Element;
30
30
  var BottomBar: ({ topSection, actionButtonProps, bottomSection, onClose, }: import("../FunBottomBar/FunBottomBar").FunBottomBarProps) => React.JSX.Element;
@@ -50,6 +50,5 @@ export interface DialogTitleProps {
50
50
  helpButtonUrl?: string;
51
51
  isBackDisabled?: boolean;
52
52
  onBack?: () => void;
53
- dydxHideBack?: boolean;
54
53
  className?: string;
55
54
  }
@@ -0,0 +1,2 @@
1
+ export declare const badgeStyle: string;
2
+ export declare const badgeShineStyle: string;
@@ -1,8 +1,8 @@
1
- import React, { type CSSProperties } from 'react';
1
+ import React, { type CSSProperties, type ReactNode } from 'react';
2
2
  import { type BoxProps } from '../Box/Box';
3
3
  import { type TextProps } from '../Text/Text';
4
4
  interface FunBadgeProps {
5
- children: React.ReactNode;
5
+ children: ReactNode;
6
6
  paddingLeft?: BoxProps['paddingLeft'];
7
7
  paddingRight?: BoxProps['paddingRight'];
8
8
  paddingX?: BoxProps['paddingX'];
@@ -15,8 +15,9 @@ interface FunBadgeProps {
15
15
  iconSrc?: string;
16
16
  shadow?: string;
17
17
  textTransform?: CSSProperties['textTransform'];
18
+ hasShine?: boolean;
18
19
  }
19
- export declare function FunBadge({ children, background, color, weight, paddingLeft, paddingRight, paddingY, paddingX, borderRadius, borderColor, shadow, textTransform, iconSrc, }: FunBadgeProps): React.JSX.Element;
20
+ export declare function FunBadge({ children, background, color, weight, paddingLeft, paddingRight, paddingY, paddingX, borderRadius, borderColor, shadow, textTransform, iconSrc, hasShine, }: FunBadgeProps): React.JSX.Element;
20
21
  interface NewTokenBadgeProps {
21
22
  iconSymbol?: string;
22
23
  }
@@ -1,11 +1,14 @@
1
1
  import React from 'react';
2
2
  import type { CheckoutFees } from '~/domains/fees';
3
3
  import type { FunkitCheckoutQuoteResult } from '~/domains/quote';
4
+ export declare const NO_DATA_VALUE = "-";
4
5
  interface PaymentFeesSummaryProps {
5
6
  isLoading: boolean;
6
7
  quote: FunkitCheckoutQuoteResult | null | undefined;
7
8
  /** If set and quote is missing, display fees based on this data */
8
9
  fallbackFees?: CheckoutFees;
10
+ /** If set, displays a `-` instead of the values, the breakdown is not expandable */
11
+ valuesNotAvailable?: boolean;
9
12
  }
10
- export declare function PaymentFeesSummary({ isLoading, quote, fallbackFees, }: PaymentFeesSummaryProps): React.JSX.Element;
13
+ export declare function PaymentFeesSummary({ isLoading, quote, fallbackFees, valuesNotAvailable, }: PaymentFeesSummaryProps): React.JSX.Element;
11
14
  export {};
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  interface InfoIconProps {
3
3
  filled?: boolean;
4
+ size?: number;
4
5
  }
5
- export declare const InfoIcon: ({ filled }: InfoIconProps) => React.JSX.Element;
6
+ export declare const InfoIcon: ({ filled, size }: InfoIconProps) => React.JSX.Element;
6
7
  export {};
@@ -0,0 +1,19 @@
1
+ import { type MeldQuote } from '@funkit/api-base';
2
+ /**
3
+ * Auto-pick the best quote for the user.
4
+ * 1. Pick the quote with the highest customerScore, at least >= 30
5
+ * 2. If no quote has customerScore >= 30, pick either Coinbase or Binance
6
+ * 2a. If both are available, pick the one with the highest destinationAmount
7
+ * 2b. If only one is available, pick it
8
+ * 3. If no quote has customerScore >= 30 and no Coinbase or Binance is available, pick the quote with the highest destinationAmount
9
+ * @param quotes - the quotes to pick from
10
+ * @returns the best quote based on the criteria
11
+ */
12
+ export declare function autoPickBestQuote(quotes: MeldQuote[]): MeldQuote | undefined;
13
+ /**
14
+ * Check if the quote is the best price quote.
15
+ * @param sourceQuotes - the quotes to check
16
+ * @param targetQuote - the quote to check
17
+ * @returns true if the quote is the best price quote, false otherwise
18
+ */
19
+ export declare function isBestPriceQuote(sourceQuotes: MeldQuote[] | undefined, targetQuote: MeldQuote | undefined): boolean;
@@ -1 +1,2 @@
1
- export declare function useMeldCryptoCurrencyCode(): string;
1
+ export declare function useMeldCryptoCurrencyCode(): string | null;
2
+ export declare function useIsMeldEnabled(): boolean;
@@ -12,9 +12,227 @@ interface CheckoutQuoteParams {
12
12
  /**
13
13
  * Simplified quoting logic used for withdrawal UI only.
14
14
  */
15
- export declare function useWithdrawalQuote({ recipientAddress, sourceAmount, chainId, symbol, targetAsset, targetAssetAmount, withdrawalClient, }: CheckoutQuoteParams): import("@tanstack/react-query").UseQueryResult<{
16
- baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
17
- checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
18
- finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
19
- } | null, Error>;
15
+ export declare function useWithdrawalQuote({ recipientAddress, sourceAmount, chainId, symbol, targetAsset, targetAssetAmount, withdrawalClient, }: CheckoutQuoteParams): {
16
+ quoteEnabled: boolean;
17
+ data: {
18
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
19
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
20
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
21
+ } | null;
22
+ error: Error;
23
+ isError: true;
24
+ isPending: false;
25
+ isLoading: false;
26
+ isLoadingError: false;
27
+ isRefetchError: true;
28
+ isSuccess: false;
29
+ isPlaceholderData: false;
30
+ status: "error";
31
+ dataUpdatedAt: number;
32
+ errorUpdatedAt: number;
33
+ failureCount: number;
34
+ failureReason: Error | null;
35
+ errorUpdateCount: number;
36
+ isFetched: boolean;
37
+ isFetchedAfterMount: boolean;
38
+ isFetching: boolean;
39
+ isInitialLoading: boolean;
40
+ isPaused: boolean;
41
+ isRefetching: boolean;
42
+ isStale: boolean;
43
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<{
44
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
45
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
46
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
47
+ } | null, Error>>;
48
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
49
+ promise: Promise<{
50
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
51
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
52
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
53
+ } | null>;
54
+ } | {
55
+ quoteEnabled: boolean;
56
+ data: {
57
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
58
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
59
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
60
+ } | null;
61
+ error: null;
62
+ isError: false;
63
+ isPending: false;
64
+ isLoading: false;
65
+ isLoadingError: false;
66
+ isRefetchError: false;
67
+ isSuccess: true;
68
+ isPlaceholderData: false;
69
+ status: "success";
70
+ dataUpdatedAt: number;
71
+ errorUpdatedAt: number;
72
+ failureCount: number;
73
+ failureReason: Error | null;
74
+ errorUpdateCount: number;
75
+ isFetched: boolean;
76
+ isFetchedAfterMount: boolean;
77
+ isFetching: boolean;
78
+ isInitialLoading: boolean;
79
+ isPaused: boolean;
80
+ isRefetching: boolean;
81
+ isStale: boolean;
82
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<{
83
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
84
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
85
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
86
+ } | null, Error>>;
87
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
88
+ promise: Promise<{
89
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
90
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
91
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
92
+ } | null>;
93
+ } | {
94
+ quoteEnabled: boolean;
95
+ data: undefined;
96
+ error: Error;
97
+ isError: true;
98
+ isPending: false;
99
+ isLoading: false;
100
+ isLoadingError: true;
101
+ isRefetchError: false;
102
+ isSuccess: false;
103
+ isPlaceholderData: false;
104
+ status: "error";
105
+ dataUpdatedAt: number;
106
+ errorUpdatedAt: number;
107
+ failureCount: number;
108
+ failureReason: Error | null;
109
+ errorUpdateCount: number;
110
+ isFetched: boolean;
111
+ isFetchedAfterMount: boolean;
112
+ isFetching: boolean;
113
+ isInitialLoading: boolean;
114
+ isPaused: boolean;
115
+ isRefetching: boolean;
116
+ isStale: boolean;
117
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<{
118
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
119
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
120
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
121
+ } | null, Error>>;
122
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
123
+ promise: Promise<{
124
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
125
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
126
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
127
+ } | null>;
128
+ } | {
129
+ quoteEnabled: boolean;
130
+ data: undefined;
131
+ error: null;
132
+ isError: false;
133
+ isPending: true;
134
+ isLoading: true;
135
+ isLoadingError: false;
136
+ isRefetchError: false;
137
+ isSuccess: false;
138
+ isPlaceholderData: false;
139
+ status: "pending";
140
+ dataUpdatedAt: number;
141
+ errorUpdatedAt: number;
142
+ failureCount: number;
143
+ failureReason: Error | null;
144
+ errorUpdateCount: number;
145
+ isFetched: boolean;
146
+ isFetchedAfterMount: boolean;
147
+ isFetching: boolean;
148
+ isInitialLoading: boolean;
149
+ isPaused: boolean;
150
+ isRefetching: boolean;
151
+ isStale: boolean;
152
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<{
153
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
154
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
155
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
156
+ } | null, Error>>;
157
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
158
+ promise: Promise<{
159
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
160
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
161
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
162
+ } | null>;
163
+ } | {
164
+ quoteEnabled: boolean;
165
+ data: undefined;
166
+ error: null;
167
+ isError: false;
168
+ isPending: true;
169
+ isLoadingError: false;
170
+ isRefetchError: false;
171
+ isSuccess: false;
172
+ isPlaceholderData: false;
173
+ status: "pending";
174
+ dataUpdatedAt: number;
175
+ errorUpdatedAt: number;
176
+ failureCount: number;
177
+ failureReason: Error | null;
178
+ errorUpdateCount: number;
179
+ isFetched: boolean;
180
+ isFetchedAfterMount: boolean;
181
+ isFetching: boolean;
182
+ isLoading: boolean;
183
+ isInitialLoading: boolean;
184
+ isPaused: boolean;
185
+ isRefetching: boolean;
186
+ isStale: boolean;
187
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<{
188
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
189
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
190
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
191
+ } | null, Error>>;
192
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
193
+ promise: Promise<{
194
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
195
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
196
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
197
+ } | null>;
198
+ } | {
199
+ quoteEnabled: boolean;
200
+ data: {
201
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
202
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
203
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
204
+ } | null;
205
+ isError: false;
206
+ error: null;
207
+ isPending: false;
208
+ isLoading: false;
209
+ isLoadingError: false;
210
+ isRefetchError: false;
211
+ isSuccess: true;
212
+ isPlaceholderData: true;
213
+ status: "success";
214
+ dataUpdatedAt: number;
215
+ errorUpdatedAt: number;
216
+ failureCount: number;
217
+ failureReason: Error | null;
218
+ errorUpdateCount: number;
219
+ isFetched: boolean;
220
+ isFetchedAfterMount: boolean;
221
+ isFetching: boolean;
222
+ isInitialLoading: boolean;
223
+ isPaused: boolean;
224
+ isRefetching: boolean;
225
+ isStale: boolean;
226
+ refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<{
227
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
228
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
229
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
230
+ } | null, Error>>;
231
+ fetchStatus: import("@tanstack/react-query").FetchStatus;
232
+ promise: Promise<{
233
+ baseQuote: import("@funkit/utils").CheckoutQuoteResponse;
234
+ checkedAssetAmount: import("~/domains/quote").CheckedAssetAmount;
235
+ finalEstimation: import("~/domains/quote").FunkitCheckoutQuoteResult;
236
+ } | null>;
237
+ };
20
238
  export {};
@@ -9,6 +9,6 @@ export declare function usePaymentMethodEnablement({ checkoutConfig, }: {
9
9
  isCardEnabled: boolean;
10
10
  };
11
11
  export declare const usePaymentSources: (paymentMethodInfo: ConnectablePaymentMethodInfo | null, targetChainId: string, checkoutConfig?: FunkitCheckoutConfig) => {
12
- preferred: (import("~/domains/paymentMethods").PaymentMethodBrokerageInfo | import("~/domains/paymentMethods").PaymentMethodAccountInfo | import("~/domains/paymentMethods").PaymentMethodVirtualBankInfo)[] | PaymentMethod[];
12
+ preferred: PaymentMethod[] | (import("~/domains/paymentMethods").PaymentMethodBrokerageInfo | import("~/domains/paymentMethods").PaymentMethodAccountInfo | import("~/domains/paymentMethods").PaymentMethodVirtualBankInfo)[];
13
13
  moreSources: PaymentMethod[];
14
14
  };
package/dist/index.css CHANGED
@@ -8170,7 +8170,7 @@
8170
8170
  }
8171
8171
  }
8172
8172
 
8173
- /* vanilla-extract-css-ns:src/components/Dialog/DialogContent.css.ts.vanilla.css?source=#H4sIAAAAAAAAE7WVz46bMBDG7/sUlnpJDo5YEnaz5FL1GXqvBnsIVoyN7CGQVnn3ij9LgSQqUdVT5Il/3wz2N+PNj9fiJ+3C7Sv79cJYDjXPUB0zilkURkV96IOVkpTF7DUIzlUT69e7KGj2XF82g06cgV99kRdZ8wIuORrivlIkMnTrmxxv79F9nuwJDScHxqfoeAFHvKX34QM6VUBcIoHSz6LCmlS5HEhZ8yxbKcqkgwo0T7WtlpBht0eZzxPe7oPu1KfrEbJ9Htm1SAFSKnPkrismOIxiGtMuNKKiCZVYIpvP97zPi1FGkQI9KkeAFqvWOIyzbVDU68P8WAJ/zqayT7loHzT4Qs1lzrqj+BE9UFzgtkVyHy1nz+ga9/A6ZpmSEs1hHL3EDEqyTcwLZ7VOwPFjSYQuZp4g0Tj9r7+F0nikabo45hUmJ0XNaYhTmz0BcTo6WxrJhdXWxewMbsW5O3Vrz3MrQX8btq0faQ4VtLpS+ULDZahjcMdbZ93/kJdTVuZJ91XWSXTcgVSlH0k3AdUpr5dVQehIgbt8x5qmJcBfSvi3D3ysHmeNNxbm8CiskXfrT6b3lGpsL6b55VI5FM1EjJmwusxbS34auWntqZHFZHAMo+XeBBpRsqXaxlRdLluAUHRhwSb0DMEjV4bbcmpjvMFAaxZsohky7b4w6mfmZ2P9abaRdnrTyT11m27Xp+tz3ZP9mqNU0LQmomFgJFuNBuf7276ou9GxmT7K89eWset4U9hvuvcizN+EGbq9RXfhHB0i15frbxnvsrQvCAAA */
8173
+ /* vanilla-extract-css-ns:src/components/Dialog/DialogContent.css.ts.vanilla.css?source=#H4sIAAAAAAAAE7WVTc+bMAzH78+niLRLe0hFaWn70Mu0z7D7ZBJTooYEJaHApn73iZcyQlut1bQTivHvb+PYZvVjXfx023CzJr8+CMmhphmKU+ZiEoVRUR8HYyW4y2KyDoJL1dqG8zYKWp/rx2rUiTOwiy+84TUtoMlROWor4ViGZnkXY7ePHvNOn1FRZ0DZFA0t4IT39CF8QqcCHOXoQMh3UaZVKkwOTmj1LlsJl3EDFUiaSl29Qoa9j1C3Cm8OQV91/zxBNu8j2w4pgHOhTtT0yQTHiU1i2psmVORRiXZO53Of/TwZoYQTICfpMJBs0TUOoWQTFPXyOC9LYC+ZL/tOFwQt7Ns+oyeKL3TGS3KfHacvaNqbpnVMMsE5quPU2sQESqdbm2VGS5mAoafSOTQxsQ4Sif67oWKlsuj8cHFMK0zOwrXVYOcuegLsfDK6VJwyLbWJyQXMglJz7s+W5pqD/Da6LZ9pjhl0ulzYQkIz5jHe5K5vs/8Ql7qszJP+q7ThaKgBLko7kW4NoldevpaFQ+MEmOY71s5PAf6Swr994HP1OGt748UYFplW/GH+iX9PqcTuYton5cIga7dXTJiWZd615K2R2zH0G5l5Qz6ugUfbYkLxjuoGU/SxdAFMuIYEq9ASBItUKKpLv43xDgMpSbCKZog/fWE07LfbYP0Ztol2ejfJA3UfbjuEG2I9kv2aIxfQjiaiIqA4WUyW3H53KOp+daz8H+j8z0jIdeoUDk6Ptvd8f8/QzT26DefoaLl+XH8D5xrmONsHAAA= */
8174
8174
  [data-rk] ._1pzt4231 {
8175
8175
  max-height: 525px;
8176
8176
  max-width: 100vw;
@@ -8211,10 +8211,6 @@
8211
8211
  width: calc(100vw - 30px);
8212
8212
  max-height: 80svh;
8213
8213
  }
8214
- [data-rk] ._1pzt4237:has(#dydx-payment-switcher) {
8215
- max-height: 80vh;
8216
- max-height: 80svh;
8217
- }
8218
8214
  [data-rk] ._1pzt4237:has(#token-transfer-page) {
8219
8215
  max-height: 80vh;
8220
8216
  max-height: 95svh;
@@ -8623,6 +8619,45 @@
8623
8619
  opacity: 0.5;
8624
8620
  }
8625
8621
 
8622
+ /* vanilla-extract-css-ns:src/components/FunBadge/FunBadge.css.ts.vanilla.css?source=QGtleWZyYW1lcyBiYzJ1enkwIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwogIH0KICAzNSUsIDEwMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwogIH0KfQouYmMydXp5MSB7CiAgZGlzcGxheTogZmxleDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIHdpZHRoOiBmaXQtY29udGVudDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5iYzJ1enkyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouYmMydXp5Mjo6YmVmb3JlIHsKICBjb250ZW50OiAiIjsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgaW5zZXQ6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50IDMwJSwgd2hpdGUgNDUlLCB3aGl0ZSA1NSUsIHRyYW5zcGFyZW50IDcwJSk7CiAgb3BhY2l0eTogMC43OwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7CiAgZmlsdGVyOiBibHVyKDNweCk7CiAgYW5pbWF0aW9uOiBiYzJ1enkwIDNzIGxpbmVhciBpbmZpbml0ZSAuNXM7Cn0= */
8623
+ @keyframes bc2uzy0 {
8624
+ 0% {
8625
+ transform: translateX(-100%);
8626
+ }
8627
+ 35%, 100% {
8628
+ transform: translateX(100%);
8629
+ }
8630
+ }
8631
+ [data-rk] .bc2uzy1 {
8632
+ display: flex;
8633
+ justify-content: center;
8634
+ align-items: center;
8635
+ width: -moz-fit-content;
8636
+ width: fit-content;
8637
+ white-space: nowrap;
8638
+ }
8639
+ [data-rk] .bc2uzy2 {
8640
+ position: relative;
8641
+ overflow: hidden;
8642
+ }
8643
+ [data-rk] .bc2uzy2::before {
8644
+ content: "";
8645
+ position: absolute;
8646
+ inset: 0;
8647
+ overflow: hidden;
8648
+ background:
8649
+ linear-gradient(
8650
+ 90deg,
8651
+ transparent 30%,
8652
+ white 45%,
8653
+ white 55%,
8654
+ transparent 70%);
8655
+ opacity: 0.7;
8656
+ transform: translateX(-100%);
8657
+ filter: blur(3px);
8658
+ animation: bc2uzy0 3s linear infinite .5s;
8659
+ }
8660
+
8626
8661
  /* vanilla-extract-css-ns:src/components/FunInfoBanner/InfoBanner.css.ts.vanilla.css?source=LnZ5ZWRpeDAgewogICYgPiBhIHsKICAgIGNvbG9yOiB2YXIoLS1yay1jb2xvcnMtcHJpbWFyeVRleHQpOwogIH0KICAmID4gYTpmb2N1cy12aXNpYmxlIHsKICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXJrLWNvbG9ycy1zZWNvbmRhcnlUZXh0KTsKICB9Cn0KLnZ5ZWRpeDIgewogIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgZmxleC1zaHJpbms6IDA7Cn0= */
8627
8662
  [data-rk] .vyedix0 {
8628
8663
  [data-rk] & > a {