@coinlist-co/react 0.12.1-rc.e183ffd → 0.12.1-rc.f2804ef
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/dist/{chunk-ONLH57LF.js → chunk-VH34YC3Q.js} +55 -3
- package/dist/chunk-VH34YC3Q.js.map +1 -0
- package/dist/client/index.cjs +578 -329
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +266 -108
- package/dist/client/index.d.ts +266 -108
- package/dist/client/index.js +520 -321
- package/dist/client/index.js.map +1 -1
- package/dist/{collections-Biy3pQQL.d.cts → token-registry-snapshot-BNBNuDu1.d.ts} +65 -2
- package/dist/{collections-JfNDG8Tc.d.ts → token-registry-snapshot-CqI6dXM_.d.cts} +65 -2
- package/dist/universal/index.cjs +58 -3
- package/dist/universal/index.cjs.map +1 -1
- package/dist/universal/index.d.cts +7 -12
- package/dist/universal/index.d.ts +7 -12
- package/dist/universal/index.js +9 -3
- package/package.json +1 -1
- package/dist/chunk-ONLH57LF.js.map +0 -1
package/dist/client/index.cjs
CHANGED
|
@@ -59,6 +59,7 @@ __export(client_exports, {
|
|
|
59
59
|
OAUTH_STATE_KEY: () => OAUTH_STATE_KEY,
|
|
60
60
|
OfferAssetCard: () => OfferAssetCard,
|
|
61
61
|
OfferAssetCardUi: () => OfferAssetCardUi,
|
|
62
|
+
OfferLogoUi: () => OfferLogoUi,
|
|
62
63
|
OfferSaleCard: () => OfferSaleCard,
|
|
63
64
|
OfferSaleCardUi: () => OfferSaleCardUi,
|
|
64
65
|
OffersAssetGrid: () => OffersAssetGrid,
|
|
@@ -120,6 +121,7 @@ __export(client_exports, {
|
|
|
120
121
|
quoteOverAsks: () => quoteOverAsks,
|
|
121
122
|
stablecoinIconUrl: () => stablecoinIconUrl,
|
|
122
123
|
submitErc20Approval: () => submitErc20Approval,
|
|
124
|
+
tokenLogoSrcSet: () => tokenLogoSrcSet,
|
|
123
125
|
tokenLogoUrl: () => tokenLogoUrl,
|
|
124
126
|
tokenMetadataOf: () => tokenMetadataOf,
|
|
125
127
|
useCheckoutOfferTokenMetadata: () => useCheckoutOfferTokenMetadata,
|
|
@@ -162,6 +164,7 @@ __export(client_exports, {
|
|
|
162
164
|
useTaxDocument: () => useTaxDocument,
|
|
163
165
|
useTaxDocumentModalViewModel: () => useTaxDocumentModalViewModel,
|
|
164
166
|
useTokenMetadata: () => useTokenMetadata,
|
|
167
|
+
useTokenRegistry: () => useTokenRegistry,
|
|
165
168
|
validateAmount: () => validateAmount,
|
|
166
169
|
validateSellAmount: () => validateSellAmount,
|
|
167
170
|
validateSuperstateAmount: () => validateSuperstateAmount
|
|
@@ -1865,7 +1868,7 @@ var TOKEN_REGISTRY = {
|
|
|
1865
1868
|
|
|
1866
1869
|
// src/universal/core/checkout/ondo/constants.ts
|
|
1867
1870
|
var ONDO_POLL_INTERVAL_MS = 15e3;
|
|
1868
|
-
var
|
|
1871
|
+
var ONDO_QUOTE_MAX_TTL_MS = 15e3;
|
|
1869
1872
|
var DEFAULT_ONDO_AMOUNT_TO_COMPUTE_PRICE = DecimalString("1000");
|
|
1870
1873
|
var ONDO_SETTLEMENT_ASSET = USDC_SYMBOL;
|
|
1871
1874
|
var DEFAULT_ONDO_SELL_TOKENS_TO_COMPUTE_PRICE = 1;
|
|
@@ -1888,6 +1891,9 @@ function computeOndoSellPrice(transaction) {
|
|
|
1888
1891
|
shares: spendInputAmount
|
|
1889
1892
|
});
|
|
1890
1893
|
}
|
|
1894
|
+
function ondoQuoteOfferDeadline(expiresAt, nowMs = Date.now()) {
|
|
1895
|
+
return new Date(Math.min(expiresAt.getTime(), nowMs + ONDO_QUOTE_MAX_TTL_MS));
|
|
1896
|
+
}
|
|
1891
1897
|
function grossProceeds(expected) {
|
|
1892
1898
|
const raw = expected.quantity.raw + expected.fee.raw;
|
|
1893
1899
|
if (raw > MAX_UINT_256) {
|
|
@@ -3835,6 +3841,52 @@ var Erc20NamespaceImpl = class {
|
|
|
3835
3841
|
}
|
|
3836
3842
|
};
|
|
3837
3843
|
|
|
3844
|
+
// src/universal/core/tokens/token-registry-snapshot.ts
|
|
3845
|
+
var TokenRegistrySnapshot = {
|
|
3846
|
+
/** Indexes a `tokens.list()` result. `[]` is a valid, empty snapshot. */
|
|
3847
|
+
fromTokens: (tokens) => ({
|
|
3848
|
+
tokens,
|
|
3849
|
+
byKey: new Map(
|
|
3850
|
+
tokens.map((token) => [registryKey(token.identifier), token])
|
|
3851
|
+
)
|
|
3852
|
+
}),
|
|
3853
|
+
/**
|
|
3854
|
+
* The registry's entry for one token, or `null` when it lists none. The
|
|
3855
|
+
* registry is curated, so `null` is an ordinary answer rather than an
|
|
3856
|
+
* error, and callers fall back to their own display defaults.
|
|
3857
|
+
*/
|
|
3858
|
+
get: (snapshot, token) => snapshot.byKey.get(registryKey(token)) ?? null,
|
|
3859
|
+
/**
|
|
3860
|
+
* The registry's entry for the token an offer is *about*, or `null` when
|
|
3861
|
+
* it lists none of them.
|
|
3862
|
+
*
|
|
3863
|
+
* Resolution follows {@link offerDisplayTokens}: the token a sale
|
|
3864
|
+
* distributes or a swap hands over, never the funding token the user pays
|
|
3865
|
+
* with. An offer deployed on several chains carries one such token per
|
|
3866
|
+
* chain, and the first the registry knows wins - they are the same asset,
|
|
3867
|
+
* so any listed one answers for the offer.
|
|
3868
|
+
*/
|
|
3869
|
+
forOffer: (snapshot, offer) => {
|
|
3870
|
+
for (const token of offerDisplayTokens(offer)) {
|
|
3871
|
+
const metadata = TokenRegistrySnapshot.get(snapshot, token);
|
|
3872
|
+
if (metadata !== null) {
|
|
3873
|
+
return metadata;
|
|
3874
|
+
}
|
|
3875
|
+
}
|
|
3876
|
+
return null;
|
|
3877
|
+
}
|
|
3878
|
+
};
|
|
3879
|
+
function offerDisplayTokens(offer) {
|
|
3880
|
+
const swaps = offer.tokens.filter((token) => token.role === "swap");
|
|
3881
|
+
const distributions = offer.tokens.filter(
|
|
3882
|
+
(token) => token.role === "distribution"
|
|
3883
|
+
);
|
|
3884
|
+
return [...swaps, ...distributions];
|
|
3885
|
+
}
|
|
3886
|
+
function registryKey(token) {
|
|
3887
|
+
return `${token.chain}:${token.address.toLowerCase()}`;
|
|
3888
|
+
}
|
|
3889
|
+
|
|
3838
3890
|
// src/universal/api/nabu/tokens.ts
|
|
3839
3891
|
var import_viem6 = require("viem");
|
|
3840
3892
|
|
|
@@ -5035,7 +5087,7 @@ var CoinListProvider = CoinListContextProvider;
|
|
|
5035
5087
|
var import_react4 = require("react");
|
|
5036
5088
|
|
|
5037
5089
|
// src/client/generated/sdk-styles.gen.ts
|
|
5038
|
-
var sdkStyles = '/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--clcosdk-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--clcosdk-color-red-400:oklch(70.4% .191 22.216);--clcosdk-color-red-500:oklch(63.7% .237 25.331);--clcosdk-color-amber-500:oklch(76.9% .188 70.08);--clcosdk-color-gray-400:oklch(70.7% .022 261.325);--clcosdk-color-gray-500:oklch(55.1% .027 264.364);--clcosdk-color-black:#000;--clcosdk-spacing:.25rem;--clcosdk-container-sm:24rem;--clcosdk-container-md:28rem;--clcosdk-container-xl:36rem;--clcosdk-text-xs:.75rem;--clcosdk-text-xs--line-height:calc(1 / .75);--clcosdk-text-sm:.875rem;--clcosdk-text-sm--line-height:calc(1.25 / .875);--clcosdk-text-base:1rem;--clcosdk-text-base--line-height:calc(1.5 / 1);--clcosdk-text-lg:1.125rem;--clcosdk-text-lg--line-height:calc(1.75 / 1.125);--clcosdk-font-weight-normal:400;--clcosdk-font-weight-medium:500;--clcosdk-font-weight-semibold:600;--clcosdk-radius-md:.375rem;--clcosdk-radius-lg:.5rem;--clcosdk-radius-xl:.75rem;--clcosdk-radius-2xl:1rem;--clcosdk-ease-out:cubic-bezier(0, 0, .2, 1);--clcosdk-ease-in-out:cubic-bezier(.4, 0, .2, 1);--clcosdk-animate-spin:spin 1s linear infinite;--clcosdk-animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--clcosdk-color-brand-primary:var(--color-brand-primary)}}@layer base{.clco-sdk-root{--color-brand-primary:#171717;--color-brand-primary-hover:#000;--color-brand-primary-active:#262626;--color-accent:#2b3a67;--color-accent-hover:#243057;--color-accent-active:#1d2647;--color-accent-focus:#c7d2fe;--color-accent-subtle:#eef1f8;--color-text-primary:#171717;--color-text-secondary:#8c8c8c;--color-text-disabled:#d1d1d1;--color-text-inverse:#fff;--color-background:#fff;--color-surface:#fafafa;--color-section:#f3f3f3;--color-border:#e5e5e5;--color-divider:#ececec;--color-overlay:#00000080;--color-positive:#15803d;--color-positive-subtle:#dcfce7;--color-negative:#dc2626;--color-negative-subtle:#fee2e2;--color-success:#2c8c5e;--color-success-subtle:#e6f4ec;--color-success-border:#cfe9db;--color-warning:#e08a1a;--color-warning-subtle:#fff7ed;--color-warning-border:#fdead7;--color-error:#b42318;--color-error-subtle:#feeceb;--color-error-border:#fbd5d2;--shadow-step-active:0px 0px 10px 0px #0000001a;--shadow-dialog:0px 8px 32px 0px #0000001a;--btn-primary-gradient:linear-gradient(180deg, #262626 0%, #1c1c1c 50%, #0f0f0f 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #00000059, inset 0px 1px 2px 0px #ffffff2e, inset 0px 1px 0px 0px #ffffff1a;--sale-card-surface:linear-gradient(to top, #0a0a0a 0%, #1a1a1a 100%);--color-sale-card-text:#f4f4f5;--color-sale-card-text-muted:#a1a1aa;--color-sale-card-text-strong:#fff;--color-sale-card-border:#ffffff40;--color-sale-card-chrome-border:#ffffff4d;--color-sale-card-chrome-bg:#ffffff26;--color-sale-card-chrome-emphasis-border:#fff6;--color-sale-card-chrome-emphasis-bg:#ffffff40;--color-sale-card-focus-ring:#ffffff80}@media (prefers-color-scheme:dark){.clco-sdk-root:not(:where(.light,.light *)){--color-brand-primary:#f4f4f5;--color-brand-primary-hover:#fff;--color-brand-primary-active:#e4e4e7;--color-accent:#6f82c9;--color-accent-hover:#8799e4;--color-accent-active:#5b6fcf;--color-accent-focus:#6f82c959;--color-accent-subtle:#6f82c91f;--color-text-primary:#f4f4f5;--color-text-secondary:#a1a1aa;--color-text-disabled:#71717a;--color-text-inverse:#171717;--color-background:#0f1115;--color-surface:#161a20;--color-section:#20242c;--color-border:#2a2e35;--color-divider:#323741;--color-overlay:#000000b3;--color-positive:#22c55e;--color-positive-subtle:#22c55e1f;--color-negative:#ef4444;--color-negative-subtle:#ef44441f;--color-success:#34d399;--color-success-subtle:#34d3991f;--color-success-border:#34d39940;--color-warning:#f59e0b;--color-warning-subtle:#f59e0b1f;--color-warning-border:#f59e0b40;--color-error:#f87171;--color-error-subtle:#f871711f;--color-error-border:#f8717140;--shadow-step-active:0px 0px 10px 0px #00000080;--shadow-dialog:0px 8px 32px 0px #0009;--btn-primary-gradient:linear-gradient(180deg, #fafafa 0%, #f0f0f0 50%, #e4e4e7 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #0000001f, inset 0px 1px 2px 0px #fff9, inset 0px 1px 0px 0px #fff6}}:where(.dark,.dark *) .clco-sdk-root{--color-brand-primary:#f4f4f5;--color-brand-primary-hover:#fff;--color-brand-primary-active:#e4e4e7;--color-accent:#6f82c9;--color-accent-hover:#8799e4;--color-accent-active:#5b6fcf;--color-accent-focus:#6f82c959;--color-accent-subtle:#6f82c91f;--color-text-primary:#f4f4f5;--color-text-secondary:#a1a1aa;--color-text-disabled:#71717a;--color-text-inverse:#171717;--color-background:#0f1115;--color-surface:#161a20;--color-section:#20242c;--color-border:#2a2e35;--color-divider:#323741;--color-overlay:#000000b3;--color-positive:#22c55e;--color-positive-subtle:#22c55e1f;--color-negative:#ef4444;--color-negative-subtle:#ef44441f;--color-success:#34d399;--color-success-subtle:#34d3991f;--color-success-border:#34d39940;--color-warning:#f59e0b;--color-warning-subtle:#f59e0b1f;--color-warning-border:#f59e0b40;--color-error:#f87171;--color-error-subtle:#f871711f;--color-error-border:#f8717140;--shadow-step-active:0px 0px 10px 0px #00000080;--shadow-dialog:0px 8px 32px 0px #0009;--btn-primary-gradient:linear-gradient(180deg, #fafafa 0%, #f0f0f0 50%, #e4e4e7 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #0000001f, inset 0px 1px 2px 0px #fff9, inset 0px 1px 0px 0px #fff6}.clco-sdk-root{color:var(--color-text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.clco-sdk-root *,.clco-sdk-root :before,.clco-sdk-root :after{box-sizing:border-box}.clco-sdk-root button{appearance:none;cursor:pointer;font:inherit;color:inherit;background:0 0;border:none;padding:0}.clco-sdk-root input,.clco-sdk-root textarea,.clco-sdk-root select{font:inherit;color:inherit;background:0 0;border:none;border-radius:0;padding:0}.clco-sdk-root a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.clco-sdk-root ul,.clco-sdk-root ol{margin:0;padding:0;list-style:none}.clco-sdk-root h1,.clco-sdk-root h2,.clco-sdk-root h3,.clco-sdk-root h4,.clco-sdk-root h5,.clco-sdk-root h6,.clco-sdk-root p,.clco-sdk-root figure,.clco-sdk-root blockquote,.clco-sdk-root dl,.clco-sdk-root dd,.clco-sdk-root pre{margin:0}.clco-sdk-root img,.clco-sdk-root svg{max-width:100%;display:block}@keyframes clco-status-ping{0%{opacity:.7;transform:scale(1)}75%,to{opacity:0;transform:scale(3.25)}}.clco-sdk-root .clcosdk-status-dot-ping{animation:1.6s cubic-bezier(0,0,.2,1) infinite clco-status-ping}@media (prefers-reduced-motion:reduce){.clco-sdk-root .clcosdk-status-dot-ping{opacity:0;animation:none}}}@layer components;@layer utilities{.clcosdk\\:pointer-events-none{pointer-events:none}.clcosdk\\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.clcosdk\\:absolute{position:absolute}.clcosdk\\:fixed{position:fixed}.clcosdk\\:relative{position:relative}.clcosdk\\:inset-0{inset:0}.clcosdk\\:top-1\\/2{top:50%}.clcosdk\\:top-4{top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:top-full{top:100%}.clcosdk\\:-right-0\\.5{right:calc(var(--clcosdk-spacing) * -.5)}.clcosdk\\:right-4{right:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:right-\\[-14\\%\\]{right:-14%}.clcosdk\\:-bottom-0\\.5{bottom:calc(var(--clcosdk-spacing) * -.5)}.clcosdk\\:bottom-full{bottom:100%}.clcosdk\\:left-1\\/2{left:50%}.clcosdk\\:z-0{z-index:0}.clcosdk\\:z-10{z-index:10}.clcosdk\\:z-50{z-index:50}.clcosdk\\:order-1{order:1}.clcosdk\\:order-2{order:2}.clcosdk\\:mt-2{margin-top:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:mt-4{margin-top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:mt-auto{margin-top:auto}.clcosdk\\:mb-2{margin-bottom:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:flex{display:flex}.clcosdk\\:grid{display:grid}.clcosdk\\:inline-flex{display:inline-flex}.clcosdk\\:size-2{width:calc(var(--clcosdk-spacing) * 2);height:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:size-3{width:calc(var(--clcosdk-spacing) * 3);height:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:size-3\\.5{width:calc(var(--clcosdk-spacing) * 3.5);height:calc(var(--clcosdk-spacing) * 3.5)}.clcosdk\\:size-4{width:calc(var(--clcosdk-spacing) * 4);height:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:size-5{width:calc(var(--clcosdk-spacing) * 5);height:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:size-10{width:calc(var(--clcosdk-spacing) * 10);height:calc(var(--clcosdk-spacing) * 10)}.clcosdk\\:size-16{width:calc(var(--clcosdk-spacing) * 16);height:calc(var(--clcosdk-spacing) * 16)}.clcosdk\\:size-24{width:calc(var(--clcosdk-spacing) * 24);height:calc(var(--clcosdk-spacing) * 24)}.clcosdk\\:size-\\[15rem\\]{width:15rem;height:15rem}.clcosdk\\:size-full{width:100%;height:100%}.clcosdk\\:h-1{height:var(--clcosdk-spacing)}.clcosdk\\:h-3{height:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:h-4{height:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:h-5{height:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:h-6{height:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:h-8{height:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:h-9{height:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:h-10{height:calc(var(--clcosdk-spacing) * 10)}.clcosdk\\:h-11{height:calc(var(--clcosdk-spacing) * 11)}.clcosdk\\:h-12{height:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:h-14{height:calc(var(--clcosdk-spacing) * 14)}.clcosdk\\:h-\\[1em\\]{height:1em}.clcosdk\\:h-\\[18px\\]{height:18px}.clcosdk\\:h-\\[54px\\]{height:54px}.clcosdk\\:h-\\[71px\\]{height:71px}.clcosdk\\:h-auto{height:auto}.clcosdk\\:h-full{height:100%}.clcosdk\\:h-px{height:1px}.clcosdk\\:max-h-\\[92vh\\]{max-height:92vh}.clcosdk\\:max-h-full{max-height:100%}.clcosdk\\:min-h-0{min-height:0}.clcosdk\\:min-h-9{min-height:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:min-h-40{min-height:calc(var(--clcosdk-spacing) * 40)}.clcosdk\\:min-h-\\[1lh\\]{min-height:1lh}.clcosdk\\:min-h-screen{min-height:100vh}.clcosdk\\:w-1{width:var(--clcosdk-spacing)}.clcosdk\\:w-4{width:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:w-5{width:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:w-6{width:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:w-8{width:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:w-10{width:calc(var(--clcosdk-spacing) * 10)}.clcosdk\\:w-12{width:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:w-16{width:calc(var(--clcosdk-spacing) * 16)}.clcosdk\\:w-20{width:calc(var(--clcosdk-spacing) * 20)}.clcosdk\\:w-24{width:calc(var(--clcosdk-spacing) * 24)}.clcosdk\\:w-28{width:calc(var(--clcosdk-spacing) * 28)}.clcosdk\\:w-32{width:calc(var(--clcosdk-spacing) * 32)}.clcosdk\\:w-40{width:calc(var(--clcosdk-spacing) * 40)}.clcosdk\\:w-48{width:calc(var(--clcosdk-spacing) * 48)}.clcosdk\\:w-80{width:calc(var(--clcosdk-spacing) * 80)}.clcosdk\\:w-96{width:calc(var(--clcosdk-spacing) * 96)}.clcosdk\\:w-\\[16px\\]{width:16px}.clcosdk\\:w-\\[28rem\\]{width:28rem}.clcosdk\\:w-\\[448px\\]{width:448px}.clcosdk\\:w-auto{width:auto}.clcosdk\\:w-component{width:448px}.clcosdk\\:w-fit{width:fit-content}.clcosdk\\:w-full{width:100%}.clcosdk\\:w-max{width:max-content}.clcosdk\\:max-w-\\[16rem\\]{max-width:16rem}.clcosdk\\:max-w-\\[28rem\\]{max-width:28rem}.clcosdk\\:max-w-\\[30rem\\]{max-width:30rem}.clcosdk\\:max-w-\\[40rem\\]{max-width:40rem}.clcosdk\\:max-w-\\[56rem\\]{max-width:56rem}.clcosdk\\:max-w-\\[64rem\\]{max-width:64rem}.clcosdk\\:max-w-\\[760px\\]{max-width:760px}.clcosdk\\:max-w-full{max-width:100%}.clcosdk\\:max-w-md{max-width:var(--clcosdk-container-md)}.clcosdk\\:max-w-sm{max-width:var(--clcosdk-container-sm)}.clcosdk\\:max-w-xl{max-width:var(--clcosdk-container-xl)}.clcosdk\\:min-w-0{min-width:0}.clcosdk\\:flex-1{flex:1}.clcosdk\\:shrink-0{flex-shrink:0}.clcosdk\\:-translate-x-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.clcosdk\\:-translate-y-1\\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.clcosdk\\:rotate-90{rotate:90deg}.clcosdk\\:rotate-180{rotate:180deg}.clcosdk\\:animate-pulse{animation:var(--clcosdk-animate-pulse)}.clcosdk\\:animate-spin{animation:var(--clcosdk-animate-spin)}.clcosdk\\:cursor-pointer{cursor:pointer}.clcosdk\\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.clcosdk\\:grid-rows-\\[0fr\\]{grid-template-rows:0fr}.clcosdk\\:grid-rows-\\[1fr\\]{grid-template-rows:1fr}.clcosdk\\:flex-col{flex-direction:column}.clcosdk\\:flex-wrap{flex-wrap:wrap}.clcosdk\\:items-center{align-items:center}.clcosdk\\:items-end{align-items:flex-end}.clcosdk\\:items-start{align-items:flex-start}.clcosdk\\:justify-between{justify-content:space-between}.clcosdk\\:justify-center{justify-content:center}.clcosdk\\:justify-end{justify-content:flex-end}.clcosdk\\:gap-1{gap:var(--clcosdk-spacing)}.clcosdk\\:gap-1\\.5{gap:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:gap-2{gap:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:gap-2\\.5{gap:calc(var(--clcosdk-spacing) * 2.5)}.clcosdk\\:gap-3{gap:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:gap-4{gap:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:gap-6{gap:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:gap-\\[5px\\]{gap:5px}:where(.clcosdk\\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--clcosdk-spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--clcosdk-spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.clcosdk\\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--clcosdk-spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--clcosdk-spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.clcosdk\\:divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.clcosdk\\:divide-border>:not(:last-child)){border-color:var(--color-border)}:where(.clcosdk\\:divide-divider>:not(:last-child)){border-color:var(--color-divider)}.clcosdk\\:self-start{align-self:flex-start}.clcosdk\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.clcosdk\\:overflow-hidden{overflow:hidden}.clcosdk\\:overflow-y-auto{overflow-y:auto}.clcosdk\\:rounded{border-radius:.25rem}.clcosdk\\:rounded-2xl{border-radius:var(--clcosdk-radius-2xl)}.clcosdk\\:rounded-\\[20px\\]{border-radius:20px}.clcosdk\\:rounded-\\[28px\\]{border-radius:28px}.clcosdk\\:rounded-btn{border-radius:12px}.clcosdk\\:rounded-card{border-radius:24px}.clcosdk\\:rounded-full{border-radius:3.40282e38px}.clcosdk\\:rounded-lg{border-radius:var(--clcosdk-radius-lg)}.clcosdk\\:rounded-md{border-radius:var(--clcosdk-radius-md)}.clcosdk\\:rounded-xl{border-radius:var(--clcosdk-radius-xl)}.clcosdk\\:border{border-style:var(--tw-border-style);border-width:1px}.clcosdk\\:border-2{border-style:var(--tw-border-style);border-width:2px}.clcosdk\\:border-\\[1\\.5px\\]{border-style:var(--tw-border-style);border-width:1.5px}.clcosdk\\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.clcosdk\\:border-accent\\/60{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.clcosdk\\:border-accent\\/60{border-color:color-mix(in oklab, var(--color-accent) 60%, transparent)}}.clcosdk\\:border-amber-500{border-color:var(--clcosdk-color-amber-500)}.clcosdk\\:border-background{border-color:var(--color-background)}.clcosdk\\:border-border{border-color:var(--color-border)}.clcosdk\\:border-brand-primary{border-color:var(--color-brand-primary)}.clcosdk\\:border-current{border-color:currentColor}.clcosdk\\:border-divider{border-color:var(--color-divider)}.clcosdk\\:border-error-border{border-color:var(--color-error-border)}.clcosdk\\:border-sale-card-border{border-color:var(--color-sale-card-border)}.clcosdk\\:border-sale-card-chrome-border{border-color:var(--color-sale-card-chrome-border)}.clcosdk\\:border-success-border{border-color:var(--color-success-border)}.clcosdk\\:border-warning-border{border-color:var(--color-warning-border)}.clcosdk\\:border-t-transparent{border-top-color:#0000}.clcosdk\\:bg-background{background-color:var(--color-background)}.clcosdk\\:bg-black\\/50{background-color:var(--clcosdk-color-black)}@supports (color:color-mix(in lab, red, red)){.clcosdk\\:bg-black\\/50{background-color:color-mix(in oklab, var(--clcosdk-color-black) 50%, transparent)}}.clcosdk\\:bg-brand-primary{background-color:var(--color-brand-primary)}.clcosdk\\:bg-divider{background-color:var(--color-divider)}.clcosdk\\:bg-error-subtle{background-color:var(--color-error-subtle)}.clcosdk\\:bg-overlay{background-color:var(--color-overlay)}.clcosdk\\:bg-positive{background-color:var(--color-positive)}.clcosdk\\:bg-positive-subtle{background-color:var(--color-positive-subtle)}.clcosdk\\:bg-sale-card-chrome-bg{background-color:var(--color-sale-card-chrome-bg)}.clcosdk\\:bg-section{background-color:var(--color-section)}.clcosdk\\:bg-success-subtle{background-color:var(--color-success-subtle)}.clcosdk\\:bg-surface{background-color:var(--color-surface)}.clcosdk\\:bg-text-disabled{background-color:var(--color-text-disabled)}.clcosdk\\:bg-text-primary{background-color:var(--color-text-primary)}.clcosdk\\:bg-transparent{background-color:#0000}.clcosdk\\:bg-warning-subtle{background-color:var(--color-warning-subtle)}.clcosdk\\:bg-\\[image\\:var\\(--btn-primary-gradient\\)\\]{background-image:var(--btn-primary-gradient)}.clcosdk\\:bg-\\[image\\:var\\(--sale-card-surface\\)\\]{background-image:var(--sale-card-surface)}.clcosdk\\:object-contain{object-fit:contain}.clcosdk\\:object-cover{object-fit:cover}.clcosdk\\:p-0{padding:0}.clcosdk\\:p-1\\.5{padding:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:p-3{padding:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:p-3\\.5{padding:calc(var(--clcosdk-spacing) * 3.5)}.clcosdk\\:p-4{padding:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:p-5{padding:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:p-6{padding:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:p-8{padding:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:p-16{padding:calc(var(--clcosdk-spacing) * 16)}.clcosdk\\:px-2{padding-inline:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:px-3{padding-inline:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:px-4{padding-inline:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:px-5{padding-inline:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:px-6{padding-inline:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:py-1\\.5{padding-block:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:py-2{padding-block:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:py-3{padding-block:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:py-8{padding-block:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:py-12{padding-block:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:pt-1{padding-top:var(--clcosdk-spacing)}.clcosdk\\:pt-4{padding-top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:pt-14{padding-top:calc(var(--clcosdk-spacing) * 14)}.clcosdk\\:pr-1\\.5{padding-right:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:pr-3{padding-right:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:pr-4{padding-right:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:pb-4{padding-bottom:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:pl-3{padding-left:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:text-center{text-align:center}.clcosdk\\:text-left{text-align:left}.clcosdk\\:text-right{text-align:right}.clcosdk\\:font-mono{font-family:var(--clcosdk-font-mono)}.clcosdk\\:text-base{font-size:var(--clcosdk-text-base);line-height:var(--tw-leading,var(--clcosdk-text-base--line-height))}.clcosdk\\:text-lg{font-size:var(--clcosdk-text-lg);line-height:var(--tw-leading,var(--clcosdk-text-lg--line-height))}.clcosdk\\:text-sm{font-size:var(--clcosdk-text-sm);line-height:var(--tw-leading,var(--clcosdk-text-sm--line-height))}.clcosdk\\:text-xs{font-size:var(--clcosdk-text-xs);line-height:var(--tw-leading,var(--clcosdk-text-xs--line-height))}.clcosdk\\:text-\\[11px\\]{font-size:11px}.clcosdk\\:text-\\[12px\\]{font-size:12px}.clcosdk\\:text-\\[13px\\]{font-size:13px}.clcosdk\\:text-\\[14px\\]{font-size:14px}.clcosdk\\:text-\\[15px\\]{font-size:15px}.clcosdk\\:text-\\[16px\\]{font-size:16px}.clcosdk\\:text-\\[18px\\]{font-size:18px}.clcosdk\\:text-\\[22px\\]{font-size:22px}.clcosdk\\:text-\\[28px\\]{font-size:28px}.clcosdk\\:text-\\[36px\\]{font-size:36px}.clcosdk\\:text-\\[48px\\]{font-size:48px}.clcosdk\\:text-\\[64px\\]{font-size:64px}.clcosdk\\:leading-\\[105\\%\\]{--tw-leading:105%;line-height:105%}.clcosdk\\:leading-\\[108\\%\\]{--tw-leading:108%;line-height:108%}.clcosdk\\:leading-\\[110\\%\\]{--tw-leading:110%;line-height:110%}.clcosdk\\:leading-\\[120\\%\\]{--tw-leading:120%;line-height:120%}.clcosdk\\:leading-\\[130\\%\\]{--tw-leading:130%;line-height:130%}.clcosdk\\:leading-\\[140\\%\\]{--tw-leading:140%;line-height:140%}.clcosdk\\:leading-\\[150\\%\\]{--tw-leading:150%;line-height:150%}.clcosdk\\:leading-\\[160\\%\\]{--tw-leading:160%;line-height:160%}.clcosdk\\:font-medium{--tw-font-weight:var(--clcosdk-font-weight-medium);font-weight:var(--clcosdk-font-weight-medium)}.clcosdk\\:font-normal{--tw-font-weight:var(--clcosdk-font-weight-normal);font-weight:var(--clcosdk-font-weight-normal)}.clcosdk\\:font-semibold{--tw-font-weight:var(--clcosdk-font-weight-semibold);font-weight:var(--clcosdk-font-weight-semibold)}.clcosdk\\:tracking-\\[0\\.12px\\]{--tw-tracking:.12px;letter-spacing:.12px}.clcosdk\\:tracking-\\[0\\.28px\\]{--tw-tracking:.28px;letter-spacing:.28px}.clcosdk\\:break-words{overflow-wrap:break-word}.clcosdk\\:whitespace-nowrap{white-space:nowrap}.clcosdk\\:text-background{color:var(--color-background)}.clcosdk\\:text-brand-primary{color:var(--color-brand-primary)}.clcosdk\\:text-error{color:var(--color-error)}.clcosdk\\:text-positive{color:var(--color-positive)}.clcosdk\\:text-sale-card-text{color:var(--color-sale-card-text)}.clcosdk\\:text-sale-card-text-muted{color:var(--color-sale-card-text-muted)}.clcosdk\\:text-sale-card-text-strong{color:var(--color-sale-card-text-strong)}.clcosdk\\:text-success{color:var(--color-success)}.clcosdk\\:text-text-disabled{color:var(--color-text-disabled)}.clcosdk\\:text-text-inverse{color:var(--color-text-inverse)}.clcosdk\\:text-text-primary{color:var(--color-text-primary)}.clcosdk\\:text-text-secondary{color:var(--color-text-secondary)}.clcosdk\\:text-warning{color:var(--color-warning)}.clcosdk\\:capitalize{text-transform:capitalize}.clcosdk\\:lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.clcosdk\\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.clcosdk\\:no-underline{text-decoration-line:none}.clcosdk\\:underline{text-decoration-line:underline}.clcosdk\\:underline-offset-2{text-underline-offset:2px}.clcosdk\\:underline-offset-4{text-underline-offset:4px}.clcosdk\\:opacity-0{opacity:0}.clcosdk\\:opacity-60{opacity:.6}.clcosdk\\:shadow-\\[0_0_0_3px_rgba\\(59\\,130\\,246\\,0\\.2\\)\\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#3b82f633);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-\\[0px_1px_1px_0px_rgba\\(10\\,10\\,10\\,0\\.04\\)\\,0px_8px_12px_0px_rgba\\(10\\,10\\,10\\,0\\.08\\)\\]{--tw-shadow:0px 1px 1px 0px var(--tw-shadow-color,#0a0a0a0a), 0px 8px 12px 0px var(--tw-shadow-color,#0a0a0a14);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-\\[0px_4px_12px_0px_rgba\\(0\\,0\\,0\\,0\\.08\\)\\,0px_12px_28px_0px_rgba\\(0\\,0\\,0\\,0\\.13\\)\\]{--tw-shadow:0px 4px 12px 0px var(--tw-shadow-color,#00000014), 0px 12px 28px 0px var(--tw-shadow-color,#00000021);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-\\[var\\(--btn-primary-shadow\\)\\]{--tw-shadow:var(--btn-primary-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-card{--tw-shadow:0px 4px 6px -2px var(--tw-shadow-color,#0000000d), 0px 12px 24px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-dialog{--tw-shadow:var(--shadow-dialog);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-step-active{--tw-shadow:var(--shadow-step-active);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:transition-\\[background-color\\,border-color\\]{transition-property:background-color,border-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-\\[grid-template-rows\\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:duration-200{--tw-duration:.2s;transition-duration:.2s}.clcosdk\\:duration-300{--tw-duration:.3s;transition-duration:.3s}.clcosdk\\:duration-500{--tw-duration:.5s;transition-duration:.5s}.clcosdk\\:ease-in-out{--tw-ease:var(--clcosdk-ease-in-out);transition-timing-function:var(--clcosdk-ease-in-out)}.clcosdk\\:ease-out{--tw-ease:var(--clcosdk-ease-out);transition-timing-function:var(--clcosdk-ease-out)}.clcosdk\\:outline-none{--tw-outline-style:none;outline-style:none}.clcosdk\\:group-focus-within\\:opacity-100:is(:where(.clcosdk\\:group):focus-within *){opacity:1}@media (hover:hover){.clcosdk\\:group-hover\\:border-sale-card-chrome-emphasis-border:is(:where(.clcosdk\\:group):hover *){border-color:var(--color-sale-card-chrome-emphasis-border)}.clcosdk\\:group-hover\\:bg-sale-card-chrome-emphasis-bg:is(:where(.clcosdk\\:group):hover *){background-color:var(--color-sale-card-chrome-emphasis-bg)}.clcosdk\\:group-hover\\:opacity-100:is(:where(.clcosdk\\:group):hover *){opacity:1}}.clcosdk\\:group-focus-visible\\:border-sale-card-chrome-emphasis-border:is(:where(.clcosdk\\:group):focus-visible *){border-color:var(--color-sale-card-chrome-emphasis-border)}.clcosdk\\:group-focus-visible\\:bg-sale-card-chrome-emphasis-bg:is(:where(.clcosdk\\:group):focus-visible *){background-color:var(--color-sale-card-chrome-emphasis-bg)}.clcosdk\\:placeholder\\:text-text-disabled::placeholder{color:var(--color-text-disabled)}@media (hover:hover){.clcosdk\\:hover\\:scale-\\[1\\.02\\]:hover{scale:1.02}.clcosdk\\:hover\\:border-text-disabled:hover{border-color:var(--color-text-disabled)}.clcosdk\\:hover\\:bg-\\[\\#fcdcd8\\]:hover{background-color:#fcdcd8}.clcosdk\\:hover\\:bg-border:hover{background-color:var(--color-border)}.clcosdk\\:hover\\:bg-brand-primary:hover{background-color:var(--color-brand-primary)}.clcosdk\\:hover\\:bg-brand-primary-hover:hover{background-color:var(--color-brand-primary-hover)}.clcosdk\\:hover\\:bg-section:hover{background-color:var(--color-section)}.clcosdk\\:hover\\:bg-surface:hover{background-color:var(--color-surface)}.clcosdk\\:hover\\:text-\\[\\#8b1a13\\]:hover{color:#8b1a13}.clcosdk\\:hover\\:text-text-primary:hover{color:var(--color-text-primary)}.clcosdk\\:hover\\:underline:hover{text-decoration-line:underline}.clcosdk\\:hover\\:opacity-80:hover{opacity:.8}.clcosdk\\:hover\\:opacity-90:hover{opacity:.9}}.clcosdk\\:focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:focus-visible\\:ring-gray-400:focus-visible{--tw-ring-color:var(--clcosdk-color-gray-400)}.clcosdk\\:focus-visible\\:ring-gray-500:focus-visible{--tw-ring-color:var(--clcosdk-color-gray-500)}.clcosdk\\:focus-visible\\:ring-red-400:focus-visible{--tw-ring-color:var(--clcosdk-color-red-400)}.clcosdk\\:focus-visible\\:ring-red-500:focus-visible{--tw-ring-color:var(--clcosdk-color-red-500)}.clcosdk\\:focus-visible\\:ring-sale-card-focus-ring:focus-visible{--tw-ring-color:var(--color-sale-card-focus-ring)}.clcosdk\\:focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.clcosdk\\:focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.clcosdk\\:active\\:bg-\\[\\#d9d9d9\\]:active{background-color:#d9d9d9}.clcosdk\\:active\\:bg-\\[\\#f9c9c4\\]:active{background-color:#f9c9c4}.clcosdk\\:active\\:bg-border:active{background-color:var(--color-border)}.clcosdk\\:active\\:bg-brand-primary-active:active{background-color:var(--color-brand-primary-active)}.clcosdk\\:active\\:text-\\[\\#6d1510\\]:active{color:#6d1510}.clcosdk\\:active\\:opacity-80:active{opacity:.8}.clcosdk\\:disabled\\:pointer-events-none:disabled{pointer-events:none}.clcosdk\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.clcosdk\\:disabled\\:opacity-40:disabled{opacity:.4}.clcosdk\\:disabled\\:opacity-50:disabled{opacity:.5}.clcosdk\\:aria-disabled\\:cursor-not-allowed[aria-disabled=true]{cursor:not-allowed}.clcosdk\\:aria-disabled\\:opacity-50[aria-disabled=true]{opacity:.5}@media not all and (min-width:48rem){.clcosdk\\:max-md\\:hidden{display:none}.clcosdk\\:max-md\\:w-full{width:100%}.clcosdk\\:max-md\\:justify-start{justify-content:flex-start}.clcosdk\\:max-md\\:gap-4{gap:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:max-md\\:rounded-none{border-radius:0}.clcosdk\\:max-md\\:border-0{border-style:var(--tw-border-style);border-width:0}.clcosdk\\:max-md\\:bg-transparent{background-color:#0000}.clcosdk\\:max-md\\:p-0{padding:0}@media (hover:hover){.clcosdk\\:max-md\\:hover\\:scale-100:hover{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}}}@media (min-width:40rem){.clcosdk\\:sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:48rem){.clcosdk\\:md\\:right-\\[-10\\%\\]{right:-10%}.clcosdk\\:md\\:order-1{order:1}.clcosdk\\:md\\:order-2{order:2}.clcosdk\\:md\\:hidden{display:none}.clcosdk\\:md\\:size-\\[20rem\\]{width:20rem;height:20rem}.clcosdk\\:md\\:h-9{height:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:md\\:h-12{height:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:md\\:h-\\[54px\\]{height:54px}.clcosdk\\:md\\:w-9{width:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:md\\:w-12{width:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.clcosdk\\:md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.clcosdk\\:md\\:grid-cols-\\[minmax\\(0\\,11fr\\)_minmax\\(0\\,8fr\\)\\]{grid-template-columns:minmax(0,11fr) minmax(0,8fr)}.clcosdk\\:md\\:flex-row{flex-direction:row}.clcosdk\\:md\\:items-center{align-items:center}.clcosdk\\:md\\:items-end{align-items:flex-end}.clcosdk\\:md\\:justify-between{justify-content:space-between}.clcosdk\\:md\\:justify-end{justify-content:flex-end}.clcosdk\\:md\\:gap-3{gap:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:md\\:gap-6{gap:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:md\\:gap-x-12{column-gap:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:md\\:self-end{align-self:flex-end}.clcosdk\\:md\\:rounded-\\[40px\\]{border-radius:40px}.clcosdk\\:md\\:rounded-card{border-radius:24px}.clcosdk\\:md\\:rounded-dialog{border-radius:32px}.clcosdk\\:md\\:p-4{padding:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:md\\:p-6{padding:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:md\\:p-8{padding:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:md\\:px-6{padding-inline:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:md\\:px-8{padding-inline:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:md\\:py-2{padding-block:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:md\\:pr-2{padding-right:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:md\\:pr-4{padding-right:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:md\\:pl-4{padding-left:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:md\\:text-base{font-size:var(--clcosdk-text-base);line-height:var(--tw-leading,var(--clcosdk-text-base--line-height))}.clcosdk\\:md\\:text-\\[14px\\]{font-size:14px}.clcosdk\\:md\\:text-\\[16px\\]{font-size:16px}.clcosdk\\:md\\:text-\\[18px\\]{font-size:18px}.clcosdk\\:md\\:text-\\[28px\\]{font-size:28px}.clcosdk\\:md\\:leading-\\[120\\%\\]{--tw-leading:120%;line-height:120%}.clcosdk\\:md\\:leading-\\[160\\%\\]{--tw-leading:160%;line-height:160%}}@media (prefers-color-scheme:dark){@media (hover:hover){.clcosdk\\:dark\\:hover\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.20\\)\\]:not(:where(.light,.light *)):hover{background-color:#f8717133}}}@media (hover:hover){.clcosdk\\:dark\\:hover\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.20\\)\\]:where(.dark,.dark *):hover{background-color:#f8717133}}@media (prefers-color-scheme:dark){@media (hover:hover){.clcosdk\\:dark\\:hover\\:text-\\[\\#fca5a5\\]:not(:where(.light,.light *)):hover{color:#fca5a5}}}@media (hover:hover){.clcosdk\\:dark\\:hover\\:text-\\[\\#fca5a5\\]:where(.dark,.dark *):hover{color:#fca5a5}}@media (prefers-color-scheme:dark){.clcosdk\\:dark\\:active\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.30\\)\\]:not(:where(.light,.light *)):active{background-color:#f871714d}}.clcosdk\\:dark\\:active\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.30\\)\\]:where(.dark,.dark *):active{background-color:#f871714d}@media (prefers-color-scheme:dark){.clcosdk\\:dark\\:active\\:bg-divider:not(:where(.light,.light *)):active{background-color:var(--color-divider)}}.clcosdk\\:dark\\:active\\:bg-divider:where(.dark,.dark *):active{background-color:var(--color-divider)}@media (prefers-color-scheme:dark){.clcosdk\\:dark\\:active\\:text-\\[\\#f87171\\]:not(:where(.light,.light *)):active{color:#f87171}}.clcosdk\\:dark\\:active\\:text-\\[\\#f87171\\]:where(.dark,.dark *):active{color:#f87171}.clcosdk\\:\\[\\&_circle\\]\\:fill-error-subtle circle{fill:var(--color-error-subtle)}.clcosdk\\:\\[\\&_circle\\]\\:fill-success-subtle circle{fill:var(--color-success-subtle)}.clcosdk\\:\\[\\&_circle\\]\\:fill-warning-subtle circle{fill:var(--color-warning-subtle)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}';
|
|
5090
|
+
var sdkStyles = '/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--clcosdk-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--clcosdk-color-red-400:oklch(70.4% .191 22.216);--clcosdk-color-red-500:oklch(63.7% .237 25.331);--clcosdk-color-amber-500:oklch(76.9% .188 70.08);--clcosdk-color-gray-400:oklch(70.7% .022 261.325);--clcosdk-color-gray-500:oklch(55.1% .027 264.364);--clcosdk-color-black:#000;--clcosdk-spacing:.25rem;--clcosdk-container-sm:24rem;--clcosdk-container-md:28rem;--clcosdk-container-xl:36rem;--clcosdk-text-xs:.75rem;--clcosdk-text-xs--line-height:calc(1 / .75);--clcosdk-text-sm:.875rem;--clcosdk-text-sm--line-height:calc(1.25 / .875);--clcosdk-text-base:1rem;--clcosdk-text-base--line-height:calc(1.5 / 1);--clcosdk-text-lg:1.125rem;--clcosdk-text-lg--line-height:calc(1.75 / 1.125);--clcosdk-font-weight-normal:400;--clcosdk-font-weight-medium:500;--clcosdk-font-weight-semibold:600;--clcosdk-radius-md:.375rem;--clcosdk-radius-lg:.5rem;--clcosdk-radius-xl:.75rem;--clcosdk-radius-2xl:1rem;--clcosdk-ease-out:cubic-bezier(0, 0, .2, 1);--clcosdk-ease-in-out:cubic-bezier(.4, 0, .2, 1);--clcosdk-animate-spin:spin 1s linear infinite;--clcosdk-animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--clcosdk-color-brand-primary:var(--color-brand-primary)}}@layer base{.clco-sdk-root{--color-brand-primary:#171717;--color-brand-primary-hover:#000;--color-brand-primary-active:#262626;--color-accent:#2b3a67;--color-accent-hover:#243057;--color-accent-active:#1d2647;--color-accent-focus:#c7d2fe;--color-accent-subtle:#eef1f8;--color-text-primary:#171717;--color-text-secondary:#8c8c8c;--color-text-disabled:#d1d1d1;--color-text-inverse:#fff;--color-background:#fff;--color-surface:#fafafa;--color-section:#f3f3f3;--color-border:#e5e5e5;--color-divider:#ececec;--color-overlay:#00000080;--color-positive:#15803d;--color-positive-subtle:#dcfce7;--color-negative:#dc2626;--color-negative-subtle:#fee2e2;--color-success:#2c8c5e;--color-success-subtle:#e6f4ec;--color-success-border:#cfe9db;--color-warning:#e08a1a;--color-warning-subtle:#fff7ed;--color-warning-border:#fdead7;--color-error:#b42318;--color-error-subtle:#feeceb;--color-error-border:#fbd5d2;--shadow-step-active:0px 0px 10px 0px #0000001a;--shadow-dialog:0px 8px 32px 0px #0000001a;--btn-primary-gradient:linear-gradient(180deg, #262626 0%, #1c1c1c 50%, #0f0f0f 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #00000059, inset 0px 1px 2px 0px #ffffff2e, inset 0px 1px 0px 0px #ffffff1a;--sale-card-surface:linear-gradient(to top, #0a0a0a 0%, #1a1a1a 100%);--color-sale-card-text:#f4f4f5;--color-sale-card-text-muted:#a1a1aa;--color-sale-card-text-strong:#fff;--color-sale-card-border:#ffffff40;--color-sale-card-chrome-border:#ffffff4d;--color-sale-card-chrome-bg:#ffffff26;--color-sale-card-chrome-emphasis-border:#fff6;--color-sale-card-chrome-emphasis-bg:#ffffff40;--color-sale-card-focus-ring:#ffffff80;--display-on-light:block;--display-on-dark:none}@media (prefers-color-scheme:dark){.clco-sdk-root:not(:where(.light,.light *)){--color-brand-primary:#f4f4f5;--color-brand-primary-hover:#fff;--color-brand-primary-active:#e4e4e7;--color-accent:#6f82c9;--color-accent-hover:#8799e4;--color-accent-active:#5b6fcf;--color-accent-focus:#6f82c959;--color-accent-subtle:#6f82c91f;--color-text-primary:#f4f4f5;--color-text-secondary:#a1a1aa;--color-text-disabled:#71717a;--color-text-inverse:#171717;--color-background:#0f1115;--color-surface:#161a20;--color-section:#20242c;--color-border:#2a2e35;--color-divider:#323741;--color-overlay:#000000b3;--color-positive:#22c55e;--color-positive-subtle:#22c55e1f;--color-negative:#ef4444;--color-negative-subtle:#ef44441f;--color-success:#34d399;--color-success-subtle:#34d3991f;--color-success-border:#34d39940;--color-warning:#f59e0b;--color-warning-subtle:#f59e0b1f;--color-warning-border:#f59e0b40;--color-error:#f87171;--color-error-subtle:#f871711f;--color-error-border:#f8717140;--shadow-step-active:0px 0px 10px 0px #00000080;--shadow-dialog:0px 8px 32px 0px #0009;--btn-primary-gradient:linear-gradient(180deg, #fafafa 0%, #f0f0f0 50%, #e4e4e7 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #0000001f, inset 0px 1px 2px 0px #fff9, inset 0px 1px 0px 0px #fff6;--display-on-light:none;--display-on-dark:block}}:where(.dark,.dark *) .clco-sdk-root{--color-brand-primary:#f4f4f5;--color-brand-primary-hover:#fff;--color-brand-primary-active:#e4e4e7;--color-accent:#6f82c9;--color-accent-hover:#8799e4;--color-accent-active:#5b6fcf;--color-accent-focus:#6f82c959;--color-accent-subtle:#6f82c91f;--color-text-primary:#f4f4f5;--color-text-secondary:#a1a1aa;--color-text-disabled:#71717a;--color-text-inverse:#171717;--color-background:#0f1115;--color-surface:#161a20;--color-section:#20242c;--color-border:#2a2e35;--color-divider:#323741;--color-overlay:#000000b3;--color-positive:#22c55e;--color-positive-subtle:#22c55e1f;--color-negative:#ef4444;--color-negative-subtle:#ef44441f;--color-success:#34d399;--color-success-subtle:#34d3991f;--color-success-border:#34d39940;--color-warning:#f59e0b;--color-warning-subtle:#f59e0b1f;--color-warning-border:#f59e0b40;--color-error:#f87171;--color-error-subtle:#f871711f;--color-error-border:#f8717140;--shadow-step-active:0px 0px 10px 0px #00000080;--shadow-dialog:0px 8px 32px 0px #0009;--btn-primary-gradient:linear-gradient(180deg, #fafafa 0%, #f0f0f0 50%, #e4e4e7 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #0000001f, inset 0px 1px 2px 0px #fff9, inset 0px 1px 0px 0px #fff6;--display-on-light:none;--display-on-dark:block}.clco-sdk-root{color:var(--color-text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.clco-sdk-root *,.clco-sdk-root :before,.clco-sdk-root :after{box-sizing:border-box}.clco-sdk-root button{appearance:none;cursor:pointer;font:inherit;color:inherit;background:0 0;border:none;padding:0}.clco-sdk-root input,.clco-sdk-root textarea,.clco-sdk-root select{font:inherit;color:inherit;background:0 0;border:none;border-radius:0;padding:0}.clco-sdk-root a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.clco-sdk-root ul,.clco-sdk-root ol{margin:0;padding:0;list-style:none}.clco-sdk-root h1,.clco-sdk-root h2,.clco-sdk-root h3,.clco-sdk-root h4,.clco-sdk-root h5,.clco-sdk-root h6,.clco-sdk-root p,.clco-sdk-root figure,.clco-sdk-root blockquote,.clco-sdk-root dl,.clco-sdk-root dd,.clco-sdk-root pre{margin:0}.clco-sdk-root img,.clco-sdk-root svg{max-width:100%;display:block}@keyframes clco-status-ping{0%{opacity:.7;transform:scale(1)}75%,to{opacity:0;transform:scale(3.25)}}.clco-sdk-root .clcosdk-status-dot-ping{animation:1.6s cubic-bezier(0,0,.2,1) infinite clco-status-ping}.clco-sdk-root .clcosdk-on-light{display:var(--display-on-light)}.clco-sdk-root .clcosdk-on-dark{display:var(--display-on-dark)}@media (prefers-reduced-motion:reduce){.clco-sdk-root .clcosdk-status-dot-ping{opacity:0;animation:none}}}@layer components;@layer utilities{.clcosdk\\:pointer-events-none{pointer-events:none}.clcosdk\\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.clcosdk\\:absolute{position:absolute}.clcosdk\\:fixed{position:fixed}.clcosdk\\:relative{position:relative}.clcosdk\\:inset-0{inset:0}.clcosdk\\:top-1\\/2{top:50%}.clcosdk\\:top-4{top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:top-full{top:100%}.clcosdk\\:-right-0\\.5{right:calc(var(--clcosdk-spacing) * -.5)}.clcosdk\\:right-4{right:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:right-\\[-14\\%\\]{right:-14%}.clcosdk\\:-bottom-0\\.5{bottom:calc(var(--clcosdk-spacing) * -.5)}.clcosdk\\:bottom-full{bottom:100%}.clcosdk\\:left-1\\/2{left:50%}.clcosdk\\:z-0{z-index:0}.clcosdk\\:z-10{z-index:10}.clcosdk\\:z-50{z-index:50}.clcosdk\\:order-1{order:1}.clcosdk\\:order-2{order:2}.clcosdk\\:mt-2{margin-top:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:mt-4{margin-top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:mt-auto{margin-top:auto}.clcosdk\\:mb-2{margin-bottom:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:flex{display:flex}.clcosdk\\:grid{display:grid}.clcosdk\\:inline-flex{display:inline-flex}.clcosdk\\:size-2{width:calc(var(--clcosdk-spacing) * 2);height:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:size-3{width:calc(var(--clcosdk-spacing) * 3);height:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:size-3\\.5{width:calc(var(--clcosdk-spacing) * 3.5);height:calc(var(--clcosdk-spacing) * 3.5)}.clcosdk\\:size-4{width:calc(var(--clcosdk-spacing) * 4);height:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:size-5{width:calc(var(--clcosdk-spacing) * 5);height:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:size-10{width:calc(var(--clcosdk-spacing) * 10);height:calc(var(--clcosdk-spacing) * 10)}.clcosdk\\:size-12{width:calc(var(--clcosdk-spacing) * 12);height:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:size-16{width:calc(var(--clcosdk-spacing) * 16);height:calc(var(--clcosdk-spacing) * 16)}.clcosdk\\:size-24{width:calc(var(--clcosdk-spacing) * 24);height:calc(var(--clcosdk-spacing) * 24)}.clcosdk\\:size-\\[15rem\\]{width:15rem;height:15rem}.clcosdk\\:size-full{width:100%;height:100%}.clcosdk\\:h-1{height:var(--clcosdk-spacing)}.clcosdk\\:h-3{height:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:h-4{height:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:h-5{height:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:h-6{height:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:h-8{height:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:h-9{height:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:h-10{height:calc(var(--clcosdk-spacing) * 10)}.clcosdk\\:h-11{height:calc(var(--clcosdk-spacing) * 11)}.clcosdk\\:h-12{height:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:h-14{height:calc(var(--clcosdk-spacing) * 14)}.clcosdk\\:h-\\[1em\\]{height:1em}.clcosdk\\:h-\\[18px\\]{height:18px}.clcosdk\\:h-\\[54px\\]{height:54px}.clcosdk\\:h-\\[71px\\]{height:71px}.clcosdk\\:h-auto{height:auto}.clcosdk\\:h-full{height:100%}.clcosdk\\:h-px{height:1px}.clcosdk\\:max-h-\\[92vh\\]{max-height:92vh}.clcosdk\\:max-h-full{max-height:100%}.clcosdk\\:min-h-0{min-height:0}.clcosdk\\:min-h-9{min-height:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:min-h-40{min-height:calc(var(--clcosdk-spacing) * 40)}.clcosdk\\:min-h-\\[1lh\\]{min-height:1lh}.clcosdk\\:min-h-screen{min-height:100vh}.clcosdk\\:w-1{width:var(--clcosdk-spacing)}.clcosdk\\:w-4{width:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:w-5{width:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:w-6{width:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:w-8{width:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:w-10{width:calc(var(--clcosdk-spacing) * 10)}.clcosdk\\:w-12{width:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:w-16{width:calc(var(--clcosdk-spacing) * 16)}.clcosdk\\:w-20{width:calc(var(--clcosdk-spacing) * 20)}.clcosdk\\:w-24{width:calc(var(--clcosdk-spacing) * 24)}.clcosdk\\:w-28{width:calc(var(--clcosdk-spacing) * 28)}.clcosdk\\:w-32{width:calc(var(--clcosdk-spacing) * 32)}.clcosdk\\:w-40{width:calc(var(--clcosdk-spacing) * 40)}.clcosdk\\:w-48{width:calc(var(--clcosdk-spacing) * 48)}.clcosdk\\:w-80{width:calc(var(--clcosdk-spacing) * 80)}.clcosdk\\:w-96{width:calc(var(--clcosdk-spacing) * 96)}.clcosdk\\:w-\\[16px\\]{width:16px}.clcosdk\\:w-\\[28rem\\]{width:28rem}.clcosdk\\:w-\\[448px\\]{width:448px}.clcosdk\\:w-auto{width:auto}.clcosdk\\:w-component{width:448px}.clcosdk\\:w-fit{width:fit-content}.clcosdk\\:w-full{width:100%}.clcosdk\\:w-max{width:max-content}.clcosdk\\:max-w-\\[16rem\\]{max-width:16rem}.clcosdk\\:max-w-\\[28rem\\]{max-width:28rem}.clcosdk\\:max-w-\\[30rem\\]{max-width:30rem}.clcosdk\\:max-w-\\[40rem\\]{max-width:40rem}.clcosdk\\:max-w-\\[56rem\\]{max-width:56rem}.clcosdk\\:max-w-\\[64rem\\]{max-width:64rem}.clcosdk\\:max-w-\\[760px\\]{max-width:760px}.clcosdk\\:max-w-full{max-width:100%}.clcosdk\\:max-w-md{max-width:var(--clcosdk-container-md)}.clcosdk\\:max-w-sm{max-width:var(--clcosdk-container-sm)}.clcosdk\\:max-w-xl{max-width:var(--clcosdk-container-xl)}.clcosdk\\:min-w-0{min-width:0}.clcosdk\\:flex-1{flex:1}.clcosdk\\:shrink-0{flex-shrink:0}.clcosdk\\:-translate-x-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.clcosdk\\:-translate-y-1\\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.clcosdk\\:rotate-90{rotate:90deg}.clcosdk\\:rotate-180{rotate:180deg}.clcosdk\\:animate-pulse{animation:var(--clcosdk-animate-pulse)}.clcosdk\\:animate-spin{animation:var(--clcosdk-animate-spin)}.clcosdk\\:cursor-pointer{cursor:pointer}.clcosdk\\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.clcosdk\\:grid-rows-\\[0fr\\]{grid-template-rows:0fr}.clcosdk\\:grid-rows-\\[1fr\\]{grid-template-rows:1fr}.clcosdk\\:flex-col{flex-direction:column}.clcosdk\\:flex-wrap{flex-wrap:wrap}.clcosdk\\:items-center{align-items:center}.clcosdk\\:items-end{align-items:flex-end}.clcosdk\\:items-start{align-items:flex-start}.clcosdk\\:justify-between{justify-content:space-between}.clcosdk\\:justify-center{justify-content:center}.clcosdk\\:justify-end{justify-content:flex-end}.clcosdk\\:gap-1{gap:var(--clcosdk-spacing)}.clcosdk\\:gap-1\\.5{gap:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:gap-2{gap:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:gap-2\\.5{gap:calc(var(--clcosdk-spacing) * 2.5)}.clcosdk\\:gap-3{gap:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:gap-4{gap:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:gap-6{gap:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:gap-\\[5px\\]{gap:5px}:where(.clcosdk\\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--clcosdk-spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--clcosdk-spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.clcosdk\\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--clcosdk-spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--clcosdk-spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.clcosdk\\:divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.clcosdk\\:divide-border>:not(:last-child)){border-color:var(--color-border)}:where(.clcosdk\\:divide-divider>:not(:last-child)){border-color:var(--color-divider)}.clcosdk\\:self-start{align-self:flex-start}.clcosdk\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.clcosdk\\:overflow-hidden{overflow:hidden}.clcosdk\\:overflow-y-auto{overflow-y:auto}.clcosdk\\:rounded{border-radius:.25rem}.clcosdk\\:rounded-2xl{border-radius:var(--clcosdk-radius-2xl)}.clcosdk\\:rounded-\\[20px\\]{border-radius:20px}.clcosdk\\:rounded-\\[28px\\]{border-radius:28px}.clcosdk\\:rounded-btn{border-radius:12px}.clcosdk\\:rounded-card{border-radius:24px}.clcosdk\\:rounded-full{border-radius:3.40282e38px}.clcosdk\\:rounded-lg{border-radius:var(--clcosdk-radius-lg)}.clcosdk\\:rounded-md{border-radius:var(--clcosdk-radius-md)}.clcosdk\\:rounded-xl{border-radius:var(--clcosdk-radius-xl)}.clcosdk\\:border{border-style:var(--tw-border-style);border-width:1px}.clcosdk\\:border-2{border-style:var(--tw-border-style);border-width:2px}.clcosdk\\:border-\\[1\\.5px\\]{border-style:var(--tw-border-style);border-width:1.5px}.clcosdk\\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.clcosdk\\:border-accent\\/60{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.clcosdk\\:border-accent\\/60{border-color:color-mix(in oklab, var(--color-accent) 60%, transparent)}}.clcosdk\\:border-amber-500{border-color:var(--clcosdk-color-amber-500)}.clcosdk\\:border-background{border-color:var(--color-background)}.clcosdk\\:border-border{border-color:var(--color-border)}.clcosdk\\:border-brand-primary{border-color:var(--color-brand-primary)}.clcosdk\\:border-current{border-color:currentColor}.clcosdk\\:border-divider{border-color:var(--color-divider)}.clcosdk\\:border-error-border{border-color:var(--color-error-border)}.clcosdk\\:border-sale-card-border{border-color:var(--color-sale-card-border)}.clcosdk\\:border-sale-card-chrome-border{border-color:var(--color-sale-card-chrome-border)}.clcosdk\\:border-success-border{border-color:var(--color-success-border)}.clcosdk\\:border-warning-border{border-color:var(--color-warning-border)}.clcosdk\\:border-t-transparent{border-top-color:#0000}.clcosdk\\:bg-background{background-color:var(--color-background)}.clcosdk\\:bg-black\\/50{background-color:var(--clcosdk-color-black)}@supports (color:color-mix(in lab, red, red)){.clcosdk\\:bg-black\\/50{background-color:color-mix(in oklab, var(--clcosdk-color-black) 50%, transparent)}}.clcosdk\\:bg-brand-primary{background-color:var(--color-brand-primary)}.clcosdk\\:bg-divider{background-color:var(--color-divider)}.clcosdk\\:bg-error-subtle{background-color:var(--color-error-subtle)}.clcosdk\\:bg-overlay{background-color:var(--color-overlay)}.clcosdk\\:bg-positive{background-color:var(--color-positive)}.clcosdk\\:bg-positive-subtle{background-color:var(--color-positive-subtle)}.clcosdk\\:bg-sale-card-chrome-bg{background-color:var(--color-sale-card-chrome-bg)}.clcosdk\\:bg-section{background-color:var(--color-section)}.clcosdk\\:bg-success-subtle{background-color:var(--color-success-subtle)}.clcosdk\\:bg-surface{background-color:var(--color-surface)}.clcosdk\\:bg-text-disabled{background-color:var(--color-text-disabled)}.clcosdk\\:bg-text-primary{background-color:var(--color-text-primary)}.clcosdk\\:bg-transparent{background-color:#0000}.clcosdk\\:bg-warning-subtle{background-color:var(--color-warning-subtle)}.clcosdk\\:bg-\\[image\\:var\\(--btn-primary-gradient\\)\\]{background-image:var(--btn-primary-gradient)}.clcosdk\\:bg-\\[image\\:var\\(--sale-card-surface\\)\\]{background-image:var(--sale-card-surface)}.clcosdk\\:object-contain{object-fit:contain}.clcosdk\\:object-cover{object-fit:cover}.clcosdk\\:p-0{padding:0}.clcosdk\\:p-1\\.5{padding:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:p-3{padding:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:p-3\\.5{padding:calc(var(--clcosdk-spacing) * 3.5)}.clcosdk\\:p-4{padding:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:p-5{padding:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:p-6{padding:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:p-8{padding:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:p-16{padding:calc(var(--clcosdk-spacing) * 16)}.clcosdk\\:px-2{padding-inline:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:px-3{padding-inline:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:px-4{padding-inline:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:px-5{padding-inline:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:px-6{padding-inline:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:py-1\\.5{padding-block:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:py-2{padding-block:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:py-3{padding-block:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:py-8{padding-block:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:py-12{padding-block:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:pt-1{padding-top:var(--clcosdk-spacing)}.clcosdk\\:pt-4{padding-top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:pt-14{padding-top:calc(var(--clcosdk-spacing) * 14)}.clcosdk\\:pr-1\\.5{padding-right:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:pr-3{padding-right:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:pr-4{padding-right:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:pb-4{padding-bottom:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:pl-3{padding-left:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:text-center{text-align:center}.clcosdk\\:text-left{text-align:left}.clcosdk\\:text-right{text-align:right}.clcosdk\\:font-mono{font-family:var(--clcosdk-font-mono)}.clcosdk\\:text-base{font-size:var(--clcosdk-text-base);line-height:var(--tw-leading,var(--clcosdk-text-base--line-height))}.clcosdk\\:text-lg{font-size:var(--clcosdk-text-lg);line-height:var(--tw-leading,var(--clcosdk-text-lg--line-height))}.clcosdk\\:text-sm{font-size:var(--clcosdk-text-sm);line-height:var(--tw-leading,var(--clcosdk-text-sm--line-height))}.clcosdk\\:text-xs{font-size:var(--clcosdk-text-xs);line-height:var(--tw-leading,var(--clcosdk-text-xs--line-height))}.clcosdk\\:text-\\[11px\\]{font-size:11px}.clcosdk\\:text-\\[12px\\]{font-size:12px}.clcosdk\\:text-\\[13px\\]{font-size:13px}.clcosdk\\:text-\\[14px\\]{font-size:14px}.clcosdk\\:text-\\[15px\\]{font-size:15px}.clcosdk\\:text-\\[16px\\]{font-size:16px}.clcosdk\\:text-\\[18px\\]{font-size:18px}.clcosdk\\:text-\\[22px\\]{font-size:22px}.clcosdk\\:text-\\[28px\\]{font-size:28px}.clcosdk\\:text-\\[36px\\]{font-size:36px}.clcosdk\\:text-\\[48px\\]{font-size:48px}.clcosdk\\:text-\\[64px\\]{font-size:64px}.clcosdk\\:leading-\\[105\\%\\]{--tw-leading:105%;line-height:105%}.clcosdk\\:leading-\\[108\\%\\]{--tw-leading:108%;line-height:108%}.clcosdk\\:leading-\\[110\\%\\]{--tw-leading:110%;line-height:110%}.clcosdk\\:leading-\\[120\\%\\]{--tw-leading:120%;line-height:120%}.clcosdk\\:leading-\\[130\\%\\]{--tw-leading:130%;line-height:130%}.clcosdk\\:leading-\\[140\\%\\]{--tw-leading:140%;line-height:140%}.clcosdk\\:leading-\\[150\\%\\]{--tw-leading:150%;line-height:150%}.clcosdk\\:leading-\\[160\\%\\]{--tw-leading:160%;line-height:160%}.clcosdk\\:font-medium{--tw-font-weight:var(--clcosdk-font-weight-medium);font-weight:var(--clcosdk-font-weight-medium)}.clcosdk\\:font-normal{--tw-font-weight:var(--clcosdk-font-weight-normal);font-weight:var(--clcosdk-font-weight-normal)}.clcosdk\\:font-semibold{--tw-font-weight:var(--clcosdk-font-weight-semibold);font-weight:var(--clcosdk-font-weight-semibold)}.clcosdk\\:tracking-\\[0\\.12px\\]{--tw-tracking:.12px;letter-spacing:.12px}.clcosdk\\:tracking-\\[0\\.28px\\]{--tw-tracking:.28px;letter-spacing:.28px}.clcosdk\\:break-words{overflow-wrap:break-word}.clcosdk\\:whitespace-nowrap{white-space:nowrap}.clcosdk\\:text-background{color:var(--color-background)}.clcosdk\\:text-brand-primary{color:var(--color-brand-primary)}.clcosdk\\:text-error{color:var(--color-error)}.clcosdk\\:text-positive{color:var(--color-positive)}.clcosdk\\:text-sale-card-text{color:var(--color-sale-card-text)}.clcosdk\\:text-sale-card-text-muted{color:var(--color-sale-card-text-muted)}.clcosdk\\:text-sale-card-text-strong{color:var(--color-sale-card-text-strong)}.clcosdk\\:text-success{color:var(--color-success)}.clcosdk\\:text-text-disabled{color:var(--color-text-disabled)}.clcosdk\\:text-text-inverse{color:var(--color-text-inverse)}.clcosdk\\:text-text-primary{color:var(--color-text-primary)}.clcosdk\\:text-text-secondary{color:var(--color-text-secondary)}.clcosdk\\:text-warning{color:var(--color-warning)}.clcosdk\\:capitalize{text-transform:capitalize}.clcosdk\\:lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.clcosdk\\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.clcosdk\\:no-underline{text-decoration-line:none}.clcosdk\\:underline{text-decoration-line:underline}.clcosdk\\:underline-offset-2{text-underline-offset:2px}.clcosdk\\:underline-offset-4{text-underline-offset:4px}.clcosdk\\:opacity-0{opacity:0}.clcosdk\\:opacity-60{opacity:.6}.clcosdk\\:shadow-\\[0_0_0_3px_rgba\\(59\\,130\\,246\\,0\\.2\\)\\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#3b82f633);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-\\[0px_1px_1px_0px_rgba\\(10\\,10\\,10\\,0\\.04\\)\\,0px_8px_12px_0px_rgba\\(10\\,10\\,10\\,0\\.08\\)\\]{--tw-shadow:0px 1px 1px 0px var(--tw-shadow-color,#0a0a0a0a), 0px 8px 12px 0px var(--tw-shadow-color,#0a0a0a14);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-\\[0px_4px_12px_0px_rgba\\(0\\,0\\,0\\,0\\.08\\)\\,0px_12px_28px_0px_rgba\\(0\\,0\\,0\\,0\\.13\\)\\]{--tw-shadow:0px 4px 12px 0px var(--tw-shadow-color,#00000014), 0px 12px 28px 0px var(--tw-shadow-color,#00000021);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-\\[var\\(--btn-primary-shadow\\)\\]{--tw-shadow:var(--btn-primary-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-card{--tw-shadow:0px 4px 6px -2px var(--tw-shadow-color,#0000000d), 0px 12px 24px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-dialog{--tw-shadow:var(--shadow-dialog);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-step-active{--tw-shadow:var(--shadow-step-active);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:transition-\\[background-color\\,border-color\\]{transition-property:background-color,border-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-\\[grid-template-rows\\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:duration-200{--tw-duration:.2s;transition-duration:.2s}.clcosdk\\:duration-300{--tw-duration:.3s;transition-duration:.3s}.clcosdk\\:duration-500{--tw-duration:.5s;transition-duration:.5s}.clcosdk\\:ease-in-out{--tw-ease:var(--clcosdk-ease-in-out);transition-timing-function:var(--clcosdk-ease-in-out)}.clcosdk\\:ease-out{--tw-ease:var(--clcosdk-ease-out);transition-timing-function:var(--clcosdk-ease-out)}.clcosdk\\:outline-none{--tw-outline-style:none;outline-style:none}.clcosdk\\:group-focus-within\\:opacity-100:is(:where(.clcosdk\\:group):focus-within *){opacity:1}@media (hover:hover){.clcosdk\\:group-hover\\:border-sale-card-chrome-emphasis-border:is(:where(.clcosdk\\:group):hover *){border-color:var(--color-sale-card-chrome-emphasis-border)}.clcosdk\\:group-hover\\:bg-sale-card-chrome-emphasis-bg:is(:where(.clcosdk\\:group):hover *){background-color:var(--color-sale-card-chrome-emphasis-bg)}.clcosdk\\:group-hover\\:opacity-100:is(:where(.clcosdk\\:group):hover *){opacity:1}}.clcosdk\\:group-focus-visible\\:border-sale-card-chrome-emphasis-border:is(:where(.clcosdk\\:group):focus-visible *){border-color:var(--color-sale-card-chrome-emphasis-border)}.clcosdk\\:group-focus-visible\\:bg-sale-card-chrome-emphasis-bg:is(:where(.clcosdk\\:group):focus-visible *){background-color:var(--color-sale-card-chrome-emphasis-bg)}.clcosdk\\:placeholder\\:text-text-disabled::placeholder{color:var(--color-text-disabled)}@media (hover:hover){.clcosdk\\:hover\\:scale-\\[1\\.02\\]:hover{scale:1.02}.clcosdk\\:hover\\:border-text-disabled:hover{border-color:var(--color-text-disabled)}.clcosdk\\:hover\\:bg-\\[\\#fcdcd8\\]:hover{background-color:#fcdcd8}.clcosdk\\:hover\\:bg-border:hover{background-color:var(--color-border)}.clcosdk\\:hover\\:bg-brand-primary:hover{background-color:var(--color-brand-primary)}.clcosdk\\:hover\\:bg-brand-primary-hover:hover{background-color:var(--color-brand-primary-hover)}.clcosdk\\:hover\\:bg-section:hover{background-color:var(--color-section)}.clcosdk\\:hover\\:bg-surface:hover{background-color:var(--color-surface)}.clcosdk\\:hover\\:text-\\[\\#8b1a13\\]:hover{color:#8b1a13}.clcosdk\\:hover\\:text-text-primary:hover{color:var(--color-text-primary)}.clcosdk\\:hover\\:underline:hover{text-decoration-line:underline}.clcosdk\\:hover\\:opacity-80:hover{opacity:.8}.clcosdk\\:hover\\:opacity-90:hover{opacity:.9}}.clcosdk\\:focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:focus-visible\\:ring-gray-400:focus-visible{--tw-ring-color:var(--clcosdk-color-gray-400)}.clcosdk\\:focus-visible\\:ring-gray-500:focus-visible{--tw-ring-color:var(--clcosdk-color-gray-500)}.clcosdk\\:focus-visible\\:ring-red-400:focus-visible{--tw-ring-color:var(--clcosdk-color-red-400)}.clcosdk\\:focus-visible\\:ring-red-500:focus-visible{--tw-ring-color:var(--clcosdk-color-red-500)}.clcosdk\\:focus-visible\\:ring-sale-card-focus-ring:focus-visible{--tw-ring-color:var(--color-sale-card-focus-ring)}.clcosdk\\:focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.clcosdk\\:focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.clcosdk\\:active\\:bg-\\[\\#d9d9d9\\]:active{background-color:#d9d9d9}.clcosdk\\:active\\:bg-\\[\\#f9c9c4\\]:active{background-color:#f9c9c4}.clcosdk\\:active\\:bg-border:active{background-color:var(--color-border)}.clcosdk\\:active\\:bg-brand-primary-active:active{background-color:var(--color-brand-primary-active)}.clcosdk\\:active\\:text-\\[\\#6d1510\\]:active{color:#6d1510}.clcosdk\\:active\\:opacity-80:active{opacity:.8}.clcosdk\\:disabled\\:pointer-events-none:disabled{pointer-events:none}.clcosdk\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.clcosdk\\:disabled\\:opacity-40:disabled{opacity:.4}.clcosdk\\:disabled\\:opacity-50:disabled{opacity:.5}.clcosdk\\:aria-disabled\\:cursor-not-allowed[aria-disabled=true]{cursor:not-allowed}.clcosdk\\:aria-disabled\\:opacity-50[aria-disabled=true]{opacity:.5}@media not all and (min-width:48rem){.clcosdk\\:max-md\\:hidden{display:none}.clcosdk\\:max-md\\:w-full{width:100%}.clcosdk\\:max-md\\:justify-start{justify-content:flex-start}.clcosdk\\:max-md\\:gap-4{gap:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:max-md\\:rounded-none{border-radius:0}.clcosdk\\:max-md\\:border-0{border-style:var(--tw-border-style);border-width:0}.clcosdk\\:max-md\\:bg-transparent{background-color:#0000}.clcosdk\\:max-md\\:p-0{padding:0}@media (hover:hover){.clcosdk\\:max-md\\:hover\\:scale-100:hover{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}}}@media (min-width:40rem){.clcosdk\\:sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:48rem){.clcosdk\\:md\\:right-\\[-10\\%\\]{right:-10%}.clcosdk\\:md\\:order-1{order:1}.clcosdk\\:md\\:order-2{order:2}.clcosdk\\:md\\:hidden{display:none}.clcosdk\\:md\\:size-\\[20rem\\]{width:20rem;height:20rem}.clcosdk\\:md\\:h-9{height:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:md\\:h-12{height:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:md\\:h-\\[54px\\]{height:54px}.clcosdk\\:md\\:w-9{width:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:md\\:w-12{width:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.clcosdk\\:md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.clcosdk\\:md\\:grid-cols-\\[minmax\\(0\\,11fr\\)_minmax\\(0\\,8fr\\)\\]{grid-template-columns:minmax(0,11fr) minmax(0,8fr)}.clcosdk\\:md\\:flex-row{flex-direction:row}.clcosdk\\:md\\:items-center{align-items:center}.clcosdk\\:md\\:items-end{align-items:flex-end}.clcosdk\\:md\\:justify-between{justify-content:space-between}.clcosdk\\:md\\:justify-end{justify-content:flex-end}.clcosdk\\:md\\:gap-3{gap:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:md\\:gap-6{gap:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:md\\:gap-x-12{column-gap:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:md\\:self-end{align-self:flex-end}.clcosdk\\:md\\:rounded-\\[40px\\]{border-radius:40px}.clcosdk\\:md\\:rounded-card{border-radius:24px}.clcosdk\\:md\\:rounded-dialog{border-radius:32px}.clcosdk\\:md\\:p-4{padding:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:md\\:p-6{padding:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:md\\:p-8{padding:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:md\\:px-6{padding-inline:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:md\\:px-8{padding-inline:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:md\\:py-2{padding-block:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:md\\:pr-2{padding-right:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:md\\:pr-4{padding-right:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:md\\:pl-4{padding-left:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:md\\:text-base{font-size:var(--clcosdk-text-base);line-height:var(--tw-leading,var(--clcosdk-text-base--line-height))}.clcosdk\\:md\\:text-\\[14px\\]{font-size:14px}.clcosdk\\:md\\:text-\\[16px\\]{font-size:16px}.clcosdk\\:md\\:text-\\[18px\\]{font-size:18px}.clcosdk\\:md\\:text-\\[28px\\]{font-size:28px}.clcosdk\\:md\\:leading-\\[120\\%\\]{--tw-leading:120%;line-height:120%}.clcosdk\\:md\\:leading-\\[160\\%\\]{--tw-leading:160%;line-height:160%}}@media (prefers-color-scheme:dark){@media (hover:hover){.clcosdk\\:dark\\:hover\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.20\\)\\]:not(:where(.light,.light *)):hover{background-color:#f8717133}}}@media (hover:hover){.clcosdk\\:dark\\:hover\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.20\\)\\]:where(.dark,.dark *):hover{background-color:#f8717133}}@media (prefers-color-scheme:dark){@media (hover:hover){.clcosdk\\:dark\\:hover\\:text-\\[\\#fca5a5\\]:not(:where(.light,.light *)):hover{color:#fca5a5}}}@media (hover:hover){.clcosdk\\:dark\\:hover\\:text-\\[\\#fca5a5\\]:where(.dark,.dark *):hover{color:#fca5a5}}@media (prefers-color-scheme:dark){.clcosdk\\:dark\\:active\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.30\\)\\]:not(:where(.light,.light *)):active{background-color:#f871714d}}.clcosdk\\:dark\\:active\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.30\\)\\]:where(.dark,.dark *):active{background-color:#f871714d}@media (prefers-color-scheme:dark){.clcosdk\\:dark\\:active\\:bg-divider:not(:where(.light,.light *)):active{background-color:var(--color-divider)}}.clcosdk\\:dark\\:active\\:bg-divider:where(.dark,.dark *):active{background-color:var(--color-divider)}@media (prefers-color-scheme:dark){.clcosdk\\:dark\\:active\\:text-\\[\\#f87171\\]:not(:where(.light,.light *)):active{color:#f87171}}.clcosdk\\:dark\\:active\\:text-\\[\\#f87171\\]:where(.dark,.dark *):active{color:#f87171}.clcosdk\\:\\[\\&_circle\\]\\:fill-error-subtle circle{fill:var(--color-error-subtle)}.clcosdk\\:\\[\\&_circle\\]\\:fill-success-subtle circle{fill:var(--color-success-subtle)}.clcosdk\\:\\[\\&_circle\\]\\:fill-warning-subtle circle{fill:var(--color-warning-subtle)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}';
|
|
5039
5091
|
|
|
5040
5092
|
// src/client/CoinListStyleScope.tsx
|
|
5041
5093
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
@@ -7562,6 +7614,20 @@ function tokenLogoUrl(logo, minWidth = 40) {
|
|
|
7562
7614
|
}
|
|
7563
7615
|
}
|
|
7564
7616
|
}
|
|
7617
|
+
function tokenLogoSrcSet(logo) {
|
|
7618
|
+
switch (logo.kind) {
|
|
7619
|
+
case "VECTOR":
|
|
7620
|
+
return null;
|
|
7621
|
+
case "RASTER": {
|
|
7622
|
+
const candidates = logo.variants.length > 0 ? logo.variants : [logo.original];
|
|
7623
|
+
return [...candidates].sort((a, b) => a.width - b.width).map((image) => `${image.url} ${image.width}w`).join(", ");
|
|
7624
|
+
}
|
|
7625
|
+
default: {
|
|
7626
|
+
const exhaustive = logo;
|
|
7627
|
+
return exhaustive;
|
|
7628
|
+
}
|
|
7629
|
+
}
|
|
7630
|
+
}
|
|
7565
7631
|
function offerAssetIconUrl(offer, tokenMetadata) {
|
|
7566
7632
|
return (tokenMetadata ? tokenLogoUrl(tokenMetadata.logo) : null) ?? offerIconUrl(offer);
|
|
7567
7633
|
}
|
|
@@ -8168,8 +8234,12 @@ function useOndoBuyReviewViewModel({
|
|
|
8168
8234
|
}
|
|
8169
8235
|
}, [stepInput.type]);
|
|
8170
8236
|
const transaction = transactionState.type === "CONTENT" ? transactionState.transaction : null;
|
|
8237
|
+
const offerUntil = (0, import_react17.useMemo)(
|
|
8238
|
+
() => transaction === null ? null : ondoQuoteOfferDeadline(transaction.expiresAt),
|
|
8239
|
+
[transaction]
|
|
8240
|
+
);
|
|
8171
8241
|
const secondsLeft = useCountdown({
|
|
8172
|
-
until:
|
|
8242
|
+
until: offerUntil,
|
|
8173
8243
|
enabled
|
|
8174
8244
|
});
|
|
8175
8245
|
const quoteStatus = toQuoteStatusUi(transactionState, secondsLeft);
|
|
@@ -8293,14 +8363,11 @@ function toQuoteStatusUi(state, secondsLeft) {
|
|
|
8293
8363
|
message: refreshErrorMessage(state.refreshError)
|
|
8294
8364
|
};
|
|
8295
8365
|
}
|
|
8296
|
-
if (secondsLeft === null ||
|
|
8366
|
+
if (secondsLeft === null || secondsLeft === 0) {
|
|
8297
8367
|
return { type: "expired" };
|
|
8298
8368
|
}
|
|
8299
8369
|
return { type: "valid", expiresInLabel: expiresInLabel(secondsLeft) };
|
|
8300
8370
|
}
|
|
8301
|
-
function isTooCloseToExpiry(secondsLeft) {
|
|
8302
|
-
return secondsLeft * 1e3 <= ONDO_QUOTE_EXPIRY_THRESHOLD_MS;
|
|
8303
|
-
}
|
|
8304
8371
|
function expiresInLabel(secondsLeft) {
|
|
8305
8372
|
const unit = secondsLeft === 1 ? "second" : "seconds";
|
|
8306
8373
|
return `Quote expires in ${secondsLeft} ${unit}`;
|
|
@@ -8792,8 +8859,9 @@ var NO_TOKEN_ADDRESS = EvmContractAddress(
|
|
|
8792
8859
|
"0x0000000000000000000000000000000000000000"
|
|
8793
8860
|
);
|
|
8794
8861
|
function offerTokenIdentifier(offer, chain) {
|
|
8795
|
-
const
|
|
8796
|
-
|
|
8862
|
+
const asset = offerDisplayTokens(offer).find(
|
|
8863
|
+
(token) => token.chain === chain
|
|
8864
|
+
);
|
|
8797
8865
|
return asset === void 0 ? null : { chain, address: asset.address };
|
|
8798
8866
|
}
|
|
8799
8867
|
function tokenMetadataOf(state) {
|
|
@@ -10230,8 +10298,12 @@ function useOndoSellReviewViewModel({
|
|
|
10230
10298
|
}
|
|
10231
10299
|
}, [stepInput.type]);
|
|
10232
10300
|
const transaction = transactionState.type === "CONTENT" ? transactionState.transaction : null;
|
|
10301
|
+
const offerUntil = (0, import_react26.useMemo)(
|
|
10302
|
+
() => transaction === null ? null : ondoQuoteOfferDeadline(transaction.expiresAt),
|
|
10303
|
+
[transaction]
|
|
10304
|
+
);
|
|
10233
10305
|
const secondsLeft = useCountdown({
|
|
10234
|
-
until:
|
|
10306
|
+
until: offerUntil,
|
|
10235
10307
|
enabled
|
|
10236
10308
|
});
|
|
10237
10309
|
const quoteStatus = toQuoteStatusUi2(transactionState, secondsLeft);
|
|
@@ -10360,14 +10432,11 @@ function toQuoteStatusUi2(state, secondsLeft) {
|
|
|
10360
10432
|
message: refreshErrorMessage2(state.refreshError)
|
|
10361
10433
|
};
|
|
10362
10434
|
}
|
|
10363
|
-
if (secondsLeft === null ||
|
|
10435
|
+
if (secondsLeft === null || secondsLeft === 0) {
|
|
10364
10436
|
return { type: "expired" };
|
|
10365
10437
|
}
|
|
10366
10438
|
return { type: "valid", expiresInLabel: expiresInLabel2(secondsLeft) };
|
|
10367
10439
|
}
|
|
10368
|
-
function isTooCloseToExpiry2(secondsLeft) {
|
|
10369
|
-
return secondsLeft * 1e3 <= ONDO_QUOTE_EXPIRY_THRESHOLD_MS;
|
|
10370
|
-
}
|
|
10371
10440
|
function expiresInLabel2(secondsLeft) {
|
|
10372
10441
|
const unit = secondsLeft === 1 ? "second" : "seconds";
|
|
10373
10442
|
return `Quote expires in ${secondsLeft} ${unit}`;
|
|
@@ -13141,6 +13210,58 @@ function renderOndoSide(side, branches) {
|
|
|
13141
13210
|
}
|
|
13142
13211
|
}
|
|
13143
13212
|
|
|
13213
|
+
// src/client/components/design-system/ThemedImage.tsx
|
|
13214
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
13215
|
+
function ThemedImage({
|
|
13216
|
+
light,
|
|
13217
|
+
dark,
|
|
13218
|
+
sizes,
|
|
13219
|
+
alt,
|
|
13220
|
+
width,
|
|
13221
|
+
height,
|
|
13222
|
+
className,
|
|
13223
|
+
style
|
|
13224
|
+
}) {
|
|
13225
|
+
const shared = { width, height, style };
|
|
13226
|
+
if (!dark) {
|
|
13227
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
13228
|
+
"img",
|
|
13229
|
+
{
|
|
13230
|
+
src: light.src,
|
|
13231
|
+
srcSet: light.srcSet,
|
|
13232
|
+
sizes: light.srcSet ? sizes : void 0,
|
|
13233
|
+
className,
|
|
13234
|
+
alt,
|
|
13235
|
+
...shared
|
|
13236
|
+
}
|
|
13237
|
+
);
|
|
13238
|
+
}
|
|
13239
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_jsx_runtime51.Fragment, { children: [
|
|
13240
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
13241
|
+
"img",
|
|
13242
|
+
{
|
|
13243
|
+
src: light.src,
|
|
13244
|
+
srcSet: light.srcSet,
|
|
13245
|
+
sizes: light.srcSet ? sizes : void 0,
|
|
13246
|
+
className: cn("clcosdk-on-light", className),
|
|
13247
|
+
alt,
|
|
13248
|
+
...shared
|
|
13249
|
+
}
|
|
13250
|
+
),
|
|
13251
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
13252
|
+
"img",
|
|
13253
|
+
{
|
|
13254
|
+
src: dark.src,
|
|
13255
|
+
srcSet: dark.srcSet,
|
|
13256
|
+
sizes: dark.srcSet ? sizes : void 0,
|
|
13257
|
+
className: cn("clcosdk-on-dark", className),
|
|
13258
|
+
alt,
|
|
13259
|
+
...shared
|
|
13260
|
+
}
|
|
13261
|
+
)
|
|
13262
|
+
] });
|
|
13263
|
+
}
|
|
13264
|
+
|
|
13144
13265
|
// src/client/components/offers/shared/offer-card-keyboard.ts
|
|
13145
13266
|
function onOfferCardKeyDown(event, onClick) {
|
|
13146
13267
|
if (event.key !== "Enter" && event.key !== " ") return;
|
|
@@ -13149,7 +13270,8 @@ function onOfferCardKeyDown(event, onClick) {
|
|
|
13149
13270
|
}
|
|
13150
13271
|
|
|
13151
13272
|
// src/client/components/offers/shared/OfferAssetCard.tsx
|
|
13152
|
-
var
|
|
13273
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
13274
|
+
var LOGO_SIZES = "(min-width: 768px) 48px, 40px";
|
|
13153
13275
|
function OfferAssetCard({
|
|
13154
13276
|
offer,
|
|
13155
13277
|
onClick,
|
|
@@ -13157,7 +13279,7 @@ function OfferAssetCard({
|
|
|
13157
13279
|
containerClassName
|
|
13158
13280
|
}) {
|
|
13159
13281
|
const interactive = onClick !== void 0;
|
|
13160
|
-
const card = /* @__PURE__ */ (0,
|
|
13282
|
+
const card = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
13161
13283
|
"article",
|
|
13162
13284
|
{
|
|
13163
13285
|
className: cn(
|
|
@@ -13171,11 +13293,13 @@ function OfferAssetCard({
|
|
|
13171
13293
|
tabIndex: interactive ? 0 : void 0,
|
|
13172
13294
|
onClick,
|
|
13173
13295
|
onKeyDown: interactive ? (event) => onOfferCardKeyDown(event, onClick) : void 0,
|
|
13174
|
-
children: /* @__PURE__ */ (0,
|
|
13175
|
-
offer.
|
|
13176
|
-
|
|
13296
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:flex-1 clcosdk:items-center clcosdk:gap-2.5 clcosdk:pr-3 clcosdk:md:gap-3 clcosdk:md:pr-4", children: [
|
|
13297
|
+
offer.logo ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "clcosdk:h-10 clcosdk:w-10 clcosdk:shrink-0 clcosdk:overflow-hidden clcosdk:rounded-full clcosdk:md:h-12 clcosdk:md:w-12", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
13298
|
+
ThemedImage,
|
|
13177
13299
|
{
|
|
13178
|
-
|
|
13300
|
+
light: offer.logo.light,
|
|
13301
|
+
dark: offer.logo.dark ?? void 0,
|
|
13302
|
+
sizes: LOGO_SIZES,
|
|
13179
13303
|
alt: "",
|
|
13180
13304
|
width: 48,
|
|
13181
13305
|
height: 48,
|
|
@@ -13183,8 +13307,8 @@ function OfferAssetCard({
|
|
|
13183
13307
|
style: { maxWidth: "none", width: "100%", height: "100%" }
|
|
13184
13308
|
}
|
|
13185
13309
|
) }) : null,
|
|
13186
|
-
/* @__PURE__ */ (0,
|
|
13187
|
-
offer.name ? /* @__PURE__ */ (0,
|
|
13310
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:flex-1 clcosdk:flex-col clcosdk:items-start clcosdk:justify-center", children: [
|
|
13311
|
+
offer.name ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
13188
13312
|
"h2",
|
|
13189
13313
|
{
|
|
13190
13314
|
className: cn(
|
|
@@ -13193,13 +13317,13 @@ function OfferAssetCard({
|
|
|
13193
13317
|
children: offer.name
|
|
13194
13318
|
}
|
|
13195
13319
|
) : null,
|
|
13196
|
-
offer.symbol ? /* @__PURE__ */ (0,
|
|
13320
|
+
offer.symbol ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", { className: "clcosdk:w-full clcosdk:truncate clcosdk:text-[13px] clcosdk:leading-[150%] clcosdk:font-normal clcosdk:text-text-secondary clcosdk:md:text-[14px]", children: offer.symbol }) : null
|
|
13197
13321
|
] })
|
|
13198
13322
|
] })
|
|
13199
13323
|
}
|
|
13200
13324
|
);
|
|
13201
|
-
const wrapped = containerClassName ? /* @__PURE__ */ (0,
|
|
13202
|
-
return /* @__PURE__ */ (0,
|
|
13325
|
+
const wrapped = containerClassName ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: containerClassName, children: card }) : card;
|
|
13326
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(CoinListStyleScope, { children: wrapped });
|
|
13203
13327
|
}
|
|
13204
13328
|
function cardActionLabel(offer) {
|
|
13205
13329
|
const parts = [offer.name, offer.symbol].filter(Boolean);
|
|
@@ -13207,7 +13331,7 @@ function cardActionLabel(offer) {
|
|
|
13207
13331
|
}
|
|
13208
13332
|
|
|
13209
13333
|
// src/client/components/offers/grid/OffersAssetGrid.tsx
|
|
13210
|
-
var
|
|
13334
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
13211
13335
|
var DEFAULT_MAX_COLUMNS = 3;
|
|
13212
13336
|
function OffersAssetGrid({
|
|
13213
13337
|
offers,
|
|
@@ -13222,14 +13346,14 @@ function OffersAssetGrid({
|
|
|
13222
13346
|
);
|
|
13223
13347
|
const maxGridWidth = `calc(${cols} * 20rem + ${Math.max(cols - 1, 0)} * 1.5rem)`;
|
|
13224
13348
|
const interactive = onOfferClick !== void 0;
|
|
13225
|
-
return /* @__PURE__ */ (0,
|
|
13349
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
13226
13350
|
"div",
|
|
13227
13351
|
{
|
|
13228
13352
|
className: cn(
|
|
13229
13353
|
"clcosdk:flex clcosdk:w-full clcosdk:justify-center",
|
|
13230
13354
|
containerClassName
|
|
13231
13355
|
),
|
|
13232
|
-
children: /* @__PURE__ */ (0,
|
|
13356
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
13233
13357
|
"div",
|
|
13234
13358
|
{
|
|
13235
13359
|
className: cn(
|
|
@@ -13239,7 +13363,7 @@ function OffersAssetGrid({
|
|
|
13239
13363
|
className
|
|
13240
13364
|
),
|
|
13241
13365
|
style: { maxWidth: maxGridWidth },
|
|
13242
|
-
children: offers.map((offer) => /* @__PURE__ */ (0,
|
|
13366
|
+
children: offers.map((offer) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
13243
13367
|
OfferAssetCard,
|
|
13244
13368
|
{
|
|
13245
13369
|
offer,
|
|
@@ -13281,7 +13405,9 @@ function saleCardStatus({
|
|
|
13281
13405
|
}
|
|
13282
13406
|
|
|
13283
13407
|
// src/client/components/offers/shared/OfferSaleCard.tsx
|
|
13284
|
-
var
|
|
13408
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
13409
|
+
var HEADER_LOGO_SIZES = "(min-width: 768px) 36px, 32px";
|
|
13410
|
+
var WATERMARK_SIZES = "(min-width: 768px) 20rem, 15rem";
|
|
13285
13411
|
function OfferSaleCard({
|
|
13286
13412
|
offer,
|
|
13287
13413
|
onClick,
|
|
@@ -13296,7 +13422,8 @@ function OfferSaleCard({
|
|
|
13296
13422
|
secondsLeft
|
|
13297
13423
|
});
|
|
13298
13424
|
const interactive = onClick !== void 0;
|
|
13299
|
-
const
|
|
13425
|
+
const logo = offer.logo ? offer.logo.dark ?? offer.logo.light : null;
|
|
13426
|
+
const card = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
13300
13427
|
"article",
|
|
13301
13428
|
{
|
|
13302
13429
|
className: cn(
|
|
@@ -13311,16 +13438,17 @@ function OfferSaleCard({
|
|
|
13311
13438
|
onClick,
|
|
13312
13439
|
onKeyDown: interactive ? (event) => onOfferCardKeyDown(event, onClick) : void 0,
|
|
13313
13440
|
children: [
|
|
13314
|
-
|
|
13441
|
+
logo ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13315
13442
|
"div",
|
|
13316
13443
|
{
|
|
13317
13444
|
"aria-hidden": "true",
|
|
13318
13445
|
className: "clcosdk:pointer-events-none clcosdk:absolute clcosdk:top-1/2 clcosdk:right-[-14%] clcosdk:z-0 clcosdk:size-[15rem] clcosdk:-translate-y-1/2 clcosdk:md:right-[-10%] clcosdk:md:size-[20rem]",
|
|
13319
13446
|
style: { mixBlendMode: "overlay" },
|
|
13320
|
-
children: /* @__PURE__ */ (0,
|
|
13321
|
-
|
|
13447
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13448
|
+
ThemedImage,
|
|
13322
13449
|
{
|
|
13323
|
-
|
|
13450
|
+
light: logo,
|
|
13451
|
+
sizes: WATERMARK_SIZES,
|
|
13324
13452
|
alt: "",
|
|
13325
13453
|
className: "clcosdk:size-full clcosdk:rounded-full clcosdk:object-cover",
|
|
13326
13454
|
style: { maxWidth: "none", width: "100%", height: "100%" }
|
|
@@ -13328,12 +13456,13 @@ function OfferSaleCard({
|
|
|
13328
13456
|
)
|
|
13329
13457
|
}
|
|
13330
13458
|
) : null,
|
|
13331
|
-
/* @__PURE__ */ (0,
|
|
13332
|
-
/* @__PURE__ */ (0,
|
|
13333
|
-
|
|
13334
|
-
|
|
13459
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "clcosdk:relative clcosdk:z-10 clcosdk:flex clcosdk:flex-col clcosdk:gap-2 clcosdk:md:gap-3", children: [
|
|
13460
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:items-center clcosdk:gap-2.5 clcosdk:md:gap-3", children: [
|
|
13461
|
+
logo ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "clcosdk:h-8 clcosdk:w-8 clcosdk:shrink-0 clcosdk:overflow-hidden clcosdk:rounded-full clcosdk:md:h-9 clcosdk:md:w-9", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13462
|
+
ThemedImage,
|
|
13335
13463
|
{
|
|
13336
|
-
|
|
13464
|
+
light: logo,
|
|
13465
|
+
sizes: HEADER_LOGO_SIZES,
|
|
13337
13466
|
alt: "",
|
|
13338
13467
|
width: 36,
|
|
13339
13468
|
height: 36,
|
|
@@ -13341,7 +13470,7 @@ function OfferSaleCard({
|
|
|
13341
13470
|
style: { maxWidth: "none", width: "100%", height: "100%" }
|
|
13342
13471
|
}
|
|
13343
13472
|
) }) : null,
|
|
13344
|
-
offer.name ? /* @__PURE__ */ (0,
|
|
13473
|
+
offer.name ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13345
13474
|
"h2",
|
|
13346
13475
|
{
|
|
13347
13476
|
className: cn(
|
|
@@ -13351,7 +13480,7 @@ function OfferSaleCard({
|
|
|
13351
13480
|
}
|
|
13352
13481
|
) : null
|
|
13353
13482
|
] }),
|
|
13354
|
-
offer.tagline ? /* @__PURE__ */ (0,
|
|
13483
|
+
offer.tagline ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13355
13484
|
"p",
|
|
13356
13485
|
{
|
|
13357
13486
|
className: cn(
|
|
@@ -13362,20 +13491,20 @@ function OfferSaleCard({
|
|
|
13362
13491
|
}
|
|
13363
13492
|
) : null
|
|
13364
13493
|
] }),
|
|
13365
|
-
/* @__PURE__ */ (0,
|
|
13366
|
-
/* @__PURE__ */ (0,
|
|
13367
|
-
status.phase === "live" ? /* @__PURE__ */ (0,
|
|
13494
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "clcosdk:relative clcosdk:z-10 clcosdk:mt-auto clcosdk:flex clcosdk:h-11 clcosdk:w-full clcosdk:min-w-0 clcosdk:items-center clcosdk:justify-between clcosdk:gap-2 clcosdk:rounded-full clcosdk:border clcosdk:border-sale-card-chrome-border clcosdk:bg-sale-card-chrome-bg clcosdk:py-1.5 clcosdk:pr-1.5 clcosdk:pl-3 clcosdk:md:h-[54px] clcosdk:md:gap-3 clcosdk:md:py-2 clcosdk:md:pr-2 clcosdk:md:pl-4", children: [
|
|
13495
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:items-center clcosdk:gap-2 clcosdk:md:gap-3", children: [
|
|
13496
|
+
status.phase === "live" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
13368
13497
|
"span",
|
|
13369
13498
|
{
|
|
13370
13499
|
className: "clcosdk:relative clcosdk:inline-flex clcosdk:size-2 clcosdk:shrink-0",
|
|
13371
13500
|
"aria-hidden": "true",
|
|
13372
13501
|
children: [
|
|
13373
|
-
/* @__PURE__ */ (0,
|
|
13374
|
-
/* @__PURE__ */ (0,
|
|
13502
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "clcosdk-status-dot-ping clcosdk:absolute clcosdk:inset-0 clcosdk:rounded-full clcosdk:bg-positive" }),
|
|
13503
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "clcosdk:relative clcosdk:inline-flex clcosdk:size-full clcosdk:rounded-full clcosdk:bg-positive" })
|
|
13375
13504
|
]
|
|
13376
13505
|
}
|
|
13377
13506
|
) : null,
|
|
13378
|
-
/* @__PURE__ */ (0,
|
|
13507
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13379
13508
|
"p",
|
|
13380
13509
|
{
|
|
13381
13510
|
className: cn(
|
|
@@ -13386,7 +13515,7 @@ function OfferSaleCard({
|
|
|
13386
13515
|
}
|
|
13387
13516
|
)
|
|
13388
13517
|
] }),
|
|
13389
|
-
/* @__PURE__ */ (0,
|
|
13518
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
13390
13519
|
"span",
|
|
13391
13520
|
{
|
|
13392
13521
|
className: cn(
|
|
@@ -13396,8 +13525,8 @@ function OfferSaleCard({
|
|
|
13396
13525
|
"aria-hidden": "true",
|
|
13397
13526
|
children: [
|
|
13398
13527
|
"View",
|
|
13399
|
-
/* @__PURE__ */ (0,
|
|
13400
|
-
/* @__PURE__ */ (0,
|
|
13528
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "clcosdk:max-md:hidden", children: " offer" }),
|
|
13529
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react13.ArrowRight, { className: "clcosdk:size-4", "aria-hidden": true })
|
|
13401
13530
|
]
|
|
13402
13531
|
}
|
|
13403
13532
|
)
|
|
@@ -13405,8 +13534,8 @@ function OfferSaleCard({
|
|
|
13405
13534
|
]
|
|
13406
13535
|
}
|
|
13407
13536
|
);
|
|
13408
|
-
const wrapped = containerClassName ? /* @__PURE__ */ (0,
|
|
13409
|
-
return /* @__PURE__ */ (0,
|
|
13537
|
+
const wrapped = containerClassName ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: containerClassName, children: card }) : card;
|
|
13538
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(CoinListStyleScope, { children: wrapped });
|
|
13410
13539
|
}
|
|
13411
13540
|
var SALE_PHASE_LABEL = {
|
|
13412
13541
|
upcoming: "Upcoming",
|
|
@@ -13419,10 +13548,10 @@ function cardActionLabel2(offer, phase) {
|
|
|
13419
13548
|
}
|
|
13420
13549
|
|
|
13421
13550
|
// src/client/components/offers/grid/OffersGridView.tsx
|
|
13422
|
-
var
|
|
13551
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
13423
13552
|
var DEFAULT_MAX_COLUMNS2 = 2;
|
|
13424
13553
|
function OffersGridView(props) {
|
|
13425
|
-
return /* @__PURE__ */ (0,
|
|
13554
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(OffersGridViewBody, { ...props }) });
|
|
13426
13555
|
}
|
|
13427
13556
|
function OffersGridViewBody({
|
|
13428
13557
|
state,
|
|
@@ -13436,13 +13565,13 @@ function OffersGridViewBody({
|
|
|
13436
13565
|
}) {
|
|
13437
13566
|
switch (state.type) {
|
|
13438
13567
|
case "loading":
|
|
13439
|
-
return loading ?? /* @__PURE__ */ (0,
|
|
13568
|
+
return loading ?? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(LoadingState, {});
|
|
13440
13569
|
case "error":
|
|
13441
|
-
return error ?? /* @__PURE__ */ (0,
|
|
13570
|
+
return error ?? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(ErrorState, { message: state.message });
|
|
13442
13571
|
case "empty":
|
|
13443
|
-
return emptyState ?? /* @__PURE__ */ (0,
|
|
13572
|
+
return emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(EmptyState, {});
|
|
13444
13573
|
case "content":
|
|
13445
|
-
return /* @__PURE__ */ (0,
|
|
13574
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13446
13575
|
OffersGridContent,
|
|
13447
13576
|
{
|
|
13448
13577
|
offers: state.offers,
|
|
@@ -13472,14 +13601,14 @@ function OffersGridContent({
|
|
|
13472
13601
|
Math.max(1, maxColumns ?? DEFAULT_MAX_COLUMNS2)
|
|
13473
13602
|
);
|
|
13474
13603
|
const maxGridWidth = `calc(${cols} * 28rem + ${Math.max(cols - 1, 0)} * 1.5rem)`;
|
|
13475
|
-
return /* @__PURE__ */ (0,
|
|
13604
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13476
13605
|
"div",
|
|
13477
13606
|
{
|
|
13478
13607
|
className: cn(
|
|
13479
13608
|
"clcosdk:flex clcosdk:w-full clcosdk:justify-center",
|
|
13480
13609
|
containerClassName
|
|
13481
13610
|
),
|
|
13482
|
-
children: /* @__PURE__ */ (0,
|
|
13611
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13483
13612
|
"div",
|
|
13484
13613
|
{
|
|
13485
13614
|
className: cn(
|
|
@@ -13488,7 +13617,7 @@ function OffersGridContent({
|
|
|
13488
13617
|
className
|
|
13489
13618
|
),
|
|
13490
13619
|
style: { maxWidth: maxGridWidth },
|
|
13491
|
-
children: offers.map((offer) => /* @__PURE__ */ (0,
|
|
13620
|
+
children: offers.map((offer) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13492
13621
|
OfferSaleCard,
|
|
13493
13622
|
{
|
|
13494
13623
|
offer,
|
|
@@ -13502,17 +13631,17 @@ function OffersGridContent({
|
|
|
13502
13631
|
);
|
|
13503
13632
|
}
|
|
13504
13633
|
function LoadingState() {
|
|
13505
|
-
return /* @__PURE__ */ (0,
|
|
13634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13506
13635
|
"output",
|
|
13507
13636
|
{
|
|
13508
13637
|
"aria-live": "polite",
|
|
13509
13638
|
className: "clcosdk:flex clcosdk:min-h-40 clcosdk:items-center clcosdk:justify-center clcosdk:rounded-2xl clcosdk:border clcosdk:border-border clcosdk:bg-background clcosdk:p-6",
|
|
13510
|
-
children: /* @__PURE__ */ (0,
|
|
13639
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading offers..." })
|
|
13511
13640
|
}
|
|
13512
13641
|
);
|
|
13513
13642
|
}
|
|
13514
13643
|
function ErrorState({ message }) {
|
|
13515
|
-
return /* @__PURE__ */ (0,
|
|
13644
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13516
13645
|
AlertBanner,
|
|
13517
13646
|
{
|
|
13518
13647
|
variant: "error",
|
|
@@ -13523,13 +13652,13 @@ function ErrorState({ message }) {
|
|
|
13523
13652
|
);
|
|
13524
13653
|
}
|
|
13525
13654
|
function EmptyState() {
|
|
13526
|
-
return /* @__PURE__ */ (0,
|
|
13655
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
|
|
13527
13656
|
"output",
|
|
13528
13657
|
{
|
|
13529
13658
|
"aria-live": "polite",
|
|
13530
13659
|
className: "clcosdk:flex clcosdk:min-h-40 clcosdk:flex-col clcosdk:items-center clcosdk:justify-center clcosdk:gap-2 clcosdk:rounded-2xl clcosdk:border clcosdk:border-border clcosdk:bg-background clcosdk:p-6 clcosdk:text-center",
|
|
13531
13660
|
children: [
|
|
13532
|
-
/* @__PURE__ */ (0,
|
|
13661
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13533
13662
|
"p",
|
|
13534
13663
|
{
|
|
13535
13664
|
className: cn(
|
|
@@ -13539,14 +13668,14 @@ function EmptyState() {
|
|
|
13539
13668
|
children: "No offers available"
|
|
13540
13669
|
}
|
|
13541
13670
|
),
|
|
13542
|
-
/* @__PURE__ */ (0,
|
|
13671
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("p", { className: cn(typeClasses.subhead, "clcosdk:text-text-secondary"), children: "Check back soon for upcoming opportunities." })
|
|
13543
13672
|
]
|
|
13544
13673
|
}
|
|
13545
13674
|
);
|
|
13546
13675
|
}
|
|
13547
13676
|
|
|
13548
13677
|
// src/client/hooks/offers/grid/useOffersGridViewModel.ts
|
|
13549
|
-
var
|
|
13678
|
+
var import_react38 = require("react");
|
|
13550
13679
|
|
|
13551
13680
|
// src/client/hooks/offers/data/useOffers.ts
|
|
13552
13681
|
var import_react36 = require("react");
|
|
@@ -13604,19 +13733,56 @@ function useOffers(options = {}) {
|
|
|
13604
13733
|
return { offersState };
|
|
13605
13734
|
}
|
|
13606
13735
|
|
|
13736
|
+
// src/client/hooks/offers/shared/offer-logo.types.ts
|
|
13737
|
+
var CARD_LOGO_WIDTH = 96;
|
|
13738
|
+
var OfferLogoUi = {
|
|
13739
|
+
/**
|
|
13740
|
+
* The registry's logo for the token an offer is about, or the offer's own
|
|
13741
|
+
* artwork otherwise, or `null` when neither exists.
|
|
13742
|
+
*
|
|
13743
|
+
* The registry wins when both exist because it is the token's real artwork
|
|
13744
|
+
* where `Offer.logoUrl` is catalogue artwork, and because a swap publishes
|
|
13745
|
+
* without artwork more often than not - which is why `logoUrl` is `null`
|
|
13746
|
+
* on the swap variants.
|
|
13747
|
+
*/
|
|
13748
|
+
fromOffer: (offer, tokenMetadata) => {
|
|
13749
|
+
const light = tokenMetadata ? logoImage(tokenMetadata.logo) : null;
|
|
13750
|
+
if (light !== null) {
|
|
13751
|
+
const dark = tokenMetadata?.logoDark ? logoImage(tokenMetadata.logoDark) : null;
|
|
13752
|
+
return { light, dark };
|
|
13753
|
+
}
|
|
13754
|
+
return offer.logoUrl ? { light: { src: offer.logoUrl }, dark: null } : null;
|
|
13755
|
+
}
|
|
13756
|
+
};
|
|
13757
|
+
function logoImage(logo) {
|
|
13758
|
+
const src = tokenLogoUrl(logo, CARD_LOGO_WIDTH);
|
|
13759
|
+
if (src === null) {
|
|
13760
|
+
return null;
|
|
13761
|
+
}
|
|
13762
|
+
const srcSet = tokenLogoSrcSet(logo);
|
|
13763
|
+
return srcSet === null ? { src } : { src, srcSet };
|
|
13764
|
+
}
|
|
13765
|
+
|
|
13607
13766
|
// src/client/hooks/offers/shared/offer-sale-card.types.ts
|
|
13608
13767
|
var OfferSaleCardUi = {
|
|
13609
|
-
|
|
13768
|
+
/**
|
|
13769
|
+
* `tokenMetadata` is the registry's entry for the token the offer is about
|
|
13770
|
+
* (`TokenRegistrySnapshot.forOffer`), or `null` when it lists none. The
|
|
13771
|
+
* registry names win over the offer's own where both exist: they are the
|
|
13772
|
+
* token's canonical name and artwork, where the offer's are catalogue copy.
|
|
13773
|
+
*/
|
|
13774
|
+
fromOffer: (offer, tokenMetadata = null) => ({
|
|
13610
13775
|
id: offer.id,
|
|
13776
|
+
...tokenMetadata ? { name: tokenMetadata.name } : {},
|
|
13611
13777
|
...saleWindow(offer),
|
|
13612
|
-
|
|
13778
|
+
logo: OfferLogoUi.fromOffer(offer, tokenMetadata),
|
|
13613
13779
|
endsAt: offer.endsAt
|
|
13614
13780
|
}),
|
|
13615
|
-
fromDetail: (detail) => ({
|
|
13781
|
+
fromDetail: (detail, tokenMetadata = null) => ({
|
|
13616
13782
|
id: detail.id,
|
|
13617
|
-
name: detail.name,
|
|
13783
|
+
name: tokenMetadata?.name ?? detail.name,
|
|
13618
13784
|
...saleWindow(detail),
|
|
13619
|
-
|
|
13785
|
+
logo: OfferLogoUi.fromOffer(detail, tokenMetadata),
|
|
13620
13786
|
endsAt: detail.endsAt
|
|
13621
13787
|
})
|
|
13622
13788
|
};
|
|
@@ -13634,17 +13800,80 @@ function saleWindow(offer) {
|
|
|
13634
13800
|
}
|
|
13635
13801
|
}
|
|
13636
13802
|
|
|
13803
|
+
// src/client/hooks/shared/useTokenRegistry.ts
|
|
13804
|
+
var import_react37 = require("react");
|
|
13805
|
+
var DISABLED_STATE2 = { type: "DISABLED" };
|
|
13806
|
+
var LOADING_STATE4 = { type: "LOADING" };
|
|
13807
|
+
function useTokenRegistry(options = {}) {
|
|
13808
|
+
const { data, enabled = true } = options;
|
|
13809
|
+
const { coinlist, isReady } = useCoinList();
|
|
13810
|
+
const log = useLogger("useTokenRegistry");
|
|
13811
|
+
const [state, setState] = (0, import_react37.useState)(
|
|
13812
|
+
() => data !== void 0 ? { type: "CONTENT", registry: TokenRegistrySnapshot.fromTokens(data) } : LOADING_STATE4
|
|
13813
|
+
);
|
|
13814
|
+
const [refetchCount, setRefetchCount] = (0, import_react37.useState)(0);
|
|
13815
|
+
const refetch = (0, import_react37.useCallback)(() => {
|
|
13816
|
+
setRefetchCount((count) => count + 1);
|
|
13817
|
+
}, []);
|
|
13818
|
+
(0, import_react37.useEffect)(() => {
|
|
13819
|
+
let isCancelled = false;
|
|
13820
|
+
const seedActive = data !== void 0 && refetchCount === 0;
|
|
13821
|
+
if (!isReady || !enabled || seedActive) {
|
|
13822
|
+
return () => {
|
|
13823
|
+
isCancelled = true;
|
|
13824
|
+
};
|
|
13825
|
+
}
|
|
13826
|
+
setState(LOADING_STATE4);
|
|
13827
|
+
coinlist.tokens.list().then((tokens) => {
|
|
13828
|
+
if (!isCancelled) {
|
|
13829
|
+
log.debug(() => ({
|
|
13830
|
+
msg: "settled",
|
|
13831
|
+
fields: { state: "CONTENT", count: tokens.length }
|
|
13832
|
+
}));
|
|
13833
|
+
setState({
|
|
13834
|
+
type: "CONTENT",
|
|
13835
|
+
registry: TokenRegistrySnapshot.fromTokens(tokens)
|
|
13836
|
+
});
|
|
13837
|
+
}
|
|
13838
|
+
}).catch((error) => {
|
|
13839
|
+
if (!isCancelled) {
|
|
13840
|
+
log.failure(
|
|
13841
|
+
() => ({
|
|
13842
|
+
msg: "settled",
|
|
13843
|
+
fields: { state: "ERROR", reason: "generic-error" }
|
|
13844
|
+
}),
|
|
13845
|
+
error
|
|
13846
|
+
);
|
|
13847
|
+
setState({ type: "ERROR", reason: "generic-error" });
|
|
13848
|
+
}
|
|
13849
|
+
});
|
|
13850
|
+
return () => {
|
|
13851
|
+
isCancelled = true;
|
|
13852
|
+
};
|
|
13853
|
+
}, [coinlist, isReady, enabled, data, refetchCount, log]);
|
|
13854
|
+
return {
|
|
13855
|
+
// LOADING would be a lie while disabled: nothing is in flight and nothing
|
|
13856
|
+
// will replace it. Settled states (a seed, a previous answer) survive.
|
|
13857
|
+
state: !enabled && state.type === "LOADING" ? DISABLED_STATE2 : state,
|
|
13858
|
+
refetch
|
|
13859
|
+
};
|
|
13860
|
+
}
|
|
13861
|
+
|
|
13637
13862
|
// src/client/hooks/offers/grid/useOffersGridViewModel.ts
|
|
13638
13863
|
var NOT_AUTHENTICATED_MESSAGE = "Sign in to view available offers.";
|
|
13639
13864
|
var GENERIC_ERROR_MESSAGE = "Unable to load offers right now. Please try again.";
|
|
13640
13865
|
function useOffersGridViewModel(options = {}) {
|
|
13641
13866
|
const { data, onOfferClick, enabled = true } = options;
|
|
13642
|
-
const { offersState } = useOffers({ data, enabled });
|
|
13643
|
-
const state = (
|
|
13644
|
-
|
|
13645
|
-
|
|
13867
|
+
const { offersState } = useOffers({ data: data?.offers, enabled });
|
|
13868
|
+
const { state: registryState } = useTokenRegistry({
|
|
13869
|
+
data: data?.tokens,
|
|
13870
|
+
enabled
|
|
13871
|
+
});
|
|
13872
|
+
const state = (0, import_react38.useMemo)(
|
|
13873
|
+
() => toUiState(offersState, registryState, onOfferClick !== void 0),
|
|
13874
|
+
[offersState, registryState, onOfferClick]
|
|
13646
13875
|
);
|
|
13647
|
-
const onEvent = (0,
|
|
13876
|
+
const onEvent = (0, import_react38.useCallback)(
|
|
13648
13877
|
(event) => {
|
|
13649
13878
|
switch (event.type) {
|
|
13650
13879
|
case "ON_OFFER_CLICK": {
|
|
@@ -13667,7 +13896,7 @@ function useOffersGridViewModel(options = {}) {
|
|
|
13667
13896
|
);
|
|
13668
13897
|
return { state, onEvent };
|
|
13669
13898
|
}
|
|
13670
|
-
function toUiState(offersState, interactive) {
|
|
13899
|
+
function toUiState(offersState, registryState, interactive) {
|
|
13671
13900
|
switch (offersState.type) {
|
|
13672
13901
|
case "LOADING":
|
|
13673
13902
|
return { type: "loading" };
|
|
@@ -13680,9 +13909,18 @@ function toUiState(offersState, interactive) {
|
|
|
13680
13909
|
if (offersState.offers.length === 0) {
|
|
13681
13910
|
return { type: "empty" };
|
|
13682
13911
|
}
|
|
13912
|
+
if (registryState.type === "LOADING") {
|
|
13913
|
+
return { type: "loading" };
|
|
13914
|
+
}
|
|
13915
|
+
const registry = registryState.type === "CONTENT" ? registryState.registry : null;
|
|
13683
13916
|
return {
|
|
13684
13917
|
type: "content",
|
|
13685
|
-
offers: offersState.offers.map(
|
|
13918
|
+
offers: offersState.offers.map(
|
|
13919
|
+
(offer) => OfferSaleCardUi.fromOffer(
|
|
13920
|
+
offer,
|
|
13921
|
+
registry ? TokenRegistrySnapshot.forOffer(registry, offer) : null
|
|
13922
|
+
)
|
|
13923
|
+
),
|
|
13686
13924
|
interactive
|
|
13687
13925
|
};
|
|
13688
13926
|
}
|
|
@@ -13694,7 +13932,7 @@ function toUiState(offersState, interactive) {
|
|
|
13694
13932
|
}
|
|
13695
13933
|
|
|
13696
13934
|
// src/client/components/offers/grid/OffersGridContainer.tsx
|
|
13697
|
-
var
|
|
13935
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
13698
13936
|
function OffersGridContainer({
|
|
13699
13937
|
data,
|
|
13700
13938
|
onOfferClick,
|
|
@@ -13706,17 +13944,17 @@ function OffersGridContainer({
|
|
|
13706
13944
|
onOfferClick,
|
|
13707
13945
|
enabled
|
|
13708
13946
|
});
|
|
13709
|
-
return /* @__PURE__ */ (0,
|
|
13947
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(OffersGridView, { state, onEvent, ...viewProps });
|
|
13710
13948
|
}
|
|
13711
13949
|
|
|
13712
13950
|
// src/client/components/requirements/ConnectedWalletList.tsx
|
|
13713
|
-
var
|
|
13714
|
-
var
|
|
13951
|
+
var import_react39 = require("react");
|
|
13952
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
13715
13953
|
function ConnectedWalletRow({
|
|
13716
13954
|
wallet,
|
|
13717
13955
|
onRemove
|
|
13718
13956
|
}) {
|
|
13719
|
-
const [state, setState] = (0,
|
|
13957
|
+
const [state, setState] = (0, import_react39.useState)("idle");
|
|
13720
13958
|
const remove = async () => {
|
|
13721
13959
|
if (!onRemove) return;
|
|
13722
13960
|
setState("removing");
|
|
@@ -13727,8 +13965,8 @@ function ConnectedWalletRow({
|
|
|
13727
13965
|
setState("error");
|
|
13728
13966
|
}
|
|
13729
13967
|
};
|
|
13730
|
-
return /* @__PURE__ */ (0,
|
|
13731
|
-
/* @__PURE__ */ (0,
|
|
13968
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "clcosdk:flex clcosdk:min-h-9 clcosdk:flex-wrap clcosdk:items-center clcosdk:justify-between clcosdk:gap-2", children: [
|
|
13969
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13732
13970
|
"span",
|
|
13733
13971
|
{
|
|
13734
13972
|
title: wallet.address,
|
|
@@ -13739,16 +13977,16 @@ function ConnectedWalletRow({
|
|
|
13739
13977
|
children: wallet.shortAddress
|
|
13740
13978
|
}
|
|
13741
13979
|
),
|
|
13742
|
-
onRemove != null && (state === "confirming" ? /* @__PURE__ */ (0,
|
|
13743
|
-
/* @__PURE__ */ (0,
|
|
13980
|
+
onRemove != null && (state === "confirming" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-2", children: [
|
|
13981
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13744
13982
|
"span",
|
|
13745
13983
|
{
|
|
13746
13984
|
className: cn(typeClasses.subhead, "clcosdk:text-text-secondary"),
|
|
13747
13985
|
children: "Remove?"
|
|
13748
13986
|
}
|
|
13749
13987
|
),
|
|
13750
|
-
/* @__PURE__ */ (0,
|
|
13751
|
-
/* @__PURE__ */ (0,
|
|
13988
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ClButton, { size: "sm", variant: "destructive", onClick: remove, children: "Remove" }),
|
|
13989
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13752
13990
|
ClButton,
|
|
13753
13991
|
{
|
|
13754
13992
|
size: "sm",
|
|
@@ -13757,9 +13995,9 @@ function ConnectedWalletRow({
|
|
|
13757
13995
|
children: "Cancel"
|
|
13758
13996
|
}
|
|
13759
13997
|
)
|
|
13760
|
-
] }) : state === "error" ? /* @__PURE__ */ (0,
|
|
13761
|
-
/* @__PURE__ */ (0,
|
|
13762
|
-
/* @__PURE__ */ (0,
|
|
13998
|
+
] }) : state === "error" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-2", children: [
|
|
13999
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: cn(typeClasses.subhead, "clcosdk:text-error"), children: "Couldn't remove." }),
|
|
14000
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13763
14001
|
ClButton,
|
|
13764
14002
|
{
|
|
13765
14003
|
size: "sm",
|
|
@@ -13768,7 +14006,7 @@ function ConnectedWalletRow({
|
|
|
13768
14006
|
children: "Try again"
|
|
13769
14007
|
}
|
|
13770
14008
|
)
|
|
13771
|
-
] }) : /* @__PURE__ */ (0,
|
|
14009
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13772
14010
|
ClButton,
|
|
13773
14011
|
{
|
|
13774
14012
|
size: "sm",
|
|
@@ -13781,7 +14019,7 @@ function ConnectedWalletRow({
|
|
|
13781
14019
|
] });
|
|
13782
14020
|
}
|
|
13783
14021
|
function ConnectedWalletList(props) {
|
|
13784
|
-
return /* @__PURE__ */ (0,
|
|
14022
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ConnectedWalletListBody, { ...props }) });
|
|
13785
14023
|
}
|
|
13786
14024
|
function ConnectedWalletListBody({
|
|
13787
14025
|
wallets,
|
|
@@ -13791,18 +14029,18 @@ function ConnectedWalletListBody({
|
|
|
13791
14029
|
status = "ready",
|
|
13792
14030
|
className
|
|
13793
14031
|
}) {
|
|
13794
|
-
return /* @__PURE__ */ (0,
|
|
14032
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
13795
14033
|
"div",
|
|
13796
14034
|
{
|
|
13797
14035
|
className: cn("clcosdk:flex clcosdk:flex-col clcosdk:gap-2", className),
|
|
13798
14036
|
children: [
|
|
13799
|
-
status === "loading" ? /* @__PURE__ */ (0,
|
|
14037
|
+
status === "loading" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(AlertBanner, { variant: "info", content: "Loading your connected wallets\u2026" }) : status === "error" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13800
14038
|
AlertBanner,
|
|
13801
14039
|
{
|
|
13802
14040
|
variant: "error",
|
|
13803
14041
|
content: "Couldn't load your connected wallets."
|
|
13804
14042
|
}
|
|
13805
|
-
) : wallets.length === 0 ? /* @__PURE__ */ (0,
|
|
14043
|
+
) : wallets.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(AlertBanner, { variant: "info", content: "No wallets connected yet." }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:divide-y clcosdk:divide-divider", children: wallets.map((wallet) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13806
14044
|
ConnectedWalletRow,
|
|
13807
14045
|
{
|
|
13808
14046
|
wallet,
|
|
@@ -13810,7 +14048,7 @@ function ConnectedWalletListBody({
|
|
|
13810
14048
|
},
|
|
13811
14049
|
wallet.id
|
|
13812
14050
|
)) }),
|
|
13813
|
-
onAdd != null && status !== "loading" && /* @__PURE__ */ (0,
|
|
14051
|
+
onAdd != null && status !== "loading" && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13814
14052
|
ClButton,
|
|
13815
14053
|
{
|
|
13816
14054
|
size: "sm",
|
|
@@ -13827,9 +14065,9 @@ function ConnectedWalletListBody({
|
|
|
13827
14065
|
|
|
13828
14066
|
// src/client/components/requirements/identity-verification/IdentityVerificationView.tsx
|
|
13829
14067
|
var import_websdk_react = __toESM(require("@sumsub/websdk-react"), 1);
|
|
13830
|
-
var
|
|
14068
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
13831
14069
|
function IdentityVerificationView(props) {
|
|
13832
|
-
return /* @__PURE__ */ (0,
|
|
14070
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(IdentityVerificationViewBody, { ...props }) });
|
|
13833
14071
|
}
|
|
13834
14072
|
function IdentityVerificationViewBody({
|
|
13835
14073
|
state,
|
|
@@ -13838,7 +14076,7 @@ function IdentityVerificationViewBody({
|
|
|
13838
14076
|
}) {
|
|
13839
14077
|
switch (state.type) {
|
|
13840
14078
|
case "loading":
|
|
13841
|
-
return /* @__PURE__ */ (0,
|
|
14079
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
13842
14080
|
"output",
|
|
13843
14081
|
{
|
|
13844
14082
|
"aria-live": "polite",
|
|
@@ -13846,11 +14084,11 @@ function IdentityVerificationViewBody({
|
|
|
13846
14084
|
"clcosdk:flex clcosdk:min-h-40 clcosdk:items-center clcosdk:justify-center",
|
|
13847
14085
|
className
|
|
13848
14086
|
),
|
|
13849
|
-
children: /* @__PURE__ */ (0,
|
|
14087
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading identity verification..." })
|
|
13850
14088
|
}
|
|
13851
14089
|
);
|
|
13852
14090
|
case "error":
|
|
13853
|
-
return /* @__PURE__ */ (0,
|
|
14091
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
13854
14092
|
"div",
|
|
13855
14093
|
{
|
|
13856
14094
|
className: cn(
|
|
@@ -13858,13 +14096,13 @@ function IdentityVerificationViewBody({
|
|
|
13858
14096
|
className
|
|
13859
14097
|
),
|
|
13860
14098
|
children: [
|
|
13861
|
-
/* @__PURE__ */ (0,
|
|
13862
|
-
state.retryable && /* @__PURE__ */ (0,
|
|
14099
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(AlertBanner, { variant: "error", icon: true, content: state.message }),
|
|
14100
|
+
state.retryable && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(ClButton, { size: "sm", onClick: () => onEvent({ type: "ON_RETRY" }), children: "Try again" })
|
|
13863
14101
|
]
|
|
13864
14102
|
}
|
|
13865
14103
|
);
|
|
13866
14104
|
case "ready":
|
|
13867
|
-
return /* @__PURE__ */ (0,
|
|
14105
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: cn("clcosdk:w-full", className), children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
13868
14106
|
import_websdk_react.default,
|
|
13869
14107
|
{
|
|
13870
14108
|
accessToken: state.accessToken,
|
|
@@ -13904,25 +14142,25 @@ function toError(error) {
|
|
|
13904
14142
|
}
|
|
13905
14143
|
|
|
13906
14144
|
// src/client/hooks/requirements/identity-verification/useIdentityVerificationViewModel.ts
|
|
13907
|
-
var
|
|
14145
|
+
var import_react41 = require("react");
|
|
13908
14146
|
|
|
13909
14147
|
// src/client/hooks/requirements/data/useKycToken.ts
|
|
13910
|
-
var
|
|
14148
|
+
var import_react40 = require("react");
|
|
13911
14149
|
var IDLE_STATE = { type: "IDLE" };
|
|
13912
|
-
var
|
|
14150
|
+
var LOADING_STATE5 = { type: "LOADING" };
|
|
13913
14151
|
function useKycToken(levelName, reset) {
|
|
13914
14152
|
const { coinlist } = useCoinList();
|
|
13915
14153
|
const log = useLogger("useKycToken");
|
|
13916
|
-
const [kycTokenState, setKycTokenState] = (0,
|
|
13917
|
-
const resetPendingRef = (0,
|
|
13918
|
-
const tokenIssuedRef = (0,
|
|
13919
|
-
(0,
|
|
14154
|
+
const [kycTokenState, setKycTokenState] = (0, import_react40.useState)(IDLE_STATE);
|
|
14155
|
+
const resetPendingRef = (0, import_react40.useRef)(reset === true);
|
|
14156
|
+
const tokenIssuedRef = (0, import_react40.useRef)(false);
|
|
14157
|
+
(0, import_react40.useEffect)(() => {
|
|
13920
14158
|
if (!tokenIssuedRef.current) {
|
|
13921
14159
|
resetPendingRef.current = reset === true;
|
|
13922
14160
|
}
|
|
13923
14161
|
}, [reset]);
|
|
13924
|
-
const fetchToken = (0,
|
|
13925
|
-
setKycTokenState(
|
|
14162
|
+
const fetchToken = (0, import_react40.useCallback)(async () => {
|
|
14163
|
+
setKycTokenState(LOADING_STATE5);
|
|
13926
14164
|
try {
|
|
13927
14165
|
const kycToken = await coinlist.requirements.createKycToken({
|
|
13928
14166
|
levelName,
|
|
@@ -13955,8 +14193,8 @@ var GENERIC_ERROR_MESSAGE2 = "Unable to start identity verification right now. P
|
|
|
13955
14193
|
function useIdentityVerificationViewModel(options = {}) {
|
|
13956
14194
|
const { levelName, reset, locale, onSubmitted, onError } = options;
|
|
13957
14195
|
const { kycTokenState, fetchToken } = useKycToken(levelName, reset);
|
|
13958
|
-
const fetchedRef = (0,
|
|
13959
|
-
(0,
|
|
14196
|
+
const fetchedRef = (0, import_react41.useRef)(false);
|
|
14197
|
+
(0, import_react41.useEffect)(() => {
|
|
13960
14198
|
if (fetchedRef.current) {
|
|
13961
14199
|
return;
|
|
13962
14200
|
}
|
|
@@ -13964,7 +14202,7 @@ function useIdentityVerificationViewModel(options = {}) {
|
|
|
13964
14202
|
fetchToken().catch(() => {
|
|
13965
14203
|
});
|
|
13966
14204
|
}, [fetchToken]);
|
|
13967
|
-
const state = (0,
|
|
14205
|
+
const state = (0, import_react41.useMemo)(() => {
|
|
13968
14206
|
switch (kycTokenState.type) {
|
|
13969
14207
|
case "IDLE":
|
|
13970
14208
|
case "LOADING":
|
|
@@ -13990,7 +14228,7 @@ function useIdentityVerificationViewModel(options = {}) {
|
|
|
13990
14228
|
}
|
|
13991
14229
|
}
|
|
13992
14230
|
}, [kycTokenState, locale, fetchToken]);
|
|
13993
|
-
const onEvent = (0,
|
|
14231
|
+
const onEvent = (0, import_react41.useCallback)(
|
|
13994
14232
|
(event) => {
|
|
13995
14233
|
switch (event.type) {
|
|
13996
14234
|
case "ON_RETRY":
|
|
@@ -14015,7 +14253,7 @@ function useIdentityVerificationViewModel(options = {}) {
|
|
|
14015
14253
|
}
|
|
14016
14254
|
|
|
14017
14255
|
// src/client/components/requirements/identity-verification/IdentityVerificationContainer.tsx
|
|
14018
|
-
var
|
|
14256
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
14019
14257
|
function IdentityVerificationContainer({
|
|
14020
14258
|
levelName,
|
|
14021
14259
|
reset,
|
|
@@ -14031,7 +14269,7 @@ function IdentityVerificationContainer({
|
|
|
14031
14269
|
onSubmitted,
|
|
14032
14270
|
onError
|
|
14033
14271
|
});
|
|
14034
|
-
return /* @__PURE__ */ (0,
|
|
14272
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
14035
14273
|
IdentityVerificationView,
|
|
14036
14274
|
{
|
|
14037
14275
|
state,
|
|
@@ -14046,7 +14284,7 @@ var import_lucide_react15 = require("lucide-react");
|
|
|
14046
14284
|
|
|
14047
14285
|
// src/client/components/design-system/StepStatusIcon.tsx
|
|
14048
14286
|
var import_lucide_react14 = require("lucide-react");
|
|
14049
|
-
var
|
|
14287
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
14050
14288
|
var statusConfig = {
|
|
14051
14289
|
required: {
|
|
14052
14290
|
Icon: import_lucide_react14.Info,
|
|
@@ -14071,7 +14309,7 @@ var statusConfig = {
|
|
|
14071
14309
|
};
|
|
14072
14310
|
function StepStatusIcon({ status, className }) {
|
|
14073
14311
|
const { Icon, colorClass, fillClass } = statusConfig[status];
|
|
14074
|
-
return /* @__PURE__ */ (0,
|
|
14312
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
14075
14313
|
Icon,
|
|
14076
14314
|
{
|
|
14077
14315
|
className: cn(
|
|
@@ -14086,7 +14324,7 @@ function StepStatusIcon({ status, className }) {
|
|
|
14086
14324
|
}
|
|
14087
14325
|
|
|
14088
14326
|
// src/client/components/requirements/RequirementItem.tsx
|
|
14089
|
-
var
|
|
14327
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
14090
14328
|
function VerificationActionZone({
|
|
14091
14329
|
status,
|
|
14092
14330
|
onAction,
|
|
@@ -14095,9 +14333,9 @@ function VerificationActionZone({
|
|
|
14095
14333
|
switch (status) {
|
|
14096
14334
|
case "required":
|
|
14097
14335
|
if (onAction === null) return null;
|
|
14098
|
-
return /* @__PURE__ */ (0,
|
|
14336
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ClButton, { size: "sm", onClick: onAction, children: "Continue" });
|
|
14099
14337
|
case "pending":
|
|
14100
|
-
return /* @__PURE__ */ (0,
|
|
14338
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14101
14339
|
AlertBanner,
|
|
14102
14340
|
{
|
|
14103
14341
|
variant: "warning",
|
|
@@ -14105,16 +14343,16 @@ function VerificationActionZone({
|
|
|
14105
14343
|
}
|
|
14106
14344
|
);
|
|
14107
14345
|
case "completed":
|
|
14108
|
-
return /* @__PURE__ */ (0,
|
|
14346
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(AlertBanner, { variant: "success", content: "Identity verified." });
|
|
14109
14347
|
case "rejected":
|
|
14110
|
-
return /* @__PURE__ */ (0,
|
|
14348
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14111
14349
|
AlertBanner,
|
|
14112
14350
|
{
|
|
14113
14351
|
variant: "error",
|
|
14114
|
-
content: onContactSupport === null ? "Verification rejected." : /* @__PURE__ */ (0,
|
|
14352
|
+
content: onContactSupport === null ? "Verification rejected." : /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
14115
14353
|
"Verification rejected.",
|
|
14116
14354
|
" ",
|
|
14117
|
-
/* @__PURE__ */ (0,
|
|
14355
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14118
14356
|
"button",
|
|
14119
14357
|
{
|
|
14120
14358
|
type: "button",
|
|
@@ -14138,8 +14376,8 @@ function WalletActionZone({
|
|
|
14138
14376
|
onRemoveWallet
|
|
14139
14377
|
}) {
|
|
14140
14378
|
if (multiWallet) {
|
|
14141
|
-
return /* @__PURE__ */ (0,
|
|
14142
|
-
/* @__PURE__ */ (0,
|
|
14379
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
14380
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14143
14381
|
ConnectedWalletList,
|
|
14144
14382
|
{
|
|
14145
14383
|
wallets: connectedWallets,
|
|
@@ -14148,7 +14386,7 @@ function WalletActionZone({
|
|
|
14148
14386
|
status: walletsStatus
|
|
14149
14387
|
}
|
|
14150
14388
|
),
|
|
14151
|
-
status === "rejected" && /* @__PURE__ */ (0,
|
|
14389
|
+
status === "rejected" && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14152
14390
|
AlertBanner,
|
|
14153
14391
|
{
|
|
14154
14392
|
variant: "error",
|
|
@@ -14159,21 +14397,21 @@ function WalletActionZone({
|
|
|
14159
14397
|
}
|
|
14160
14398
|
if (status === "completed") {
|
|
14161
14399
|
const connected = connectedWallets[0];
|
|
14162
|
-
return /* @__PURE__ */ (0,
|
|
14163
|
-
onAction !== null && /* @__PURE__ */ (0,
|
|
14164
|
-
walletsStatus === "loading" ? /* @__PURE__ */ (0,
|
|
14400
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
14401
|
+
onAction !== null && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ClButton, { size: "sm", variant: "secondary", onClick: onAction, children: "Change wallet" }),
|
|
14402
|
+
walletsStatus === "loading" ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14165
14403
|
AlertBanner,
|
|
14166
14404
|
{
|
|
14167
14405
|
variant: "info",
|
|
14168
14406
|
content: "Loading your connected wallet\u2026"
|
|
14169
14407
|
}
|
|
14170
|
-
) : walletsStatus === "error" ? /* @__PURE__ */ (0,
|
|
14408
|
+
) : walletsStatus === "error" ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14171
14409
|
AlertBanner,
|
|
14172
14410
|
{
|
|
14173
14411
|
variant: "error",
|
|
14174
14412
|
content: "Couldn't load your connected wallet."
|
|
14175
14413
|
}
|
|
14176
|
-
) : /* @__PURE__ */ (0,
|
|
14414
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14177
14415
|
AlertBanner,
|
|
14178
14416
|
{
|
|
14179
14417
|
variant: "success",
|
|
@@ -14183,9 +14421,9 @@ function WalletActionZone({
|
|
|
14183
14421
|
] });
|
|
14184
14422
|
}
|
|
14185
14423
|
if (status === "rejected") {
|
|
14186
|
-
return /* @__PURE__ */ (0,
|
|
14187
|
-
onAction !== null && /* @__PURE__ */ (0,
|
|
14188
|
-
/* @__PURE__ */ (0,
|
|
14424
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
14425
|
+
onAction !== null && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ClButton, { size: "sm", onClick: onAction, children: "Connect wallet" }),
|
|
14426
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14189
14427
|
AlertBanner,
|
|
14190
14428
|
{
|
|
14191
14429
|
variant: "error",
|
|
@@ -14195,7 +14433,7 @@ function WalletActionZone({
|
|
|
14195
14433
|
] });
|
|
14196
14434
|
}
|
|
14197
14435
|
if (onAction === null) return null;
|
|
14198
|
-
return /* @__PURE__ */ (0,
|
|
14436
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ClButton, { size: "sm", onClick: onAction, children: "Connect wallet" });
|
|
14199
14437
|
}
|
|
14200
14438
|
function RequirementItem({
|
|
14201
14439
|
ui,
|
|
@@ -14207,7 +14445,7 @@ function RequirementItem({
|
|
|
14207
14445
|
walletsStatus,
|
|
14208
14446
|
onContactSupport
|
|
14209
14447
|
}) {
|
|
14210
|
-
return /* @__PURE__ */ (0,
|
|
14448
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
14211
14449
|
"div",
|
|
14212
14450
|
{
|
|
14213
14451
|
className: cn(
|
|
@@ -14215,7 +14453,7 @@ function RequirementItem({
|
|
|
14215
14453
|
className
|
|
14216
14454
|
),
|
|
14217
14455
|
children: [
|
|
14218
|
-
/* @__PURE__ */ (0,
|
|
14456
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
14219
14457
|
"button",
|
|
14220
14458
|
{
|
|
14221
14459
|
type: "button",
|
|
@@ -14223,9 +14461,9 @@ function RequirementItem({
|
|
|
14223
14461
|
"aria-expanded": expanded,
|
|
14224
14462
|
className: "clcosdk:flex clcosdk:h-14 clcosdk:w-full clcosdk:cursor-pointer clcosdk:items-center clcosdk:justify-between clcosdk:rounded-2xl clcosdk:px-2 clcosdk:transition-colors clcosdk:hover:bg-surface",
|
|
14225
14463
|
children: [
|
|
14226
|
-
/* @__PURE__ */ (0,
|
|
14227
|
-
/* @__PURE__ */ (0,
|
|
14228
|
-
/* @__PURE__ */ (0,
|
|
14464
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-3", children: [
|
|
14465
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(StepStatusIcon, { status: ui.status }),
|
|
14466
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14229
14467
|
"span",
|
|
14230
14468
|
{
|
|
14231
14469
|
className: cn(
|
|
@@ -14236,7 +14474,7 @@ function RequirementItem({
|
|
|
14236
14474
|
}
|
|
14237
14475
|
)
|
|
14238
14476
|
] }),
|
|
14239
|
-
/* @__PURE__ */ (0,
|
|
14477
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14240
14478
|
import_lucide_react15.ChevronRight,
|
|
14241
14479
|
{
|
|
14242
14480
|
className: cn(
|
|
@@ -14249,15 +14487,15 @@ function RequirementItem({
|
|
|
14249
14487
|
]
|
|
14250
14488
|
}
|
|
14251
14489
|
),
|
|
14252
|
-
/* @__PURE__ */ (0,
|
|
14490
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14253
14491
|
"div",
|
|
14254
14492
|
{
|
|
14255
14493
|
className: cn(
|
|
14256
14494
|
"clcosdk:grid clcosdk:transition-[grid-template-rows] clcosdk:duration-300 clcosdk:ease-in-out",
|
|
14257
14495
|
expanded ? "clcosdk:grid-rows-[1fr]" : "clcosdk:grid-rows-[0fr]"
|
|
14258
14496
|
),
|
|
14259
|
-
children: /* @__PURE__ */ (0,
|
|
14260
|
-
/* @__PURE__ */ (0,
|
|
14497
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "clcosdk:min-h-0 clcosdk:overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-4 clcosdk:px-2 clcosdk:pb-4", children: [
|
|
14498
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14261
14499
|
"p",
|
|
14262
14500
|
{
|
|
14263
14501
|
className: cn(
|
|
@@ -14267,14 +14505,14 @@ function RequirementItem({
|
|
|
14267
14505
|
children: ui.description
|
|
14268
14506
|
}
|
|
14269
14507
|
),
|
|
14270
|
-
ui.variant === "verification" ? /* @__PURE__ */ (0,
|
|
14508
|
+
ui.variant === "verification" ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14271
14509
|
VerificationActionZone,
|
|
14272
14510
|
{
|
|
14273
14511
|
status: ui.status,
|
|
14274
14512
|
onAction,
|
|
14275
14513
|
onContactSupport
|
|
14276
14514
|
}
|
|
14277
|
-
) : /* @__PURE__ */ (0,
|
|
14515
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14278
14516
|
WalletActionZone,
|
|
14279
14517
|
{
|
|
14280
14518
|
status: ui.status,
|
|
@@ -14294,9 +14532,9 @@ function RequirementItem({
|
|
|
14294
14532
|
}
|
|
14295
14533
|
|
|
14296
14534
|
// src/client/components/requirements/RequirementsChecklistView.tsx
|
|
14297
|
-
var
|
|
14535
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
14298
14536
|
function RequirementsChecklistView(props) {
|
|
14299
|
-
return /* @__PURE__ */ (0,
|
|
14537
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(RequirementsChecklistViewBody, { ...props }) });
|
|
14300
14538
|
}
|
|
14301
14539
|
function RequirementsChecklistViewBody({
|
|
14302
14540
|
state,
|
|
@@ -14308,11 +14546,11 @@ function RequirementsChecklistViewBody({
|
|
|
14308
14546
|
}) {
|
|
14309
14547
|
switch (state.type) {
|
|
14310
14548
|
case "loading":
|
|
14311
|
-
return loading ?? /* @__PURE__ */ (0,
|
|
14549
|
+
return loading ?? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(LoadingState2, {});
|
|
14312
14550
|
case "not-authenticated":
|
|
14313
14551
|
return unauthenticatedState ?? null;
|
|
14314
14552
|
case "error":
|
|
14315
|
-
return error ?? /* @__PURE__ */ (0,
|
|
14553
|
+
return error ?? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14316
14554
|
AlertBanner,
|
|
14317
14555
|
{
|
|
14318
14556
|
variant: "error",
|
|
@@ -14322,7 +14560,7 @@ function RequirementsChecklistViewBody({
|
|
|
14322
14560
|
}
|
|
14323
14561
|
);
|
|
14324
14562
|
case "content":
|
|
14325
|
-
return /* @__PURE__ */ (0,
|
|
14563
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
14326
14564
|
"div",
|
|
14327
14565
|
{
|
|
14328
14566
|
className: cn(
|
|
@@ -14330,11 +14568,11 @@ function RequirementsChecklistViewBody({
|
|
|
14330
14568
|
className
|
|
14331
14569
|
),
|
|
14332
14570
|
children: [
|
|
14333
|
-
/* @__PURE__ */ (0,
|
|
14334
|
-
/* @__PURE__ */ (0,
|
|
14335
|
-
/* @__PURE__ */ (0,
|
|
14571
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
14572
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: state.title }),
|
|
14573
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: state.description })
|
|
14336
14574
|
] }),
|
|
14337
|
-
/* @__PURE__ */ (0,
|
|
14575
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:divide-y clcosdk:divide-divider", children: state.items.map((row) => /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14338
14576
|
RequirementItem,
|
|
14339
14577
|
{
|
|
14340
14578
|
ui: row.item,
|
|
@@ -14353,7 +14591,7 @@ function RequirementsChecklistViewBody({
|
|
|
14353
14591
|
},
|
|
14354
14592
|
row.id
|
|
14355
14593
|
)) }),
|
|
14356
|
-
state.ineligible && /* @__PURE__ */ (0,
|
|
14594
|
+
state.ineligible && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14357
14595
|
AlertBanner,
|
|
14358
14596
|
{
|
|
14359
14597
|
variant: "error",
|
|
@@ -14361,7 +14599,7 @@ function RequirementsChecklistViewBody({
|
|
|
14361
14599
|
content: "You are not eligible to participate."
|
|
14362
14600
|
}
|
|
14363
14601
|
),
|
|
14364
|
-
state.continueAction && /* @__PURE__ */ (0,
|
|
14602
|
+
state.continueAction && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14365
14603
|
ClButton,
|
|
14366
14604
|
{
|
|
14367
14605
|
fullWidth: true,
|
|
@@ -14380,18 +14618,18 @@ function RequirementsChecklistViewBody({
|
|
|
14380
14618
|
}
|
|
14381
14619
|
}
|
|
14382
14620
|
function LoadingState2() {
|
|
14383
|
-
return /* @__PURE__ */ (0,
|
|
14621
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14384
14622
|
"output",
|
|
14385
14623
|
{
|
|
14386
14624
|
"aria-live": "polite",
|
|
14387
14625
|
className: "clcosdk:flex clcosdk:min-h-40 clcosdk:items-center clcosdk:justify-center clcosdk:rounded-2xl clcosdk:border clcosdk:border-border clcosdk:bg-background clcosdk:p-6",
|
|
14388
|
-
children: /* @__PURE__ */ (0,
|
|
14626
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading requirements..." })
|
|
14389
14627
|
}
|
|
14390
14628
|
);
|
|
14391
14629
|
}
|
|
14392
14630
|
|
|
14393
14631
|
// src/client/components/requirements/tax-document/TaxDocumentModalView.tsx
|
|
14394
|
-
var
|
|
14632
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
14395
14633
|
function TaxDocumentModalView({
|
|
14396
14634
|
state,
|
|
14397
14635
|
onEvent,
|
|
@@ -14400,7 +14638,7 @@ function TaxDocumentModalView({
|
|
|
14400
14638
|
if (state.type === "hidden") {
|
|
14401
14639
|
return null;
|
|
14402
14640
|
}
|
|
14403
|
-
return /* @__PURE__ */ (0,
|
|
14641
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "clcosdk:fixed clcosdk:inset-0 clcosdk:z-50 clcosdk:flex clcosdk:items-center clcosdk:justify-center clcosdk:bg-black/50 clcosdk:p-4", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
14404
14642
|
"div",
|
|
14405
14643
|
{
|
|
14406
14644
|
className: cn(
|
|
@@ -14408,11 +14646,11 @@ function TaxDocumentModalView({
|
|
|
14408
14646
|
className
|
|
14409
14647
|
),
|
|
14410
14648
|
children: [
|
|
14411
|
-
/* @__PURE__ */ (0,
|
|
14412
|
-
/* @__PURE__ */ (0,
|
|
14413
|
-
/* @__PURE__ */ (0,
|
|
14649
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:items-start clcosdk:justify-between clcosdk:gap-4", children: [
|
|
14650
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: state.title }),
|
|
14651
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(CloseButton, { onClick: () => onEvent({ type: "ON_CLOSE" }) })
|
|
14414
14652
|
] }),
|
|
14415
|
-
/* @__PURE__ */ (0,
|
|
14653
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Screen, { screen: state.screen, onEvent })
|
|
14416
14654
|
]
|
|
14417
14655
|
}
|
|
14418
14656
|
) }) });
|
|
@@ -14423,11 +14661,11 @@ function Screen({
|
|
|
14423
14661
|
}) {
|
|
14424
14662
|
switch (screen.type) {
|
|
14425
14663
|
case "loading":
|
|
14426
|
-
return /* @__PURE__ */ (0,
|
|
14664
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(LoadingScreen, {});
|
|
14427
14665
|
case "error":
|
|
14428
|
-
return /* @__PURE__ */ (0,
|
|
14666
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(AlertBanner, { variant: "error", icon: true, content: screen.message });
|
|
14429
14667
|
case "review":
|
|
14430
|
-
return /* @__PURE__ */ (0,
|
|
14668
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14431
14669
|
ReviewScreen,
|
|
14432
14670
|
{
|
|
14433
14671
|
fields: screen.fields,
|
|
@@ -14438,9 +14676,9 @@ function Screen({
|
|
|
14438
14676
|
}
|
|
14439
14677
|
);
|
|
14440
14678
|
case "editing":
|
|
14441
|
-
return /* @__PURE__ */ (0,
|
|
14679
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(EditScreen, { fields: screen.fields, onEvent });
|
|
14442
14680
|
case "sign-only":
|
|
14443
|
-
return /* @__PURE__ */ (0,
|
|
14681
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14444
14682
|
SignOnlyScreen,
|
|
14445
14683
|
{
|
|
14446
14684
|
signing: screen.signing,
|
|
@@ -14455,14 +14693,14 @@ function Screen({
|
|
|
14455
14693
|
}
|
|
14456
14694
|
}
|
|
14457
14695
|
function LoadingScreen() {
|
|
14458
|
-
return /* @__PURE__ */ (0,
|
|
14696
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14459
14697
|
"output",
|
|
14460
14698
|
{
|
|
14461
14699
|
"aria-live": "polite",
|
|
14462
14700
|
className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-4",
|
|
14463
|
-
children: [0, 1, 2, 3, 4].map((row) => /* @__PURE__ */ (0,
|
|
14464
|
-
/* @__PURE__ */ (0,
|
|
14465
|
-
/* @__PURE__ */ (0,
|
|
14701
|
+
children: [0, 1, 2, 3, 4].map((row) => /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1", children: [
|
|
14702
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "clcosdk:h-3 clcosdk:w-28 clcosdk:animate-pulse clcosdk:rounded clcosdk:bg-surface" }),
|
|
14703
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "clcosdk:h-5 clcosdk:w-48 clcosdk:animate-pulse clcosdk:rounded clcosdk:bg-surface" })
|
|
14466
14704
|
] }, row))
|
|
14467
14705
|
}
|
|
14468
14706
|
);
|
|
@@ -14474,9 +14712,9 @@ function ReviewScreen({
|
|
|
14474
14712
|
signError,
|
|
14475
14713
|
onEvent
|
|
14476
14714
|
}) {
|
|
14477
|
-
return /* @__PURE__ */ (0,
|
|
14478
|
-
/* @__PURE__ */ (0,
|
|
14479
|
-
piiUnavailable && /* @__PURE__ */ (0,
|
|
14715
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
14716
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Review your information below. If anything looks incorrect, edit before signing." }),
|
|
14717
|
+
piiUnavailable && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14480
14718
|
AlertBanner,
|
|
14481
14719
|
{
|
|
14482
14720
|
variant: "info",
|
|
@@ -14484,27 +14722,27 @@ function ReviewScreen({
|
|
|
14484
14722
|
content: "We don't have this information on file yet \u2014 please fill it in below."
|
|
14485
14723
|
}
|
|
14486
14724
|
),
|
|
14487
|
-
/* @__PURE__ */ (0,
|
|
14725
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-4 clcosdk:border-t clcosdk:border-divider clcosdk:pt-4", children: fields.map(({ field, label, displayValue }) => /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
14488
14726
|
"div",
|
|
14489
14727
|
{
|
|
14490
14728
|
className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1",
|
|
14491
14729
|
children: [
|
|
14492
|
-
/* @__PURE__ */ (0,
|
|
14730
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14493
14731
|
"span",
|
|
14494
14732
|
{
|
|
14495
14733
|
className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
|
|
14496
14734
|
children: label
|
|
14497
14735
|
}
|
|
14498
14736
|
),
|
|
14499
|
-
/* @__PURE__ */ (0,
|
|
14737
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: cn(typeClasses.body, "clcosdk:text-text-primary"), children: displayValue })
|
|
14500
14738
|
]
|
|
14501
14739
|
},
|
|
14502
14740
|
field
|
|
14503
14741
|
)) }),
|
|
14504
|
-
/* @__PURE__ */ (0,
|
|
14505
|
-
signError && /* @__PURE__ */ (0,
|
|
14506
|
-
/* @__PURE__ */ (0,
|
|
14507
|
-
/* @__PURE__ */ (0,
|
|
14742
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { className: cn(typeClasses.caption, "clcosdk:text-text-secondary"), children: "By signing, you certify that the information above is accurate and that you are the beneficial owner of the income this form relates to. This document cannot be edited once signed." }),
|
|
14743
|
+
signError && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(AlertBanner, { variant: "error", icon: true, content: signError }),
|
|
14744
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
14745
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14508
14746
|
ClButton,
|
|
14509
14747
|
{
|
|
14510
14748
|
fullWidth: true,
|
|
@@ -14514,7 +14752,7 @@ function ReviewScreen({
|
|
|
14514
14752
|
children: "Sign W-8BEN"
|
|
14515
14753
|
}
|
|
14516
14754
|
),
|
|
14517
|
-
/* @__PURE__ */ (0,
|
|
14755
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14518
14756
|
ClButton,
|
|
14519
14757
|
{
|
|
14520
14758
|
fullWidth: true,
|
|
@@ -14531,20 +14769,20 @@ function EditScreen({
|
|
|
14531
14769
|
fields,
|
|
14532
14770
|
onEvent
|
|
14533
14771
|
}) {
|
|
14534
|
-
return /* @__PURE__ */ (0,
|
|
14535
|
-
/* @__PURE__ */ (0,
|
|
14772
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
14773
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-4 clcosdk:border-t clcosdk:border-divider clcosdk:pt-4", children: fields.map(({ field, label, placeholder, value }) => /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
14536
14774
|
"label",
|
|
14537
14775
|
{
|
|
14538
14776
|
className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1",
|
|
14539
14777
|
children: [
|
|
14540
|
-
/* @__PURE__ */ (0,
|
|
14778
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14541
14779
|
"span",
|
|
14542
14780
|
{
|
|
14543
14781
|
className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
|
|
14544
14782
|
children: label
|
|
14545
14783
|
}
|
|
14546
14784
|
),
|
|
14547
|
-
/* @__PURE__ */ (0,
|
|
14785
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14548
14786
|
"input",
|
|
14549
14787
|
{
|
|
14550
14788
|
type: "text",
|
|
@@ -14565,9 +14803,9 @@ function EditScreen({
|
|
|
14565
14803
|
},
|
|
14566
14804
|
field
|
|
14567
14805
|
)) }),
|
|
14568
|
-
/* @__PURE__ */ (0,
|
|
14569
|
-
/* @__PURE__ */ (0,
|
|
14570
|
-
/* @__PURE__ */ (0,
|
|
14806
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
14807
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(ClButton, { fullWidth: true, onClick: () => onEvent({ type: "ON_SAVE_EDIT" }), children: "Save & review" }),
|
|
14808
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14571
14809
|
ClButton,
|
|
14572
14810
|
{
|
|
14573
14811
|
fullWidth: true,
|
|
@@ -14584,10 +14822,10 @@ function SignOnlyScreen({
|
|
|
14584
14822
|
signError,
|
|
14585
14823
|
onEvent
|
|
14586
14824
|
}) {
|
|
14587
|
-
return /* @__PURE__ */ (0,
|
|
14588
|
-
/* @__PURE__ */ (0,
|
|
14589
|
-
signError && /* @__PURE__ */ (0,
|
|
14590
|
-
/* @__PURE__ */ (0,
|
|
14825
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
14826
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "As an entity investor, you must complete a W-8BEN-E to confirm your foreign tax status and claim applicable treaty benefits. You'll receive an email to complete the signing." }),
|
|
14827
|
+
signError && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(AlertBanner, { variant: "error", icon: true, content: signError }),
|
|
14828
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14591
14829
|
ClButton,
|
|
14592
14830
|
{
|
|
14593
14831
|
fullWidth: true,
|
|
@@ -14601,12 +14839,12 @@ function SignOnlyScreen({
|
|
|
14601
14839
|
}
|
|
14602
14840
|
|
|
14603
14841
|
// src/client/hooks/requirements/tax-document/useTaxDocumentModalViewModel.ts
|
|
14604
|
-
var
|
|
14842
|
+
var import_react43 = require("react");
|
|
14605
14843
|
|
|
14606
14844
|
// src/client/hooks/requirements/data/useTaxDocument.ts
|
|
14607
|
-
var
|
|
14845
|
+
var import_react42 = require("react");
|
|
14608
14846
|
var IDLE_SIGN = { type: "idle", error: null };
|
|
14609
|
-
var
|
|
14847
|
+
var LOADING_STATE6 = { type: "LOADING" };
|
|
14610
14848
|
var SIGN_FAILED_MESSAGE = "Unable to sign document. Please try again.";
|
|
14611
14849
|
var DOB_INVALID_MESSAGE = "Enter your date of birth as MM/DD/YYYY.";
|
|
14612
14850
|
var FIELD_KEYS = {
|
|
@@ -14679,8 +14917,8 @@ function useTaxDocument({
|
|
|
14679
14917
|
}) {
|
|
14680
14918
|
const { coinlist, isReady } = useCoinList();
|
|
14681
14919
|
const log = useLogger("useTaxDocument");
|
|
14682
|
-
const [state, setState] = (0,
|
|
14683
|
-
(0,
|
|
14920
|
+
const [state, setState] = (0, import_react42.useState)(LOADING_STATE6);
|
|
14921
|
+
(0, import_react42.useEffect)(() => {
|
|
14684
14922
|
let isCancelled = false;
|
|
14685
14923
|
if (!isOpen) {
|
|
14686
14924
|
return () => {
|
|
@@ -14688,12 +14926,12 @@ function useTaxDocument({
|
|
|
14688
14926
|
};
|
|
14689
14927
|
}
|
|
14690
14928
|
if (!isReady) {
|
|
14691
|
-
setState(
|
|
14929
|
+
setState(LOADING_STATE6);
|
|
14692
14930
|
return () => {
|
|
14693
14931
|
isCancelled = true;
|
|
14694
14932
|
};
|
|
14695
14933
|
}
|
|
14696
|
-
setState(
|
|
14934
|
+
setState(LOADING_STATE6);
|
|
14697
14935
|
coinlist.requirements.getPii().then((pii) => {
|
|
14698
14936
|
if (isCancelled) return;
|
|
14699
14937
|
if (pii.kind === "company") {
|
|
@@ -14721,7 +14959,7 @@ function useTaxDocument({
|
|
|
14721
14959
|
isCancelled = true;
|
|
14722
14960
|
};
|
|
14723
14961
|
}, [coinlist, isReady, isOpen, log]);
|
|
14724
|
-
const onEditField = (0,
|
|
14962
|
+
const onEditField = (0, import_react42.useCallback)(
|
|
14725
14963
|
(field, value) => {
|
|
14726
14964
|
setState(
|
|
14727
14965
|
(prev) => prev.type === "EDITING" ? { ...prev, fields: { ...prev.fields, [field]: value } } : prev
|
|
@@ -14729,7 +14967,7 @@ function useTaxDocument({
|
|
|
14729
14967
|
},
|
|
14730
14968
|
[]
|
|
14731
14969
|
);
|
|
14732
|
-
const onStartEdit = (0,
|
|
14970
|
+
const onStartEdit = (0, import_react42.useCallback)(() => {
|
|
14733
14971
|
setState(
|
|
14734
14972
|
(prev) => prev.type === "REVIEW" ? {
|
|
14735
14973
|
type: "EDITING",
|
|
@@ -14740,7 +14978,7 @@ function useTaxDocument({
|
|
|
14740
14978
|
} : prev
|
|
14741
14979
|
);
|
|
14742
14980
|
}, []);
|
|
14743
|
-
const onSaveEdit = (0,
|
|
14981
|
+
const onSaveEdit = (0, import_react42.useCallback)(() => {
|
|
14744
14982
|
setState(
|
|
14745
14983
|
(prev) => prev.type === "EDITING" ? {
|
|
14746
14984
|
type: "REVIEW",
|
|
@@ -14751,7 +14989,7 @@ function useTaxDocument({
|
|
|
14751
14989
|
} : prev
|
|
14752
14990
|
);
|
|
14753
14991
|
}, []);
|
|
14754
|
-
const onCancelEdit = (0,
|
|
14992
|
+
const onCancelEdit = (0, import_react42.useCallback)(() => {
|
|
14755
14993
|
setState(
|
|
14756
14994
|
(prev) => prev.type === "EDITING" ? {
|
|
14757
14995
|
type: "REVIEW",
|
|
@@ -14762,7 +15000,7 @@ function useTaxDocument({
|
|
|
14762
15000
|
} : prev
|
|
14763
15001
|
);
|
|
14764
15002
|
}, []);
|
|
14765
|
-
const onSign = (0,
|
|
15003
|
+
const onSign = (0, import_react42.useCallback)(() => {
|
|
14766
15004
|
if (state.type !== "REVIEW" && state.type !== "SIGN_ONLY") return;
|
|
14767
15005
|
if (state.type === "REVIEW" && state.fields.dob.trim() !== "" && !isValidUsDate(state.fields.dob)) {
|
|
14768
15006
|
setState({
|
|
@@ -14804,19 +15042,19 @@ function useTaxDocumentModalViewModel({
|
|
|
14804
15042
|
onSubmitted
|
|
14805
15043
|
}) {
|
|
14806
15044
|
const { state, onEditField, onStartEdit, onSaveEdit, onCancelEdit, onSign } = useTaxDocument({ isOpen });
|
|
14807
|
-
(0,
|
|
15045
|
+
(0, import_react43.useEffect)(() => {
|
|
14808
15046
|
if (state.type === "SUBMITTED") {
|
|
14809
15047
|
onSubmitted?.(state.submission);
|
|
14810
15048
|
onClose();
|
|
14811
15049
|
}
|
|
14812
15050
|
}, [state]);
|
|
14813
|
-
const uiState = (0,
|
|
15051
|
+
const uiState = (0, import_react43.useMemo)(() => {
|
|
14814
15052
|
if (!isOpen || state.type === "SUBMITTED") {
|
|
14815
15053
|
return { type: "hidden" };
|
|
14816
15054
|
}
|
|
14817
15055
|
return { type: "content", title: toTitle(state), screen: toScreen(state) };
|
|
14818
15056
|
}, [isOpen, state]);
|
|
14819
|
-
const onEvent = (0,
|
|
15057
|
+
const onEvent = (0, import_react43.useCallback)(
|
|
14820
15058
|
(event) => {
|
|
14821
15059
|
switch (event.type) {
|
|
14822
15060
|
case "ON_CLOSE":
|
|
@@ -14899,7 +15137,7 @@ function toFieldsUi(fields) {
|
|
|
14899
15137
|
}
|
|
14900
15138
|
|
|
14901
15139
|
// src/client/components/requirements/tax-document/TaxDocumentModalContainer.tsx
|
|
14902
|
-
var
|
|
15140
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
14903
15141
|
function TaxDocumentModalContainer({
|
|
14904
15142
|
isOpen,
|
|
14905
15143
|
onClose,
|
|
@@ -14911,7 +15149,7 @@ function TaxDocumentModalContainer({
|
|
|
14911
15149
|
onClose,
|
|
14912
15150
|
onSubmitted
|
|
14913
15151
|
});
|
|
14914
|
-
return /* @__PURE__ */ (0,
|
|
15152
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
14915
15153
|
TaxDocumentModalView,
|
|
14916
15154
|
{
|
|
14917
15155
|
state,
|
|
@@ -14922,26 +15160,26 @@ function TaxDocumentModalContainer({
|
|
|
14922
15160
|
}
|
|
14923
15161
|
|
|
14924
15162
|
// src/client/components/requirements/VerificationOverlay.tsx
|
|
14925
|
-
var
|
|
15163
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
14926
15164
|
function VerificationOverlay({
|
|
14927
15165
|
onClose,
|
|
14928
15166
|
children
|
|
14929
15167
|
}) {
|
|
14930
|
-
return /* @__PURE__ */ (0,
|
|
15168
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(VerificationOverlayBody, { onClose, children }) });
|
|
14931
15169
|
}
|
|
14932
15170
|
function VerificationOverlayBody({
|
|
14933
15171
|
onClose,
|
|
14934
15172
|
children
|
|
14935
15173
|
}) {
|
|
14936
|
-
return /* @__PURE__ */ (0,
|
|
15174
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14937
15175
|
"div",
|
|
14938
15176
|
{
|
|
14939
15177
|
role: "dialog",
|
|
14940
15178
|
"aria-modal": "true",
|
|
14941
15179
|
"aria-label": "Identity verification",
|
|
14942
15180
|
className: "clcosdk:fixed clcosdk:inset-0 clcosdk:z-50 clcosdk:flex clcosdk:items-center clcosdk:justify-center clcosdk:bg-overlay clcosdk:p-4",
|
|
14943
|
-
children: /* @__PURE__ */ (0,
|
|
14944
|
-
/* @__PURE__ */ (0,
|
|
15181
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "clcosdk:relative clcosdk:flex clcosdk:max-h-[92vh] clcosdk:w-full clcosdk:max-w-[760px] clcosdk:flex-col clcosdk:overflow-y-auto clcosdk:rounded-2xl clcosdk:bg-background clcosdk:p-6 clcosdk:pt-14", children: [
|
|
15182
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14945
15183
|
CloseButton,
|
|
14946
15184
|
{
|
|
14947
15185
|
onClick: onClose,
|
|
@@ -14955,18 +15193,18 @@ function VerificationOverlayBody({
|
|
|
14955
15193
|
}
|
|
14956
15194
|
|
|
14957
15195
|
// src/client/components/requirements/wallet/ConnectWalletModalView.tsx
|
|
14958
|
-
var
|
|
14959
|
-
var
|
|
15196
|
+
var import_react44 = require("react");
|
|
15197
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
14960
15198
|
function ConnectWalletModalView({
|
|
14961
15199
|
state,
|
|
14962
15200
|
onEvent,
|
|
14963
15201
|
className
|
|
14964
15202
|
}) {
|
|
14965
|
-
const titleId = (0,
|
|
15203
|
+
const titleId = (0, import_react44.useId)();
|
|
14966
15204
|
if (state.type === "hidden") {
|
|
14967
15205
|
return null;
|
|
14968
15206
|
}
|
|
14969
|
-
return /* @__PURE__ */ (0,
|
|
15207
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "clcosdk:fixed clcosdk:inset-0 clcosdk:z-50 clcosdk:flex clcosdk:items-center clcosdk:justify-center clcosdk:bg-black/50 clcosdk:p-4", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
|
|
14970
15208
|
"div",
|
|
14971
15209
|
{
|
|
14972
15210
|
role: "dialog",
|
|
@@ -14977,8 +15215,8 @@ function ConnectWalletModalView({
|
|
|
14977
15215
|
className
|
|
14978
15216
|
),
|
|
14979
15217
|
children: [
|
|
14980
|
-
/* @__PURE__ */ (0,
|
|
14981
|
-
/* @__PURE__ */ (0,
|
|
15218
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "clcosdk:flex clcosdk:items-start clcosdk:justify-between clcosdk:gap-4", children: [
|
|
15219
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14982
15220
|
"h3",
|
|
14983
15221
|
{
|
|
14984
15222
|
id: titleId,
|
|
@@ -14986,9 +15224,9 @@ function ConnectWalletModalView({
|
|
|
14986
15224
|
children: "Connect your wallet"
|
|
14987
15225
|
}
|
|
14988
15226
|
),
|
|
14989
|
-
/* @__PURE__ */ (0,
|
|
15227
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CloseButton, { onClick: () => onEvent({ type: "ON_CLOSE" }) })
|
|
14990
15228
|
] }),
|
|
14991
|
-
/* @__PURE__ */ (0,
|
|
15229
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14992
15230
|
Screen2,
|
|
14993
15231
|
{
|
|
14994
15232
|
screen: state.screen,
|
|
@@ -15007,9 +15245,9 @@ function Screen2({
|
|
|
15007
15245
|
}) {
|
|
15008
15246
|
switch (screen.type) {
|
|
15009
15247
|
case "needs-wallet":
|
|
15010
|
-
return /* @__PURE__ */ (0,
|
|
15011
|
-
/* @__PURE__ */ (0,
|
|
15012
|
-
canRequestConnect && /* @__PURE__ */ (0,
|
|
15248
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
15249
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Connect an external wallet to prove ownership and bind it to this offer." }),
|
|
15250
|
+
canRequestConnect && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
15013
15251
|
ClButton,
|
|
15014
15252
|
{
|
|
15015
15253
|
fullWidth: true,
|
|
@@ -15019,23 +15257,23 @@ function Screen2({
|
|
|
15019
15257
|
)
|
|
15020
15258
|
] });
|
|
15021
15259
|
case "ready":
|
|
15022
|
-
return /* @__PURE__ */ (0,
|
|
15023
|
-
/* @__PURE__ */ (0,
|
|
15024
|
-
/* @__PURE__ */ (0,
|
|
15025
|
-
/* @__PURE__ */ (0,
|
|
15260
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
15261
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Sign a message with your connected wallet to prove you own it. This does not cost gas or move any funds." }),
|
|
15262
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1 clcosdk:border-t clcosdk:border-divider clcosdk:pt-4", children: [
|
|
15263
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
15026
15264
|
"span",
|
|
15027
15265
|
{
|
|
15028
15266
|
className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
|
|
15029
15267
|
children: "Wallet address"
|
|
15030
15268
|
}
|
|
15031
15269
|
),
|
|
15032
|
-
/* @__PURE__ */ (0,
|
|
15270
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: cn(typeClasses.body, "clcosdk:text-text-primary"), children: screen.shortAddress })
|
|
15033
15271
|
] }),
|
|
15034
15272
|
screen.signError && // Live region: the error is inserted async after a failed attempt,
|
|
15035
15273
|
// so screen readers need it announced rather than silently
|
|
15036
15274
|
// rendered.
|
|
15037
|
-
/* @__PURE__ */ (0,
|
|
15038
|
-
/* @__PURE__ */ (0,
|
|
15275
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { role: "alert", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(AlertBanner, { variant: "error", icon: true, content: screen.signError }) }),
|
|
15276
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
15039
15277
|
ClButton,
|
|
15040
15278
|
{
|
|
15041
15279
|
fullWidth: true,
|
|
@@ -15046,7 +15284,7 @@ function Screen2({
|
|
|
15046
15284
|
children: "Sign & connect"
|
|
15047
15285
|
}
|
|
15048
15286
|
),
|
|
15049
|
-
canRequestConnect && /* @__PURE__ */ (0,
|
|
15287
|
+
canRequestConnect && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
15050
15288
|
ClButton,
|
|
15051
15289
|
{
|
|
15052
15290
|
fullWidth: true,
|
|
@@ -15065,10 +15303,10 @@ function Screen2({
|
|
|
15065
15303
|
}
|
|
15066
15304
|
|
|
15067
15305
|
// src/client/hooks/requirements/wallet/useConnectWalletModalViewModel.ts
|
|
15068
|
-
var
|
|
15306
|
+
var import_react46 = require("react");
|
|
15069
15307
|
|
|
15070
15308
|
// src/client/hooks/requirements/data/useConnectWallet.ts
|
|
15071
|
-
var
|
|
15309
|
+
var import_react45 = require("react");
|
|
15072
15310
|
|
|
15073
15311
|
// src/client/core/wallets/connect-external-wallet.ts
|
|
15074
15312
|
var DEFAULT_STATEMENT = "Sign this message to prove you own this wallet. This does not cost gas or move funds.";
|
|
@@ -15199,24 +15437,24 @@ function useConnectWallet({
|
|
|
15199
15437
|
statement
|
|
15200
15438
|
}) {
|
|
15201
15439
|
const { coinlist } = useCoinList();
|
|
15202
|
-
const [state, setState] = (0,
|
|
15440
|
+
const [state, setState] = (0, import_react45.useState)(
|
|
15203
15441
|
() => wallet ? { type: "READY", address: wallet.address, sign: IDLE_SIGN2 } : { type: "NEEDS_WALLET" }
|
|
15204
15442
|
);
|
|
15205
|
-
const attempt = (0,
|
|
15206
|
-
(0,
|
|
15443
|
+
const attempt = (0, import_react45.useRef)(0);
|
|
15444
|
+
(0, import_react45.useEffect)(() => {
|
|
15207
15445
|
attempt.current += 1;
|
|
15208
15446
|
if (!isOpen) return;
|
|
15209
15447
|
setState(
|
|
15210
15448
|
wallet ? { type: "READY", address: wallet.address, sign: IDLE_SIGN2 } : { type: "NEEDS_WALLET" }
|
|
15211
15449
|
);
|
|
15212
15450
|
}, [isOpen, wallet?.address]);
|
|
15213
|
-
(0,
|
|
15451
|
+
(0, import_react45.useEffect)(
|
|
15214
15452
|
() => () => {
|
|
15215
15453
|
attempt.current += 1;
|
|
15216
15454
|
},
|
|
15217
15455
|
[]
|
|
15218
15456
|
);
|
|
15219
|
-
const onSign = (0,
|
|
15457
|
+
const onSign = (0, import_react45.useCallback)(() => {
|
|
15220
15458
|
if (!wallet || state.type !== "READY") return;
|
|
15221
15459
|
attempt.current += 1;
|
|
15222
15460
|
const gen = attempt.current;
|
|
@@ -15278,13 +15516,13 @@ function useConnectWalletModalViewModel({
|
|
|
15278
15516
|
challengeType,
|
|
15279
15517
|
statement
|
|
15280
15518
|
});
|
|
15281
|
-
(0,
|
|
15519
|
+
(0, import_react46.useEffect)(() => {
|
|
15282
15520
|
if (state.type === "CONNECTED") {
|
|
15283
15521
|
onConnected?.(state.binding);
|
|
15284
15522
|
onClose();
|
|
15285
15523
|
}
|
|
15286
15524
|
}, [state]);
|
|
15287
|
-
const uiState = (0,
|
|
15525
|
+
const uiState = (0, import_react46.useMemo)(() => {
|
|
15288
15526
|
if (!isOpen || state.type === "CONNECTED") {
|
|
15289
15527
|
return { type: "hidden" };
|
|
15290
15528
|
}
|
|
@@ -15309,7 +15547,7 @@ function useConnectWalletModalViewModel({
|
|
|
15309
15547
|
canRequestConnect
|
|
15310
15548
|
};
|
|
15311
15549
|
}, [isOpen, state, onRequestConnect]);
|
|
15312
|
-
const onEvent = (0,
|
|
15550
|
+
const onEvent = (0, import_react46.useCallback)(
|
|
15313
15551
|
(event) => {
|
|
15314
15552
|
switch (event.type) {
|
|
15315
15553
|
case "ON_CLOSE":
|
|
@@ -15333,13 +15571,13 @@ function useConnectWalletModalViewModel({
|
|
|
15333
15571
|
}
|
|
15334
15572
|
|
|
15335
15573
|
// src/client/components/requirements/wallet/ConnectWalletModalContainer.tsx
|
|
15336
|
-
var
|
|
15574
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
15337
15575
|
function ConnectWalletModalContainer({
|
|
15338
15576
|
className,
|
|
15339
15577
|
...options
|
|
15340
15578
|
}) {
|
|
15341
15579
|
const { state, onEvent } = useConnectWalletModalViewModel(options);
|
|
15342
|
-
return /* @__PURE__ */ (0,
|
|
15580
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
15343
15581
|
ConnectWalletModalView,
|
|
15344
15582
|
{
|
|
15345
15583
|
state,
|
|
@@ -15350,11 +15588,11 @@ function ConnectWalletModalContainer({
|
|
|
15350
15588
|
}
|
|
15351
15589
|
|
|
15352
15590
|
// src/client/hooks/requirements/useRequirementsChecklistViewModel.ts
|
|
15353
|
-
var
|
|
15591
|
+
var import_react49 = require("react");
|
|
15354
15592
|
|
|
15355
15593
|
// src/client/hooks/requirements/data/useOptionAddresses.ts
|
|
15356
|
-
var
|
|
15357
|
-
var
|
|
15594
|
+
var import_react47 = require("react");
|
|
15595
|
+
var LOADING_STATE7 = { type: "LOADING" };
|
|
15358
15596
|
var EMPTY_STATE = {
|
|
15359
15597
|
type: "CONTENT",
|
|
15360
15598
|
addresses: []
|
|
@@ -15363,19 +15601,19 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
15363
15601
|
const { coinlist, isReady } = useCoinList();
|
|
15364
15602
|
const log = useLogger("useOptionAddresses");
|
|
15365
15603
|
const { data, enabled = true } = options;
|
|
15366
|
-
const [addressesState, setAddressesState] = (0,
|
|
15367
|
-
data !== void 0 ? { type: "CONTENT", addresses: data } :
|
|
15604
|
+
const [addressesState, setAddressesState] = (0, import_react47.useState)(
|
|
15605
|
+
data !== void 0 ? { type: "CONTENT", addresses: data } : LOADING_STATE7
|
|
15368
15606
|
);
|
|
15369
|
-
const [fetchKey, setFetchKey] = (0,
|
|
15370
|
-
const refetch = (0,
|
|
15371
|
-
const disconnect = (0,
|
|
15607
|
+
const [fetchKey, setFetchKey] = (0, import_react47.useState)(0);
|
|
15608
|
+
const refetch = (0, import_react47.useCallback)(() => setFetchKey((k) => k + 1), []);
|
|
15609
|
+
const disconnect = (0, import_react47.useCallback)(
|
|
15372
15610
|
async (addressId) => {
|
|
15373
15611
|
await coinlist.wallets.remove({ offerId, addressId });
|
|
15374
15612
|
refetch();
|
|
15375
15613
|
},
|
|
15376
15614
|
[coinlist, offerId, refetch]
|
|
15377
15615
|
);
|
|
15378
|
-
(0,
|
|
15616
|
+
(0, import_react47.useEffect)(() => {
|
|
15379
15617
|
let isCancelled = false;
|
|
15380
15618
|
if (!enabled) {
|
|
15381
15619
|
setAddressesState(
|
|
@@ -15387,7 +15625,7 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
15387
15625
|
}
|
|
15388
15626
|
if (!isReady) {
|
|
15389
15627
|
if (data === void 0) {
|
|
15390
|
-
setAddressesState(
|
|
15628
|
+
setAddressesState(LOADING_STATE7);
|
|
15391
15629
|
}
|
|
15392
15630
|
return () => {
|
|
15393
15631
|
isCancelled = true;
|
|
@@ -15404,7 +15642,7 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
15404
15642
|
isCancelled = true;
|
|
15405
15643
|
};
|
|
15406
15644
|
}
|
|
15407
|
-
setAddressesState(
|
|
15645
|
+
setAddressesState(LOADING_STATE7);
|
|
15408
15646
|
coinlist.wallets.list({ offerId, offerOptionId }).then((addresses) => {
|
|
15409
15647
|
if (!isCancelled) {
|
|
15410
15648
|
log.debug(() => ({
|
|
@@ -15431,18 +15669,18 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
15431
15669
|
}
|
|
15432
15670
|
|
|
15433
15671
|
// src/client/hooks/requirements/data/useRequirements.ts
|
|
15434
|
-
var
|
|
15435
|
-
var
|
|
15672
|
+
var import_react48 = require("react");
|
|
15673
|
+
var LOADING_STATE8 = { type: "LOADING" };
|
|
15436
15674
|
function useRequirements(offerId, options = {}) {
|
|
15437
15675
|
const { coinlist, isReady } = useCoinList();
|
|
15438
15676
|
const log = useLogger("useRequirements");
|
|
15439
15677
|
const { data, enabled = true } = options;
|
|
15440
|
-
const [requirementsState, setRequirementsState] = (0,
|
|
15441
|
-
data !== void 0 ? { type: "CONTENT", ...data } :
|
|
15678
|
+
const [requirementsState, setRequirementsState] = (0, import_react48.useState)(
|
|
15679
|
+
data !== void 0 ? { type: "CONTENT", ...data } : LOADING_STATE8
|
|
15442
15680
|
);
|
|
15443
|
-
const [fetchKey, setFetchKey] = (0,
|
|
15444
|
-
const refetch = (0,
|
|
15445
|
-
(0,
|
|
15681
|
+
const [fetchKey, setFetchKey] = (0, import_react48.useState)(0);
|
|
15682
|
+
const refetch = (0, import_react48.useCallback)(() => setFetchKey((k) => k + 1), []);
|
|
15683
|
+
(0, import_react48.useEffect)(() => {
|
|
15446
15684
|
let isCancelled = false;
|
|
15447
15685
|
if (!enabled) {
|
|
15448
15686
|
return () => {
|
|
@@ -15451,7 +15689,7 @@ function useRequirements(offerId, options = {}) {
|
|
|
15451
15689
|
}
|
|
15452
15690
|
if (!isReady) {
|
|
15453
15691
|
if (data === void 0) {
|
|
15454
|
-
setRequirementsState(
|
|
15692
|
+
setRequirementsState(LOADING_STATE8);
|
|
15455
15693
|
}
|
|
15456
15694
|
return () => {
|
|
15457
15695
|
isCancelled = true;
|
|
@@ -15468,7 +15706,7 @@ function useRequirements(offerId, options = {}) {
|
|
|
15468
15706
|
isCancelled = true;
|
|
15469
15707
|
};
|
|
15470
15708
|
}
|
|
15471
|
-
setRequirementsState(
|
|
15709
|
+
setRequirementsState(LOADING_STATE8);
|
|
15472
15710
|
Promise.all([
|
|
15473
15711
|
coinlist.requirements.forOffer(offerId),
|
|
15474
15712
|
coinlist.requirements.statuses(offerId)
|
|
@@ -15602,19 +15840,19 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15602
15840
|
data,
|
|
15603
15841
|
enabled
|
|
15604
15842
|
});
|
|
15605
|
-
const [expandedId, setExpandedId] = (0,
|
|
15606
|
-
const [taxDocumentOpen, setTaxDocumentOpen] = (0,
|
|
15607
|
-
const [connectWalletOpen, setConnectWalletOpen] = (0,
|
|
15608
|
-
const [verifyingRequirementId, setVerifyingRequirementId] = (0,
|
|
15609
|
-
const isMountedRef = (0,
|
|
15610
|
-
(0,
|
|
15843
|
+
const [expandedId, setExpandedId] = (0, import_react49.useState)(null);
|
|
15844
|
+
const [taxDocumentOpen, setTaxDocumentOpen] = (0, import_react49.useState)(false);
|
|
15845
|
+
const [connectWalletOpen, setConnectWalletOpen] = (0, import_react49.useState)(false);
|
|
15846
|
+
const [verifyingRequirementId, setVerifyingRequirementId] = (0, import_react49.useState)(null);
|
|
15847
|
+
const isMountedRef = (0, import_react49.useRef)(true);
|
|
15848
|
+
(0, import_react49.useEffect)(() => {
|
|
15611
15849
|
isMountedRef.current = true;
|
|
15612
15850
|
return () => {
|
|
15613
15851
|
isMountedRef.current = false;
|
|
15614
15852
|
};
|
|
15615
15853
|
}, []);
|
|
15616
|
-
const [hasWalletRequirement, setHasWalletRequirement] = (0,
|
|
15617
|
-
(0,
|
|
15854
|
+
const [hasWalletRequirement, setHasWalletRequirement] = (0, import_react49.useState)(false);
|
|
15855
|
+
(0, import_react49.useEffect)(() => {
|
|
15618
15856
|
if (requirementsState.type === "CONTENT") {
|
|
15619
15857
|
setHasWalletRequirement(
|
|
15620
15858
|
(requirementsState.requirements[optionId] ?? []).some(
|
|
@@ -15630,14 +15868,14 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15630
15868
|
} = useOptionAddresses(offerId, optionId, {
|
|
15631
15869
|
enabled: enabled && hasWalletRequirement
|
|
15632
15870
|
});
|
|
15633
|
-
const removeWallet = (0,
|
|
15871
|
+
const removeWallet = (0, import_react49.useCallback)(
|
|
15634
15872
|
async (addressId) => {
|
|
15635
15873
|
await disconnect(OfferOptionAddressId(addressId));
|
|
15636
15874
|
refetch();
|
|
15637
15875
|
},
|
|
15638
15876
|
[disconnect, refetch]
|
|
15639
15877
|
);
|
|
15640
|
-
const awaitVerificationResult = (0,
|
|
15878
|
+
const awaitVerificationResult = (0, import_react49.useCallback)(
|
|
15641
15879
|
(requirementId, statusBeforeSubmit) => {
|
|
15642
15880
|
void (async () => {
|
|
15643
15881
|
const deadline = Date.now() + VERIFICATION_POLL_TIMEOUT_MS;
|
|
@@ -15664,11 +15902,11 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15664
15902
|
},
|
|
15665
15903
|
[coinlist, offerId, refetch, log]
|
|
15666
15904
|
);
|
|
15667
|
-
const requirements = (0,
|
|
15905
|
+
const requirements = (0, import_react49.useMemo)(
|
|
15668
15906
|
() => requirementsState.type === "CONTENT" ? requirementsState.requirements[optionId] ?? [] : [],
|
|
15669
15907
|
[requirementsState, optionId]
|
|
15670
15908
|
);
|
|
15671
|
-
const statusById = (0,
|
|
15909
|
+
const statusById = (0, import_react49.useMemo)(() => {
|
|
15672
15910
|
if (requirementsState.type !== "CONTENT") {
|
|
15673
15911
|
return /* @__PURE__ */ new Map();
|
|
15674
15912
|
}
|
|
@@ -15677,7 +15915,7 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15677
15915
|
requirementsState.statuses.filter((s) => ids.has(s.id)).map((s) => [s.id, s])
|
|
15678
15916
|
);
|
|
15679
15917
|
}, [requirementsState, requirements]);
|
|
15680
|
-
const state = (0,
|
|
15918
|
+
const state = (0, import_react49.useMemo)(() => {
|
|
15681
15919
|
switch (requirementsState.type) {
|
|
15682
15920
|
case "LOADING":
|
|
15683
15921
|
return { type: "loading" };
|
|
@@ -15746,7 +15984,7 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15746
15984
|
identityVerificationOptions,
|
|
15747
15985
|
removeWallet
|
|
15748
15986
|
]);
|
|
15749
|
-
const handleRequirementAction = (0,
|
|
15987
|
+
const handleRequirementAction = (0, import_react49.useCallback)(
|
|
15750
15988
|
(requirement) => {
|
|
15751
15989
|
const inlineVerification = statusById.get(requirement.id)?.kycLevel !== void 0 && onRequirementActionOverride === void 0;
|
|
15752
15990
|
if (inlineVerification) {
|
|
@@ -15778,7 +16016,7 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15778
16016
|
coinlist
|
|
15779
16017
|
]
|
|
15780
16018
|
);
|
|
15781
|
-
const onEvent = (0,
|
|
16019
|
+
const onEvent = (0, import_react49.useCallback)(
|
|
15782
16020
|
(event) => {
|
|
15783
16021
|
switch (event.type) {
|
|
15784
16022
|
case "ON_TOGGLE_ITEM":
|
|
@@ -15876,7 +16114,7 @@ function toVerificationUi(verifyingRequirementId, statusById, identityVerificati
|
|
|
15876
16114
|
}
|
|
15877
16115
|
|
|
15878
16116
|
// src/client/components/requirements/RequirementsChecklistContainer.tsx
|
|
15879
|
-
var
|
|
16117
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
15880
16118
|
function RequirementsChecklistContainer({
|
|
15881
16119
|
loading,
|
|
15882
16120
|
error,
|
|
@@ -15889,8 +16127,8 @@ function RequirementsChecklistContainer({
|
|
|
15889
16127
|
...options,
|
|
15890
16128
|
enabled
|
|
15891
16129
|
});
|
|
15892
|
-
return /* @__PURE__ */ (0,
|
|
15893
|
-
/* @__PURE__ */ (0,
|
|
16130
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_jsx_runtime68.Fragment, { children: [
|
|
16131
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15894
16132
|
RequirementsChecklistView,
|
|
15895
16133
|
{
|
|
15896
16134
|
state,
|
|
@@ -15900,13 +16138,13 @@ function RequirementsChecklistContainer({
|
|
|
15900
16138
|
unauthenticatedState: (
|
|
15901
16139
|
// The sign-in default lives here, not in the View: it is a connected
|
|
15902
16140
|
// component, and a View must render from what it is handed.
|
|
15903
|
-
unauthenticatedState !== void 0 ? unauthenticatedState : /* @__PURE__ */ (0,
|
|
16141
|
+
unauthenticatedState !== void 0 ? unauthenticatedState : /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(CoinListSignInCardContainer, {})
|
|
15904
16142
|
),
|
|
15905
16143
|
className
|
|
15906
16144
|
}
|
|
15907
16145
|
),
|
|
15908
|
-
state.type === "content" && /* @__PURE__ */ (0,
|
|
15909
|
-
/* @__PURE__ */ (0,
|
|
16146
|
+
state.type === "content" && /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_jsx_runtime68.Fragment, { children: [
|
|
16147
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15910
16148
|
TaxDocumentModalContainer,
|
|
15911
16149
|
{
|
|
15912
16150
|
isOpen: state.taxDocumentOpen,
|
|
@@ -15914,11 +16152,11 @@ function RequirementsChecklistContainer({
|
|
|
15914
16152
|
onSubmitted: () => onEvent({ type: "ON_TAX_DOCUMENT_SUBMITTED" })
|
|
15915
16153
|
}
|
|
15916
16154
|
),
|
|
15917
|
-
state.verification && /* @__PURE__ */ (0,
|
|
16155
|
+
state.verification && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15918
16156
|
VerificationOverlay,
|
|
15919
16157
|
{
|
|
15920
16158
|
onClose: () => onEvent({ type: "ON_CLOSE_VERIFICATION" }),
|
|
15921
|
-
children: /* @__PURE__ */ (0,
|
|
16159
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15922
16160
|
IdentityVerificationContainer,
|
|
15923
16161
|
{
|
|
15924
16162
|
levelName: state.verification.levelName,
|
|
@@ -15929,7 +16167,7 @@ function RequirementsChecklistContainer({
|
|
|
15929
16167
|
)
|
|
15930
16168
|
}
|
|
15931
16169
|
),
|
|
15932
|
-
/* @__PURE__ */ (0,
|
|
16170
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15933
16171
|
ConnectWalletModalContainer,
|
|
15934
16172
|
{
|
|
15935
16173
|
isOpen: state.connectWalletOpen,
|
|
@@ -16090,18 +16328,18 @@ function pinoClientLogger(options) {
|
|
|
16090
16328
|
}
|
|
16091
16329
|
|
|
16092
16330
|
// src/client/hooks/auth/useCompleteOAuth.ts
|
|
16093
|
-
var
|
|
16331
|
+
var import_react50 = require("react");
|
|
16094
16332
|
function useCompleteOAuth(options) {
|
|
16095
16333
|
const { coinlist } = useCoinList();
|
|
16096
16334
|
const log = useLogger("useCompleteOAuth");
|
|
16097
|
-
const postOAuthCompleteRef = (0,
|
|
16098
|
-
const onFailureRef = (0,
|
|
16099
|
-
const onSuccessRef = (0,
|
|
16335
|
+
const postOAuthCompleteRef = (0, import_react50.useRef)(options.postOAuthComplete);
|
|
16336
|
+
const onFailureRef = (0, import_react50.useRef)(options.onFailure);
|
|
16337
|
+
const onSuccessRef = (0, import_react50.useRef)(options.onSuccess);
|
|
16100
16338
|
postOAuthCompleteRef.current = options.postOAuthComplete;
|
|
16101
16339
|
onFailureRef.current = options.onFailure;
|
|
16102
16340
|
onSuccessRef.current = options.onSuccess;
|
|
16103
|
-
const hasStartedExchangeRef = (0,
|
|
16104
|
-
(0,
|
|
16341
|
+
const hasStartedExchangeRef = (0, import_react50.useRef)(false);
|
|
16342
|
+
(0, import_react50.useEffect)(() => {
|
|
16105
16343
|
if (typeof window === "undefined") return;
|
|
16106
16344
|
const params = new URLSearchParams(window.location.search);
|
|
16107
16345
|
if (!params.has("code") && !params.has("error")) return;
|
|
@@ -16165,16 +16403,16 @@ function useCompleteOAuth(options) {
|
|
|
16165
16403
|
}
|
|
16166
16404
|
|
|
16167
16405
|
// src/client/hooks/checkout/coin-list/token-sale/data/useParticipations.ts
|
|
16168
|
-
var
|
|
16169
|
-
var
|
|
16406
|
+
var import_react51 = require("react");
|
|
16407
|
+
var LOADING_STATE9 = { type: "LOADING" };
|
|
16170
16408
|
function useParticipations(offerId, options = {}) {
|
|
16171
16409
|
const { coinlist, isReady } = useCoinList();
|
|
16172
16410
|
const log = useLogger("useParticipations");
|
|
16173
16411
|
const { data, enabled = true } = options;
|
|
16174
|
-
const [participationsState, setParticipationsState] = (0,
|
|
16175
|
-
data !== void 0 ? { type: "CONTENT", participations: data } :
|
|
16412
|
+
const [participationsState, setParticipationsState] = (0, import_react51.useState)(
|
|
16413
|
+
data !== void 0 ? { type: "CONTENT", participations: data } : LOADING_STATE9
|
|
16176
16414
|
);
|
|
16177
|
-
(0,
|
|
16415
|
+
(0, import_react51.useEffect)(() => {
|
|
16178
16416
|
let isCancelled = false;
|
|
16179
16417
|
if (!enabled) {
|
|
16180
16418
|
return () => {
|
|
@@ -16183,7 +16421,7 @@ function useParticipations(offerId, options = {}) {
|
|
|
16183
16421
|
}
|
|
16184
16422
|
if (!isReady) {
|
|
16185
16423
|
if (data === void 0) {
|
|
16186
|
-
setParticipationsState(
|
|
16424
|
+
setParticipationsState(LOADING_STATE9);
|
|
16187
16425
|
}
|
|
16188
16426
|
return () => {
|
|
16189
16427
|
isCancelled = true;
|
|
@@ -16194,7 +16432,7 @@ function useParticipations(offerId, options = {}) {
|
|
|
16194
16432
|
isCancelled = true;
|
|
16195
16433
|
};
|
|
16196
16434
|
}
|
|
16197
|
-
setParticipationsState(
|
|
16435
|
+
setParticipationsState(LOADING_STATE9);
|
|
16198
16436
|
coinlist.tokenSale.list(offerId).then((participations) => {
|
|
16199
16437
|
if (!isCancelled) {
|
|
16200
16438
|
log.debug(() => ({
|
|
@@ -16221,16 +16459,16 @@ function useParticipations(offerId, options = {}) {
|
|
|
16221
16459
|
}
|
|
16222
16460
|
|
|
16223
16461
|
// src/client/hooks/offers/data/useOfferDetails.ts
|
|
16224
|
-
var
|
|
16225
|
-
var
|
|
16462
|
+
var import_react52 = require("react");
|
|
16463
|
+
var LOADING_STATE10 = { type: "LOADING" };
|
|
16226
16464
|
function useOfferDetails(offerId, options = {}) {
|
|
16227
16465
|
const { coinlist, isReady } = useCoinList();
|
|
16228
16466
|
const log = useLogger("useOfferDetails");
|
|
16229
16467
|
const { data, enabled = true } = options;
|
|
16230
|
-
const [offerDetailsState, setOfferDetailsState] = (0,
|
|
16231
|
-
data !== void 0 ? { type: "CONTENT", offerDetail: data } :
|
|
16468
|
+
const [offerDetailsState, setOfferDetailsState] = (0, import_react52.useState)(
|
|
16469
|
+
data !== void 0 ? { type: "CONTENT", offerDetail: data } : LOADING_STATE10
|
|
16232
16470
|
);
|
|
16233
|
-
(0,
|
|
16471
|
+
(0, import_react52.useEffect)(() => {
|
|
16234
16472
|
let isCancelled = false;
|
|
16235
16473
|
if (!enabled) {
|
|
16236
16474
|
return () => {
|
|
@@ -16239,7 +16477,7 @@ function useOfferDetails(offerId, options = {}) {
|
|
|
16239
16477
|
}
|
|
16240
16478
|
if (!isReady) {
|
|
16241
16479
|
if (data === void 0) {
|
|
16242
|
-
setOfferDetailsState(
|
|
16480
|
+
setOfferDetailsState(LOADING_STATE10);
|
|
16243
16481
|
}
|
|
16244
16482
|
return () => {
|
|
16245
16483
|
isCancelled = true;
|
|
@@ -16250,7 +16488,7 @@ function useOfferDetails(offerId, options = {}) {
|
|
|
16250
16488
|
isCancelled = true;
|
|
16251
16489
|
};
|
|
16252
16490
|
}
|
|
16253
|
-
setOfferDetailsState(
|
|
16491
|
+
setOfferDetailsState(LOADING_STATE10);
|
|
16254
16492
|
coinlist.offers.get(offerId).then((offerDetail) => {
|
|
16255
16493
|
if (!isCancelled) {
|
|
16256
16494
|
log.debug(() => ({
|
|
@@ -16278,15 +16516,23 @@ function useOfferDetails(offerId, options = {}) {
|
|
|
16278
16516
|
|
|
16279
16517
|
// src/client/hooks/offers/shared/offer-asset-card.types.ts
|
|
16280
16518
|
var OfferAssetCardUi = {
|
|
16281
|
-
|
|
16519
|
+
/**
|
|
16520
|
+
* `tokenMetadata` is the registry's entry for the token the offer is about
|
|
16521
|
+
* (`TokenRegistrySnapshot.forOffer`), or `null` when it lists none. The
|
|
16522
|
+
* registry names win over the offer's own where both exist: they are the
|
|
16523
|
+
* token's canonical name, ticker and artwork, where the offer's are
|
|
16524
|
+
* catalogue copy.
|
|
16525
|
+
*/
|
|
16526
|
+
fromOffer: (offer, tokenMetadata = null) => ({
|
|
16282
16527
|
id: offer.id,
|
|
16283
|
-
|
|
16528
|
+
...tokenMetadata ? { name: tokenMetadata.name, symbol: String(tokenMetadata.symbol) } : {},
|
|
16529
|
+
logo: OfferLogoUi.fromOffer(offer, tokenMetadata)
|
|
16284
16530
|
}),
|
|
16285
|
-
fromDetail: (detail) => ({
|
|
16531
|
+
fromDetail: (detail, tokenMetadata = null) => ({
|
|
16286
16532
|
id: detail.id,
|
|
16287
|
-
name: detail.name,
|
|
16288
|
-
symbol: detail.asset.code,
|
|
16289
|
-
|
|
16533
|
+
name: tokenMetadata?.name ?? detail.name,
|
|
16534
|
+
symbol: tokenMetadata ? String(tokenMetadata.symbol) : detail.asset.code,
|
|
16535
|
+
logo: OfferLogoUi.fromOffer(detail, tokenMetadata)
|
|
16290
16536
|
})
|
|
16291
16537
|
};
|
|
16292
16538
|
|
|
@@ -16329,6 +16575,7 @@ function formatMonthYear(date, locale) {
|
|
|
16329
16575
|
OAUTH_STATE_KEY,
|
|
16330
16576
|
OfferAssetCard,
|
|
16331
16577
|
OfferAssetCardUi,
|
|
16578
|
+
OfferLogoUi,
|
|
16332
16579
|
OfferSaleCard,
|
|
16333
16580
|
OfferSaleCardUi,
|
|
16334
16581
|
OffersAssetGrid,
|
|
@@ -16390,6 +16637,7 @@ function formatMonthYear(date, locale) {
|
|
|
16390
16637
|
quoteOverAsks,
|
|
16391
16638
|
stablecoinIconUrl,
|
|
16392
16639
|
submitErc20Approval,
|
|
16640
|
+
tokenLogoSrcSet,
|
|
16393
16641
|
tokenLogoUrl,
|
|
16394
16642
|
tokenMetadataOf,
|
|
16395
16643
|
useCheckoutOfferTokenMetadata,
|
|
@@ -16432,6 +16680,7 @@ function formatMonthYear(date, locale) {
|
|
|
16432
16680
|
useTaxDocument,
|
|
16433
16681
|
useTaxDocumentModalViewModel,
|
|
16434
16682
|
useTokenMetadata,
|
|
16683
|
+
useTokenRegistry,
|
|
16435
16684
|
validateAmount,
|
|
16436
16685
|
validateSellAmount,
|
|
16437
16686
|
validateSuperstateAmount
|