@coinlist-co/react 0.12.1-rc.f51a0c2 → 0.12.1
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-QIAM2VUU.js → chunk-VH34YC3Q.js} +49 -1
- package/dist/chunk-VH34YC3Q.js.map +1 -0
- package/dist/client/index.cjs +805 -409
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +293 -121
- package/dist/client/index.d.ts +293 -121
- package/dist/client/index.js +741 -392
- 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 +50 -0
- package/dist/universal/index.cjs.map +1 -1
- package/dist/universal/index.d.cts +2 -2
- package/dist/universal/index.d.ts +2 -2
- package/dist/universal/index.js +5 -1
- package/package.json +1 -1
- package/dist/chunk-QIAM2VUU.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
|
|
@@ -3838,6 +3841,52 @@ var Erc20NamespaceImpl = class {
|
|
|
3838
3841
|
}
|
|
3839
3842
|
};
|
|
3840
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
|
+
|
|
3841
3890
|
// src/universal/api/nabu/tokens.ts
|
|
3842
3891
|
var import_viem6 = require("viem");
|
|
3843
3892
|
|
|
@@ -5038,7 +5087,7 @@ var CoinListProvider = CoinListContextProvider;
|
|
|
5038
5087
|
var import_react4 = require("react");
|
|
5039
5088
|
|
|
5040
5089
|
// src/client/generated/sdk-styles.gen.ts
|
|
5041
|
-
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\\:-mx-2{margin-inline:calc(var(--clcosdk-spacing) * -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-1\\/2{width:50%}.clcosdk\\:w-2\\/5{width:40%}.clcosdk\\:w-3\\/5{width:60%}.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-\\[calc\\(100\\%\\+16px\\)\\]{width:calc(100% + 16px)}.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-row{flex-direction:row}.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\\:justify-start{justify-content:flex-start}.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-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-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.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-text-primary{border-color:var(--color-text-primary)}.clcosdk\\:border-transparent{border-color:#0000}.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-1{padding-bottom:var(--clcosdk-spacing)}.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}}';
|
|
5042
5091
|
|
|
5043
5092
|
// src/client/CoinListStyleScope.tsx
|
|
5044
5093
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
@@ -5340,7 +5389,7 @@ function AlertBanner({
|
|
|
5340
5389
|
"aria-hidden": "true"
|
|
5341
5390
|
}
|
|
5342
5391
|
),
|
|
5343
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: cn(typeClasses.
|
|
5392
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: cn(typeClasses.bodySm, text), children: content })
|
|
5344
5393
|
]
|
|
5345
5394
|
}
|
|
5346
5395
|
);
|
|
@@ -7565,6 +7614,20 @@ function tokenLogoUrl(logo, minWidth = 40) {
|
|
|
7565
7614
|
}
|
|
7566
7615
|
}
|
|
7567
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
|
+
}
|
|
7568
7631
|
function offerAssetIconUrl(offer, tokenMetadata) {
|
|
7569
7632
|
return (tokenMetadata ? tokenLogoUrl(tokenMetadata.logo) : null) ?? offerIconUrl(offer);
|
|
7570
7633
|
}
|
|
@@ -8796,8 +8859,9 @@ var NO_TOKEN_ADDRESS = EvmContractAddress(
|
|
|
8796
8859
|
"0x0000000000000000000000000000000000000000"
|
|
8797
8860
|
);
|
|
8798
8861
|
function offerTokenIdentifier(offer, chain) {
|
|
8799
|
-
const
|
|
8800
|
-
|
|
8862
|
+
const asset = offerDisplayTokens(offer).find(
|
|
8863
|
+
(token) => token.chain === chain
|
|
8864
|
+
);
|
|
8801
8865
|
return asset === void 0 ? null : { chain, address: asset.address };
|
|
8802
8866
|
}
|
|
8803
8867
|
function tokenMetadataOf(state) {
|
|
@@ -13146,6 +13210,58 @@ function renderOndoSide(side, branches) {
|
|
|
13146
13210
|
}
|
|
13147
13211
|
}
|
|
13148
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
|
+
|
|
13149
13265
|
// src/client/components/offers/shared/offer-card-keyboard.ts
|
|
13150
13266
|
function onOfferCardKeyDown(event, onClick) {
|
|
13151
13267
|
if (event.key !== "Enter" && event.key !== " ") return;
|
|
@@ -13154,7 +13270,8 @@ function onOfferCardKeyDown(event, onClick) {
|
|
|
13154
13270
|
}
|
|
13155
13271
|
|
|
13156
13272
|
// src/client/components/offers/shared/OfferAssetCard.tsx
|
|
13157
|
-
var
|
|
13273
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
13274
|
+
var LOGO_SIZES = "(min-width: 768px) 48px, 40px";
|
|
13158
13275
|
function OfferAssetCard({
|
|
13159
13276
|
offer,
|
|
13160
13277
|
onClick,
|
|
@@ -13162,7 +13279,7 @@ function OfferAssetCard({
|
|
|
13162
13279
|
containerClassName
|
|
13163
13280
|
}) {
|
|
13164
13281
|
const interactive = onClick !== void 0;
|
|
13165
|
-
const card = /* @__PURE__ */ (0,
|
|
13282
|
+
const card = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
13166
13283
|
"article",
|
|
13167
13284
|
{
|
|
13168
13285
|
className: cn(
|
|
@@ -13176,11 +13293,13 @@ function OfferAssetCard({
|
|
|
13176
13293
|
tabIndex: interactive ? 0 : void 0,
|
|
13177
13294
|
onClick,
|
|
13178
13295
|
onKeyDown: interactive ? (event) => onOfferCardKeyDown(event, onClick) : void 0,
|
|
13179
|
-
children: /* @__PURE__ */ (0,
|
|
13180
|
-
offer.
|
|
13181
|
-
|
|
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,
|
|
13182
13299
|
{
|
|
13183
|
-
|
|
13300
|
+
light: offer.logo.light,
|
|
13301
|
+
dark: offer.logo.dark ?? void 0,
|
|
13302
|
+
sizes: LOGO_SIZES,
|
|
13184
13303
|
alt: "",
|
|
13185
13304
|
width: 48,
|
|
13186
13305
|
height: 48,
|
|
@@ -13188,8 +13307,8 @@ function OfferAssetCard({
|
|
|
13188
13307
|
style: { maxWidth: "none", width: "100%", height: "100%" }
|
|
13189
13308
|
}
|
|
13190
13309
|
) }) : null,
|
|
13191
|
-
/* @__PURE__ */ (0,
|
|
13192
|
-
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)(
|
|
13193
13312
|
"h2",
|
|
13194
13313
|
{
|
|
13195
13314
|
className: cn(
|
|
@@ -13198,13 +13317,13 @@ function OfferAssetCard({
|
|
|
13198
13317
|
children: offer.name
|
|
13199
13318
|
}
|
|
13200
13319
|
) : null,
|
|
13201
|
-
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
|
|
13202
13321
|
] })
|
|
13203
13322
|
] })
|
|
13204
13323
|
}
|
|
13205
13324
|
);
|
|
13206
|
-
const wrapped = containerClassName ? /* @__PURE__ */ (0,
|
|
13207
|
-
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 });
|
|
13208
13327
|
}
|
|
13209
13328
|
function cardActionLabel(offer) {
|
|
13210
13329
|
const parts = [offer.name, offer.symbol].filter(Boolean);
|
|
@@ -13212,7 +13331,7 @@ function cardActionLabel(offer) {
|
|
|
13212
13331
|
}
|
|
13213
13332
|
|
|
13214
13333
|
// src/client/components/offers/grid/OffersAssetGrid.tsx
|
|
13215
|
-
var
|
|
13334
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
13216
13335
|
var DEFAULT_MAX_COLUMNS = 3;
|
|
13217
13336
|
function OffersAssetGrid({
|
|
13218
13337
|
offers,
|
|
@@ -13227,14 +13346,14 @@ function OffersAssetGrid({
|
|
|
13227
13346
|
);
|
|
13228
13347
|
const maxGridWidth = `calc(${cols} * 20rem + ${Math.max(cols - 1, 0)} * 1.5rem)`;
|
|
13229
13348
|
const interactive = onOfferClick !== void 0;
|
|
13230
|
-
return /* @__PURE__ */ (0,
|
|
13349
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
13231
13350
|
"div",
|
|
13232
13351
|
{
|
|
13233
13352
|
className: cn(
|
|
13234
13353
|
"clcosdk:flex clcosdk:w-full clcosdk:justify-center",
|
|
13235
13354
|
containerClassName
|
|
13236
13355
|
),
|
|
13237
|
-
children: /* @__PURE__ */ (0,
|
|
13356
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
13238
13357
|
"div",
|
|
13239
13358
|
{
|
|
13240
13359
|
className: cn(
|
|
@@ -13244,7 +13363,7 @@ function OffersAssetGrid({
|
|
|
13244
13363
|
className
|
|
13245
13364
|
),
|
|
13246
13365
|
style: { maxWidth: maxGridWidth },
|
|
13247
|
-
children: offers.map((offer) => /* @__PURE__ */ (0,
|
|
13366
|
+
children: offers.map((offer) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
13248
13367
|
OfferAssetCard,
|
|
13249
13368
|
{
|
|
13250
13369
|
offer,
|
|
@@ -13286,7 +13405,9 @@ function saleCardStatus({
|
|
|
13286
13405
|
}
|
|
13287
13406
|
|
|
13288
13407
|
// src/client/components/offers/shared/OfferSaleCard.tsx
|
|
13289
|
-
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";
|
|
13290
13411
|
function OfferSaleCard({
|
|
13291
13412
|
offer,
|
|
13292
13413
|
onClick,
|
|
@@ -13301,7 +13422,8 @@ function OfferSaleCard({
|
|
|
13301
13422
|
secondsLeft
|
|
13302
13423
|
});
|
|
13303
13424
|
const interactive = onClick !== void 0;
|
|
13304
|
-
const
|
|
13425
|
+
const logo = offer.logo ? offer.logo.dark ?? offer.logo.light : null;
|
|
13426
|
+
const card = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
13305
13427
|
"article",
|
|
13306
13428
|
{
|
|
13307
13429
|
className: cn(
|
|
@@ -13316,16 +13438,17 @@ function OfferSaleCard({
|
|
|
13316
13438
|
onClick,
|
|
13317
13439
|
onKeyDown: interactive ? (event) => onOfferCardKeyDown(event, onClick) : void 0,
|
|
13318
13440
|
children: [
|
|
13319
|
-
|
|
13441
|
+
logo ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13320
13442
|
"div",
|
|
13321
13443
|
{
|
|
13322
13444
|
"aria-hidden": "true",
|
|
13323
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]",
|
|
13324
13446
|
style: { mixBlendMode: "overlay" },
|
|
13325
|
-
children: /* @__PURE__ */ (0,
|
|
13326
|
-
|
|
13447
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13448
|
+
ThemedImage,
|
|
13327
13449
|
{
|
|
13328
|
-
|
|
13450
|
+
light: logo,
|
|
13451
|
+
sizes: WATERMARK_SIZES,
|
|
13329
13452
|
alt: "",
|
|
13330
13453
|
className: "clcosdk:size-full clcosdk:rounded-full clcosdk:object-cover",
|
|
13331
13454
|
style: { maxWidth: "none", width: "100%", height: "100%" }
|
|
@@ -13333,12 +13456,13 @@ function OfferSaleCard({
|
|
|
13333
13456
|
)
|
|
13334
13457
|
}
|
|
13335
13458
|
) : null,
|
|
13336
|
-
/* @__PURE__ */ (0,
|
|
13337
|
-
/* @__PURE__ */ (0,
|
|
13338
|
-
|
|
13339
|
-
|
|
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,
|
|
13340
13463
|
{
|
|
13341
|
-
|
|
13464
|
+
light: logo,
|
|
13465
|
+
sizes: HEADER_LOGO_SIZES,
|
|
13342
13466
|
alt: "",
|
|
13343
13467
|
width: 36,
|
|
13344
13468
|
height: 36,
|
|
@@ -13346,7 +13470,7 @@ function OfferSaleCard({
|
|
|
13346
13470
|
style: { maxWidth: "none", width: "100%", height: "100%" }
|
|
13347
13471
|
}
|
|
13348
13472
|
) }) : null,
|
|
13349
|
-
offer.name ? /* @__PURE__ */ (0,
|
|
13473
|
+
offer.name ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13350
13474
|
"h2",
|
|
13351
13475
|
{
|
|
13352
13476
|
className: cn(
|
|
@@ -13356,7 +13480,7 @@ function OfferSaleCard({
|
|
|
13356
13480
|
}
|
|
13357
13481
|
) : null
|
|
13358
13482
|
] }),
|
|
13359
|
-
offer.tagline ? /* @__PURE__ */ (0,
|
|
13483
|
+
offer.tagline ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13360
13484
|
"p",
|
|
13361
13485
|
{
|
|
13362
13486
|
className: cn(
|
|
@@ -13367,20 +13491,20 @@ function OfferSaleCard({
|
|
|
13367
13491
|
}
|
|
13368
13492
|
) : null
|
|
13369
13493
|
] }),
|
|
13370
|
-
/* @__PURE__ */ (0,
|
|
13371
|
-
/* @__PURE__ */ (0,
|
|
13372
|
-
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)(
|
|
13373
13497
|
"span",
|
|
13374
13498
|
{
|
|
13375
13499
|
className: "clcosdk:relative clcosdk:inline-flex clcosdk:size-2 clcosdk:shrink-0",
|
|
13376
13500
|
"aria-hidden": "true",
|
|
13377
13501
|
children: [
|
|
13378
|
-
/* @__PURE__ */ (0,
|
|
13379
|
-
/* @__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" })
|
|
13380
13504
|
]
|
|
13381
13505
|
}
|
|
13382
13506
|
) : null,
|
|
13383
|
-
/* @__PURE__ */ (0,
|
|
13507
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13384
13508
|
"p",
|
|
13385
13509
|
{
|
|
13386
13510
|
className: cn(
|
|
@@ -13391,7 +13515,7 @@ function OfferSaleCard({
|
|
|
13391
13515
|
}
|
|
13392
13516
|
)
|
|
13393
13517
|
] }),
|
|
13394
|
-
/* @__PURE__ */ (0,
|
|
13518
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
13395
13519
|
"span",
|
|
13396
13520
|
{
|
|
13397
13521
|
className: cn(
|
|
@@ -13401,8 +13525,8 @@ function OfferSaleCard({
|
|
|
13401
13525
|
"aria-hidden": "true",
|
|
13402
13526
|
children: [
|
|
13403
13527
|
"View",
|
|
13404
|
-
/* @__PURE__ */ (0,
|
|
13405
|
-
/* @__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 })
|
|
13406
13530
|
]
|
|
13407
13531
|
}
|
|
13408
13532
|
)
|
|
@@ -13410,8 +13534,8 @@ function OfferSaleCard({
|
|
|
13410
13534
|
]
|
|
13411
13535
|
}
|
|
13412
13536
|
);
|
|
13413
|
-
const wrapped = containerClassName ? /* @__PURE__ */ (0,
|
|
13414
|
-
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 });
|
|
13415
13539
|
}
|
|
13416
13540
|
var SALE_PHASE_LABEL = {
|
|
13417
13541
|
upcoming: "Upcoming",
|
|
@@ -13424,10 +13548,10 @@ function cardActionLabel2(offer, phase) {
|
|
|
13424
13548
|
}
|
|
13425
13549
|
|
|
13426
13550
|
// src/client/components/offers/grid/OffersGridView.tsx
|
|
13427
|
-
var
|
|
13551
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
13428
13552
|
var DEFAULT_MAX_COLUMNS2 = 2;
|
|
13429
13553
|
function OffersGridView(props) {
|
|
13430
|
-
return /* @__PURE__ */ (0,
|
|
13554
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(OffersGridViewBody, { ...props }) });
|
|
13431
13555
|
}
|
|
13432
13556
|
function OffersGridViewBody({
|
|
13433
13557
|
state,
|
|
@@ -13441,13 +13565,13 @@ function OffersGridViewBody({
|
|
|
13441
13565
|
}) {
|
|
13442
13566
|
switch (state.type) {
|
|
13443
13567
|
case "loading":
|
|
13444
|
-
return loading ?? /* @__PURE__ */ (0,
|
|
13568
|
+
return loading ?? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(LoadingState, {});
|
|
13445
13569
|
case "error":
|
|
13446
|
-
return error ?? /* @__PURE__ */ (0,
|
|
13570
|
+
return error ?? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(ErrorState, { message: state.message });
|
|
13447
13571
|
case "empty":
|
|
13448
|
-
return emptyState ?? /* @__PURE__ */ (0,
|
|
13572
|
+
return emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(EmptyState, {});
|
|
13449
13573
|
case "content":
|
|
13450
|
-
return /* @__PURE__ */ (0,
|
|
13574
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13451
13575
|
OffersGridContent,
|
|
13452
13576
|
{
|
|
13453
13577
|
offers: state.offers,
|
|
@@ -13477,14 +13601,14 @@ function OffersGridContent({
|
|
|
13477
13601
|
Math.max(1, maxColumns ?? DEFAULT_MAX_COLUMNS2)
|
|
13478
13602
|
);
|
|
13479
13603
|
const maxGridWidth = `calc(${cols} * 28rem + ${Math.max(cols - 1, 0)} * 1.5rem)`;
|
|
13480
|
-
return /* @__PURE__ */ (0,
|
|
13604
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13481
13605
|
"div",
|
|
13482
13606
|
{
|
|
13483
13607
|
className: cn(
|
|
13484
13608
|
"clcosdk:flex clcosdk:w-full clcosdk:justify-center",
|
|
13485
13609
|
containerClassName
|
|
13486
13610
|
),
|
|
13487
|
-
children: /* @__PURE__ */ (0,
|
|
13611
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13488
13612
|
"div",
|
|
13489
13613
|
{
|
|
13490
13614
|
className: cn(
|
|
@@ -13493,7 +13617,7 @@ function OffersGridContent({
|
|
|
13493
13617
|
className
|
|
13494
13618
|
),
|
|
13495
13619
|
style: { maxWidth: maxGridWidth },
|
|
13496
|
-
children: offers.map((offer) => /* @__PURE__ */ (0,
|
|
13620
|
+
children: offers.map((offer) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13497
13621
|
OfferSaleCard,
|
|
13498
13622
|
{
|
|
13499
13623
|
offer,
|
|
@@ -13507,17 +13631,17 @@ function OffersGridContent({
|
|
|
13507
13631
|
);
|
|
13508
13632
|
}
|
|
13509
13633
|
function LoadingState() {
|
|
13510
|
-
return /* @__PURE__ */ (0,
|
|
13634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13511
13635
|
"output",
|
|
13512
13636
|
{
|
|
13513
13637
|
"aria-live": "polite",
|
|
13514
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",
|
|
13515
|
-
children: /* @__PURE__ */ (0,
|
|
13639
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading offers..." })
|
|
13516
13640
|
}
|
|
13517
13641
|
);
|
|
13518
13642
|
}
|
|
13519
13643
|
function ErrorState({ message }) {
|
|
13520
|
-
return /* @__PURE__ */ (0,
|
|
13644
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13521
13645
|
AlertBanner,
|
|
13522
13646
|
{
|
|
13523
13647
|
variant: "error",
|
|
@@ -13528,13 +13652,13 @@ function ErrorState({ message }) {
|
|
|
13528
13652
|
);
|
|
13529
13653
|
}
|
|
13530
13654
|
function EmptyState() {
|
|
13531
|
-
return /* @__PURE__ */ (0,
|
|
13655
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
|
|
13532
13656
|
"output",
|
|
13533
13657
|
{
|
|
13534
13658
|
"aria-live": "polite",
|
|
13535
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",
|
|
13536
13660
|
children: [
|
|
13537
|
-
/* @__PURE__ */ (0,
|
|
13661
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13538
13662
|
"p",
|
|
13539
13663
|
{
|
|
13540
13664
|
className: cn(
|
|
@@ -13544,14 +13668,14 @@ function EmptyState() {
|
|
|
13544
13668
|
children: "No offers available"
|
|
13545
13669
|
}
|
|
13546
13670
|
),
|
|
13547
|
-
/* @__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." })
|
|
13548
13672
|
]
|
|
13549
13673
|
}
|
|
13550
13674
|
);
|
|
13551
13675
|
}
|
|
13552
13676
|
|
|
13553
13677
|
// src/client/hooks/offers/grid/useOffersGridViewModel.ts
|
|
13554
|
-
var
|
|
13678
|
+
var import_react38 = require("react");
|
|
13555
13679
|
|
|
13556
13680
|
// src/client/hooks/offers/data/useOffers.ts
|
|
13557
13681
|
var import_react36 = require("react");
|
|
@@ -13609,19 +13733,56 @@ function useOffers(options = {}) {
|
|
|
13609
13733
|
return { offersState };
|
|
13610
13734
|
}
|
|
13611
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
|
+
|
|
13612
13766
|
// src/client/hooks/offers/shared/offer-sale-card.types.ts
|
|
13613
13767
|
var OfferSaleCardUi = {
|
|
13614
|
-
|
|
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) => ({
|
|
13615
13775
|
id: offer.id,
|
|
13776
|
+
...tokenMetadata ? { name: tokenMetadata.name } : {},
|
|
13616
13777
|
...saleWindow(offer),
|
|
13617
|
-
|
|
13778
|
+
logo: OfferLogoUi.fromOffer(offer, tokenMetadata),
|
|
13618
13779
|
endsAt: offer.endsAt
|
|
13619
13780
|
}),
|
|
13620
|
-
fromDetail: (detail) => ({
|
|
13781
|
+
fromDetail: (detail, tokenMetadata = null) => ({
|
|
13621
13782
|
id: detail.id,
|
|
13622
|
-
name: detail.name,
|
|
13783
|
+
name: tokenMetadata?.name ?? detail.name,
|
|
13623
13784
|
...saleWindow(detail),
|
|
13624
|
-
|
|
13785
|
+
logo: OfferLogoUi.fromOffer(detail, tokenMetadata),
|
|
13625
13786
|
endsAt: detail.endsAt
|
|
13626
13787
|
})
|
|
13627
13788
|
};
|
|
@@ -13639,17 +13800,80 @@ function saleWindow(offer) {
|
|
|
13639
13800
|
}
|
|
13640
13801
|
}
|
|
13641
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
|
+
|
|
13642
13862
|
// src/client/hooks/offers/grid/useOffersGridViewModel.ts
|
|
13643
13863
|
var NOT_AUTHENTICATED_MESSAGE = "Sign in to view available offers.";
|
|
13644
13864
|
var GENERIC_ERROR_MESSAGE = "Unable to load offers right now. Please try again.";
|
|
13645
13865
|
function useOffersGridViewModel(options = {}) {
|
|
13646
13866
|
const { data, onOfferClick, enabled = true } = options;
|
|
13647
|
-
const { offersState } = useOffers({ data, enabled });
|
|
13648
|
-
const state = (
|
|
13649
|
-
|
|
13650
|
-
|
|
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]
|
|
13651
13875
|
);
|
|
13652
|
-
const onEvent = (0,
|
|
13876
|
+
const onEvent = (0, import_react38.useCallback)(
|
|
13653
13877
|
(event) => {
|
|
13654
13878
|
switch (event.type) {
|
|
13655
13879
|
case "ON_OFFER_CLICK": {
|
|
@@ -13672,7 +13896,7 @@ function useOffersGridViewModel(options = {}) {
|
|
|
13672
13896
|
);
|
|
13673
13897
|
return { state, onEvent };
|
|
13674
13898
|
}
|
|
13675
|
-
function toUiState(offersState, interactive) {
|
|
13899
|
+
function toUiState(offersState, registryState, interactive) {
|
|
13676
13900
|
switch (offersState.type) {
|
|
13677
13901
|
case "LOADING":
|
|
13678
13902
|
return { type: "loading" };
|
|
@@ -13685,9 +13909,18 @@ function toUiState(offersState, interactive) {
|
|
|
13685
13909
|
if (offersState.offers.length === 0) {
|
|
13686
13910
|
return { type: "empty" };
|
|
13687
13911
|
}
|
|
13912
|
+
if (registryState.type === "LOADING") {
|
|
13913
|
+
return { type: "loading" };
|
|
13914
|
+
}
|
|
13915
|
+
const registry = registryState.type === "CONTENT" ? registryState.registry : null;
|
|
13688
13916
|
return {
|
|
13689
13917
|
type: "content",
|
|
13690
|
-
offers: offersState.offers.map(
|
|
13918
|
+
offers: offersState.offers.map(
|
|
13919
|
+
(offer) => OfferSaleCardUi.fromOffer(
|
|
13920
|
+
offer,
|
|
13921
|
+
registry ? TokenRegistrySnapshot.forOffer(registry, offer) : null
|
|
13922
|
+
)
|
|
13923
|
+
),
|
|
13691
13924
|
interactive
|
|
13692
13925
|
};
|
|
13693
13926
|
}
|
|
@@ -13699,7 +13932,7 @@ function toUiState(offersState, interactive) {
|
|
|
13699
13932
|
}
|
|
13700
13933
|
|
|
13701
13934
|
// src/client/components/offers/grid/OffersGridContainer.tsx
|
|
13702
|
-
var
|
|
13935
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
13703
13936
|
function OffersGridContainer({
|
|
13704
13937
|
data,
|
|
13705
13938
|
onOfferClick,
|
|
@@ -13711,17 +13944,17 @@ function OffersGridContainer({
|
|
|
13711
13944
|
onOfferClick,
|
|
13712
13945
|
enabled
|
|
13713
13946
|
});
|
|
13714
|
-
return /* @__PURE__ */ (0,
|
|
13947
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(OffersGridView, { state, onEvent, ...viewProps });
|
|
13715
13948
|
}
|
|
13716
13949
|
|
|
13717
13950
|
// src/client/components/requirements/ConnectedWalletList.tsx
|
|
13718
|
-
var
|
|
13719
|
-
var
|
|
13951
|
+
var import_react39 = require("react");
|
|
13952
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
13720
13953
|
function ConnectedWalletRow({
|
|
13721
13954
|
wallet,
|
|
13722
13955
|
onRemove
|
|
13723
13956
|
}) {
|
|
13724
|
-
const [state, setState] = (0,
|
|
13957
|
+
const [state, setState] = (0, import_react39.useState)("idle");
|
|
13725
13958
|
const remove = async () => {
|
|
13726
13959
|
if (!onRemove) return;
|
|
13727
13960
|
setState("removing");
|
|
@@ -13732,8 +13965,8 @@ function ConnectedWalletRow({
|
|
|
13732
13965
|
setState("error");
|
|
13733
13966
|
}
|
|
13734
13967
|
};
|
|
13735
|
-
return /* @__PURE__ */ (0,
|
|
13736
|
-
/* @__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)(
|
|
13737
13970
|
"span",
|
|
13738
13971
|
{
|
|
13739
13972
|
title: wallet.address,
|
|
@@ -13744,16 +13977,16 @@ function ConnectedWalletRow({
|
|
|
13744
13977
|
children: wallet.shortAddress
|
|
13745
13978
|
}
|
|
13746
13979
|
),
|
|
13747
|
-
onRemove != null && (state === "confirming" ? /* @__PURE__ */ (0,
|
|
13748
|
-
/* @__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)(
|
|
13749
13982
|
"span",
|
|
13750
13983
|
{
|
|
13751
13984
|
className: cn(typeClasses.subhead, "clcosdk:text-text-secondary"),
|
|
13752
13985
|
children: "Remove?"
|
|
13753
13986
|
}
|
|
13754
13987
|
),
|
|
13755
|
-
/* @__PURE__ */ (0,
|
|
13756
|
-
/* @__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)(
|
|
13757
13990
|
ClButton,
|
|
13758
13991
|
{
|
|
13759
13992
|
size: "sm",
|
|
@@ -13762,9 +13995,9 @@ function ConnectedWalletRow({
|
|
|
13762
13995
|
children: "Cancel"
|
|
13763
13996
|
}
|
|
13764
13997
|
)
|
|
13765
|
-
] }) : state === "error" ? /* @__PURE__ */ (0,
|
|
13766
|
-
/* @__PURE__ */ (0,
|
|
13767
|
-
/* @__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)(
|
|
13768
14001
|
ClButton,
|
|
13769
14002
|
{
|
|
13770
14003
|
size: "sm",
|
|
@@ -13773,7 +14006,7 @@ function ConnectedWalletRow({
|
|
|
13773
14006
|
children: "Try again"
|
|
13774
14007
|
}
|
|
13775
14008
|
)
|
|
13776
|
-
] }) : /* @__PURE__ */ (0,
|
|
14009
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13777
14010
|
ClButton,
|
|
13778
14011
|
{
|
|
13779
14012
|
size: "sm",
|
|
@@ -13786,7 +14019,7 @@ function ConnectedWalletRow({
|
|
|
13786
14019
|
] });
|
|
13787
14020
|
}
|
|
13788
14021
|
function ConnectedWalletList(props) {
|
|
13789
|
-
return /* @__PURE__ */ (0,
|
|
14022
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ConnectedWalletListBody, { ...props }) });
|
|
13790
14023
|
}
|
|
13791
14024
|
function ConnectedWalletListBody({
|
|
13792
14025
|
wallets,
|
|
@@ -13796,18 +14029,18 @@ function ConnectedWalletListBody({
|
|
|
13796
14029
|
status = "ready",
|
|
13797
14030
|
className
|
|
13798
14031
|
}) {
|
|
13799
|
-
return /* @__PURE__ */ (0,
|
|
14032
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
13800
14033
|
"div",
|
|
13801
14034
|
{
|
|
13802
14035
|
className: cn("clcosdk:flex clcosdk:flex-col clcosdk:gap-2", className),
|
|
13803
14036
|
children: [
|
|
13804
|
-
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)(
|
|
13805
14038
|
AlertBanner,
|
|
13806
14039
|
{
|
|
13807
14040
|
variant: "error",
|
|
13808
14041
|
content: "Couldn't load your connected wallets."
|
|
13809
14042
|
}
|
|
13810
|
-
) : 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)(
|
|
13811
14044
|
ConnectedWalletRow,
|
|
13812
14045
|
{
|
|
13813
14046
|
wallet,
|
|
@@ -13815,7 +14048,7 @@ function ConnectedWalletListBody({
|
|
|
13815
14048
|
},
|
|
13816
14049
|
wallet.id
|
|
13817
14050
|
)) }),
|
|
13818
|
-
onAdd != null && status !== "loading" && /* @__PURE__ */ (0,
|
|
14051
|
+
onAdd != null && status !== "loading" && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13819
14052
|
ClButton,
|
|
13820
14053
|
{
|
|
13821
14054
|
size: "sm",
|
|
@@ -13832,9 +14065,9 @@ function ConnectedWalletListBody({
|
|
|
13832
14065
|
|
|
13833
14066
|
// src/client/components/requirements/identity-verification/IdentityVerificationView.tsx
|
|
13834
14067
|
var import_websdk_react = __toESM(require("@sumsub/websdk-react"), 1);
|
|
13835
|
-
var
|
|
14068
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
13836
14069
|
function IdentityVerificationView(props) {
|
|
13837
|
-
return /* @__PURE__ */ (0,
|
|
14070
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(IdentityVerificationViewBody, { ...props }) });
|
|
13838
14071
|
}
|
|
13839
14072
|
function IdentityVerificationViewBody({
|
|
13840
14073
|
state,
|
|
@@ -13843,7 +14076,7 @@ function IdentityVerificationViewBody({
|
|
|
13843
14076
|
}) {
|
|
13844
14077
|
switch (state.type) {
|
|
13845
14078
|
case "loading":
|
|
13846
|
-
return /* @__PURE__ */ (0,
|
|
14079
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
13847
14080
|
"output",
|
|
13848
14081
|
{
|
|
13849
14082
|
"aria-live": "polite",
|
|
@@ -13851,11 +14084,11 @@ function IdentityVerificationViewBody({
|
|
|
13851
14084
|
"clcosdk:flex clcosdk:min-h-40 clcosdk:items-center clcosdk:justify-center",
|
|
13852
14085
|
className
|
|
13853
14086
|
),
|
|
13854
|
-
children: /* @__PURE__ */ (0,
|
|
14087
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading identity verification..." })
|
|
13855
14088
|
}
|
|
13856
14089
|
);
|
|
13857
14090
|
case "error":
|
|
13858
|
-
return /* @__PURE__ */ (0,
|
|
14091
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
13859
14092
|
"div",
|
|
13860
14093
|
{
|
|
13861
14094
|
className: cn(
|
|
@@ -13863,13 +14096,13 @@ function IdentityVerificationViewBody({
|
|
|
13863
14096
|
className
|
|
13864
14097
|
),
|
|
13865
14098
|
children: [
|
|
13866
|
-
/* @__PURE__ */ (0,
|
|
13867
|
-
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" })
|
|
13868
14101
|
]
|
|
13869
14102
|
}
|
|
13870
14103
|
);
|
|
13871
14104
|
case "ready":
|
|
13872
|
-
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)(
|
|
13873
14106
|
import_websdk_react.default,
|
|
13874
14107
|
{
|
|
13875
14108
|
accessToken: state.accessToken,
|
|
@@ -13909,25 +14142,25 @@ function toError(error) {
|
|
|
13909
14142
|
}
|
|
13910
14143
|
|
|
13911
14144
|
// src/client/hooks/requirements/identity-verification/useIdentityVerificationViewModel.ts
|
|
13912
|
-
var
|
|
14145
|
+
var import_react41 = require("react");
|
|
13913
14146
|
|
|
13914
14147
|
// src/client/hooks/requirements/data/useKycToken.ts
|
|
13915
|
-
var
|
|
14148
|
+
var import_react40 = require("react");
|
|
13916
14149
|
var IDLE_STATE = { type: "IDLE" };
|
|
13917
|
-
var
|
|
14150
|
+
var LOADING_STATE5 = { type: "LOADING" };
|
|
13918
14151
|
function useKycToken(levelName, reset) {
|
|
13919
14152
|
const { coinlist } = useCoinList();
|
|
13920
14153
|
const log = useLogger("useKycToken");
|
|
13921
|
-
const [kycTokenState, setKycTokenState] = (0,
|
|
13922
|
-
const resetPendingRef = (0,
|
|
13923
|
-
const tokenIssuedRef = (0,
|
|
13924
|
-
(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)(() => {
|
|
13925
14158
|
if (!tokenIssuedRef.current) {
|
|
13926
14159
|
resetPendingRef.current = reset === true;
|
|
13927
14160
|
}
|
|
13928
14161
|
}, [reset]);
|
|
13929
|
-
const fetchToken = (0,
|
|
13930
|
-
setKycTokenState(
|
|
14162
|
+
const fetchToken = (0, import_react40.useCallback)(async () => {
|
|
14163
|
+
setKycTokenState(LOADING_STATE5);
|
|
13931
14164
|
try {
|
|
13932
14165
|
const kycToken = await coinlist.requirements.createKycToken({
|
|
13933
14166
|
levelName,
|
|
@@ -13960,8 +14193,8 @@ var GENERIC_ERROR_MESSAGE2 = "Unable to start identity verification right now. P
|
|
|
13960
14193
|
function useIdentityVerificationViewModel(options = {}) {
|
|
13961
14194
|
const { levelName, reset, locale, onSubmitted, onError } = options;
|
|
13962
14195
|
const { kycTokenState, fetchToken } = useKycToken(levelName, reset);
|
|
13963
|
-
const fetchedRef = (0,
|
|
13964
|
-
(0,
|
|
14196
|
+
const fetchedRef = (0, import_react41.useRef)(false);
|
|
14197
|
+
(0, import_react41.useEffect)(() => {
|
|
13965
14198
|
if (fetchedRef.current) {
|
|
13966
14199
|
return;
|
|
13967
14200
|
}
|
|
@@ -13969,7 +14202,7 @@ function useIdentityVerificationViewModel(options = {}) {
|
|
|
13969
14202
|
fetchToken().catch(() => {
|
|
13970
14203
|
});
|
|
13971
14204
|
}, [fetchToken]);
|
|
13972
|
-
const state = (0,
|
|
14205
|
+
const state = (0, import_react41.useMemo)(() => {
|
|
13973
14206
|
switch (kycTokenState.type) {
|
|
13974
14207
|
case "IDLE":
|
|
13975
14208
|
case "LOADING":
|
|
@@ -13995,7 +14228,7 @@ function useIdentityVerificationViewModel(options = {}) {
|
|
|
13995
14228
|
}
|
|
13996
14229
|
}
|
|
13997
14230
|
}, [kycTokenState, locale, fetchToken]);
|
|
13998
|
-
const onEvent = (0,
|
|
14231
|
+
const onEvent = (0, import_react41.useCallback)(
|
|
13999
14232
|
(event) => {
|
|
14000
14233
|
switch (event.type) {
|
|
14001
14234
|
case "ON_RETRY":
|
|
@@ -14020,7 +14253,7 @@ function useIdentityVerificationViewModel(options = {}) {
|
|
|
14020
14253
|
}
|
|
14021
14254
|
|
|
14022
14255
|
// src/client/components/requirements/identity-verification/IdentityVerificationContainer.tsx
|
|
14023
|
-
var
|
|
14256
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
14024
14257
|
function IdentityVerificationContainer({
|
|
14025
14258
|
levelName,
|
|
14026
14259
|
reset,
|
|
@@ -14036,7 +14269,7 @@ function IdentityVerificationContainer({
|
|
|
14036
14269
|
onSubmitted,
|
|
14037
14270
|
onError
|
|
14038
14271
|
});
|
|
14039
|
-
return /* @__PURE__ */ (0,
|
|
14272
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
14040
14273
|
IdentityVerificationView,
|
|
14041
14274
|
{
|
|
14042
14275
|
state,
|
|
@@ -14051,7 +14284,7 @@ var import_lucide_react15 = require("lucide-react");
|
|
|
14051
14284
|
|
|
14052
14285
|
// src/client/components/design-system/StepStatusIcon.tsx
|
|
14053
14286
|
var import_lucide_react14 = require("lucide-react");
|
|
14054
|
-
var
|
|
14287
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
14055
14288
|
var statusConfig = {
|
|
14056
14289
|
required: {
|
|
14057
14290
|
Icon: import_lucide_react14.Info,
|
|
@@ -14076,7 +14309,7 @@ var statusConfig = {
|
|
|
14076
14309
|
};
|
|
14077
14310
|
function StepStatusIcon({ status, className }) {
|
|
14078
14311
|
const { Icon, colorClass, fillClass } = statusConfig[status];
|
|
14079
|
-
return /* @__PURE__ */ (0,
|
|
14312
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
14080
14313
|
Icon,
|
|
14081
14314
|
{
|
|
14082
14315
|
className: cn(
|
|
@@ -14091,49 +14324,90 @@ function StepStatusIcon({ status, className }) {
|
|
|
14091
14324
|
}
|
|
14092
14325
|
|
|
14093
14326
|
// src/client/components/requirements/RequirementItem.tsx
|
|
14094
|
-
var
|
|
14327
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
14328
|
+
var DEFAULT_PENDING = "Under review. We'll notify you when complete.";
|
|
14329
|
+
var DEFAULT_REJECTED = "Verification rejected.";
|
|
14330
|
+
var SUPPORT_LINK = "Contact support";
|
|
14095
14331
|
function VerificationActionZone({
|
|
14096
14332
|
status,
|
|
14333
|
+
statusMessages,
|
|
14097
14334
|
onAction,
|
|
14098
14335
|
onContactSupport
|
|
14099
14336
|
}) {
|
|
14100
14337
|
switch (status) {
|
|
14101
14338
|
case "required":
|
|
14102
14339
|
if (onAction === null) return null;
|
|
14103
|
-
return /* @__PURE__ */ (0,
|
|
14340
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ClButton, { size: "sm", className: "clcosdk:self-start", onClick: onAction, children: "Continue" });
|
|
14104
14341
|
case "pending":
|
|
14105
|
-
return /* @__PURE__ */ (0,
|
|
14342
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14106
14343
|
AlertBanner,
|
|
14107
14344
|
{
|
|
14108
14345
|
variant: "warning",
|
|
14109
|
-
content:
|
|
14346
|
+
content: statusMessages?.pending ?? DEFAULT_PENDING
|
|
14110
14347
|
}
|
|
14111
14348
|
);
|
|
14112
14349
|
case "completed":
|
|
14113
|
-
return /* @__PURE__ */ (0,
|
|
14350
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14351
|
+
AlertBanner,
|
|
14352
|
+
{
|
|
14353
|
+
variant: "success",
|
|
14354
|
+
content: statusMessages?.completed ?? "Identity verified."
|
|
14355
|
+
}
|
|
14356
|
+
);
|
|
14114
14357
|
case "rejected":
|
|
14115
|
-
return /* @__PURE__ */ (0,
|
|
14358
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14116
14359
|
AlertBanner,
|
|
14117
14360
|
{
|
|
14118
14361
|
variant: "error",
|
|
14119
|
-
content:
|
|
14120
|
-
|
|
14121
|
-
|
|
14122
|
-
|
|
14123
|
-
|
|
14124
|
-
|
|
14125
|
-
|
|
14126
|
-
onClick: onContactSupport,
|
|
14127
|
-
className: "clcosdk:underline",
|
|
14128
|
-
children: "Contact support"
|
|
14129
|
-
}
|
|
14130
|
-
),
|
|
14131
|
-
"."
|
|
14132
|
-
] })
|
|
14362
|
+
content: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14363
|
+
RejectedMessage,
|
|
14364
|
+
{
|
|
14365
|
+
message: statusMessages?.rejected ?? DEFAULT_REJECTED,
|
|
14366
|
+
onContactSupport
|
|
14367
|
+
}
|
|
14368
|
+
)
|
|
14133
14369
|
}
|
|
14134
14370
|
);
|
|
14135
14371
|
}
|
|
14136
14372
|
}
|
|
14373
|
+
function RejectedMessage({
|
|
14374
|
+
message,
|
|
14375
|
+
onContactSupport
|
|
14376
|
+
}) {
|
|
14377
|
+
const linkAt = message.indexOf(SUPPORT_LINK);
|
|
14378
|
+
if (onContactSupport == null) {
|
|
14379
|
+
return message;
|
|
14380
|
+
}
|
|
14381
|
+
if (linkAt === -1) {
|
|
14382
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
14383
|
+
message,
|
|
14384
|
+
" ",
|
|
14385
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14386
|
+
"button",
|
|
14387
|
+
{
|
|
14388
|
+
type: "button",
|
|
14389
|
+
onClick: onContactSupport,
|
|
14390
|
+
className: "clcosdk:underline",
|
|
14391
|
+
children: SUPPORT_LINK
|
|
14392
|
+
}
|
|
14393
|
+
),
|
|
14394
|
+
"."
|
|
14395
|
+
] });
|
|
14396
|
+
}
|
|
14397
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
14398
|
+
message.slice(0, linkAt),
|
|
14399
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14400
|
+
"button",
|
|
14401
|
+
{
|
|
14402
|
+
type: "button",
|
|
14403
|
+
onClick: onContactSupport,
|
|
14404
|
+
className: "clcosdk:underline",
|
|
14405
|
+
children: SUPPORT_LINK
|
|
14406
|
+
}
|
|
14407
|
+
),
|
|
14408
|
+
message.slice(linkAt + SUPPORT_LINK.length)
|
|
14409
|
+
] });
|
|
14410
|
+
}
|
|
14137
14411
|
function WalletActionZone({
|
|
14138
14412
|
status,
|
|
14139
14413
|
multiWallet,
|
|
@@ -14143,8 +14417,8 @@ function WalletActionZone({
|
|
|
14143
14417
|
onRemoveWallet
|
|
14144
14418
|
}) {
|
|
14145
14419
|
if (multiWallet) {
|
|
14146
|
-
return /* @__PURE__ */ (0,
|
|
14147
|
-
/* @__PURE__ */ (0,
|
|
14420
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
14421
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14148
14422
|
ConnectedWalletList,
|
|
14149
14423
|
{
|
|
14150
14424
|
wallets: connectedWallets,
|
|
@@ -14153,7 +14427,7 @@ function WalletActionZone({
|
|
|
14153
14427
|
status: walletsStatus
|
|
14154
14428
|
}
|
|
14155
14429
|
),
|
|
14156
|
-
status === "rejected" && /* @__PURE__ */ (0,
|
|
14430
|
+
status === "rejected" && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14157
14431
|
AlertBanner,
|
|
14158
14432
|
{
|
|
14159
14433
|
variant: "error",
|
|
@@ -14164,21 +14438,30 @@ function WalletActionZone({
|
|
|
14164
14438
|
}
|
|
14165
14439
|
if (status === "completed") {
|
|
14166
14440
|
const connected = connectedWallets[0];
|
|
14167
|
-
return /* @__PURE__ */ (0,
|
|
14168
|
-
onAction !== null && /* @__PURE__ */ (0,
|
|
14169
|
-
|
|
14441
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
14442
|
+
onAction !== null && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14443
|
+
ClButton,
|
|
14444
|
+
{
|
|
14445
|
+
size: "sm",
|
|
14446
|
+
variant: "secondary",
|
|
14447
|
+
className: "clcosdk:self-start",
|
|
14448
|
+
onClick: onAction,
|
|
14449
|
+
children: "Change wallet"
|
|
14450
|
+
}
|
|
14451
|
+
),
|
|
14452
|
+
walletsStatus === "loading" ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14170
14453
|
AlertBanner,
|
|
14171
14454
|
{
|
|
14172
14455
|
variant: "info",
|
|
14173
14456
|
content: "Loading your connected wallet\u2026"
|
|
14174
14457
|
}
|
|
14175
|
-
) : walletsStatus === "error" ? /* @__PURE__ */ (0,
|
|
14458
|
+
) : walletsStatus === "error" ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14176
14459
|
AlertBanner,
|
|
14177
14460
|
{
|
|
14178
14461
|
variant: "error",
|
|
14179
14462
|
content: "Couldn't load your connected wallet."
|
|
14180
14463
|
}
|
|
14181
|
-
) : /* @__PURE__ */ (0,
|
|
14464
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14182
14465
|
AlertBanner,
|
|
14183
14466
|
{
|
|
14184
14467
|
variant: "success",
|
|
@@ -14188,9 +14471,9 @@ function WalletActionZone({
|
|
|
14188
14471
|
] });
|
|
14189
14472
|
}
|
|
14190
14473
|
if (status === "rejected") {
|
|
14191
|
-
return /* @__PURE__ */ (0,
|
|
14192
|
-
onAction !== null && /* @__PURE__ */ (0,
|
|
14193
|
-
/* @__PURE__ */ (0,
|
|
14474
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
14475
|
+
onAction !== null && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ClButton, { size: "sm", className: "clcosdk:self-start", onClick: onAction, children: "Connect wallet" }),
|
|
14476
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14194
14477
|
AlertBanner,
|
|
14195
14478
|
{
|
|
14196
14479
|
variant: "error",
|
|
@@ -14200,7 +14483,7 @@ function WalletActionZone({
|
|
|
14200
14483
|
] });
|
|
14201
14484
|
}
|
|
14202
14485
|
if (onAction === null) return null;
|
|
14203
|
-
return /* @__PURE__ */ (0,
|
|
14486
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ClButton, { size: "sm", className: "clcosdk:self-start", onClick: onAction, children: "Connect wallet" });
|
|
14204
14487
|
}
|
|
14205
14488
|
function RequirementItem({
|
|
14206
14489
|
ui,
|
|
@@ -14210,9 +14493,10 @@ function RequirementItem({
|
|
|
14210
14493
|
onAction,
|
|
14211
14494
|
onRemoveWallet,
|
|
14212
14495
|
walletsStatus,
|
|
14213
|
-
onContactSupport
|
|
14496
|
+
onContactSupport,
|
|
14497
|
+
spaceBeforeNextRow = true
|
|
14214
14498
|
}) {
|
|
14215
|
-
return /* @__PURE__ */ (0,
|
|
14499
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
14216
14500
|
"div",
|
|
14217
14501
|
{
|
|
14218
14502
|
className: cn(
|
|
@@ -14220,17 +14504,17 @@ function RequirementItem({
|
|
|
14220
14504
|
className
|
|
14221
14505
|
),
|
|
14222
14506
|
children: [
|
|
14223
|
-
/* @__PURE__ */ (0,
|
|
14507
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
14224
14508
|
"button",
|
|
14225
14509
|
{
|
|
14226
14510
|
type: "button",
|
|
14227
14511
|
onClick: onToggle,
|
|
14228
14512
|
"aria-expanded": expanded,
|
|
14229
|
-
className: "clcosdk:flex clcosdk:h-14 clcosdk:w-
|
|
14513
|
+
className: "clcosdk:-mx-2 clcosdk:flex clcosdk:h-14 clcosdk:w-[calc(100%+16px)] clcosdk:cursor-pointer clcosdk:items-center clcosdk:justify-between clcosdk:rounded-2xl clcosdk:px-2 clcosdk:transition-colors clcosdk:hover:bg-surface",
|
|
14230
14514
|
children: [
|
|
14231
|
-
/* @__PURE__ */ (0,
|
|
14232
|
-
/* @__PURE__ */ (0,
|
|
14233
|
-
/* @__PURE__ */ (0,
|
|
14515
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-3", children: [
|
|
14516
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(StepStatusIcon, { status: ui.status }),
|
|
14517
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14234
14518
|
"span",
|
|
14235
14519
|
{
|
|
14236
14520
|
className: cn(
|
|
@@ -14241,7 +14525,7 @@ function RequirementItem({
|
|
|
14241
14525
|
}
|
|
14242
14526
|
)
|
|
14243
14527
|
] }),
|
|
14244
|
-
/* @__PURE__ */ (0,
|
|
14528
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14245
14529
|
import_lucide_react15.ChevronRight,
|
|
14246
14530
|
{
|
|
14247
14531
|
className: cn(
|
|
@@ -14254,43 +14538,53 @@ function RequirementItem({
|
|
|
14254
14538
|
]
|
|
14255
14539
|
}
|
|
14256
14540
|
),
|
|
14257
|
-
/* @__PURE__ */ (0,
|
|
14541
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14258
14542
|
"div",
|
|
14259
14543
|
{
|
|
14260
14544
|
className: cn(
|
|
14261
14545
|
"clcosdk:grid clcosdk:transition-[grid-template-rows] clcosdk:duration-300 clcosdk:ease-in-out",
|
|
14262
14546
|
expanded ? "clcosdk:grid-rows-[1fr]" : "clcosdk:grid-rows-[0fr]"
|
|
14263
14547
|
),
|
|
14264
|
-
children: /* @__PURE__ */ (0,
|
|
14265
|
-
|
|
14266
|
-
|
|
14267
|
-
|
|
14268
|
-
|
|
14269
|
-
|
|
14270
|
-
|
|
14548
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "clcosdk:min-h-0 clcosdk:overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
14549
|
+
"div",
|
|
14550
|
+
{
|
|
14551
|
+
className: cn(
|
|
14552
|
+
"clcosdk:flex clcosdk:flex-col clcosdk:gap-4",
|
|
14553
|
+
spaceBeforeNextRow && "clcosdk:pb-4"
|
|
14554
|
+
),
|
|
14555
|
+
children: [
|
|
14556
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14557
|
+
"p",
|
|
14558
|
+
{
|
|
14559
|
+
className: cn(
|
|
14560
|
+
typeClasses.bodySm,
|
|
14561
|
+
"clcosdk:text-text-secondary"
|
|
14562
|
+
),
|
|
14563
|
+
children: ui.description
|
|
14564
|
+
}
|
|
14271
14565
|
),
|
|
14272
|
-
|
|
14273
|
-
|
|
14274
|
-
|
|
14275
|
-
|
|
14276
|
-
|
|
14277
|
-
|
|
14278
|
-
|
|
14279
|
-
|
|
14280
|
-
|
|
14281
|
-
|
|
14282
|
-
|
|
14283
|
-
|
|
14284
|
-
|
|
14285
|
-
|
|
14286
|
-
|
|
14287
|
-
|
|
14288
|
-
|
|
14289
|
-
|
|
14290
|
-
|
|
14291
|
-
|
|
14292
|
-
|
|
14293
|
-
|
|
14566
|
+
ui.variant === "verification" ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14567
|
+
VerificationActionZone,
|
|
14568
|
+
{
|
|
14569
|
+
status: ui.status,
|
|
14570
|
+
statusMessages: ui.statusMessages,
|
|
14571
|
+
onAction,
|
|
14572
|
+
onContactSupport
|
|
14573
|
+
}
|
|
14574
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14575
|
+
WalletActionZone,
|
|
14576
|
+
{
|
|
14577
|
+
status: ui.status,
|
|
14578
|
+
multiWallet: ui.multiWallet,
|
|
14579
|
+
connectedWallets: ui.connectedWallets,
|
|
14580
|
+
walletsStatus,
|
|
14581
|
+
onAction,
|
|
14582
|
+
onRemoveWallet
|
|
14583
|
+
}
|
|
14584
|
+
)
|
|
14585
|
+
]
|
|
14586
|
+
}
|
|
14587
|
+
) })
|
|
14294
14588
|
}
|
|
14295
14589
|
)
|
|
14296
14590
|
]
|
|
@@ -14299,35 +14593,29 @@ function RequirementItem({
|
|
|
14299
14593
|
}
|
|
14300
14594
|
|
|
14301
14595
|
// src/client/components/requirements/RequirementsChecklistView.tsx
|
|
14302
|
-
var
|
|
14596
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
14303
14597
|
function RequirementsChecklistView(props) {
|
|
14304
|
-
return /* @__PURE__ */ (0,
|
|
14598
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(RequirementsChecklistViewBody, { ...props }) });
|
|
14305
14599
|
}
|
|
14306
14600
|
function RequirementsChecklistViewBody({
|
|
14307
14601
|
state,
|
|
14308
14602
|
onEvent,
|
|
14309
14603
|
loading,
|
|
14310
14604
|
error,
|
|
14311
|
-
unauthenticatedState,
|
|
14312
14605
|
className
|
|
14313
14606
|
}) {
|
|
14314
14607
|
switch (state.type) {
|
|
14315
14608
|
case "loading":
|
|
14316
|
-
return loading ?? /* @__PURE__ */ (0,
|
|
14317
|
-
|
|
14318
|
-
return unauthenticatedState ?? null;
|
|
14319
|
-
case "error":
|
|
14320
|
-
return error ?? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14321
|
-
AlertBanner,
|
|
14609
|
+
return loading ?? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14610
|
+
LoadingState2,
|
|
14322
14611
|
{
|
|
14323
|
-
|
|
14324
|
-
|
|
14325
|
-
|
|
14326
|
-
className: "clcosdk:w-full clcosdk:max-w-[28rem]"
|
|
14612
|
+
title: state.title,
|
|
14613
|
+
description: state.description,
|
|
14614
|
+
className
|
|
14327
14615
|
}
|
|
14328
14616
|
);
|
|
14329
|
-
case "
|
|
14330
|
-
return /* @__PURE__ */ (0,
|
|
14617
|
+
case "error":
|
|
14618
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
14331
14619
|
"div",
|
|
14332
14620
|
{
|
|
14333
14621
|
className: cn(
|
|
@@ -14335,46 +14623,91 @@ function RequirementsChecklistViewBody({
|
|
|
14335
14623
|
className
|
|
14336
14624
|
),
|
|
14337
14625
|
children: [
|
|
14338
|
-
/* @__PURE__ */ (0,
|
|
14339
|
-
|
|
14340
|
-
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: state.description })
|
|
14341
|
-
] }),
|
|
14342
|
-
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:divide-y clcosdk:divide-divider", children: state.items.map((row) => /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14343
|
-
RequirementItem,
|
|
14344
|
-
{
|
|
14345
|
-
ui: row.item,
|
|
14346
|
-
expanded: row.expanded,
|
|
14347
|
-
onToggle: () => onEvent({ type: "ON_TOGGLE_ITEM", requirementId: row.id }),
|
|
14348
|
-
onAction: row.actionEnabled ? () => onEvent({
|
|
14349
|
-
type: "ON_REQUIREMENT_ACTION",
|
|
14350
|
-
requirementId: row.id
|
|
14351
|
-
}) : null,
|
|
14352
|
-
onRemoveWallet: row.wallets ? (id) => state.removeWallet(id) : void 0,
|
|
14353
|
-
walletsStatus: row.wallets?.status,
|
|
14354
|
-
onContactSupport: row.contactSupportEnabled ? () => onEvent({
|
|
14355
|
-
type: "ON_CONTACT_SUPPORT",
|
|
14356
|
-
requirementId: row.id
|
|
14357
|
-
}) : null
|
|
14358
|
-
},
|
|
14359
|
-
row.id
|
|
14360
|
-
)) }),
|
|
14361
|
-
state.ineligible && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14626
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: state.title }),
|
|
14627
|
+
error ?? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14362
14628
|
AlertBanner,
|
|
14363
14629
|
{
|
|
14364
14630
|
variant: "error",
|
|
14365
14631
|
icon: true,
|
|
14366
|
-
content: "
|
|
14632
|
+
content: "Unable to load requirements. Refresh the page to try again."
|
|
14367
14633
|
}
|
|
14368
|
-
)
|
|
14369
|
-
|
|
14634
|
+
)
|
|
14635
|
+
]
|
|
14636
|
+
}
|
|
14637
|
+
);
|
|
14638
|
+
case "content":
|
|
14639
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
14640
|
+
"div",
|
|
14641
|
+
{
|
|
14642
|
+
className: cn(
|
|
14643
|
+
"clcosdk:flex clcosdk:w-full clcosdk:flex-col clcosdk:gap-4",
|
|
14644
|
+
className
|
|
14645
|
+
),
|
|
14646
|
+
children: [
|
|
14647
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
14648
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: state.title }),
|
|
14649
|
+
state.blockedMessage == null && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14650
|
+
"p",
|
|
14651
|
+
{
|
|
14652
|
+
className: cn(typeClasses.body, "clcosdk:text-text-secondary"),
|
|
14653
|
+
children: state.items.length === 0 ? "No requirements to complete." : state.description
|
|
14654
|
+
}
|
|
14655
|
+
)
|
|
14656
|
+
] }),
|
|
14657
|
+
state.blockedMessage != null ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(AlertBanner, { variant: "info", icon: true, content: state.blockedMessage }) : state.items.length === 0 ? state.continueAction && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14370
14658
|
ClButton,
|
|
14371
14659
|
{
|
|
14660
|
+
variant: "primary",
|
|
14372
14661
|
fullWidth: true,
|
|
14373
14662
|
disabled: !state.continueAction.enabled,
|
|
14374
14663
|
onClick: () => onEvent({ type: "ON_CONTINUE" }),
|
|
14375
14664
|
children: "Continue"
|
|
14376
14665
|
}
|
|
14377
|
-
)
|
|
14666
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [
|
|
14667
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:divide-y clcosdk:divide-divider", children: state.items.map((row, index) => /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14668
|
+
RequirementItem,
|
|
14669
|
+
{
|
|
14670
|
+
ui: row.item,
|
|
14671
|
+
expanded: row.expanded,
|
|
14672
|
+
spaceBeforeNextRow: index < state.items.length - 1,
|
|
14673
|
+
onToggle: () => onEvent({ type: "ON_TOGGLE_ITEM", requirementId: row.id }),
|
|
14674
|
+
onAction: row.actionEnabled ? () => onEvent({
|
|
14675
|
+
type: "ON_REQUIREMENT_ACTION",
|
|
14676
|
+
requirementId: row.id
|
|
14677
|
+
}) : null,
|
|
14678
|
+
onRemoveWallet: row.wallets ? (id) => state.removeWallet(id) : void 0,
|
|
14679
|
+
walletsStatus: row.wallets?.status,
|
|
14680
|
+
onContactSupport: row.contactSupportEnabled ? () => onEvent({
|
|
14681
|
+
type: "ON_CONTACT_SUPPORT",
|
|
14682
|
+
requirementId: row.id
|
|
14683
|
+
}) : null
|
|
14684
|
+
},
|
|
14685
|
+
row.id
|
|
14686
|
+
)) }),
|
|
14687
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-row clcosdk:items-center clcosdk:justify-between clcosdk:gap-6", children: [
|
|
14688
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14689
|
+
"span",
|
|
14690
|
+
{
|
|
14691
|
+
className: cn(
|
|
14692
|
+
typeClasses.subhead,
|
|
14693
|
+
"clcosdk:min-w-0",
|
|
14694
|
+
state.ineligible ? "clcosdk:text-error" : "clcosdk:text-text-secondary"
|
|
14695
|
+
),
|
|
14696
|
+
children: state.ineligible ? "You are not eligible to invest." : completedLabel(state.items)
|
|
14697
|
+
}
|
|
14698
|
+
),
|
|
14699
|
+
state.continueAction && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14700
|
+
ClButton,
|
|
14701
|
+
{
|
|
14702
|
+
variant: "primary",
|
|
14703
|
+
disabled: !state.continueAction.enabled,
|
|
14704
|
+
onClick: () => onEvent({ type: "ON_CONTINUE" }),
|
|
14705
|
+
className: "clcosdk:shrink-0",
|
|
14706
|
+
children: "Continue"
|
|
14707
|
+
}
|
|
14708
|
+
)
|
|
14709
|
+
] })
|
|
14710
|
+
] })
|
|
14378
14711
|
]
|
|
14379
14712
|
}
|
|
14380
14713
|
);
|
|
@@ -14384,19 +14717,43 @@ function RequirementsChecklistViewBody({
|
|
|
14384
14717
|
}
|
|
14385
14718
|
}
|
|
14386
14719
|
}
|
|
14387
|
-
function
|
|
14388
|
-
|
|
14389
|
-
"
|
|
14720
|
+
function completedLabel(items) {
|
|
14721
|
+
const completed = items.filter(
|
|
14722
|
+
(row) => row.item.status === "completed"
|
|
14723
|
+
).length;
|
|
14724
|
+
return `${completed}/${items.length} completed`;
|
|
14725
|
+
}
|
|
14726
|
+
var LOADING_ROW_WIDTHS = [
|
|
14727
|
+
"clcosdk:w-3/5",
|
|
14728
|
+
"clcosdk:w-2/5",
|
|
14729
|
+
"clcosdk:w-1/2"
|
|
14730
|
+
];
|
|
14731
|
+
function LoadingState2({
|
|
14732
|
+
title: title2,
|
|
14733
|
+
description: description2,
|
|
14734
|
+
className
|
|
14735
|
+
}) {
|
|
14736
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
14737
|
+
"div",
|
|
14390
14738
|
{
|
|
14391
|
-
|
|
14392
|
-
|
|
14393
|
-
|
|
14739
|
+
className: cn(
|
|
14740
|
+
"clcosdk:flex clcosdk:w-full clcosdk:flex-col clcosdk:gap-4",
|
|
14741
|
+
className
|
|
14742
|
+
),
|
|
14743
|
+
children: [
|
|
14744
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("output", { className: "clcosdk:sr-only", children: "Loading requirements..." }),
|
|
14745
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
14746
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: title2 }),
|
|
14747
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: description2 })
|
|
14748
|
+
] }),
|
|
14749
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-3", children: LOADING_ROW_WIDTHS.map((width) => /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Skeleton, { className: cn("clcosdk:h-8", width) }, width)) })
|
|
14750
|
+
]
|
|
14394
14751
|
}
|
|
14395
14752
|
);
|
|
14396
14753
|
}
|
|
14397
14754
|
|
|
14398
14755
|
// src/client/components/requirements/tax-document/TaxDocumentModalView.tsx
|
|
14399
|
-
var
|
|
14756
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
14400
14757
|
function TaxDocumentModalView({
|
|
14401
14758
|
state,
|
|
14402
14759
|
onEvent,
|
|
@@ -14405,7 +14762,7 @@ function TaxDocumentModalView({
|
|
|
14405
14762
|
if (state.type === "hidden") {
|
|
14406
14763
|
return null;
|
|
14407
14764
|
}
|
|
14408
|
-
return /* @__PURE__ */ (0,
|
|
14765
|
+
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)(
|
|
14409
14766
|
"div",
|
|
14410
14767
|
{
|
|
14411
14768
|
className: cn(
|
|
@@ -14413,11 +14770,11 @@ function TaxDocumentModalView({
|
|
|
14413
14770
|
className
|
|
14414
14771
|
),
|
|
14415
14772
|
children: [
|
|
14416
|
-
/* @__PURE__ */ (0,
|
|
14417
|
-
/* @__PURE__ */ (0,
|
|
14418
|
-
/* @__PURE__ */ (0,
|
|
14773
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:items-start clcosdk:justify-between clcosdk:gap-4", children: [
|
|
14774
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: state.title }),
|
|
14775
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(CloseButton, { onClick: () => onEvent({ type: "ON_CLOSE" }) })
|
|
14419
14776
|
] }),
|
|
14420
|
-
/* @__PURE__ */ (0,
|
|
14777
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Screen, { screen: state.screen, onEvent })
|
|
14421
14778
|
]
|
|
14422
14779
|
}
|
|
14423
14780
|
) }) });
|
|
@@ -14428,11 +14785,11 @@ function Screen({
|
|
|
14428
14785
|
}) {
|
|
14429
14786
|
switch (screen.type) {
|
|
14430
14787
|
case "loading":
|
|
14431
|
-
return /* @__PURE__ */ (0,
|
|
14788
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(LoadingScreen, {});
|
|
14432
14789
|
case "error":
|
|
14433
|
-
return /* @__PURE__ */ (0,
|
|
14790
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(AlertBanner, { variant: "error", icon: true, content: screen.message });
|
|
14434
14791
|
case "review":
|
|
14435
|
-
return /* @__PURE__ */ (0,
|
|
14792
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14436
14793
|
ReviewScreen,
|
|
14437
14794
|
{
|
|
14438
14795
|
fields: screen.fields,
|
|
@@ -14443,9 +14800,9 @@ function Screen({
|
|
|
14443
14800
|
}
|
|
14444
14801
|
);
|
|
14445
14802
|
case "editing":
|
|
14446
|
-
return /* @__PURE__ */ (0,
|
|
14803
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(EditScreen, { fields: screen.fields, onEvent });
|
|
14447
14804
|
case "sign-only":
|
|
14448
|
-
return /* @__PURE__ */ (0,
|
|
14805
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14449
14806
|
SignOnlyScreen,
|
|
14450
14807
|
{
|
|
14451
14808
|
signing: screen.signing,
|
|
@@ -14460,14 +14817,14 @@ function Screen({
|
|
|
14460
14817
|
}
|
|
14461
14818
|
}
|
|
14462
14819
|
function LoadingScreen() {
|
|
14463
|
-
return /* @__PURE__ */ (0,
|
|
14820
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14464
14821
|
"output",
|
|
14465
14822
|
{
|
|
14466
14823
|
"aria-live": "polite",
|
|
14467
14824
|
className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-4",
|
|
14468
|
-
children: [0, 1, 2, 3, 4].map((row) => /* @__PURE__ */ (0,
|
|
14469
|
-
/* @__PURE__ */ (0,
|
|
14470
|
-
/* @__PURE__ */ (0,
|
|
14825
|
+
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: [
|
|
14826
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "clcosdk:h-3 clcosdk:w-28 clcosdk:animate-pulse clcosdk:rounded clcosdk:bg-surface" }),
|
|
14827
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "clcosdk:h-5 clcosdk:w-48 clcosdk:animate-pulse clcosdk:rounded clcosdk:bg-surface" })
|
|
14471
14828
|
] }, row))
|
|
14472
14829
|
}
|
|
14473
14830
|
);
|
|
@@ -14479,9 +14836,9 @@ function ReviewScreen({
|
|
|
14479
14836
|
signError,
|
|
14480
14837
|
onEvent
|
|
14481
14838
|
}) {
|
|
14482
|
-
return /* @__PURE__ */ (0,
|
|
14483
|
-
/* @__PURE__ */ (0,
|
|
14484
|
-
piiUnavailable && /* @__PURE__ */ (0,
|
|
14839
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
14840
|
+
/* @__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." }),
|
|
14841
|
+
piiUnavailable && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14485
14842
|
AlertBanner,
|
|
14486
14843
|
{
|
|
14487
14844
|
variant: "info",
|
|
@@ -14489,27 +14846,27 @@ function ReviewScreen({
|
|
|
14489
14846
|
content: "We don't have this information on file yet \u2014 please fill it in below."
|
|
14490
14847
|
}
|
|
14491
14848
|
),
|
|
14492
|
-
/* @__PURE__ */ (0,
|
|
14849
|
+
/* @__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)(
|
|
14493
14850
|
"div",
|
|
14494
14851
|
{
|
|
14495
14852
|
className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1",
|
|
14496
14853
|
children: [
|
|
14497
|
-
/* @__PURE__ */ (0,
|
|
14854
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14498
14855
|
"span",
|
|
14499
14856
|
{
|
|
14500
14857
|
className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
|
|
14501
14858
|
children: label
|
|
14502
14859
|
}
|
|
14503
14860
|
),
|
|
14504
|
-
/* @__PURE__ */ (0,
|
|
14861
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: cn(typeClasses.body, "clcosdk:text-text-primary"), children: displayValue })
|
|
14505
14862
|
]
|
|
14506
14863
|
},
|
|
14507
14864
|
field
|
|
14508
14865
|
)) }),
|
|
14509
|
-
/* @__PURE__ */ (0,
|
|
14510
|
-
signError && /* @__PURE__ */ (0,
|
|
14511
|
-
/* @__PURE__ */ (0,
|
|
14512
|
-
/* @__PURE__ */ (0,
|
|
14866
|
+
/* @__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." }),
|
|
14867
|
+
signError && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(AlertBanner, { variant: "error", icon: true, content: signError }),
|
|
14868
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
14869
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14513
14870
|
ClButton,
|
|
14514
14871
|
{
|
|
14515
14872
|
fullWidth: true,
|
|
@@ -14519,7 +14876,7 @@ function ReviewScreen({
|
|
|
14519
14876
|
children: "Sign W-8BEN"
|
|
14520
14877
|
}
|
|
14521
14878
|
),
|
|
14522
|
-
/* @__PURE__ */ (0,
|
|
14879
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14523
14880
|
ClButton,
|
|
14524
14881
|
{
|
|
14525
14882
|
fullWidth: true,
|
|
@@ -14536,20 +14893,20 @@ function EditScreen({
|
|
|
14536
14893
|
fields,
|
|
14537
14894
|
onEvent
|
|
14538
14895
|
}) {
|
|
14539
|
-
return /* @__PURE__ */ (0,
|
|
14540
|
-
/* @__PURE__ */ (0,
|
|
14896
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
14897
|
+
/* @__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)(
|
|
14541
14898
|
"label",
|
|
14542
14899
|
{
|
|
14543
14900
|
className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1",
|
|
14544
14901
|
children: [
|
|
14545
|
-
/* @__PURE__ */ (0,
|
|
14902
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14546
14903
|
"span",
|
|
14547
14904
|
{
|
|
14548
14905
|
className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
|
|
14549
14906
|
children: label
|
|
14550
14907
|
}
|
|
14551
14908
|
),
|
|
14552
|
-
/* @__PURE__ */ (0,
|
|
14909
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14553
14910
|
"input",
|
|
14554
14911
|
{
|
|
14555
14912
|
type: "text",
|
|
@@ -14570,9 +14927,9 @@ function EditScreen({
|
|
|
14570
14927
|
},
|
|
14571
14928
|
field
|
|
14572
14929
|
)) }),
|
|
14573
|
-
/* @__PURE__ */ (0,
|
|
14574
|
-
/* @__PURE__ */ (0,
|
|
14575
|
-
/* @__PURE__ */ (0,
|
|
14930
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
14931
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(ClButton, { fullWidth: true, onClick: () => onEvent({ type: "ON_SAVE_EDIT" }), children: "Save & review" }),
|
|
14932
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14576
14933
|
ClButton,
|
|
14577
14934
|
{
|
|
14578
14935
|
fullWidth: true,
|
|
@@ -14589,10 +14946,10 @@ function SignOnlyScreen({
|
|
|
14589
14946
|
signError,
|
|
14590
14947
|
onEvent
|
|
14591
14948
|
}) {
|
|
14592
|
-
return /* @__PURE__ */ (0,
|
|
14593
|
-
/* @__PURE__ */ (0,
|
|
14594
|
-
signError && /* @__PURE__ */ (0,
|
|
14595
|
-
/* @__PURE__ */ (0,
|
|
14949
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
14950
|
+
/* @__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." }),
|
|
14951
|
+
signError && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(AlertBanner, { variant: "error", icon: true, content: signError }),
|
|
14952
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14596
14953
|
ClButton,
|
|
14597
14954
|
{
|
|
14598
14955
|
fullWidth: true,
|
|
@@ -14606,12 +14963,12 @@ function SignOnlyScreen({
|
|
|
14606
14963
|
}
|
|
14607
14964
|
|
|
14608
14965
|
// src/client/hooks/requirements/tax-document/useTaxDocumentModalViewModel.ts
|
|
14609
|
-
var
|
|
14966
|
+
var import_react43 = require("react");
|
|
14610
14967
|
|
|
14611
14968
|
// src/client/hooks/requirements/data/useTaxDocument.ts
|
|
14612
|
-
var
|
|
14969
|
+
var import_react42 = require("react");
|
|
14613
14970
|
var IDLE_SIGN = { type: "idle", error: null };
|
|
14614
|
-
var
|
|
14971
|
+
var LOADING_STATE6 = { type: "LOADING" };
|
|
14615
14972
|
var SIGN_FAILED_MESSAGE = "Unable to sign document. Please try again.";
|
|
14616
14973
|
var DOB_INVALID_MESSAGE = "Enter your date of birth as MM/DD/YYYY.";
|
|
14617
14974
|
var FIELD_KEYS = {
|
|
@@ -14684,8 +15041,8 @@ function useTaxDocument({
|
|
|
14684
15041
|
}) {
|
|
14685
15042
|
const { coinlist, isReady } = useCoinList();
|
|
14686
15043
|
const log = useLogger("useTaxDocument");
|
|
14687
|
-
const [state, setState] = (0,
|
|
14688
|
-
(0,
|
|
15044
|
+
const [state, setState] = (0, import_react42.useState)(LOADING_STATE6);
|
|
15045
|
+
(0, import_react42.useEffect)(() => {
|
|
14689
15046
|
let isCancelled = false;
|
|
14690
15047
|
if (!isOpen) {
|
|
14691
15048
|
return () => {
|
|
@@ -14693,12 +15050,12 @@ function useTaxDocument({
|
|
|
14693
15050
|
};
|
|
14694
15051
|
}
|
|
14695
15052
|
if (!isReady) {
|
|
14696
|
-
setState(
|
|
15053
|
+
setState(LOADING_STATE6);
|
|
14697
15054
|
return () => {
|
|
14698
15055
|
isCancelled = true;
|
|
14699
15056
|
};
|
|
14700
15057
|
}
|
|
14701
|
-
setState(
|
|
15058
|
+
setState(LOADING_STATE6);
|
|
14702
15059
|
coinlist.requirements.getPii().then((pii) => {
|
|
14703
15060
|
if (isCancelled) return;
|
|
14704
15061
|
if (pii.kind === "company") {
|
|
@@ -14726,7 +15083,7 @@ function useTaxDocument({
|
|
|
14726
15083
|
isCancelled = true;
|
|
14727
15084
|
};
|
|
14728
15085
|
}, [coinlist, isReady, isOpen, log]);
|
|
14729
|
-
const onEditField = (0,
|
|
15086
|
+
const onEditField = (0, import_react42.useCallback)(
|
|
14730
15087
|
(field, value) => {
|
|
14731
15088
|
setState(
|
|
14732
15089
|
(prev) => prev.type === "EDITING" ? { ...prev, fields: { ...prev.fields, [field]: value } } : prev
|
|
@@ -14734,7 +15091,7 @@ function useTaxDocument({
|
|
|
14734
15091
|
},
|
|
14735
15092
|
[]
|
|
14736
15093
|
);
|
|
14737
|
-
const onStartEdit = (0,
|
|
15094
|
+
const onStartEdit = (0, import_react42.useCallback)(() => {
|
|
14738
15095
|
setState(
|
|
14739
15096
|
(prev) => prev.type === "REVIEW" ? {
|
|
14740
15097
|
type: "EDITING",
|
|
@@ -14745,7 +15102,7 @@ function useTaxDocument({
|
|
|
14745
15102
|
} : prev
|
|
14746
15103
|
);
|
|
14747
15104
|
}, []);
|
|
14748
|
-
const onSaveEdit = (0,
|
|
15105
|
+
const onSaveEdit = (0, import_react42.useCallback)(() => {
|
|
14749
15106
|
setState(
|
|
14750
15107
|
(prev) => prev.type === "EDITING" ? {
|
|
14751
15108
|
type: "REVIEW",
|
|
@@ -14756,7 +15113,7 @@ function useTaxDocument({
|
|
|
14756
15113
|
} : prev
|
|
14757
15114
|
);
|
|
14758
15115
|
}, []);
|
|
14759
|
-
const onCancelEdit = (0,
|
|
15116
|
+
const onCancelEdit = (0, import_react42.useCallback)(() => {
|
|
14760
15117
|
setState(
|
|
14761
15118
|
(prev) => prev.type === "EDITING" ? {
|
|
14762
15119
|
type: "REVIEW",
|
|
@@ -14767,7 +15124,7 @@ function useTaxDocument({
|
|
|
14767
15124
|
} : prev
|
|
14768
15125
|
);
|
|
14769
15126
|
}, []);
|
|
14770
|
-
const onSign = (0,
|
|
15127
|
+
const onSign = (0, import_react42.useCallback)(() => {
|
|
14771
15128
|
if (state.type !== "REVIEW" && state.type !== "SIGN_ONLY") return;
|
|
14772
15129
|
if (state.type === "REVIEW" && state.fields.dob.trim() !== "" && !isValidUsDate(state.fields.dob)) {
|
|
14773
15130
|
setState({
|
|
@@ -14809,19 +15166,19 @@ function useTaxDocumentModalViewModel({
|
|
|
14809
15166
|
onSubmitted
|
|
14810
15167
|
}) {
|
|
14811
15168
|
const { state, onEditField, onStartEdit, onSaveEdit, onCancelEdit, onSign } = useTaxDocument({ isOpen });
|
|
14812
|
-
(0,
|
|
15169
|
+
(0, import_react43.useEffect)(() => {
|
|
14813
15170
|
if (state.type === "SUBMITTED") {
|
|
14814
15171
|
onSubmitted?.(state.submission);
|
|
14815
15172
|
onClose();
|
|
14816
15173
|
}
|
|
14817
15174
|
}, [state]);
|
|
14818
|
-
const uiState = (0,
|
|
15175
|
+
const uiState = (0, import_react43.useMemo)(() => {
|
|
14819
15176
|
if (!isOpen || state.type === "SUBMITTED") {
|
|
14820
15177
|
return { type: "hidden" };
|
|
14821
15178
|
}
|
|
14822
15179
|
return { type: "content", title: toTitle(state), screen: toScreen(state) };
|
|
14823
15180
|
}, [isOpen, state]);
|
|
14824
|
-
const onEvent = (0,
|
|
15181
|
+
const onEvent = (0, import_react43.useCallback)(
|
|
14825
15182
|
(event) => {
|
|
14826
15183
|
switch (event.type) {
|
|
14827
15184
|
case "ON_CLOSE":
|
|
@@ -14904,7 +15261,7 @@ function toFieldsUi(fields) {
|
|
|
14904
15261
|
}
|
|
14905
15262
|
|
|
14906
15263
|
// src/client/components/requirements/tax-document/TaxDocumentModalContainer.tsx
|
|
14907
|
-
var
|
|
15264
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
14908
15265
|
function TaxDocumentModalContainer({
|
|
14909
15266
|
isOpen,
|
|
14910
15267
|
onClose,
|
|
@@ -14916,7 +15273,7 @@ function TaxDocumentModalContainer({
|
|
|
14916
15273
|
onClose,
|
|
14917
15274
|
onSubmitted
|
|
14918
15275
|
});
|
|
14919
|
-
return /* @__PURE__ */ (0,
|
|
15276
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
14920
15277
|
TaxDocumentModalView,
|
|
14921
15278
|
{
|
|
14922
15279
|
state,
|
|
@@ -14927,26 +15284,26 @@ function TaxDocumentModalContainer({
|
|
|
14927
15284
|
}
|
|
14928
15285
|
|
|
14929
15286
|
// src/client/components/requirements/VerificationOverlay.tsx
|
|
14930
|
-
var
|
|
15287
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
14931
15288
|
function VerificationOverlay({
|
|
14932
15289
|
onClose,
|
|
14933
15290
|
children
|
|
14934
15291
|
}) {
|
|
14935
|
-
return /* @__PURE__ */ (0,
|
|
15292
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(VerificationOverlayBody, { onClose, children }) });
|
|
14936
15293
|
}
|
|
14937
15294
|
function VerificationOverlayBody({
|
|
14938
15295
|
onClose,
|
|
14939
15296
|
children
|
|
14940
15297
|
}) {
|
|
14941
|
-
return /* @__PURE__ */ (0,
|
|
15298
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14942
15299
|
"div",
|
|
14943
15300
|
{
|
|
14944
15301
|
role: "dialog",
|
|
14945
15302
|
"aria-modal": "true",
|
|
14946
15303
|
"aria-label": "Identity verification",
|
|
14947
15304
|
className: "clcosdk:fixed clcosdk:inset-0 clcosdk:z-50 clcosdk:flex clcosdk:items-center clcosdk:justify-center clcosdk:bg-overlay clcosdk:p-4",
|
|
14948
|
-
children: /* @__PURE__ */ (0,
|
|
14949
|
-
/* @__PURE__ */ (0,
|
|
15305
|
+
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: [
|
|
15306
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14950
15307
|
CloseButton,
|
|
14951
15308
|
{
|
|
14952
15309
|
onClick: onClose,
|
|
@@ -14960,18 +15317,18 @@ function VerificationOverlayBody({
|
|
|
14960
15317
|
}
|
|
14961
15318
|
|
|
14962
15319
|
// src/client/components/requirements/wallet/ConnectWalletModalView.tsx
|
|
14963
|
-
var
|
|
14964
|
-
var
|
|
15320
|
+
var import_react44 = require("react");
|
|
15321
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
14965
15322
|
function ConnectWalletModalView({
|
|
14966
15323
|
state,
|
|
14967
15324
|
onEvent,
|
|
14968
15325
|
className
|
|
14969
15326
|
}) {
|
|
14970
|
-
const titleId = (0,
|
|
15327
|
+
const titleId = (0, import_react44.useId)();
|
|
14971
15328
|
if (state.type === "hidden") {
|
|
14972
15329
|
return null;
|
|
14973
15330
|
}
|
|
14974
|
-
return /* @__PURE__ */ (0,
|
|
15331
|
+
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)(
|
|
14975
15332
|
"div",
|
|
14976
15333
|
{
|
|
14977
15334
|
role: "dialog",
|
|
@@ -14982,8 +15339,8 @@ function ConnectWalletModalView({
|
|
|
14982
15339
|
className
|
|
14983
15340
|
),
|
|
14984
15341
|
children: [
|
|
14985
|
-
/* @__PURE__ */ (0,
|
|
14986
|
-
/* @__PURE__ */ (0,
|
|
15342
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "clcosdk:flex clcosdk:items-start clcosdk:justify-between clcosdk:gap-4", children: [
|
|
15343
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14987
15344
|
"h3",
|
|
14988
15345
|
{
|
|
14989
15346
|
id: titleId,
|
|
@@ -14991,9 +15348,9 @@ function ConnectWalletModalView({
|
|
|
14991
15348
|
children: "Connect your wallet"
|
|
14992
15349
|
}
|
|
14993
15350
|
),
|
|
14994
|
-
/* @__PURE__ */ (0,
|
|
15351
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CloseButton, { onClick: () => onEvent({ type: "ON_CLOSE" }) })
|
|
14995
15352
|
] }),
|
|
14996
|
-
/* @__PURE__ */ (0,
|
|
15353
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14997
15354
|
Screen2,
|
|
14998
15355
|
{
|
|
14999
15356
|
screen: state.screen,
|
|
@@ -15012,9 +15369,9 @@ function Screen2({
|
|
|
15012
15369
|
}) {
|
|
15013
15370
|
switch (screen.type) {
|
|
15014
15371
|
case "needs-wallet":
|
|
15015
|
-
return /* @__PURE__ */ (0,
|
|
15016
|
-
/* @__PURE__ */ (0,
|
|
15017
|
-
canRequestConnect && /* @__PURE__ */ (0,
|
|
15372
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
15373
|
+
/* @__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." }),
|
|
15374
|
+
canRequestConnect && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
15018
15375
|
ClButton,
|
|
15019
15376
|
{
|
|
15020
15377
|
fullWidth: true,
|
|
@@ -15024,23 +15381,23 @@ function Screen2({
|
|
|
15024
15381
|
)
|
|
15025
15382
|
] });
|
|
15026
15383
|
case "ready":
|
|
15027
|
-
return /* @__PURE__ */ (0,
|
|
15028
|
-
/* @__PURE__ */ (0,
|
|
15029
|
-
/* @__PURE__ */ (0,
|
|
15030
|
-
/* @__PURE__ */ (0,
|
|
15384
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
15385
|
+
/* @__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." }),
|
|
15386
|
+
/* @__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: [
|
|
15387
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
15031
15388
|
"span",
|
|
15032
15389
|
{
|
|
15033
15390
|
className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
|
|
15034
15391
|
children: "Wallet address"
|
|
15035
15392
|
}
|
|
15036
15393
|
),
|
|
15037
|
-
/* @__PURE__ */ (0,
|
|
15394
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: cn(typeClasses.body, "clcosdk:text-text-primary"), children: screen.shortAddress })
|
|
15038
15395
|
] }),
|
|
15039
15396
|
screen.signError && // Live region: the error is inserted async after a failed attempt,
|
|
15040
15397
|
// so screen readers need it announced rather than silently
|
|
15041
15398
|
// rendered.
|
|
15042
|
-
/* @__PURE__ */ (0,
|
|
15043
|
-
/* @__PURE__ */ (0,
|
|
15399
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { role: "alert", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(AlertBanner, { variant: "error", icon: true, content: screen.signError }) }),
|
|
15400
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
15044
15401
|
ClButton,
|
|
15045
15402
|
{
|
|
15046
15403
|
fullWidth: true,
|
|
@@ -15051,7 +15408,7 @@ function Screen2({
|
|
|
15051
15408
|
children: "Sign & connect"
|
|
15052
15409
|
}
|
|
15053
15410
|
),
|
|
15054
|
-
canRequestConnect && /* @__PURE__ */ (0,
|
|
15411
|
+
canRequestConnect && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
15055
15412
|
ClButton,
|
|
15056
15413
|
{
|
|
15057
15414
|
fullWidth: true,
|
|
@@ -15070,10 +15427,10 @@ function Screen2({
|
|
|
15070
15427
|
}
|
|
15071
15428
|
|
|
15072
15429
|
// src/client/hooks/requirements/wallet/useConnectWalletModalViewModel.ts
|
|
15073
|
-
var
|
|
15430
|
+
var import_react46 = require("react");
|
|
15074
15431
|
|
|
15075
15432
|
// src/client/hooks/requirements/data/useConnectWallet.ts
|
|
15076
|
-
var
|
|
15433
|
+
var import_react45 = require("react");
|
|
15077
15434
|
|
|
15078
15435
|
// src/client/core/wallets/connect-external-wallet.ts
|
|
15079
15436
|
var DEFAULT_STATEMENT = "Sign this message to prove you own this wallet. This does not cost gas or move funds.";
|
|
@@ -15204,24 +15561,24 @@ function useConnectWallet({
|
|
|
15204
15561
|
statement
|
|
15205
15562
|
}) {
|
|
15206
15563
|
const { coinlist } = useCoinList();
|
|
15207
|
-
const [state, setState] = (0,
|
|
15564
|
+
const [state, setState] = (0, import_react45.useState)(
|
|
15208
15565
|
() => wallet ? { type: "READY", address: wallet.address, sign: IDLE_SIGN2 } : { type: "NEEDS_WALLET" }
|
|
15209
15566
|
);
|
|
15210
|
-
const attempt = (0,
|
|
15211
|
-
(0,
|
|
15567
|
+
const attempt = (0, import_react45.useRef)(0);
|
|
15568
|
+
(0, import_react45.useEffect)(() => {
|
|
15212
15569
|
attempt.current += 1;
|
|
15213
15570
|
if (!isOpen) return;
|
|
15214
15571
|
setState(
|
|
15215
15572
|
wallet ? { type: "READY", address: wallet.address, sign: IDLE_SIGN2 } : { type: "NEEDS_WALLET" }
|
|
15216
15573
|
);
|
|
15217
15574
|
}, [isOpen, wallet?.address]);
|
|
15218
|
-
(0,
|
|
15575
|
+
(0, import_react45.useEffect)(
|
|
15219
15576
|
() => () => {
|
|
15220
15577
|
attempt.current += 1;
|
|
15221
15578
|
},
|
|
15222
15579
|
[]
|
|
15223
15580
|
);
|
|
15224
|
-
const onSign = (0,
|
|
15581
|
+
const onSign = (0, import_react45.useCallback)(() => {
|
|
15225
15582
|
if (!wallet || state.type !== "READY") return;
|
|
15226
15583
|
attempt.current += 1;
|
|
15227
15584
|
const gen = attempt.current;
|
|
@@ -15283,13 +15640,13 @@ function useConnectWalletModalViewModel({
|
|
|
15283
15640
|
challengeType,
|
|
15284
15641
|
statement
|
|
15285
15642
|
});
|
|
15286
|
-
(0,
|
|
15643
|
+
(0, import_react46.useEffect)(() => {
|
|
15287
15644
|
if (state.type === "CONNECTED") {
|
|
15288
15645
|
onConnected?.(state.binding);
|
|
15289
15646
|
onClose();
|
|
15290
15647
|
}
|
|
15291
15648
|
}, [state]);
|
|
15292
|
-
const uiState = (0,
|
|
15649
|
+
const uiState = (0, import_react46.useMemo)(() => {
|
|
15293
15650
|
if (!isOpen || state.type === "CONNECTED") {
|
|
15294
15651
|
return { type: "hidden" };
|
|
15295
15652
|
}
|
|
@@ -15314,7 +15671,7 @@ function useConnectWalletModalViewModel({
|
|
|
15314
15671
|
canRequestConnect
|
|
15315
15672
|
};
|
|
15316
15673
|
}, [isOpen, state, onRequestConnect]);
|
|
15317
|
-
const onEvent = (0,
|
|
15674
|
+
const onEvent = (0, import_react46.useCallback)(
|
|
15318
15675
|
(event) => {
|
|
15319
15676
|
switch (event.type) {
|
|
15320
15677
|
case "ON_CLOSE":
|
|
@@ -15338,13 +15695,13 @@ function useConnectWalletModalViewModel({
|
|
|
15338
15695
|
}
|
|
15339
15696
|
|
|
15340
15697
|
// src/client/components/requirements/wallet/ConnectWalletModalContainer.tsx
|
|
15341
|
-
var
|
|
15698
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
15342
15699
|
function ConnectWalletModalContainer({
|
|
15343
15700
|
className,
|
|
15344
15701
|
...options
|
|
15345
15702
|
}) {
|
|
15346
15703
|
const { state, onEvent } = useConnectWalletModalViewModel(options);
|
|
15347
|
-
return /* @__PURE__ */ (0,
|
|
15704
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
15348
15705
|
ConnectWalletModalView,
|
|
15349
15706
|
{
|
|
15350
15707
|
state,
|
|
@@ -15355,11 +15712,11 @@ function ConnectWalletModalContainer({
|
|
|
15355
15712
|
}
|
|
15356
15713
|
|
|
15357
15714
|
// src/client/hooks/requirements/useRequirementsChecklistViewModel.ts
|
|
15358
|
-
var
|
|
15715
|
+
var import_react49 = require("react");
|
|
15359
15716
|
|
|
15360
15717
|
// src/client/hooks/requirements/data/useOptionAddresses.ts
|
|
15361
|
-
var
|
|
15362
|
-
var
|
|
15718
|
+
var import_react47 = require("react");
|
|
15719
|
+
var LOADING_STATE7 = { type: "LOADING" };
|
|
15363
15720
|
var EMPTY_STATE = {
|
|
15364
15721
|
type: "CONTENT",
|
|
15365
15722
|
addresses: []
|
|
@@ -15368,19 +15725,19 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
15368
15725
|
const { coinlist, isReady } = useCoinList();
|
|
15369
15726
|
const log = useLogger("useOptionAddresses");
|
|
15370
15727
|
const { data, enabled = true } = options;
|
|
15371
|
-
const [addressesState, setAddressesState] = (0,
|
|
15372
|
-
data !== void 0 ? { type: "CONTENT", addresses: data } :
|
|
15728
|
+
const [addressesState, setAddressesState] = (0, import_react47.useState)(
|
|
15729
|
+
data !== void 0 ? { type: "CONTENT", addresses: data } : LOADING_STATE7
|
|
15373
15730
|
);
|
|
15374
|
-
const [fetchKey, setFetchKey] = (0,
|
|
15375
|
-
const refetch = (0,
|
|
15376
|
-
const disconnect = (0,
|
|
15731
|
+
const [fetchKey, setFetchKey] = (0, import_react47.useState)(0);
|
|
15732
|
+
const refetch = (0, import_react47.useCallback)(() => setFetchKey((k) => k + 1), []);
|
|
15733
|
+
const disconnect = (0, import_react47.useCallback)(
|
|
15377
15734
|
async (addressId) => {
|
|
15378
15735
|
await coinlist.wallets.remove({ offerId, addressId });
|
|
15379
15736
|
refetch();
|
|
15380
15737
|
},
|
|
15381
15738
|
[coinlist, offerId, refetch]
|
|
15382
15739
|
);
|
|
15383
|
-
(0,
|
|
15740
|
+
(0, import_react47.useEffect)(() => {
|
|
15384
15741
|
let isCancelled = false;
|
|
15385
15742
|
if (!enabled) {
|
|
15386
15743
|
setAddressesState(
|
|
@@ -15392,7 +15749,7 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
15392
15749
|
}
|
|
15393
15750
|
if (!isReady) {
|
|
15394
15751
|
if (data === void 0) {
|
|
15395
|
-
setAddressesState(
|
|
15752
|
+
setAddressesState(LOADING_STATE7);
|
|
15396
15753
|
}
|
|
15397
15754
|
return () => {
|
|
15398
15755
|
isCancelled = true;
|
|
@@ -15409,7 +15766,7 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
15409
15766
|
isCancelled = true;
|
|
15410
15767
|
};
|
|
15411
15768
|
}
|
|
15412
|
-
setAddressesState(
|
|
15769
|
+
setAddressesState(LOADING_STATE7);
|
|
15413
15770
|
coinlist.wallets.list({ offerId, offerOptionId }).then((addresses) => {
|
|
15414
15771
|
if (!isCancelled) {
|
|
15415
15772
|
log.debug(() => ({
|
|
@@ -15436,18 +15793,18 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
15436
15793
|
}
|
|
15437
15794
|
|
|
15438
15795
|
// src/client/hooks/requirements/data/useRequirements.ts
|
|
15439
|
-
var
|
|
15440
|
-
var
|
|
15796
|
+
var import_react48 = require("react");
|
|
15797
|
+
var LOADING_STATE8 = { type: "LOADING" };
|
|
15441
15798
|
function useRequirements(offerId, options = {}) {
|
|
15442
15799
|
const { coinlist, isReady } = useCoinList();
|
|
15443
15800
|
const log = useLogger("useRequirements");
|
|
15444
15801
|
const { data, enabled = true } = options;
|
|
15445
|
-
const [requirementsState, setRequirementsState] = (0,
|
|
15446
|
-
data !== void 0 ? { type: "CONTENT", ...data } :
|
|
15802
|
+
const [requirementsState, setRequirementsState] = (0, import_react48.useState)(
|
|
15803
|
+
data !== void 0 ? { type: "CONTENT", ...data } : LOADING_STATE8
|
|
15447
15804
|
);
|
|
15448
|
-
const [fetchKey, setFetchKey] = (0,
|
|
15449
|
-
const refetch = (0,
|
|
15450
|
-
(0,
|
|
15805
|
+
const [fetchKey, setFetchKey] = (0, import_react48.useState)(0);
|
|
15806
|
+
const refetch = (0, import_react48.useCallback)(() => setFetchKey((k) => k + 1), []);
|
|
15807
|
+
(0, import_react48.useEffect)(() => {
|
|
15451
15808
|
let isCancelled = false;
|
|
15452
15809
|
if (!enabled) {
|
|
15453
15810
|
return () => {
|
|
@@ -15456,7 +15813,7 @@ function useRequirements(offerId, options = {}) {
|
|
|
15456
15813
|
}
|
|
15457
15814
|
if (!isReady) {
|
|
15458
15815
|
if (data === void 0) {
|
|
15459
|
-
setRequirementsState(
|
|
15816
|
+
setRequirementsState(LOADING_STATE8);
|
|
15460
15817
|
}
|
|
15461
15818
|
return () => {
|
|
15462
15819
|
isCancelled = true;
|
|
@@ -15473,7 +15830,7 @@ function useRequirements(offerId, options = {}) {
|
|
|
15473
15830
|
isCancelled = true;
|
|
15474
15831
|
};
|
|
15475
15832
|
}
|
|
15476
|
-
setRequirementsState(
|
|
15833
|
+
setRequirementsState(LOADING_STATE8);
|
|
15477
15834
|
Promise.all([
|
|
15478
15835
|
coinlist.requirements.forOffer(offerId),
|
|
15479
15836
|
coinlist.requirements.statuses(offerId)
|
|
@@ -15515,7 +15872,7 @@ var RequirementItemUi = {
|
|
|
15515
15872
|
fromDomain(req, statusInfo, label, description2, addresses = []) {
|
|
15516
15873
|
return {
|
|
15517
15874
|
variant: RequirementVariant.fromType(req.type),
|
|
15518
|
-
status:
|
|
15875
|
+
status: requirementStatus(req, statusInfo),
|
|
15519
15876
|
label,
|
|
15520
15877
|
description: description2,
|
|
15521
15878
|
multiWallet: req.type === "whitelisted_wallet",
|
|
@@ -15523,10 +15880,44 @@ var RequirementItemUi = {
|
|
|
15523
15880
|
id: address.id,
|
|
15524
15881
|
address: address.address,
|
|
15525
15882
|
shortAddress: shortenAddress(address.address)
|
|
15526
|
-
}))
|
|
15883
|
+
})),
|
|
15884
|
+
statusMessages: statusMessagesFor(req.type)
|
|
15527
15885
|
};
|
|
15528
15886
|
}
|
|
15529
15887
|
};
|
|
15888
|
+
var IDENTITY_STATUS_MESSAGES = {
|
|
15889
|
+
pending: "Verification under review. We'll notify you when it's complete.",
|
|
15890
|
+
completed: "Identity verified.",
|
|
15891
|
+
rejected: "We couldn't verify your identity. Contact support for help."
|
|
15892
|
+
};
|
|
15893
|
+
var ACCREDITATION_STATUS_MESSAGES = {
|
|
15894
|
+
pending: "Accreditation under review. We'll notify you when it's complete.",
|
|
15895
|
+
completed: "Accreditation verified.",
|
|
15896
|
+
rejected: "We couldn't verify your accreditation. Contact support for help."
|
|
15897
|
+
};
|
|
15898
|
+
var TAX_DOCUMENTATION_STATUS_MESSAGES = {
|
|
15899
|
+
completed: "Tax documentation completed.",
|
|
15900
|
+
rejected: "We couldn't accept your tax documentation. Contact support for help."
|
|
15901
|
+
};
|
|
15902
|
+
function statusMessagesFor(type) {
|
|
15903
|
+
switch (type) {
|
|
15904
|
+
case "kyc_approved":
|
|
15905
|
+
return IDENTITY_STATUS_MESSAGES;
|
|
15906
|
+
case "accreditation":
|
|
15907
|
+
return ACCREDITATION_STATUS_MESSAGES;
|
|
15908
|
+
case "document":
|
|
15909
|
+
return TAX_DOCUMENTATION_STATUS_MESSAGES;
|
|
15910
|
+
default:
|
|
15911
|
+
return void 0;
|
|
15912
|
+
}
|
|
15913
|
+
}
|
|
15914
|
+
function requirementStatus(req, statusInfo) {
|
|
15915
|
+
if (!statusInfo) return "required";
|
|
15916
|
+
if (req.type === "document" && statusInfo.status === "in_progress") {
|
|
15917
|
+
return "required";
|
|
15918
|
+
}
|
|
15919
|
+
return RequirementStatus.fromStatusValue(statusInfo.status);
|
|
15920
|
+
}
|
|
15530
15921
|
var RequirementVariant = {
|
|
15531
15922
|
fromType(type) {
|
|
15532
15923
|
switch (type) {
|
|
@@ -15563,20 +15954,20 @@ var ChecklistStatus = {
|
|
|
15563
15954
|
|
|
15564
15955
|
// src/client/hooks/requirements/useRequirementsChecklistViewModel.ts
|
|
15565
15956
|
var DEFAULT_LABELS = {
|
|
15566
|
-
kyc_approved: "
|
|
15957
|
+
kyc_approved: "Identity Verification",
|
|
15567
15958
|
external_wallet: "External Wallet",
|
|
15568
15959
|
whitelisted_wallet: "Whitelisted Wallet",
|
|
15569
15960
|
jurisdiction: "Jurisdiction Check",
|
|
15570
15961
|
accreditation: "Accreditation",
|
|
15571
|
-
document: "
|
|
15962
|
+
document: "Tax Documentation"
|
|
15572
15963
|
};
|
|
15573
15964
|
var DEFAULT_DESCRIPTIONS = {
|
|
15574
|
-
kyc_approved: "Complete Know Your Customer verification.",
|
|
15965
|
+
kyc_approved: "Complete Know Your Customer (KYC) verification.",
|
|
15575
15966
|
external_wallet: "Connect an external wallet.",
|
|
15576
15967
|
whitelisted_wallet: "Connect a whitelisted wallet.",
|
|
15577
15968
|
jurisdiction: "Confirm your jurisdiction eligibility.",
|
|
15578
|
-
accreditation: "
|
|
15579
|
-
document: "
|
|
15969
|
+
accreditation: "Confirm that you meet accredited investor requirements.",
|
|
15970
|
+
document: "Review and sign the required tax documentation."
|
|
15580
15971
|
};
|
|
15581
15972
|
var VERIFICATION_POLL_INTERVAL_MS = 5e3;
|
|
15582
15973
|
var VERIFICATION_POLL_TIMEOUT_MS = 12e4;
|
|
@@ -15607,19 +15998,19 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15607
15998
|
data,
|
|
15608
15999
|
enabled
|
|
15609
16000
|
});
|
|
15610
|
-
const [expandedId, setExpandedId] = (0,
|
|
15611
|
-
const [taxDocumentOpen, setTaxDocumentOpen] = (0,
|
|
15612
|
-
const [connectWalletOpen, setConnectWalletOpen] = (0,
|
|
15613
|
-
const [verifyingRequirementId, setVerifyingRequirementId] = (0,
|
|
15614
|
-
const isMountedRef = (0,
|
|
15615
|
-
(0,
|
|
16001
|
+
const [expandedId, setExpandedId] = (0, import_react49.useState)(null);
|
|
16002
|
+
const [taxDocumentOpen, setTaxDocumentOpen] = (0, import_react49.useState)(false);
|
|
16003
|
+
const [connectWalletOpen, setConnectWalletOpen] = (0, import_react49.useState)(false);
|
|
16004
|
+
const [verifyingRequirementId, setVerifyingRequirementId] = (0, import_react49.useState)(null);
|
|
16005
|
+
const isMountedRef = (0, import_react49.useRef)(true);
|
|
16006
|
+
(0, import_react49.useEffect)(() => {
|
|
15616
16007
|
isMountedRef.current = true;
|
|
15617
16008
|
return () => {
|
|
15618
16009
|
isMountedRef.current = false;
|
|
15619
16010
|
};
|
|
15620
16011
|
}, []);
|
|
15621
|
-
const [hasWalletRequirement, setHasWalletRequirement] = (0,
|
|
15622
|
-
(0,
|
|
16012
|
+
const [hasWalletRequirement, setHasWalletRequirement] = (0, import_react49.useState)(false);
|
|
16013
|
+
(0, import_react49.useEffect)(() => {
|
|
15623
16014
|
if (requirementsState.type === "CONTENT") {
|
|
15624
16015
|
setHasWalletRequirement(
|
|
15625
16016
|
(requirementsState.requirements[optionId] ?? []).some(
|
|
@@ -15635,14 +16026,14 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15635
16026
|
} = useOptionAddresses(offerId, optionId, {
|
|
15636
16027
|
enabled: enabled && hasWalletRequirement
|
|
15637
16028
|
});
|
|
15638
|
-
const removeWallet = (0,
|
|
16029
|
+
const removeWallet = (0, import_react49.useCallback)(
|
|
15639
16030
|
async (addressId) => {
|
|
15640
16031
|
await disconnect(OfferOptionAddressId(addressId));
|
|
15641
16032
|
refetch();
|
|
15642
16033
|
},
|
|
15643
16034
|
[disconnect, refetch]
|
|
15644
16035
|
);
|
|
15645
|
-
const awaitVerificationResult = (0,
|
|
16036
|
+
const awaitVerificationResult = (0, import_react49.useCallback)(
|
|
15646
16037
|
(requirementId, statusBeforeSubmit) => {
|
|
15647
16038
|
void (async () => {
|
|
15648
16039
|
const deadline = Date.now() + VERIFICATION_POLL_TIMEOUT_MS;
|
|
@@ -15669,11 +16060,11 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15669
16060
|
},
|
|
15670
16061
|
[coinlist, offerId, refetch, log]
|
|
15671
16062
|
);
|
|
15672
|
-
const requirements = (0,
|
|
16063
|
+
const requirements = (0, import_react49.useMemo)(
|
|
15673
16064
|
() => requirementsState.type === "CONTENT" ? requirementsState.requirements[optionId] ?? [] : [],
|
|
15674
16065
|
[requirementsState, optionId]
|
|
15675
16066
|
);
|
|
15676
|
-
const statusById = (0,
|
|
16067
|
+
const statusById = (0, import_react49.useMemo)(() => {
|
|
15677
16068
|
if (requirementsState.type !== "CONTENT") {
|
|
15678
16069
|
return /* @__PURE__ */ new Map();
|
|
15679
16070
|
}
|
|
@@ -15682,12 +16073,12 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15682
16073
|
requirementsState.statuses.filter((s) => ids.has(s.id)).map((s) => [s.id, s])
|
|
15683
16074
|
);
|
|
15684
16075
|
}, [requirementsState, requirements]);
|
|
15685
|
-
const state = (0,
|
|
16076
|
+
const state = (0, import_react49.useMemo)(() => {
|
|
15686
16077
|
switch (requirementsState.type) {
|
|
15687
16078
|
case "LOADING":
|
|
15688
|
-
return { type: "loading" };
|
|
16079
|
+
return { type: "loading", title: title2, description: description2 };
|
|
15689
16080
|
case "ERROR":
|
|
15690
|
-
return
|
|
16081
|
+
return { type: "error", title: title2 };
|
|
15691
16082
|
case "CONTENT": {
|
|
15692
16083
|
const optionStatuses = [...statusById.values()];
|
|
15693
16084
|
const checklistStatus = ChecklistStatus.derive(optionStatuses);
|
|
@@ -15751,7 +16142,7 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15751
16142
|
identityVerificationOptions,
|
|
15752
16143
|
removeWallet
|
|
15753
16144
|
]);
|
|
15754
|
-
const handleRequirementAction = (0,
|
|
16145
|
+
const handleRequirementAction = (0, import_react49.useCallback)(
|
|
15755
16146
|
(requirement) => {
|
|
15756
16147
|
const inlineVerification = statusById.get(requirement.id)?.kycLevel !== void 0 && onRequirementActionOverride === void 0;
|
|
15757
16148
|
if (inlineVerification) {
|
|
@@ -15783,7 +16174,7 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15783
16174
|
coinlist
|
|
15784
16175
|
]
|
|
15785
16176
|
);
|
|
15786
|
-
const onEvent = (0,
|
|
16177
|
+
const onEvent = (0, import_react49.useCallback)(
|
|
15787
16178
|
(event) => {
|
|
15788
16179
|
switch (event.type) {
|
|
15789
16180
|
case "ON_TOGGLE_ITEM":
|
|
@@ -15881,11 +16272,10 @@ function toVerificationUi(verifyingRequirementId, statusById, identityVerificati
|
|
|
15881
16272
|
}
|
|
15882
16273
|
|
|
15883
16274
|
// src/client/components/requirements/RequirementsChecklistContainer.tsx
|
|
15884
|
-
var
|
|
16275
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
15885
16276
|
function RequirementsChecklistContainer({
|
|
15886
16277
|
loading,
|
|
15887
16278
|
error,
|
|
15888
|
-
unauthenticatedState,
|
|
15889
16279
|
className,
|
|
15890
16280
|
enabled = true,
|
|
15891
16281
|
...options
|
|
@@ -15894,24 +16284,19 @@ function RequirementsChecklistContainer({
|
|
|
15894
16284
|
...options,
|
|
15895
16285
|
enabled
|
|
15896
16286
|
});
|
|
15897
|
-
return /* @__PURE__ */ (0,
|
|
15898
|
-
/* @__PURE__ */ (0,
|
|
16287
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_jsx_runtime68.Fragment, { children: [
|
|
16288
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15899
16289
|
RequirementsChecklistView,
|
|
15900
16290
|
{
|
|
15901
16291
|
state,
|
|
15902
16292
|
onEvent,
|
|
15903
16293
|
loading,
|
|
15904
16294
|
error,
|
|
15905
|
-
unauthenticatedState: (
|
|
15906
|
-
// The sign-in default lives here, not in the View: it is a connected
|
|
15907
|
-
// component, and a View must render from what it is handed.
|
|
15908
|
-
unauthenticatedState !== void 0 ? unauthenticatedState : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(CoinListSignInCardContainer, {})
|
|
15909
|
-
),
|
|
15910
16295
|
className
|
|
15911
16296
|
}
|
|
15912
16297
|
),
|
|
15913
|
-
state.type === "content" && /* @__PURE__ */ (0,
|
|
15914
|
-
/* @__PURE__ */ (0,
|
|
16298
|
+
state.type === "content" && /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_jsx_runtime68.Fragment, { children: [
|
|
16299
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15915
16300
|
TaxDocumentModalContainer,
|
|
15916
16301
|
{
|
|
15917
16302
|
isOpen: state.taxDocumentOpen,
|
|
@@ -15919,11 +16304,11 @@ function RequirementsChecklistContainer({
|
|
|
15919
16304
|
onSubmitted: () => onEvent({ type: "ON_TAX_DOCUMENT_SUBMITTED" })
|
|
15920
16305
|
}
|
|
15921
16306
|
),
|
|
15922
|
-
state.verification && /* @__PURE__ */ (0,
|
|
16307
|
+
state.verification && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15923
16308
|
VerificationOverlay,
|
|
15924
16309
|
{
|
|
15925
16310
|
onClose: () => onEvent({ type: "ON_CLOSE_VERIFICATION" }),
|
|
15926
|
-
children: /* @__PURE__ */ (0,
|
|
16311
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15927
16312
|
IdentityVerificationContainer,
|
|
15928
16313
|
{
|
|
15929
16314
|
levelName: state.verification.levelName,
|
|
@@ -15934,7 +16319,7 @@ function RequirementsChecklistContainer({
|
|
|
15934
16319
|
)
|
|
15935
16320
|
}
|
|
15936
16321
|
),
|
|
15937
|
-
/* @__PURE__ */ (0,
|
|
16322
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15938
16323
|
ConnectWalletModalContainer,
|
|
15939
16324
|
{
|
|
15940
16325
|
isOpen: state.connectWalletOpen,
|
|
@@ -16095,18 +16480,18 @@ function pinoClientLogger(options) {
|
|
|
16095
16480
|
}
|
|
16096
16481
|
|
|
16097
16482
|
// src/client/hooks/auth/useCompleteOAuth.ts
|
|
16098
|
-
var
|
|
16483
|
+
var import_react50 = require("react");
|
|
16099
16484
|
function useCompleteOAuth(options) {
|
|
16100
16485
|
const { coinlist } = useCoinList();
|
|
16101
16486
|
const log = useLogger("useCompleteOAuth");
|
|
16102
|
-
const postOAuthCompleteRef = (0,
|
|
16103
|
-
const onFailureRef = (0,
|
|
16104
|
-
const onSuccessRef = (0,
|
|
16487
|
+
const postOAuthCompleteRef = (0, import_react50.useRef)(options.postOAuthComplete);
|
|
16488
|
+
const onFailureRef = (0, import_react50.useRef)(options.onFailure);
|
|
16489
|
+
const onSuccessRef = (0, import_react50.useRef)(options.onSuccess);
|
|
16105
16490
|
postOAuthCompleteRef.current = options.postOAuthComplete;
|
|
16106
16491
|
onFailureRef.current = options.onFailure;
|
|
16107
16492
|
onSuccessRef.current = options.onSuccess;
|
|
16108
|
-
const hasStartedExchangeRef = (0,
|
|
16109
|
-
(0,
|
|
16493
|
+
const hasStartedExchangeRef = (0, import_react50.useRef)(false);
|
|
16494
|
+
(0, import_react50.useEffect)(() => {
|
|
16110
16495
|
if (typeof window === "undefined") return;
|
|
16111
16496
|
const params = new URLSearchParams(window.location.search);
|
|
16112
16497
|
if (!params.has("code") && !params.has("error")) return;
|
|
@@ -16170,16 +16555,16 @@ function useCompleteOAuth(options) {
|
|
|
16170
16555
|
}
|
|
16171
16556
|
|
|
16172
16557
|
// src/client/hooks/checkout/coin-list/token-sale/data/useParticipations.ts
|
|
16173
|
-
var
|
|
16174
|
-
var
|
|
16558
|
+
var import_react51 = require("react");
|
|
16559
|
+
var LOADING_STATE9 = { type: "LOADING" };
|
|
16175
16560
|
function useParticipations(offerId, options = {}) {
|
|
16176
16561
|
const { coinlist, isReady } = useCoinList();
|
|
16177
16562
|
const log = useLogger("useParticipations");
|
|
16178
16563
|
const { data, enabled = true } = options;
|
|
16179
|
-
const [participationsState, setParticipationsState] = (0,
|
|
16180
|
-
data !== void 0 ? { type: "CONTENT", participations: data } :
|
|
16564
|
+
const [participationsState, setParticipationsState] = (0, import_react51.useState)(
|
|
16565
|
+
data !== void 0 ? { type: "CONTENT", participations: data } : LOADING_STATE9
|
|
16181
16566
|
);
|
|
16182
|
-
(0,
|
|
16567
|
+
(0, import_react51.useEffect)(() => {
|
|
16183
16568
|
let isCancelled = false;
|
|
16184
16569
|
if (!enabled) {
|
|
16185
16570
|
return () => {
|
|
@@ -16188,7 +16573,7 @@ function useParticipations(offerId, options = {}) {
|
|
|
16188
16573
|
}
|
|
16189
16574
|
if (!isReady) {
|
|
16190
16575
|
if (data === void 0) {
|
|
16191
|
-
setParticipationsState(
|
|
16576
|
+
setParticipationsState(LOADING_STATE9);
|
|
16192
16577
|
}
|
|
16193
16578
|
return () => {
|
|
16194
16579
|
isCancelled = true;
|
|
@@ -16199,7 +16584,7 @@ function useParticipations(offerId, options = {}) {
|
|
|
16199
16584
|
isCancelled = true;
|
|
16200
16585
|
};
|
|
16201
16586
|
}
|
|
16202
|
-
setParticipationsState(
|
|
16587
|
+
setParticipationsState(LOADING_STATE9);
|
|
16203
16588
|
coinlist.tokenSale.list(offerId).then((participations) => {
|
|
16204
16589
|
if (!isCancelled) {
|
|
16205
16590
|
log.debug(() => ({
|
|
@@ -16226,16 +16611,16 @@ function useParticipations(offerId, options = {}) {
|
|
|
16226
16611
|
}
|
|
16227
16612
|
|
|
16228
16613
|
// src/client/hooks/offers/data/useOfferDetails.ts
|
|
16229
|
-
var
|
|
16230
|
-
var
|
|
16614
|
+
var import_react52 = require("react");
|
|
16615
|
+
var LOADING_STATE10 = { type: "LOADING" };
|
|
16231
16616
|
function useOfferDetails(offerId, options = {}) {
|
|
16232
16617
|
const { coinlist, isReady } = useCoinList();
|
|
16233
16618
|
const log = useLogger("useOfferDetails");
|
|
16234
16619
|
const { data, enabled = true } = options;
|
|
16235
|
-
const [offerDetailsState, setOfferDetailsState] = (0,
|
|
16236
|
-
data !== void 0 ? { type: "CONTENT", offerDetail: data } :
|
|
16620
|
+
const [offerDetailsState, setOfferDetailsState] = (0, import_react52.useState)(
|
|
16621
|
+
data !== void 0 ? { type: "CONTENT", offerDetail: data } : LOADING_STATE10
|
|
16237
16622
|
);
|
|
16238
|
-
(0,
|
|
16623
|
+
(0, import_react52.useEffect)(() => {
|
|
16239
16624
|
let isCancelled = false;
|
|
16240
16625
|
if (!enabled) {
|
|
16241
16626
|
return () => {
|
|
@@ -16244,7 +16629,7 @@ function useOfferDetails(offerId, options = {}) {
|
|
|
16244
16629
|
}
|
|
16245
16630
|
if (!isReady) {
|
|
16246
16631
|
if (data === void 0) {
|
|
16247
|
-
setOfferDetailsState(
|
|
16632
|
+
setOfferDetailsState(LOADING_STATE10);
|
|
16248
16633
|
}
|
|
16249
16634
|
return () => {
|
|
16250
16635
|
isCancelled = true;
|
|
@@ -16255,7 +16640,7 @@ function useOfferDetails(offerId, options = {}) {
|
|
|
16255
16640
|
isCancelled = true;
|
|
16256
16641
|
};
|
|
16257
16642
|
}
|
|
16258
|
-
setOfferDetailsState(
|
|
16643
|
+
setOfferDetailsState(LOADING_STATE10);
|
|
16259
16644
|
coinlist.offers.get(offerId).then((offerDetail) => {
|
|
16260
16645
|
if (!isCancelled) {
|
|
16261
16646
|
log.debug(() => ({
|
|
@@ -16283,15 +16668,23 @@ function useOfferDetails(offerId, options = {}) {
|
|
|
16283
16668
|
|
|
16284
16669
|
// src/client/hooks/offers/shared/offer-asset-card.types.ts
|
|
16285
16670
|
var OfferAssetCardUi = {
|
|
16286
|
-
|
|
16671
|
+
/**
|
|
16672
|
+
* `tokenMetadata` is the registry's entry for the token the offer is about
|
|
16673
|
+
* (`TokenRegistrySnapshot.forOffer`), or `null` when it lists none. The
|
|
16674
|
+
* registry names win over the offer's own where both exist: they are the
|
|
16675
|
+
* token's canonical name, ticker and artwork, where the offer's are
|
|
16676
|
+
* catalogue copy.
|
|
16677
|
+
*/
|
|
16678
|
+
fromOffer: (offer, tokenMetadata = null) => ({
|
|
16287
16679
|
id: offer.id,
|
|
16288
|
-
|
|
16680
|
+
...tokenMetadata ? { name: tokenMetadata.name, symbol: String(tokenMetadata.symbol) } : {},
|
|
16681
|
+
logo: OfferLogoUi.fromOffer(offer, tokenMetadata)
|
|
16289
16682
|
}),
|
|
16290
|
-
fromDetail: (detail) => ({
|
|
16683
|
+
fromDetail: (detail, tokenMetadata = null) => ({
|
|
16291
16684
|
id: detail.id,
|
|
16292
|
-
name: detail.name,
|
|
16293
|
-
symbol: detail.asset.code,
|
|
16294
|
-
|
|
16685
|
+
name: tokenMetadata?.name ?? detail.name,
|
|
16686
|
+
symbol: tokenMetadata ? String(tokenMetadata.symbol) : detail.asset.code,
|
|
16687
|
+
logo: OfferLogoUi.fromOffer(detail, tokenMetadata)
|
|
16295
16688
|
})
|
|
16296
16689
|
};
|
|
16297
16690
|
|
|
@@ -16334,6 +16727,7 @@ function formatMonthYear(date, locale) {
|
|
|
16334
16727
|
OAUTH_STATE_KEY,
|
|
16335
16728
|
OfferAssetCard,
|
|
16336
16729
|
OfferAssetCardUi,
|
|
16730
|
+
OfferLogoUi,
|
|
16337
16731
|
OfferSaleCard,
|
|
16338
16732
|
OfferSaleCardUi,
|
|
16339
16733
|
OffersAssetGrid,
|
|
@@ -16395,6 +16789,7 @@ function formatMonthYear(date, locale) {
|
|
|
16395
16789
|
quoteOverAsks,
|
|
16396
16790
|
stablecoinIconUrl,
|
|
16397
16791
|
submitErc20Approval,
|
|
16792
|
+
tokenLogoSrcSet,
|
|
16398
16793
|
tokenLogoUrl,
|
|
16399
16794
|
tokenMetadataOf,
|
|
16400
16795
|
useCheckoutOfferTokenMetadata,
|
|
@@ -16437,6 +16832,7 @@ function formatMonthYear(date, locale) {
|
|
|
16437
16832
|
useTaxDocument,
|
|
16438
16833
|
useTaxDocumentModalViewModel,
|
|
16439
16834
|
useTokenMetadata,
|
|
16835
|
+
useTokenRegistry,
|
|
16440
16836
|
validateAmount,
|
|
16441
16837
|
validateSellAmount,
|
|
16442
16838
|
validateSuperstateAmount
|