@coinlist-co/react 0.12.1-rc.df659d8 → 0.12.1-rc.f2804ef
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-I5EHOV7V.js → chunk-DCW7NQXH.js} +2 -2
- package/dist/{chunk-VSYGGTI6.js → chunk-MOE5S6CE.js} +186 -106
- package/dist/chunk-MOE5S6CE.js.map +1 -0
- package/dist/{chunk-3EOK47CQ.js → chunk-VH34YC3Q.js} +56 -4
- package/dist/chunk-VH34YC3Q.js.map +1 -0
- package/dist/client/index.cjs +755 -417
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +286 -122
- package/dist/client/index.d.ts +286 -122
- package/dist/client/index.js +550 -340
- package/dist/client/index.js.map +1 -1
- package/dist/server/index.cjs +149 -71
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +2 -2
- package/dist/{collections-C6b-rJpx.d.ts → token-registry-snapshot-BNBNuDu1.d.ts} +65 -2
- package/dist/{collections-UYVlXbEh.d.cts → token-registry-snapshot-CqI6dXM_.d.cts} +65 -2
- package/dist/{tokens-namespace-C-BxcYMj.d.cts → tokens-namespace-CIWBtgt2.d.cts} +171 -46
- package/dist/{tokens-namespace-C-BxcYMj.d.ts → tokens-namespace-CIWBtgt2.d.ts} +171 -46
- package/dist/universal/index.cjs +211 -74
- package/dist/universal/index.cjs.map +1 -1
- package/dist/universal/index.d.cts +9 -14
- package/dist/universal/index.d.ts +9 -14
- package/dist/universal/index.js +14 -4
- package/package.json +1 -1
- package/dist/chunk-3EOK47CQ.js.map +0 -1
- package/dist/chunk-VSYGGTI6.js.map +0 -1
- /package/dist/{chunk-I5EHOV7V.js.map → chunk-DCW7NQXH.js.map} +0 -0
package/dist/client/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
SDK_LOGGER_NAME,
|
|
6
6
|
loggerOverPino,
|
|
7
7
|
publicClients
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-DCW7NQXH.js";
|
|
9
9
|
import {
|
|
10
10
|
AuthorizationCode,
|
|
11
11
|
CodeVerifier,
|
|
@@ -14,7 +14,6 @@ import {
|
|
|
14
14
|
DEFAULT_ONDO_SELL_TOKENS_TO_COMPUTE_PRICE,
|
|
15
15
|
DEFAULT_SLIPPAGE_BPS,
|
|
16
16
|
ONDO_POLL_INTERVAL_MS,
|
|
17
|
-
ONDO_QUOTE_EXPIRY_THRESHOLD_MS,
|
|
18
17
|
ONDO_SETTLEMENT_ASSET,
|
|
19
18
|
ONDO_SUPPORTED_INPUT_ASSETS,
|
|
20
19
|
OffersNamespaceImpl,
|
|
@@ -25,6 +24,7 @@ import {
|
|
|
25
24
|
SWAP_POLL_INTERVAL_MS,
|
|
26
25
|
SwapQuote,
|
|
27
26
|
TOKEN_REGISTRY,
|
|
27
|
+
TokenRegistrySnapshot,
|
|
28
28
|
USDC,
|
|
29
29
|
USDC_SYMBOL,
|
|
30
30
|
computeOndoBuyPrice,
|
|
@@ -35,9 +35,11 @@ import {
|
|
|
35
35
|
formattedPricePerShare,
|
|
36
36
|
generatePKCEParams,
|
|
37
37
|
isSwapAvailable,
|
|
38
|
+
offerDisplayTokens,
|
|
39
|
+
ondoQuoteOfferDeadline,
|
|
38
40
|
superstateSwapContractAddress,
|
|
39
41
|
swapSpender
|
|
40
|
-
} from "../chunk-
|
|
42
|
+
} from "../chunk-VH34YC3Q.js";
|
|
41
43
|
import {
|
|
42
44
|
API_VERSION,
|
|
43
45
|
AssetDecimals,
|
|
@@ -86,7 +88,7 @@ import {
|
|
|
86
88
|
shortenAddress,
|
|
87
89
|
txExplorerUrl,
|
|
88
90
|
usdAmount
|
|
89
|
-
} from "../chunk-
|
|
91
|
+
} from "../chunk-MOE5S6CE.js";
|
|
90
92
|
|
|
91
93
|
// src/client/CoinListProvider.tsx
|
|
92
94
|
import {
|
|
@@ -1094,7 +1096,7 @@ var CoinListProvider = CoinListContextProvider;
|
|
|
1094
1096
|
import { createContext as createContext4, useContext as useContext3 } from "react";
|
|
1095
1097
|
|
|
1096
1098
|
// src/client/generated/sdk-styles.gen.ts
|
|
1097
|
-
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}}';
|
|
1099
|
+
var sdkStyles = '/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--clcosdk-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--clcosdk-color-red-400:oklch(70.4% .191 22.216);--clcosdk-color-red-500:oklch(63.7% .237 25.331);--clcosdk-color-amber-500:oklch(76.9% .188 70.08);--clcosdk-color-gray-400:oklch(70.7% .022 261.325);--clcosdk-color-gray-500:oklch(55.1% .027 264.364);--clcosdk-color-black:#000;--clcosdk-spacing:.25rem;--clcosdk-container-sm:24rem;--clcosdk-container-md:28rem;--clcosdk-container-xl:36rem;--clcosdk-text-xs:.75rem;--clcosdk-text-xs--line-height:calc(1 / .75);--clcosdk-text-sm:.875rem;--clcosdk-text-sm--line-height:calc(1.25 / .875);--clcosdk-text-base:1rem;--clcosdk-text-base--line-height:calc(1.5 / 1);--clcosdk-text-lg:1.125rem;--clcosdk-text-lg--line-height:calc(1.75 / 1.125);--clcosdk-font-weight-normal:400;--clcosdk-font-weight-medium:500;--clcosdk-font-weight-semibold:600;--clcosdk-radius-md:.375rem;--clcosdk-radius-lg:.5rem;--clcosdk-radius-xl:.75rem;--clcosdk-radius-2xl:1rem;--clcosdk-ease-out:cubic-bezier(0, 0, .2, 1);--clcosdk-ease-in-out:cubic-bezier(.4, 0, .2, 1);--clcosdk-animate-spin:spin 1s linear infinite;--clcosdk-animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--clcosdk-color-brand-primary:var(--color-brand-primary)}}@layer base{.clco-sdk-root{--color-brand-primary:#171717;--color-brand-primary-hover:#000;--color-brand-primary-active:#262626;--color-accent:#2b3a67;--color-accent-hover:#243057;--color-accent-active:#1d2647;--color-accent-focus:#c7d2fe;--color-accent-subtle:#eef1f8;--color-text-primary:#171717;--color-text-secondary:#8c8c8c;--color-text-disabled:#d1d1d1;--color-text-inverse:#fff;--color-background:#fff;--color-surface:#fafafa;--color-section:#f3f3f3;--color-border:#e5e5e5;--color-divider:#ececec;--color-overlay:#00000080;--color-positive:#15803d;--color-positive-subtle:#dcfce7;--color-negative:#dc2626;--color-negative-subtle:#fee2e2;--color-success:#2c8c5e;--color-success-subtle:#e6f4ec;--color-success-border:#cfe9db;--color-warning:#e08a1a;--color-warning-subtle:#fff7ed;--color-warning-border:#fdead7;--color-error:#b42318;--color-error-subtle:#feeceb;--color-error-border:#fbd5d2;--shadow-step-active:0px 0px 10px 0px #0000001a;--shadow-dialog:0px 8px 32px 0px #0000001a;--btn-primary-gradient:linear-gradient(180deg, #262626 0%, #1c1c1c 50%, #0f0f0f 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #00000059, inset 0px 1px 2px 0px #ffffff2e, inset 0px 1px 0px 0px #ffffff1a;--sale-card-surface:linear-gradient(to top, #0a0a0a 0%, #1a1a1a 100%);--color-sale-card-text:#f4f4f5;--color-sale-card-text-muted:#a1a1aa;--color-sale-card-text-strong:#fff;--color-sale-card-border:#ffffff40;--color-sale-card-chrome-border:#ffffff4d;--color-sale-card-chrome-bg:#ffffff26;--color-sale-card-chrome-emphasis-border:#fff6;--color-sale-card-chrome-emphasis-bg:#ffffff40;--color-sale-card-focus-ring:#ffffff80;--display-on-light:block;--display-on-dark:none}@media (prefers-color-scheme:dark){.clco-sdk-root:not(:where(.light,.light *)){--color-brand-primary:#f4f4f5;--color-brand-primary-hover:#fff;--color-brand-primary-active:#e4e4e7;--color-accent:#6f82c9;--color-accent-hover:#8799e4;--color-accent-active:#5b6fcf;--color-accent-focus:#6f82c959;--color-accent-subtle:#6f82c91f;--color-text-primary:#f4f4f5;--color-text-secondary:#a1a1aa;--color-text-disabled:#71717a;--color-text-inverse:#171717;--color-background:#0f1115;--color-surface:#161a20;--color-section:#20242c;--color-border:#2a2e35;--color-divider:#323741;--color-overlay:#000000b3;--color-positive:#22c55e;--color-positive-subtle:#22c55e1f;--color-negative:#ef4444;--color-negative-subtle:#ef44441f;--color-success:#34d399;--color-success-subtle:#34d3991f;--color-success-border:#34d39940;--color-warning:#f59e0b;--color-warning-subtle:#f59e0b1f;--color-warning-border:#f59e0b40;--color-error:#f87171;--color-error-subtle:#f871711f;--color-error-border:#f8717140;--shadow-step-active:0px 0px 10px 0px #00000080;--shadow-dialog:0px 8px 32px 0px #0009;--btn-primary-gradient:linear-gradient(180deg, #fafafa 0%, #f0f0f0 50%, #e4e4e7 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #0000001f, inset 0px 1px 2px 0px #fff9, inset 0px 1px 0px 0px #fff6;--display-on-light:none;--display-on-dark:block}}:where(.dark,.dark *) .clco-sdk-root{--color-brand-primary:#f4f4f5;--color-brand-primary-hover:#fff;--color-brand-primary-active:#e4e4e7;--color-accent:#6f82c9;--color-accent-hover:#8799e4;--color-accent-active:#5b6fcf;--color-accent-focus:#6f82c959;--color-accent-subtle:#6f82c91f;--color-text-primary:#f4f4f5;--color-text-secondary:#a1a1aa;--color-text-disabled:#71717a;--color-text-inverse:#171717;--color-background:#0f1115;--color-surface:#161a20;--color-section:#20242c;--color-border:#2a2e35;--color-divider:#323741;--color-overlay:#000000b3;--color-positive:#22c55e;--color-positive-subtle:#22c55e1f;--color-negative:#ef4444;--color-negative-subtle:#ef44441f;--color-success:#34d399;--color-success-subtle:#34d3991f;--color-success-border:#34d39940;--color-warning:#f59e0b;--color-warning-subtle:#f59e0b1f;--color-warning-border:#f59e0b40;--color-error:#f87171;--color-error-subtle:#f871711f;--color-error-border:#f8717140;--shadow-step-active:0px 0px 10px 0px #00000080;--shadow-dialog:0px 8px 32px 0px #0009;--btn-primary-gradient:linear-gradient(180deg, #fafafa 0%, #f0f0f0 50%, #e4e4e7 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #0000001f, inset 0px 1px 2px 0px #fff9, inset 0px 1px 0px 0px #fff6;--display-on-light:none;--display-on-dark:block}.clco-sdk-root{color:var(--color-text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.clco-sdk-root *,.clco-sdk-root :before,.clco-sdk-root :after{box-sizing:border-box}.clco-sdk-root button{appearance:none;cursor:pointer;font:inherit;color:inherit;background:0 0;border:none;padding:0}.clco-sdk-root input,.clco-sdk-root textarea,.clco-sdk-root select{font:inherit;color:inherit;background:0 0;border:none;border-radius:0;padding:0}.clco-sdk-root a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.clco-sdk-root ul,.clco-sdk-root ol{margin:0;padding:0;list-style:none}.clco-sdk-root h1,.clco-sdk-root h2,.clco-sdk-root h3,.clco-sdk-root h4,.clco-sdk-root h5,.clco-sdk-root h6,.clco-sdk-root p,.clco-sdk-root figure,.clco-sdk-root blockquote,.clco-sdk-root dl,.clco-sdk-root dd,.clco-sdk-root pre{margin:0}.clco-sdk-root img,.clco-sdk-root svg{max-width:100%;display:block}@keyframes clco-status-ping{0%{opacity:.7;transform:scale(1)}75%,to{opacity:0;transform:scale(3.25)}}.clco-sdk-root .clcosdk-status-dot-ping{animation:1.6s cubic-bezier(0,0,.2,1) infinite clco-status-ping}.clco-sdk-root .clcosdk-on-light{display:var(--display-on-light)}.clco-sdk-root .clcosdk-on-dark{display:var(--display-on-dark)}@media (prefers-reduced-motion:reduce){.clco-sdk-root .clcosdk-status-dot-ping{opacity:0;animation:none}}}@layer components;@layer utilities{.clcosdk\\:pointer-events-none{pointer-events:none}.clcosdk\\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.clcosdk\\:absolute{position:absolute}.clcosdk\\:fixed{position:fixed}.clcosdk\\:relative{position:relative}.clcosdk\\:inset-0{inset:0}.clcosdk\\:top-1\\/2{top:50%}.clcosdk\\:top-4{top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:top-full{top:100%}.clcosdk\\:-right-0\\.5{right:calc(var(--clcosdk-spacing) * -.5)}.clcosdk\\:right-4{right:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:right-\\[-14\\%\\]{right:-14%}.clcosdk\\:-bottom-0\\.5{bottom:calc(var(--clcosdk-spacing) * -.5)}.clcosdk\\:bottom-full{bottom:100%}.clcosdk\\:left-1\\/2{left:50%}.clcosdk\\:z-0{z-index:0}.clcosdk\\:z-10{z-index:10}.clcosdk\\:z-50{z-index:50}.clcosdk\\:order-1{order:1}.clcosdk\\:order-2{order:2}.clcosdk\\:mt-2{margin-top:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:mt-4{margin-top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:mt-auto{margin-top:auto}.clcosdk\\:mb-2{margin-bottom:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:flex{display:flex}.clcosdk\\:grid{display:grid}.clcosdk\\:inline-flex{display:inline-flex}.clcosdk\\:size-2{width:calc(var(--clcosdk-spacing) * 2);height:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:size-3{width:calc(var(--clcosdk-spacing) * 3);height:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:size-3\\.5{width:calc(var(--clcosdk-spacing) * 3.5);height:calc(var(--clcosdk-spacing) * 3.5)}.clcosdk\\:size-4{width:calc(var(--clcosdk-spacing) * 4);height:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:size-5{width:calc(var(--clcosdk-spacing) * 5);height:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:size-10{width:calc(var(--clcosdk-spacing) * 10);height:calc(var(--clcosdk-spacing) * 10)}.clcosdk\\:size-12{width:calc(var(--clcosdk-spacing) * 12);height:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:size-16{width:calc(var(--clcosdk-spacing) * 16);height:calc(var(--clcosdk-spacing) * 16)}.clcosdk\\:size-24{width:calc(var(--clcosdk-spacing) * 24);height:calc(var(--clcosdk-spacing) * 24)}.clcosdk\\:size-\\[15rem\\]{width:15rem;height:15rem}.clcosdk\\:size-full{width:100%;height:100%}.clcosdk\\:h-1{height:var(--clcosdk-spacing)}.clcosdk\\:h-3{height:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:h-4{height:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:h-5{height:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:h-6{height:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:h-8{height:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:h-9{height:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:h-10{height:calc(var(--clcosdk-spacing) * 10)}.clcosdk\\:h-11{height:calc(var(--clcosdk-spacing) * 11)}.clcosdk\\:h-12{height:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:h-14{height:calc(var(--clcosdk-spacing) * 14)}.clcosdk\\:h-\\[1em\\]{height:1em}.clcosdk\\:h-\\[18px\\]{height:18px}.clcosdk\\:h-\\[54px\\]{height:54px}.clcosdk\\:h-\\[71px\\]{height:71px}.clcosdk\\:h-auto{height:auto}.clcosdk\\:h-full{height:100%}.clcosdk\\:h-px{height:1px}.clcosdk\\:max-h-\\[92vh\\]{max-height:92vh}.clcosdk\\:max-h-full{max-height:100%}.clcosdk\\:min-h-0{min-height:0}.clcosdk\\:min-h-9{min-height:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:min-h-40{min-height:calc(var(--clcosdk-spacing) * 40)}.clcosdk\\:min-h-\\[1lh\\]{min-height:1lh}.clcosdk\\:min-h-screen{min-height:100vh}.clcosdk\\:w-1{width:var(--clcosdk-spacing)}.clcosdk\\:w-4{width:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:w-5{width:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:w-6{width:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:w-8{width:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:w-10{width:calc(var(--clcosdk-spacing) * 10)}.clcosdk\\:w-12{width:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:w-16{width:calc(var(--clcosdk-spacing) * 16)}.clcosdk\\:w-20{width:calc(var(--clcosdk-spacing) * 20)}.clcosdk\\:w-24{width:calc(var(--clcosdk-spacing) * 24)}.clcosdk\\:w-28{width:calc(var(--clcosdk-spacing) * 28)}.clcosdk\\:w-32{width:calc(var(--clcosdk-spacing) * 32)}.clcosdk\\:w-40{width:calc(var(--clcosdk-spacing) * 40)}.clcosdk\\:w-48{width:calc(var(--clcosdk-spacing) * 48)}.clcosdk\\:w-80{width:calc(var(--clcosdk-spacing) * 80)}.clcosdk\\:w-96{width:calc(var(--clcosdk-spacing) * 96)}.clcosdk\\:w-\\[16px\\]{width:16px}.clcosdk\\:w-\\[28rem\\]{width:28rem}.clcosdk\\:w-\\[448px\\]{width:448px}.clcosdk\\:w-auto{width:auto}.clcosdk\\:w-component{width:448px}.clcosdk\\:w-fit{width:fit-content}.clcosdk\\:w-full{width:100%}.clcosdk\\:w-max{width:max-content}.clcosdk\\:max-w-\\[16rem\\]{max-width:16rem}.clcosdk\\:max-w-\\[28rem\\]{max-width:28rem}.clcosdk\\:max-w-\\[30rem\\]{max-width:30rem}.clcosdk\\:max-w-\\[40rem\\]{max-width:40rem}.clcosdk\\:max-w-\\[56rem\\]{max-width:56rem}.clcosdk\\:max-w-\\[64rem\\]{max-width:64rem}.clcosdk\\:max-w-\\[760px\\]{max-width:760px}.clcosdk\\:max-w-full{max-width:100%}.clcosdk\\:max-w-md{max-width:var(--clcosdk-container-md)}.clcosdk\\:max-w-sm{max-width:var(--clcosdk-container-sm)}.clcosdk\\:max-w-xl{max-width:var(--clcosdk-container-xl)}.clcosdk\\:min-w-0{min-width:0}.clcosdk\\:flex-1{flex:1}.clcosdk\\:shrink-0{flex-shrink:0}.clcosdk\\:-translate-x-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.clcosdk\\:-translate-y-1\\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.clcosdk\\:rotate-90{rotate:90deg}.clcosdk\\:rotate-180{rotate:180deg}.clcosdk\\:animate-pulse{animation:var(--clcosdk-animate-pulse)}.clcosdk\\:animate-spin{animation:var(--clcosdk-animate-spin)}.clcosdk\\:cursor-pointer{cursor:pointer}.clcosdk\\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.clcosdk\\:grid-rows-\\[0fr\\]{grid-template-rows:0fr}.clcosdk\\:grid-rows-\\[1fr\\]{grid-template-rows:1fr}.clcosdk\\:flex-col{flex-direction:column}.clcosdk\\:flex-wrap{flex-wrap:wrap}.clcosdk\\:items-center{align-items:center}.clcosdk\\:items-end{align-items:flex-end}.clcosdk\\:items-start{align-items:flex-start}.clcosdk\\:justify-between{justify-content:space-between}.clcosdk\\:justify-center{justify-content:center}.clcosdk\\:justify-end{justify-content:flex-end}.clcosdk\\:gap-1{gap:var(--clcosdk-spacing)}.clcosdk\\:gap-1\\.5{gap:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:gap-2{gap:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:gap-2\\.5{gap:calc(var(--clcosdk-spacing) * 2.5)}.clcosdk\\:gap-3{gap:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:gap-4{gap:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:gap-6{gap:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:gap-\\[5px\\]{gap:5px}:where(.clcosdk\\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--clcosdk-spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--clcosdk-spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.clcosdk\\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--clcosdk-spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--clcosdk-spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.clcosdk\\:divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.clcosdk\\:divide-border>:not(:last-child)){border-color:var(--color-border)}:where(.clcosdk\\:divide-divider>:not(:last-child)){border-color:var(--color-divider)}.clcosdk\\:self-start{align-self:flex-start}.clcosdk\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.clcosdk\\:overflow-hidden{overflow:hidden}.clcosdk\\:overflow-y-auto{overflow-y:auto}.clcosdk\\:rounded{border-radius:.25rem}.clcosdk\\:rounded-2xl{border-radius:var(--clcosdk-radius-2xl)}.clcosdk\\:rounded-\\[20px\\]{border-radius:20px}.clcosdk\\:rounded-\\[28px\\]{border-radius:28px}.clcosdk\\:rounded-btn{border-radius:12px}.clcosdk\\:rounded-card{border-radius:24px}.clcosdk\\:rounded-full{border-radius:3.40282e38px}.clcosdk\\:rounded-lg{border-radius:var(--clcosdk-radius-lg)}.clcosdk\\:rounded-md{border-radius:var(--clcosdk-radius-md)}.clcosdk\\:rounded-xl{border-radius:var(--clcosdk-radius-xl)}.clcosdk\\:border{border-style:var(--tw-border-style);border-width:1px}.clcosdk\\:border-2{border-style:var(--tw-border-style);border-width:2px}.clcosdk\\:border-\\[1\\.5px\\]{border-style:var(--tw-border-style);border-width:1.5px}.clcosdk\\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.clcosdk\\:border-accent\\/60{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.clcosdk\\:border-accent\\/60{border-color:color-mix(in oklab, var(--color-accent) 60%, transparent)}}.clcosdk\\:border-amber-500{border-color:var(--clcosdk-color-amber-500)}.clcosdk\\:border-background{border-color:var(--color-background)}.clcosdk\\:border-border{border-color:var(--color-border)}.clcosdk\\:border-brand-primary{border-color:var(--color-brand-primary)}.clcosdk\\:border-current{border-color:currentColor}.clcosdk\\:border-divider{border-color:var(--color-divider)}.clcosdk\\:border-error-border{border-color:var(--color-error-border)}.clcosdk\\:border-sale-card-border{border-color:var(--color-sale-card-border)}.clcosdk\\:border-sale-card-chrome-border{border-color:var(--color-sale-card-chrome-border)}.clcosdk\\:border-success-border{border-color:var(--color-success-border)}.clcosdk\\:border-warning-border{border-color:var(--color-warning-border)}.clcosdk\\:border-t-transparent{border-top-color:#0000}.clcosdk\\:bg-background{background-color:var(--color-background)}.clcosdk\\:bg-black\\/50{background-color:var(--clcosdk-color-black)}@supports (color:color-mix(in lab, red, red)){.clcosdk\\:bg-black\\/50{background-color:color-mix(in oklab, var(--clcosdk-color-black) 50%, transparent)}}.clcosdk\\:bg-brand-primary{background-color:var(--color-brand-primary)}.clcosdk\\:bg-divider{background-color:var(--color-divider)}.clcosdk\\:bg-error-subtle{background-color:var(--color-error-subtle)}.clcosdk\\:bg-overlay{background-color:var(--color-overlay)}.clcosdk\\:bg-positive{background-color:var(--color-positive)}.clcosdk\\:bg-positive-subtle{background-color:var(--color-positive-subtle)}.clcosdk\\:bg-sale-card-chrome-bg{background-color:var(--color-sale-card-chrome-bg)}.clcosdk\\:bg-section{background-color:var(--color-section)}.clcosdk\\:bg-success-subtle{background-color:var(--color-success-subtle)}.clcosdk\\:bg-surface{background-color:var(--color-surface)}.clcosdk\\:bg-text-disabled{background-color:var(--color-text-disabled)}.clcosdk\\:bg-text-primary{background-color:var(--color-text-primary)}.clcosdk\\:bg-transparent{background-color:#0000}.clcosdk\\:bg-warning-subtle{background-color:var(--color-warning-subtle)}.clcosdk\\:bg-\\[image\\:var\\(--btn-primary-gradient\\)\\]{background-image:var(--btn-primary-gradient)}.clcosdk\\:bg-\\[image\\:var\\(--sale-card-surface\\)\\]{background-image:var(--sale-card-surface)}.clcosdk\\:object-contain{object-fit:contain}.clcosdk\\:object-cover{object-fit:cover}.clcosdk\\:p-0{padding:0}.clcosdk\\:p-1\\.5{padding:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:p-3{padding:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:p-3\\.5{padding:calc(var(--clcosdk-spacing) * 3.5)}.clcosdk\\:p-4{padding:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:p-5{padding:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:p-6{padding:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:p-8{padding:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:p-16{padding:calc(var(--clcosdk-spacing) * 16)}.clcosdk\\:px-2{padding-inline:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:px-3{padding-inline:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:px-4{padding-inline:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:px-5{padding-inline:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:px-6{padding-inline:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:py-1\\.5{padding-block:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:py-2{padding-block:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:py-3{padding-block:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:py-8{padding-block:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:py-12{padding-block:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:pt-1{padding-top:var(--clcosdk-spacing)}.clcosdk\\:pt-4{padding-top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:pt-14{padding-top:calc(var(--clcosdk-spacing) * 14)}.clcosdk\\:pr-1\\.5{padding-right:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:pr-3{padding-right:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:pr-4{padding-right:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:pb-4{padding-bottom:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:pl-3{padding-left:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:text-center{text-align:center}.clcosdk\\:text-left{text-align:left}.clcosdk\\:text-right{text-align:right}.clcosdk\\:font-mono{font-family:var(--clcosdk-font-mono)}.clcosdk\\:text-base{font-size:var(--clcosdk-text-base);line-height:var(--tw-leading,var(--clcosdk-text-base--line-height))}.clcosdk\\:text-lg{font-size:var(--clcosdk-text-lg);line-height:var(--tw-leading,var(--clcosdk-text-lg--line-height))}.clcosdk\\:text-sm{font-size:var(--clcosdk-text-sm);line-height:var(--tw-leading,var(--clcosdk-text-sm--line-height))}.clcosdk\\:text-xs{font-size:var(--clcosdk-text-xs);line-height:var(--tw-leading,var(--clcosdk-text-xs--line-height))}.clcosdk\\:text-\\[11px\\]{font-size:11px}.clcosdk\\:text-\\[12px\\]{font-size:12px}.clcosdk\\:text-\\[13px\\]{font-size:13px}.clcosdk\\:text-\\[14px\\]{font-size:14px}.clcosdk\\:text-\\[15px\\]{font-size:15px}.clcosdk\\:text-\\[16px\\]{font-size:16px}.clcosdk\\:text-\\[18px\\]{font-size:18px}.clcosdk\\:text-\\[22px\\]{font-size:22px}.clcosdk\\:text-\\[28px\\]{font-size:28px}.clcosdk\\:text-\\[36px\\]{font-size:36px}.clcosdk\\:text-\\[48px\\]{font-size:48px}.clcosdk\\:text-\\[64px\\]{font-size:64px}.clcosdk\\:leading-\\[105\\%\\]{--tw-leading:105%;line-height:105%}.clcosdk\\:leading-\\[108\\%\\]{--tw-leading:108%;line-height:108%}.clcosdk\\:leading-\\[110\\%\\]{--tw-leading:110%;line-height:110%}.clcosdk\\:leading-\\[120\\%\\]{--tw-leading:120%;line-height:120%}.clcosdk\\:leading-\\[130\\%\\]{--tw-leading:130%;line-height:130%}.clcosdk\\:leading-\\[140\\%\\]{--tw-leading:140%;line-height:140%}.clcosdk\\:leading-\\[150\\%\\]{--tw-leading:150%;line-height:150%}.clcosdk\\:leading-\\[160\\%\\]{--tw-leading:160%;line-height:160%}.clcosdk\\:font-medium{--tw-font-weight:var(--clcosdk-font-weight-medium);font-weight:var(--clcosdk-font-weight-medium)}.clcosdk\\:font-normal{--tw-font-weight:var(--clcosdk-font-weight-normal);font-weight:var(--clcosdk-font-weight-normal)}.clcosdk\\:font-semibold{--tw-font-weight:var(--clcosdk-font-weight-semibold);font-weight:var(--clcosdk-font-weight-semibold)}.clcosdk\\:tracking-\\[0\\.12px\\]{--tw-tracking:.12px;letter-spacing:.12px}.clcosdk\\:tracking-\\[0\\.28px\\]{--tw-tracking:.28px;letter-spacing:.28px}.clcosdk\\:break-words{overflow-wrap:break-word}.clcosdk\\:whitespace-nowrap{white-space:nowrap}.clcosdk\\:text-background{color:var(--color-background)}.clcosdk\\:text-brand-primary{color:var(--color-brand-primary)}.clcosdk\\:text-error{color:var(--color-error)}.clcosdk\\:text-positive{color:var(--color-positive)}.clcosdk\\:text-sale-card-text{color:var(--color-sale-card-text)}.clcosdk\\:text-sale-card-text-muted{color:var(--color-sale-card-text-muted)}.clcosdk\\:text-sale-card-text-strong{color:var(--color-sale-card-text-strong)}.clcosdk\\:text-success{color:var(--color-success)}.clcosdk\\:text-text-disabled{color:var(--color-text-disabled)}.clcosdk\\:text-text-inverse{color:var(--color-text-inverse)}.clcosdk\\:text-text-primary{color:var(--color-text-primary)}.clcosdk\\:text-text-secondary{color:var(--color-text-secondary)}.clcosdk\\:text-warning{color:var(--color-warning)}.clcosdk\\:capitalize{text-transform:capitalize}.clcosdk\\:lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.clcosdk\\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.clcosdk\\:no-underline{text-decoration-line:none}.clcosdk\\:underline{text-decoration-line:underline}.clcosdk\\:underline-offset-2{text-underline-offset:2px}.clcosdk\\:underline-offset-4{text-underline-offset:4px}.clcosdk\\:opacity-0{opacity:0}.clcosdk\\:opacity-60{opacity:.6}.clcosdk\\:shadow-\\[0_0_0_3px_rgba\\(59\\,130\\,246\\,0\\.2\\)\\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#3b82f633);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-\\[0px_1px_1px_0px_rgba\\(10\\,10\\,10\\,0\\.04\\)\\,0px_8px_12px_0px_rgba\\(10\\,10\\,10\\,0\\.08\\)\\]{--tw-shadow:0px 1px 1px 0px var(--tw-shadow-color,#0a0a0a0a), 0px 8px 12px 0px var(--tw-shadow-color,#0a0a0a14);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-\\[0px_4px_12px_0px_rgba\\(0\\,0\\,0\\,0\\.08\\)\\,0px_12px_28px_0px_rgba\\(0\\,0\\,0\\,0\\.13\\)\\]{--tw-shadow:0px 4px 12px 0px var(--tw-shadow-color,#00000014), 0px 12px 28px 0px var(--tw-shadow-color,#00000021);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-\\[var\\(--btn-primary-shadow\\)\\]{--tw-shadow:var(--btn-primary-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-card{--tw-shadow:0px 4px 6px -2px var(--tw-shadow-color,#0000000d), 0px 12px 24px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-dialog{--tw-shadow:var(--shadow-dialog);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-step-active{--tw-shadow:var(--shadow-step-active);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:transition-\\[background-color\\,border-color\\]{transition-property:background-color,border-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-\\[grid-template-rows\\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:duration-200{--tw-duration:.2s;transition-duration:.2s}.clcosdk\\:duration-300{--tw-duration:.3s;transition-duration:.3s}.clcosdk\\:duration-500{--tw-duration:.5s;transition-duration:.5s}.clcosdk\\:ease-in-out{--tw-ease:var(--clcosdk-ease-in-out);transition-timing-function:var(--clcosdk-ease-in-out)}.clcosdk\\:ease-out{--tw-ease:var(--clcosdk-ease-out);transition-timing-function:var(--clcosdk-ease-out)}.clcosdk\\:outline-none{--tw-outline-style:none;outline-style:none}.clcosdk\\:group-focus-within\\:opacity-100:is(:where(.clcosdk\\:group):focus-within *){opacity:1}@media (hover:hover){.clcosdk\\:group-hover\\:border-sale-card-chrome-emphasis-border:is(:where(.clcosdk\\:group):hover *){border-color:var(--color-sale-card-chrome-emphasis-border)}.clcosdk\\:group-hover\\:bg-sale-card-chrome-emphasis-bg:is(:where(.clcosdk\\:group):hover *){background-color:var(--color-sale-card-chrome-emphasis-bg)}.clcosdk\\:group-hover\\:opacity-100:is(:where(.clcosdk\\:group):hover *){opacity:1}}.clcosdk\\:group-focus-visible\\:border-sale-card-chrome-emphasis-border:is(:where(.clcosdk\\:group):focus-visible *){border-color:var(--color-sale-card-chrome-emphasis-border)}.clcosdk\\:group-focus-visible\\:bg-sale-card-chrome-emphasis-bg:is(:where(.clcosdk\\:group):focus-visible *){background-color:var(--color-sale-card-chrome-emphasis-bg)}.clcosdk\\:placeholder\\:text-text-disabled::placeholder{color:var(--color-text-disabled)}@media (hover:hover){.clcosdk\\:hover\\:scale-\\[1\\.02\\]:hover{scale:1.02}.clcosdk\\:hover\\:border-text-disabled:hover{border-color:var(--color-text-disabled)}.clcosdk\\:hover\\:bg-\\[\\#fcdcd8\\]:hover{background-color:#fcdcd8}.clcosdk\\:hover\\:bg-border:hover{background-color:var(--color-border)}.clcosdk\\:hover\\:bg-brand-primary:hover{background-color:var(--color-brand-primary)}.clcosdk\\:hover\\:bg-brand-primary-hover:hover{background-color:var(--color-brand-primary-hover)}.clcosdk\\:hover\\:bg-section:hover{background-color:var(--color-section)}.clcosdk\\:hover\\:bg-surface:hover{background-color:var(--color-surface)}.clcosdk\\:hover\\:text-\\[\\#8b1a13\\]:hover{color:#8b1a13}.clcosdk\\:hover\\:text-text-primary:hover{color:var(--color-text-primary)}.clcosdk\\:hover\\:underline:hover{text-decoration-line:underline}.clcosdk\\:hover\\:opacity-80:hover{opacity:.8}.clcosdk\\:hover\\:opacity-90:hover{opacity:.9}}.clcosdk\\:focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:focus-visible\\:ring-gray-400:focus-visible{--tw-ring-color:var(--clcosdk-color-gray-400)}.clcosdk\\:focus-visible\\:ring-gray-500:focus-visible{--tw-ring-color:var(--clcosdk-color-gray-500)}.clcosdk\\:focus-visible\\:ring-red-400:focus-visible{--tw-ring-color:var(--clcosdk-color-red-400)}.clcosdk\\:focus-visible\\:ring-red-500:focus-visible{--tw-ring-color:var(--clcosdk-color-red-500)}.clcosdk\\:focus-visible\\:ring-sale-card-focus-ring:focus-visible{--tw-ring-color:var(--color-sale-card-focus-ring)}.clcosdk\\:focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.clcosdk\\:focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.clcosdk\\:active\\:bg-\\[\\#d9d9d9\\]:active{background-color:#d9d9d9}.clcosdk\\:active\\:bg-\\[\\#f9c9c4\\]:active{background-color:#f9c9c4}.clcosdk\\:active\\:bg-border:active{background-color:var(--color-border)}.clcosdk\\:active\\:bg-brand-primary-active:active{background-color:var(--color-brand-primary-active)}.clcosdk\\:active\\:text-\\[\\#6d1510\\]:active{color:#6d1510}.clcosdk\\:active\\:opacity-80:active{opacity:.8}.clcosdk\\:disabled\\:pointer-events-none:disabled{pointer-events:none}.clcosdk\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.clcosdk\\:disabled\\:opacity-40:disabled{opacity:.4}.clcosdk\\:disabled\\:opacity-50:disabled{opacity:.5}.clcosdk\\:aria-disabled\\:cursor-not-allowed[aria-disabled=true]{cursor:not-allowed}.clcosdk\\:aria-disabled\\:opacity-50[aria-disabled=true]{opacity:.5}@media not all and (min-width:48rem){.clcosdk\\:max-md\\:hidden{display:none}.clcosdk\\:max-md\\:w-full{width:100%}.clcosdk\\:max-md\\:justify-start{justify-content:flex-start}.clcosdk\\:max-md\\:gap-4{gap:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:max-md\\:rounded-none{border-radius:0}.clcosdk\\:max-md\\:border-0{border-style:var(--tw-border-style);border-width:0}.clcosdk\\:max-md\\:bg-transparent{background-color:#0000}.clcosdk\\:max-md\\:p-0{padding:0}@media (hover:hover){.clcosdk\\:max-md\\:hover\\:scale-100:hover{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}}}@media (min-width:40rem){.clcosdk\\:sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:48rem){.clcosdk\\:md\\:right-\\[-10\\%\\]{right:-10%}.clcosdk\\:md\\:order-1{order:1}.clcosdk\\:md\\:order-2{order:2}.clcosdk\\:md\\:hidden{display:none}.clcosdk\\:md\\:size-\\[20rem\\]{width:20rem;height:20rem}.clcosdk\\:md\\:h-9{height:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:md\\:h-12{height:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:md\\:h-\\[54px\\]{height:54px}.clcosdk\\:md\\:w-9{width:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:md\\:w-12{width:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.clcosdk\\:md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.clcosdk\\:md\\:grid-cols-\\[minmax\\(0\\,11fr\\)_minmax\\(0\\,8fr\\)\\]{grid-template-columns:minmax(0,11fr) minmax(0,8fr)}.clcosdk\\:md\\:flex-row{flex-direction:row}.clcosdk\\:md\\:items-center{align-items:center}.clcosdk\\:md\\:items-end{align-items:flex-end}.clcosdk\\:md\\:justify-between{justify-content:space-between}.clcosdk\\:md\\:justify-end{justify-content:flex-end}.clcosdk\\:md\\:gap-3{gap:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:md\\:gap-6{gap:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:md\\:gap-x-12{column-gap:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:md\\:self-end{align-self:flex-end}.clcosdk\\:md\\:rounded-\\[40px\\]{border-radius:40px}.clcosdk\\:md\\:rounded-card{border-radius:24px}.clcosdk\\:md\\:rounded-dialog{border-radius:32px}.clcosdk\\:md\\:p-4{padding:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:md\\:p-6{padding:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:md\\:p-8{padding:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:md\\:px-6{padding-inline:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:md\\:px-8{padding-inline:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:md\\:py-2{padding-block:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:md\\:pr-2{padding-right:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:md\\:pr-4{padding-right:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:md\\:pl-4{padding-left:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:md\\:text-base{font-size:var(--clcosdk-text-base);line-height:var(--tw-leading,var(--clcosdk-text-base--line-height))}.clcosdk\\:md\\:text-\\[14px\\]{font-size:14px}.clcosdk\\:md\\:text-\\[16px\\]{font-size:16px}.clcosdk\\:md\\:text-\\[18px\\]{font-size:18px}.clcosdk\\:md\\:text-\\[28px\\]{font-size:28px}.clcosdk\\:md\\:leading-\\[120\\%\\]{--tw-leading:120%;line-height:120%}.clcosdk\\:md\\:leading-\\[160\\%\\]{--tw-leading:160%;line-height:160%}}@media (prefers-color-scheme:dark){@media (hover:hover){.clcosdk\\:dark\\:hover\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.20\\)\\]:not(:where(.light,.light *)):hover{background-color:#f8717133}}}@media (hover:hover){.clcosdk\\:dark\\:hover\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.20\\)\\]:where(.dark,.dark *):hover{background-color:#f8717133}}@media (prefers-color-scheme:dark){@media (hover:hover){.clcosdk\\:dark\\:hover\\:text-\\[\\#fca5a5\\]:not(:where(.light,.light *)):hover{color:#fca5a5}}}@media (hover:hover){.clcosdk\\:dark\\:hover\\:text-\\[\\#fca5a5\\]:where(.dark,.dark *):hover{color:#fca5a5}}@media (prefers-color-scheme:dark){.clcosdk\\:dark\\:active\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.30\\)\\]:not(:where(.light,.light *)):active{background-color:#f871714d}}.clcosdk\\:dark\\:active\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.30\\)\\]:where(.dark,.dark *):active{background-color:#f871714d}@media (prefers-color-scheme:dark){.clcosdk\\:dark\\:active\\:bg-divider:not(:where(.light,.light *)):active{background-color:var(--color-divider)}}.clcosdk\\:dark\\:active\\:bg-divider:where(.dark,.dark *):active{background-color:var(--color-divider)}@media (prefers-color-scheme:dark){.clcosdk\\:dark\\:active\\:text-\\[\\#f87171\\]:not(:where(.light,.light *)):active{color:#f87171}}.clcosdk\\:dark\\:active\\:text-\\[\\#f87171\\]:where(.dark,.dark *):active{color:#f87171}.clcosdk\\:\\[\\&_circle\\]\\:fill-error-subtle circle{fill:var(--color-error-subtle)}.clcosdk\\:\\[\\&_circle\\]\\:fill-success-subtle circle{fill:var(--color-success-subtle)}.clcosdk\\:\\[\\&_circle\\]\\:fill-warning-subtle circle{fill:var(--color-warning-subtle)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}';
|
|
1098
1100
|
|
|
1099
1101
|
// src/client/CoinListStyleScope.tsx
|
|
1100
1102
|
import { Fragment, jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
@@ -3602,7 +3604,7 @@ function stablecoinIconUrl(symbol) {
|
|
|
3602
3604
|
}
|
|
3603
3605
|
}
|
|
3604
3606
|
function offerIconUrl(offer) {
|
|
3605
|
-
return offer.logoUrl
|
|
3607
|
+
return offer.logoUrl ? AssetIconUrl(offer.logoUrl) : null;
|
|
3606
3608
|
}
|
|
3607
3609
|
function tokenLogoUrl(logo, minWidth = 40) {
|
|
3608
3610
|
switch (logo.kind) {
|
|
@@ -3621,6 +3623,20 @@ function tokenLogoUrl(logo, minWidth = 40) {
|
|
|
3621
3623
|
}
|
|
3622
3624
|
}
|
|
3623
3625
|
}
|
|
3626
|
+
function tokenLogoSrcSet(logo) {
|
|
3627
|
+
switch (logo.kind) {
|
|
3628
|
+
case "VECTOR":
|
|
3629
|
+
return null;
|
|
3630
|
+
case "RASTER": {
|
|
3631
|
+
const candidates = logo.variants.length > 0 ? logo.variants : [logo.original];
|
|
3632
|
+
return [...candidates].sort((a, b) => a.width - b.width).map((image) => `${image.url} ${image.width}w`).join(", ");
|
|
3633
|
+
}
|
|
3634
|
+
default: {
|
|
3635
|
+
const exhaustive = logo;
|
|
3636
|
+
return exhaustive;
|
|
3637
|
+
}
|
|
3638
|
+
}
|
|
3639
|
+
}
|
|
3624
3640
|
function offerAssetIconUrl(offer, tokenMetadata) {
|
|
3625
3641
|
return (tokenMetadata ? tokenLogoUrl(tokenMetadata.logo) : null) ?? offerIconUrl(offer);
|
|
3626
3642
|
}
|
|
@@ -4069,7 +4085,7 @@ function toInputAssetUi({
|
|
|
4069
4085
|
}
|
|
4070
4086
|
|
|
4071
4087
|
// src/client/hooks/checkout/ondo/buy/review/useOndoBuyReviewViewModel.ts
|
|
4072
|
-
import { useEffect as useEffect7, useRef as useRef5, useState as useState6 } from "react";
|
|
4088
|
+
import { useEffect as useEffect7, useMemo as useMemo4, useRef as useRef5, useState as useState6 } from "react";
|
|
4073
4089
|
|
|
4074
4090
|
// src/client/hooks/checkout/ondo/buy/data/useOndoBuyTransaction.ts
|
|
4075
4091
|
import { useCallback as useCallback2, useEffect as useEffect5, useRef as useRef4, useState as useState5 } from "react";
|
|
@@ -4227,8 +4243,12 @@ function useOndoBuyReviewViewModel({
|
|
|
4227
4243
|
}
|
|
4228
4244
|
}, [stepInput.type]);
|
|
4229
4245
|
const transaction = transactionState.type === "CONTENT" ? transactionState.transaction : null;
|
|
4246
|
+
const offerUntil = useMemo4(
|
|
4247
|
+
() => transaction === null ? null : ondoQuoteOfferDeadline(transaction.expiresAt),
|
|
4248
|
+
[transaction]
|
|
4249
|
+
);
|
|
4230
4250
|
const secondsLeft = useCountdown({
|
|
4231
|
-
until:
|
|
4251
|
+
until: offerUntil,
|
|
4232
4252
|
enabled
|
|
4233
4253
|
});
|
|
4234
4254
|
const quoteStatus = toQuoteStatusUi(transactionState, secondsLeft);
|
|
@@ -4352,14 +4372,11 @@ function toQuoteStatusUi(state, secondsLeft) {
|
|
|
4352
4372
|
message: refreshErrorMessage(state.refreshError)
|
|
4353
4373
|
};
|
|
4354
4374
|
}
|
|
4355
|
-
if (secondsLeft === null ||
|
|
4375
|
+
if (secondsLeft === null || secondsLeft === 0) {
|
|
4356
4376
|
return { type: "expired" };
|
|
4357
4377
|
}
|
|
4358
4378
|
return { type: "valid", expiresInLabel: expiresInLabel(secondsLeft) };
|
|
4359
4379
|
}
|
|
4360
|
-
function isTooCloseToExpiry(secondsLeft) {
|
|
4361
|
-
return secondsLeft * 1e3 <= ONDO_QUOTE_EXPIRY_THRESHOLD_MS;
|
|
4362
|
-
}
|
|
4363
4380
|
function expiresInLabel(secondsLeft) {
|
|
4364
4381
|
const unit = secondsLeft === 1 ? "second" : "seconds";
|
|
4365
4382
|
return `Quote expires in ${secondsLeft} ${unit}`;
|
|
@@ -4851,8 +4868,9 @@ var NO_TOKEN_ADDRESS = EvmContractAddress(
|
|
|
4851
4868
|
"0x0000000000000000000000000000000000000000"
|
|
4852
4869
|
);
|
|
4853
4870
|
function offerTokenIdentifier(offer, chain) {
|
|
4854
|
-
const
|
|
4855
|
-
|
|
4871
|
+
const asset = offerDisplayTokens(offer).find(
|
|
4872
|
+
(token) => token.chain === chain
|
|
4873
|
+
);
|
|
4856
4874
|
return asset === void 0 ? null : { chain, address: asset.address };
|
|
4857
4875
|
}
|
|
4858
4876
|
function tokenMetadataOf(state) {
|
|
@@ -6168,7 +6186,7 @@ function preparationErrorMessage2(error) {
|
|
|
6168
6186
|
}
|
|
6169
6187
|
|
|
6170
6188
|
// src/client/hooks/checkout/ondo/sell/review/useOndoSellReviewViewModel.ts
|
|
6171
|
-
import { useEffect as useEffect14, useRef as useRef11, useState as useState15 } from "react";
|
|
6189
|
+
import { useEffect as useEffect14, useMemo as useMemo5, useRef as useRef11, useState as useState15 } from "react";
|
|
6172
6190
|
|
|
6173
6191
|
// src/client/hooks/checkout/ondo/sell/data/useOndoSellTransaction.ts
|
|
6174
6192
|
import { useCallback as useCallback4, useEffect as useEffect13, useRef as useRef10, useState as useState14 } from "react";
|
|
@@ -6289,8 +6307,12 @@ function useOndoSellReviewViewModel({
|
|
|
6289
6307
|
}
|
|
6290
6308
|
}, [stepInput.type]);
|
|
6291
6309
|
const transaction = transactionState.type === "CONTENT" ? transactionState.transaction : null;
|
|
6310
|
+
const offerUntil = useMemo5(
|
|
6311
|
+
() => transaction === null ? null : ondoQuoteOfferDeadline(transaction.expiresAt),
|
|
6312
|
+
[transaction]
|
|
6313
|
+
);
|
|
6292
6314
|
const secondsLeft = useCountdown({
|
|
6293
|
-
until:
|
|
6315
|
+
until: offerUntil,
|
|
6294
6316
|
enabled
|
|
6295
6317
|
});
|
|
6296
6318
|
const quoteStatus = toQuoteStatusUi2(transactionState, secondsLeft);
|
|
@@ -6419,14 +6441,11 @@ function toQuoteStatusUi2(state, secondsLeft) {
|
|
|
6419
6441
|
message: refreshErrorMessage2(state.refreshError)
|
|
6420
6442
|
};
|
|
6421
6443
|
}
|
|
6422
|
-
if (secondsLeft === null ||
|
|
6444
|
+
if (secondsLeft === null || secondsLeft === 0) {
|
|
6423
6445
|
return { type: "expired" };
|
|
6424
6446
|
}
|
|
6425
6447
|
return { type: "valid", expiresInLabel: expiresInLabel2(secondsLeft) };
|
|
6426
6448
|
}
|
|
6427
|
-
function isTooCloseToExpiry2(secondsLeft) {
|
|
6428
|
-
return secondsLeft * 1e3 <= ONDO_QUOTE_EXPIRY_THRESHOLD_MS;
|
|
6429
|
-
}
|
|
6430
6449
|
function expiresInLabel2(secondsLeft) {
|
|
6431
6450
|
const unit = secondsLeft === 1 ? "second" : "seconds";
|
|
6432
6451
|
return `Quote expires in ${secondsLeft} ${unit}`;
|
|
@@ -9110,11 +9129,11 @@ function CheckoutContainer({
|
|
|
9110
9129
|
enabled = true,
|
|
9111
9130
|
className
|
|
9112
9131
|
}) {
|
|
9113
|
-
return renderOffer(offer
|
|
9114
|
-
ondo: () => /* @__PURE__ */ jsx50(
|
|
9132
|
+
return renderOffer(offer, {
|
|
9133
|
+
ondo: (ondoOffer) => /* @__PURE__ */ jsx50(
|
|
9115
9134
|
OndoCheckoutContainer,
|
|
9116
9135
|
{
|
|
9117
|
-
offer,
|
|
9136
|
+
offer: ondoOffer,
|
|
9118
9137
|
chain,
|
|
9119
9138
|
wallets,
|
|
9120
9139
|
config: config["ondo::swap"],
|
|
@@ -9122,10 +9141,10 @@ function CheckoutContainer({
|
|
|
9122
9141
|
className
|
|
9123
9142
|
}
|
|
9124
9143
|
),
|
|
9125
|
-
superstate: () => /* @__PURE__ */ jsx50(
|
|
9144
|
+
superstate: (superstateOffer) => /* @__PURE__ */ jsx50(
|
|
9126
9145
|
SuperstateSwapCheckoutContainer,
|
|
9127
9146
|
{
|
|
9128
|
-
offer,
|
|
9147
|
+
offer: superstateOffer,
|
|
9129
9148
|
chain,
|
|
9130
9149
|
wallets,
|
|
9131
9150
|
enabled,
|
|
@@ -9133,7 +9152,7 @@ function CheckoutContainer({
|
|
|
9133
9152
|
className
|
|
9134
9153
|
}
|
|
9135
9154
|
),
|
|
9136
|
-
tokenSale: () => config["coinlist::token_sale"].render(
|
|
9155
|
+
tokenSale: (tokenSaleOffer) => config["coinlist::token_sale"].render(tokenSaleOffer)
|
|
9137
9156
|
});
|
|
9138
9157
|
}
|
|
9139
9158
|
function OndoCheckoutContainer({
|
|
@@ -9173,16 +9192,16 @@ function OndoCheckoutContainer({
|
|
|
9173
9192
|
)
|
|
9174
9193
|
});
|
|
9175
9194
|
}
|
|
9176
|
-
function renderOffer(
|
|
9177
|
-
switch (type) {
|
|
9195
|
+
function renderOffer(offer, branches) {
|
|
9196
|
+
switch (offer.type) {
|
|
9178
9197
|
case "ondo::swap":
|
|
9179
|
-
return branches.ondo();
|
|
9198
|
+
return branches.ondo(offer);
|
|
9180
9199
|
case "superstate::swap":
|
|
9181
|
-
return branches.superstate();
|
|
9200
|
+
return branches.superstate(offer);
|
|
9182
9201
|
case "coinlist::token_sale":
|
|
9183
|
-
return branches.tokenSale();
|
|
9202
|
+
return branches.tokenSale(offer);
|
|
9184
9203
|
default: {
|
|
9185
|
-
const exhaustive =
|
|
9204
|
+
const exhaustive = offer;
|
|
9186
9205
|
return exhaustive;
|
|
9187
9206
|
}
|
|
9188
9207
|
}
|
|
@@ -9200,6 +9219,58 @@ function renderOndoSide(side, branches) {
|
|
|
9200
9219
|
}
|
|
9201
9220
|
}
|
|
9202
9221
|
|
|
9222
|
+
// src/client/components/design-system/ThemedImage.tsx
|
|
9223
|
+
import { Fragment as Fragment9, jsx as jsx51, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
9224
|
+
function ThemedImage({
|
|
9225
|
+
light,
|
|
9226
|
+
dark,
|
|
9227
|
+
sizes,
|
|
9228
|
+
alt,
|
|
9229
|
+
width,
|
|
9230
|
+
height,
|
|
9231
|
+
className,
|
|
9232
|
+
style
|
|
9233
|
+
}) {
|
|
9234
|
+
const shared = { width, height, style };
|
|
9235
|
+
if (!dark) {
|
|
9236
|
+
return /* @__PURE__ */ jsx51(
|
|
9237
|
+
"img",
|
|
9238
|
+
{
|
|
9239
|
+
src: light.src,
|
|
9240
|
+
srcSet: light.srcSet,
|
|
9241
|
+
sizes: light.srcSet ? sizes : void 0,
|
|
9242
|
+
className,
|
|
9243
|
+
alt,
|
|
9244
|
+
...shared
|
|
9245
|
+
}
|
|
9246
|
+
);
|
|
9247
|
+
}
|
|
9248
|
+
return /* @__PURE__ */ jsxs37(Fragment9, { children: [
|
|
9249
|
+
/* @__PURE__ */ jsx51(
|
|
9250
|
+
"img",
|
|
9251
|
+
{
|
|
9252
|
+
src: light.src,
|
|
9253
|
+
srcSet: light.srcSet,
|
|
9254
|
+
sizes: light.srcSet ? sizes : void 0,
|
|
9255
|
+
className: cn("clcosdk-on-light", className),
|
|
9256
|
+
alt,
|
|
9257
|
+
...shared
|
|
9258
|
+
}
|
|
9259
|
+
),
|
|
9260
|
+
/* @__PURE__ */ jsx51(
|
|
9261
|
+
"img",
|
|
9262
|
+
{
|
|
9263
|
+
src: dark.src,
|
|
9264
|
+
srcSet: dark.srcSet,
|
|
9265
|
+
sizes: dark.srcSet ? sizes : void 0,
|
|
9266
|
+
className: cn("clcosdk-on-dark", className),
|
|
9267
|
+
alt,
|
|
9268
|
+
...shared
|
|
9269
|
+
}
|
|
9270
|
+
)
|
|
9271
|
+
] });
|
|
9272
|
+
}
|
|
9273
|
+
|
|
9203
9274
|
// src/client/components/offers/shared/offer-card-keyboard.ts
|
|
9204
9275
|
function onOfferCardKeyDown(event, onClick) {
|
|
9205
9276
|
if (event.key !== "Enter" && event.key !== " ") return;
|
|
@@ -9208,7 +9279,8 @@ function onOfferCardKeyDown(event, onClick) {
|
|
|
9208
9279
|
}
|
|
9209
9280
|
|
|
9210
9281
|
// src/client/components/offers/shared/OfferAssetCard.tsx
|
|
9211
|
-
import { jsx as
|
|
9282
|
+
import { jsx as jsx52, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
9283
|
+
var LOGO_SIZES = "(min-width: 768px) 48px, 40px";
|
|
9212
9284
|
function OfferAssetCard({
|
|
9213
9285
|
offer,
|
|
9214
9286
|
onClick,
|
|
@@ -9216,7 +9288,7 @@ function OfferAssetCard({
|
|
|
9216
9288
|
containerClassName
|
|
9217
9289
|
}) {
|
|
9218
9290
|
const interactive = onClick !== void 0;
|
|
9219
|
-
const card = /* @__PURE__ */
|
|
9291
|
+
const card = /* @__PURE__ */ jsx52(
|
|
9220
9292
|
"article",
|
|
9221
9293
|
{
|
|
9222
9294
|
className: cn(
|
|
@@ -9230,11 +9302,13 @@ function OfferAssetCard({
|
|
|
9230
9302
|
tabIndex: interactive ? 0 : void 0,
|
|
9231
9303
|
onClick,
|
|
9232
9304
|
onKeyDown: interactive ? (event) => onOfferCardKeyDown(event, onClick) : void 0,
|
|
9233
|
-
children: /* @__PURE__ */
|
|
9234
|
-
offer.
|
|
9235
|
-
|
|
9305
|
+
children: /* @__PURE__ */ jsxs38("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: [
|
|
9306
|
+
offer.logo ? /* @__PURE__ */ jsx52("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__ */ jsx52(
|
|
9307
|
+
ThemedImage,
|
|
9236
9308
|
{
|
|
9237
|
-
|
|
9309
|
+
light: offer.logo.light,
|
|
9310
|
+
dark: offer.logo.dark ?? void 0,
|
|
9311
|
+
sizes: LOGO_SIZES,
|
|
9238
9312
|
alt: "",
|
|
9239
9313
|
width: 48,
|
|
9240
9314
|
height: 48,
|
|
@@ -9242,8 +9316,8 @@ function OfferAssetCard({
|
|
|
9242
9316
|
style: { maxWidth: "none", width: "100%", height: "100%" }
|
|
9243
9317
|
}
|
|
9244
9318
|
) }) : null,
|
|
9245
|
-
/* @__PURE__ */
|
|
9246
|
-
offer.name ? /* @__PURE__ */
|
|
9319
|
+
/* @__PURE__ */ jsxs38("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:flex-1 clcosdk:flex-col clcosdk:items-start clcosdk:justify-center", children: [
|
|
9320
|
+
offer.name ? /* @__PURE__ */ jsx52(
|
|
9247
9321
|
"h2",
|
|
9248
9322
|
{
|
|
9249
9323
|
className: cn(
|
|
@@ -9252,13 +9326,13 @@ function OfferAssetCard({
|
|
|
9252
9326
|
children: offer.name
|
|
9253
9327
|
}
|
|
9254
9328
|
) : null,
|
|
9255
|
-
offer.symbol ? /* @__PURE__ */
|
|
9329
|
+
offer.symbol ? /* @__PURE__ */ jsx52("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
|
|
9256
9330
|
] })
|
|
9257
9331
|
] })
|
|
9258
9332
|
}
|
|
9259
9333
|
);
|
|
9260
|
-
const wrapped = containerClassName ? /* @__PURE__ */
|
|
9261
|
-
return /* @__PURE__ */
|
|
9334
|
+
const wrapped = containerClassName ? /* @__PURE__ */ jsx52("div", { className: containerClassName, children: card }) : card;
|
|
9335
|
+
return /* @__PURE__ */ jsx52(CoinListStyleScope, { children: wrapped });
|
|
9262
9336
|
}
|
|
9263
9337
|
function cardActionLabel(offer) {
|
|
9264
9338
|
const parts = [offer.name, offer.symbol].filter(Boolean);
|
|
@@ -9266,7 +9340,7 @@ function cardActionLabel(offer) {
|
|
|
9266
9340
|
}
|
|
9267
9341
|
|
|
9268
9342
|
// src/client/components/offers/grid/OffersAssetGrid.tsx
|
|
9269
|
-
import { jsx as
|
|
9343
|
+
import { jsx as jsx53 } from "react/jsx-runtime";
|
|
9270
9344
|
var DEFAULT_MAX_COLUMNS = 3;
|
|
9271
9345
|
function OffersAssetGrid({
|
|
9272
9346
|
offers,
|
|
@@ -9281,14 +9355,14 @@ function OffersAssetGrid({
|
|
|
9281
9355
|
);
|
|
9282
9356
|
const maxGridWidth = `calc(${cols} * 20rem + ${Math.max(cols - 1, 0)} * 1.5rem)`;
|
|
9283
9357
|
const interactive = onOfferClick !== void 0;
|
|
9284
|
-
return /* @__PURE__ */
|
|
9358
|
+
return /* @__PURE__ */ jsx53(CoinListStyleScope, { children: /* @__PURE__ */ jsx53(
|
|
9285
9359
|
"div",
|
|
9286
9360
|
{
|
|
9287
9361
|
className: cn(
|
|
9288
9362
|
"clcosdk:flex clcosdk:w-full clcosdk:justify-center",
|
|
9289
9363
|
containerClassName
|
|
9290
9364
|
),
|
|
9291
|
-
children: /* @__PURE__ */
|
|
9365
|
+
children: /* @__PURE__ */ jsx53(
|
|
9292
9366
|
"div",
|
|
9293
9367
|
{
|
|
9294
9368
|
className: cn(
|
|
@@ -9298,7 +9372,7 @@ function OffersAssetGrid({
|
|
|
9298
9372
|
className
|
|
9299
9373
|
),
|
|
9300
9374
|
style: { maxWidth: maxGridWidth },
|
|
9301
|
-
children: offers.map((offer) => /* @__PURE__ */
|
|
9375
|
+
children: offers.map((offer) => /* @__PURE__ */ jsx53(
|
|
9302
9376
|
OfferAssetCard,
|
|
9303
9377
|
{
|
|
9304
9378
|
offer,
|
|
@@ -9340,7 +9414,9 @@ function saleCardStatus({
|
|
|
9340
9414
|
}
|
|
9341
9415
|
|
|
9342
9416
|
// src/client/components/offers/shared/OfferSaleCard.tsx
|
|
9343
|
-
import { jsx as
|
|
9417
|
+
import { jsx as jsx54, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
9418
|
+
var HEADER_LOGO_SIZES = "(min-width: 768px) 36px, 32px";
|
|
9419
|
+
var WATERMARK_SIZES = "(min-width: 768px) 20rem, 15rem";
|
|
9344
9420
|
function OfferSaleCard({
|
|
9345
9421
|
offer,
|
|
9346
9422
|
onClick,
|
|
@@ -9355,7 +9431,8 @@ function OfferSaleCard({
|
|
|
9355
9431
|
secondsLeft
|
|
9356
9432
|
});
|
|
9357
9433
|
const interactive = onClick !== void 0;
|
|
9358
|
-
const
|
|
9434
|
+
const logo = offer.logo ? offer.logo.dark ?? offer.logo.light : null;
|
|
9435
|
+
const card = /* @__PURE__ */ jsxs39(
|
|
9359
9436
|
"article",
|
|
9360
9437
|
{
|
|
9361
9438
|
className: cn(
|
|
@@ -9370,16 +9447,17 @@ function OfferSaleCard({
|
|
|
9370
9447
|
onClick,
|
|
9371
9448
|
onKeyDown: interactive ? (event) => onOfferCardKeyDown(event, onClick) : void 0,
|
|
9372
9449
|
children: [
|
|
9373
|
-
|
|
9450
|
+
logo ? /* @__PURE__ */ jsx54(
|
|
9374
9451
|
"div",
|
|
9375
9452
|
{
|
|
9376
9453
|
"aria-hidden": "true",
|
|
9377
9454
|
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]",
|
|
9378
9455
|
style: { mixBlendMode: "overlay" },
|
|
9379
|
-
children: /* @__PURE__ */
|
|
9380
|
-
|
|
9456
|
+
children: /* @__PURE__ */ jsx54(
|
|
9457
|
+
ThemedImage,
|
|
9381
9458
|
{
|
|
9382
|
-
|
|
9459
|
+
light: logo,
|
|
9460
|
+
sizes: WATERMARK_SIZES,
|
|
9383
9461
|
alt: "",
|
|
9384
9462
|
className: "clcosdk:size-full clcosdk:rounded-full clcosdk:object-cover",
|
|
9385
9463
|
style: { maxWidth: "none", width: "100%", height: "100%" }
|
|
@@ -9387,12 +9465,13 @@ function OfferSaleCard({
|
|
|
9387
9465
|
)
|
|
9388
9466
|
}
|
|
9389
9467
|
) : null,
|
|
9390
|
-
/* @__PURE__ */
|
|
9391
|
-
/* @__PURE__ */
|
|
9392
|
-
|
|
9393
|
-
|
|
9468
|
+
/* @__PURE__ */ jsxs39("div", { className: "clcosdk:relative clcosdk:z-10 clcosdk:flex clcosdk:flex-col clcosdk:gap-2 clcosdk:md:gap-3", children: [
|
|
9469
|
+
/* @__PURE__ */ jsxs39("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:items-center clcosdk:gap-2.5 clcosdk:md:gap-3", children: [
|
|
9470
|
+
logo ? /* @__PURE__ */ jsx54("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__ */ jsx54(
|
|
9471
|
+
ThemedImage,
|
|
9394
9472
|
{
|
|
9395
|
-
|
|
9473
|
+
light: logo,
|
|
9474
|
+
sizes: HEADER_LOGO_SIZES,
|
|
9396
9475
|
alt: "",
|
|
9397
9476
|
width: 36,
|
|
9398
9477
|
height: 36,
|
|
@@ -9400,7 +9479,7 @@ function OfferSaleCard({
|
|
|
9400
9479
|
style: { maxWidth: "none", width: "100%", height: "100%" }
|
|
9401
9480
|
}
|
|
9402
9481
|
) }) : null,
|
|
9403
|
-
offer.name ? /* @__PURE__ */
|
|
9482
|
+
offer.name ? /* @__PURE__ */ jsx54(
|
|
9404
9483
|
"h2",
|
|
9405
9484
|
{
|
|
9406
9485
|
className: cn(
|
|
@@ -9410,7 +9489,7 @@ function OfferSaleCard({
|
|
|
9410
9489
|
}
|
|
9411
9490
|
) : null
|
|
9412
9491
|
] }),
|
|
9413
|
-
offer.tagline ? /* @__PURE__ */
|
|
9492
|
+
offer.tagline ? /* @__PURE__ */ jsx54(
|
|
9414
9493
|
"p",
|
|
9415
9494
|
{
|
|
9416
9495
|
className: cn(
|
|
@@ -9421,20 +9500,20 @@ function OfferSaleCard({
|
|
|
9421
9500
|
}
|
|
9422
9501
|
) : null
|
|
9423
9502
|
] }),
|
|
9424
|
-
/* @__PURE__ */
|
|
9425
|
-
/* @__PURE__ */
|
|
9426
|
-
status.phase === "live" ? /* @__PURE__ */
|
|
9503
|
+
/* @__PURE__ */ jsxs39("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: [
|
|
9504
|
+
/* @__PURE__ */ jsxs39("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:items-center clcosdk:gap-2 clcosdk:md:gap-3", children: [
|
|
9505
|
+
status.phase === "live" ? /* @__PURE__ */ jsxs39(
|
|
9427
9506
|
"span",
|
|
9428
9507
|
{
|
|
9429
9508
|
className: "clcosdk:relative clcosdk:inline-flex clcosdk:size-2 clcosdk:shrink-0",
|
|
9430
9509
|
"aria-hidden": "true",
|
|
9431
9510
|
children: [
|
|
9432
|
-
/* @__PURE__ */
|
|
9433
|
-
/* @__PURE__ */
|
|
9511
|
+
/* @__PURE__ */ jsx54("span", { className: "clcosdk-status-dot-ping clcosdk:absolute clcosdk:inset-0 clcosdk:rounded-full clcosdk:bg-positive" }),
|
|
9512
|
+
/* @__PURE__ */ jsx54("span", { className: "clcosdk:relative clcosdk:inline-flex clcosdk:size-full clcosdk:rounded-full clcosdk:bg-positive" })
|
|
9434
9513
|
]
|
|
9435
9514
|
}
|
|
9436
9515
|
) : null,
|
|
9437
|
-
/* @__PURE__ */
|
|
9516
|
+
/* @__PURE__ */ jsx54(
|
|
9438
9517
|
"p",
|
|
9439
9518
|
{
|
|
9440
9519
|
className: cn(
|
|
@@ -9445,7 +9524,7 @@ function OfferSaleCard({
|
|
|
9445
9524
|
}
|
|
9446
9525
|
)
|
|
9447
9526
|
] }),
|
|
9448
|
-
/* @__PURE__ */
|
|
9527
|
+
/* @__PURE__ */ jsxs39(
|
|
9449
9528
|
"span",
|
|
9450
9529
|
{
|
|
9451
9530
|
className: cn(
|
|
@@ -9455,8 +9534,8 @@ function OfferSaleCard({
|
|
|
9455
9534
|
"aria-hidden": "true",
|
|
9456
9535
|
children: [
|
|
9457
9536
|
"View",
|
|
9458
|
-
/* @__PURE__ */
|
|
9459
|
-
/* @__PURE__ */
|
|
9537
|
+
/* @__PURE__ */ jsx54("span", { className: "clcosdk:max-md:hidden", children: " offer" }),
|
|
9538
|
+
/* @__PURE__ */ jsx54(ArrowRight, { className: "clcosdk:size-4", "aria-hidden": true })
|
|
9460
9539
|
]
|
|
9461
9540
|
}
|
|
9462
9541
|
)
|
|
@@ -9464,8 +9543,8 @@ function OfferSaleCard({
|
|
|
9464
9543
|
]
|
|
9465
9544
|
}
|
|
9466
9545
|
);
|
|
9467
|
-
const wrapped = containerClassName ? /* @__PURE__ */
|
|
9468
|
-
return /* @__PURE__ */
|
|
9546
|
+
const wrapped = containerClassName ? /* @__PURE__ */ jsx54("div", { className: containerClassName, children: card }) : card;
|
|
9547
|
+
return /* @__PURE__ */ jsx54(CoinListStyleScope, { children: wrapped });
|
|
9469
9548
|
}
|
|
9470
9549
|
var SALE_PHASE_LABEL = {
|
|
9471
9550
|
upcoming: "Upcoming",
|
|
@@ -9478,10 +9557,10 @@ function cardActionLabel2(offer, phase) {
|
|
|
9478
9557
|
}
|
|
9479
9558
|
|
|
9480
9559
|
// src/client/components/offers/grid/OffersGridView.tsx
|
|
9481
|
-
import { jsx as
|
|
9560
|
+
import { jsx as jsx55, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
9482
9561
|
var DEFAULT_MAX_COLUMNS2 = 2;
|
|
9483
9562
|
function OffersGridView(props) {
|
|
9484
|
-
return /* @__PURE__ */
|
|
9563
|
+
return /* @__PURE__ */ jsx55(CoinListStyleScope, { children: /* @__PURE__ */ jsx55(OffersGridViewBody, { ...props }) });
|
|
9485
9564
|
}
|
|
9486
9565
|
function OffersGridViewBody({
|
|
9487
9566
|
state,
|
|
@@ -9495,13 +9574,13 @@ function OffersGridViewBody({
|
|
|
9495
9574
|
}) {
|
|
9496
9575
|
switch (state.type) {
|
|
9497
9576
|
case "loading":
|
|
9498
|
-
return loading ?? /* @__PURE__ */
|
|
9577
|
+
return loading ?? /* @__PURE__ */ jsx55(LoadingState, {});
|
|
9499
9578
|
case "error":
|
|
9500
|
-
return error ?? /* @__PURE__ */
|
|
9579
|
+
return error ?? /* @__PURE__ */ jsx55(ErrorState, { message: state.message });
|
|
9501
9580
|
case "empty":
|
|
9502
|
-
return emptyState ?? /* @__PURE__ */
|
|
9581
|
+
return emptyState ?? /* @__PURE__ */ jsx55(EmptyState, {});
|
|
9503
9582
|
case "content":
|
|
9504
|
-
return /* @__PURE__ */
|
|
9583
|
+
return /* @__PURE__ */ jsx55(
|
|
9505
9584
|
OffersGridContent,
|
|
9506
9585
|
{
|
|
9507
9586
|
offers: state.offers,
|
|
@@ -9531,14 +9610,14 @@ function OffersGridContent({
|
|
|
9531
9610
|
Math.max(1, maxColumns ?? DEFAULT_MAX_COLUMNS2)
|
|
9532
9611
|
);
|
|
9533
9612
|
const maxGridWidth = `calc(${cols} * 28rem + ${Math.max(cols - 1, 0)} * 1.5rem)`;
|
|
9534
|
-
return /* @__PURE__ */
|
|
9613
|
+
return /* @__PURE__ */ jsx55(
|
|
9535
9614
|
"div",
|
|
9536
9615
|
{
|
|
9537
9616
|
className: cn(
|
|
9538
9617
|
"clcosdk:flex clcosdk:w-full clcosdk:justify-center",
|
|
9539
9618
|
containerClassName
|
|
9540
9619
|
),
|
|
9541
|
-
children: /* @__PURE__ */
|
|
9620
|
+
children: /* @__PURE__ */ jsx55(
|
|
9542
9621
|
"div",
|
|
9543
9622
|
{
|
|
9544
9623
|
className: cn(
|
|
@@ -9547,7 +9626,7 @@ function OffersGridContent({
|
|
|
9547
9626
|
className
|
|
9548
9627
|
),
|
|
9549
9628
|
style: { maxWidth: maxGridWidth },
|
|
9550
|
-
children: offers.map((offer) => /* @__PURE__ */
|
|
9629
|
+
children: offers.map((offer) => /* @__PURE__ */ jsx55(
|
|
9551
9630
|
OfferSaleCard,
|
|
9552
9631
|
{
|
|
9553
9632
|
offer,
|
|
@@ -9561,17 +9640,17 @@ function OffersGridContent({
|
|
|
9561
9640
|
);
|
|
9562
9641
|
}
|
|
9563
9642
|
function LoadingState() {
|
|
9564
|
-
return /* @__PURE__ */
|
|
9643
|
+
return /* @__PURE__ */ jsx55(
|
|
9565
9644
|
"output",
|
|
9566
9645
|
{
|
|
9567
9646
|
"aria-live": "polite",
|
|
9568
9647
|
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",
|
|
9569
|
-
children: /* @__PURE__ */
|
|
9648
|
+
children: /* @__PURE__ */ jsx55("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading offers..." })
|
|
9570
9649
|
}
|
|
9571
9650
|
);
|
|
9572
9651
|
}
|
|
9573
9652
|
function ErrorState({ message }) {
|
|
9574
|
-
return /* @__PURE__ */
|
|
9653
|
+
return /* @__PURE__ */ jsx55(
|
|
9575
9654
|
AlertBanner,
|
|
9576
9655
|
{
|
|
9577
9656
|
variant: "error",
|
|
@@ -9582,13 +9661,13 @@ function ErrorState({ message }) {
|
|
|
9582
9661
|
);
|
|
9583
9662
|
}
|
|
9584
9663
|
function EmptyState() {
|
|
9585
|
-
return /* @__PURE__ */
|
|
9664
|
+
return /* @__PURE__ */ jsxs40(
|
|
9586
9665
|
"output",
|
|
9587
9666
|
{
|
|
9588
9667
|
"aria-live": "polite",
|
|
9589
9668
|
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",
|
|
9590
9669
|
children: [
|
|
9591
|
-
/* @__PURE__ */
|
|
9670
|
+
/* @__PURE__ */ jsx55(
|
|
9592
9671
|
"p",
|
|
9593
9672
|
{
|
|
9594
9673
|
className: cn(
|
|
@@ -9598,14 +9677,14 @@ function EmptyState() {
|
|
|
9598
9677
|
children: "No offers available"
|
|
9599
9678
|
}
|
|
9600
9679
|
),
|
|
9601
|
-
/* @__PURE__ */
|
|
9680
|
+
/* @__PURE__ */ jsx55("p", { className: cn(typeClasses.subhead, "clcosdk:text-text-secondary"), children: "Check back soon for upcoming opportunities." })
|
|
9602
9681
|
]
|
|
9603
9682
|
}
|
|
9604
9683
|
);
|
|
9605
9684
|
}
|
|
9606
9685
|
|
|
9607
9686
|
// src/client/hooks/offers/grid/useOffersGridViewModel.ts
|
|
9608
|
-
import { useCallback as
|
|
9687
|
+
import { useCallback as useCallback7, useMemo as useMemo6 } from "react";
|
|
9609
9688
|
|
|
9610
9689
|
// src/client/hooks/offers/data/useOffers.ts
|
|
9611
9690
|
import { useEffect as useEffect20, useState as useState24 } from "react";
|
|
@@ -9663,36 +9742,147 @@ function useOffers(options = {}) {
|
|
|
9663
9742
|
return { offersState };
|
|
9664
9743
|
}
|
|
9665
9744
|
|
|
9745
|
+
// src/client/hooks/offers/shared/offer-logo.types.ts
|
|
9746
|
+
var CARD_LOGO_WIDTH = 96;
|
|
9747
|
+
var OfferLogoUi = {
|
|
9748
|
+
/**
|
|
9749
|
+
* The registry's logo for the token an offer is about, or the offer's own
|
|
9750
|
+
* artwork otherwise, or `null` when neither exists.
|
|
9751
|
+
*
|
|
9752
|
+
* The registry wins when both exist because it is the token's real artwork
|
|
9753
|
+
* where `Offer.logoUrl` is catalogue artwork, and because a swap publishes
|
|
9754
|
+
* without artwork more often than not - which is why `logoUrl` is `null`
|
|
9755
|
+
* on the swap variants.
|
|
9756
|
+
*/
|
|
9757
|
+
fromOffer: (offer, tokenMetadata) => {
|
|
9758
|
+
const light = tokenMetadata ? logoImage(tokenMetadata.logo) : null;
|
|
9759
|
+
if (light !== null) {
|
|
9760
|
+
const dark = tokenMetadata?.logoDark ? logoImage(tokenMetadata.logoDark) : null;
|
|
9761
|
+
return { light, dark };
|
|
9762
|
+
}
|
|
9763
|
+
return offer.logoUrl ? { light: { src: offer.logoUrl }, dark: null } : null;
|
|
9764
|
+
}
|
|
9765
|
+
};
|
|
9766
|
+
function logoImage(logo) {
|
|
9767
|
+
const src = tokenLogoUrl(logo, CARD_LOGO_WIDTH);
|
|
9768
|
+
if (src === null) {
|
|
9769
|
+
return null;
|
|
9770
|
+
}
|
|
9771
|
+
const srcSet = tokenLogoSrcSet(logo);
|
|
9772
|
+
return srcSet === null ? { src } : { src, srcSet };
|
|
9773
|
+
}
|
|
9774
|
+
|
|
9666
9775
|
// src/client/hooks/offers/shared/offer-sale-card.types.ts
|
|
9667
9776
|
var OfferSaleCardUi = {
|
|
9668
|
-
|
|
9777
|
+
/**
|
|
9778
|
+
* `tokenMetadata` is the registry's entry for the token the offer is about
|
|
9779
|
+
* (`TokenRegistrySnapshot.forOffer`), or `null` when it lists none. The
|
|
9780
|
+
* registry names win over the offer's own where both exist: they are the
|
|
9781
|
+
* token's canonical name and artwork, where the offer's are catalogue copy.
|
|
9782
|
+
*/
|
|
9783
|
+
fromOffer: (offer, tokenMetadata = null) => ({
|
|
9669
9784
|
id: offer.id,
|
|
9670
|
-
|
|
9671
|
-
|
|
9672
|
-
|
|
9785
|
+
...tokenMetadata ? { name: tokenMetadata.name } : {},
|
|
9786
|
+
...saleWindow(offer),
|
|
9787
|
+
logo: OfferLogoUi.fromOffer(offer, tokenMetadata),
|
|
9673
9788
|
endsAt: offer.endsAt
|
|
9674
9789
|
}),
|
|
9675
|
-
fromDetail: (detail) => ({
|
|
9790
|
+
fromDetail: (detail, tokenMetadata = null) => ({
|
|
9676
9791
|
id: detail.id,
|
|
9677
|
-
name: detail.name,
|
|
9678
|
-
|
|
9679
|
-
|
|
9680
|
-
startsAt: detail.startsAt,
|
|
9792
|
+
name: tokenMetadata?.name ?? detail.name,
|
|
9793
|
+
...saleWindow(detail),
|
|
9794
|
+
logo: OfferLogoUi.fromOffer(detail, tokenMetadata),
|
|
9681
9795
|
endsAt: detail.endsAt
|
|
9682
9796
|
})
|
|
9683
9797
|
};
|
|
9798
|
+
function saleWindow(offer) {
|
|
9799
|
+
switch (offer.type) {
|
|
9800
|
+
case "coinlist::token_sale":
|
|
9801
|
+
case "superstate::swap":
|
|
9802
|
+
return { tagline: offer.tagline, startsAt: offer.startsAt };
|
|
9803
|
+
case "ondo::swap":
|
|
9804
|
+
return { tagline: null, startsAt: null };
|
|
9805
|
+
default: {
|
|
9806
|
+
const exhaustive = offer;
|
|
9807
|
+
return exhaustive;
|
|
9808
|
+
}
|
|
9809
|
+
}
|
|
9810
|
+
}
|
|
9811
|
+
|
|
9812
|
+
// src/client/hooks/shared/useTokenRegistry.ts
|
|
9813
|
+
import { useCallback as useCallback6, useEffect as useEffect21, useState as useState25 } from "react";
|
|
9814
|
+
var DISABLED_STATE2 = { type: "DISABLED" };
|
|
9815
|
+
var LOADING_STATE4 = { type: "LOADING" };
|
|
9816
|
+
function useTokenRegistry(options = {}) {
|
|
9817
|
+
const { data, enabled = true } = options;
|
|
9818
|
+
const { coinlist, isReady } = useCoinList();
|
|
9819
|
+
const log = useLogger("useTokenRegistry");
|
|
9820
|
+
const [state, setState] = useState25(
|
|
9821
|
+
() => data !== void 0 ? { type: "CONTENT", registry: TokenRegistrySnapshot.fromTokens(data) } : LOADING_STATE4
|
|
9822
|
+
);
|
|
9823
|
+
const [refetchCount, setRefetchCount] = useState25(0);
|
|
9824
|
+
const refetch = useCallback6(() => {
|
|
9825
|
+
setRefetchCount((count) => count + 1);
|
|
9826
|
+
}, []);
|
|
9827
|
+
useEffect21(() => {
|
|
9828
|
+
let isCancelled = false;
|
|
9829
|
+
const seedActive = data !== void 0 && refetchCount === 0;
|
|
9830
|
+
if (!isReady || !enabled || seedActive) {
|
|
9831
|
+
return () => {
|
|
9832
|
+
isCancelled = true;
|
|
9833
|
+
};
|
|
9834
|
+
}
|
|
9835
|
+
setState(LOADING_STATE4);
|
|
9836
|
+
coinlist.tokens.list().then((tokens) => {
|
|
9837
|
+
if (!isCancelled) {
|
|
9838
|
+
log.debug(() => ({
|
|
9839
|
+
msg: "settled",
|
|
9840
|
+
fields: { state: "CONTENT", count: tokens.length }
|
|
9841
|
+
}));
|
|
9842
|
+
setState({
|
|
9843
|
+
type: "CONTENT",
|
|
9844
|
+
registry: TokenRegistrySnapshot.fromTokens(tokens)
|
|
9845
|
+
});
|
|
9846
|
+
}
|
|
9847
|
+
}).catch((error) => {
|
|
9848
|
+
if (!isCancelled) {
|
|
9849
|
+
log.failure(
|
|
9850
|
+
() => ({
|
|
9851
|
+
msg: "settled",
|
|
9852
|
+
fields: { state: "ERROR", reason: "generic-error" }
|
|
9853
|
+
}),
|
|
9854
|
+
error
|
|
9855
|
+
);
|
|
9856
|
+
setState({ type: "ERROR", reason: "generic-error" });
|
|
9857
|
+
}
|
|
9858
|
+
});
|
|
9859
|
+
return () => {
|
|
9860
|
+
isCancelled = true;
|
|
9861
|
+
};
|
|
9862
|
+
}, [coinlist, isReady, enabled, data, refetchCount, log]);
|
|
9863
|
+
return {
|
|
9864
|
+
// LOADING would be a lie while disabled: nothing is in flight and nothing
|
|
9865
|
+
// will replace it. Settled states (a seed, a previous answer) survive.
|
|
9866
|
+
state: !enabled && state.type === "LOADING" ? DISABLED_STATE2 : state,
|
|
9867
|
+
refetch
|
|
9868
|
+
};
|
|
9869
|
+
}
|
|
9684
9870
|
|
|
9685
9871
|
// src/client/hooks/offers/grid/useOffersGridViewModel.ts
|
|
9686
9872
|
var NOT_AUTHENTICATED_MESSAGE = "Sign in to view available offers.";
|
|
9687
9873
|
var GENERIC_ERROR_MESSAGE = "Unable to load offers right now. Please try again.";
|
|
9688
9874
|
function useOffersGridViewModel(options = {}) {
|
|
9689
9875
|
const { data, onOfferClick, enabled = true } = options;
|
|
9690
|
-
const { offersState } = useOffers({ data, enabled });
|
|
9691
|
-
const state =
|
|
9692
|
-
|
|
9693
|
-
|
|
9876
|
+
const { offersState } = useOffers({ data: data?.offers, enabled });
|
|
9877
|
+
const { state: registryState } = useTokenRegistry({
|
|
9878
|
+
data: data?.tokens,
|
|
9879
|
+
enabled
|
|
9880
|
+
});
|
|
9881
|
+
const state = useMemo6(
|
|
9882
|
+
() => toUiState(offersState, registryState, onOfferClick !== void 0),
|
|
9883
|
+
[offersState, registryState, onOfferClick]
|
|
9694
9884
|
);
|
|
9695
|
-
const onEvent =
|
|
9885
|
+
const onEvent = useCallback7(
|
|
9696
9886
|
(event) => {
|
|
9697
9887
|
switch (event.type) {
|
|
9698
9888
|
case "ON_OFFER_CLICK": {
|
|
@@ -9715,7 +9905,7 @@ function useOffersGridViewModel(options = {}) {
|
|
|
9715
9905
|
);
|
|
9716
9906
|
return { state, onEvent };
|
|
9717
9907
|
}
|
|
9718
|
-
function toUiState(offersState, interactive) {
|
|
9908
|
+
function toUiState(offersState, registryState, interactive) {
|
|
9719
9909
|
switch (offersState.type) {
|
|
9720
9910
|
case "LOADING":
|
|
9721
9911
|
return { type: "loading" };
|
|
@@ -9728,9 +9918,18 @@ function toUiState(offersState, interactive) {
|
|
|
9728
9918
|
if (offersState.offers.length === 0) {
|
|
9729
9919
|
return { type: "empty" };
|
|
9730
9920
|
}
|
|
9921
|
+
if (registryState.type === "LOADING") {
|
|
9922
|
+
return { type: "loading" };
|
|
9923
|
+
}
|
|
9924
|
+
const registry = registryState.type === "CONTENT" ? registryState.registry : null;
|
|
9731
9925
|
return {
|
|
9732
9926
|
type: "content",
|
|
9733
|
-
offers: offersState.offers.map(
|
|
9927
|
+
offers: offersState.offers.map(
|
|
9928
|
+
(offer) => OfferSaleCardUi.fromOffer(
|
|
9929
|
+
offer,
|
|
9930
|
+
registry ? TokenRegistrySnapshot.forOffer(registry, offer) : null
|
|
9931
|
+
)
|
|
9932
|
+
),
|
|
9734
9933
|
interactive
|
|
9735
9934
|
};
|
|
9736
9935
|
}
|
|
@@ -9742,7 +9941,7 @@ function toUiState(offersState, interactive) {
|
|
|
9742
9941
|
}
|
|
9743
9942
|
|
|
9744
9943
|
// src/client/components/offers/grid/OffersGridContainer.tsx
|
|
9745
|
-
import { jsx as
|
|
9944
|
+
import { jsx as jsx56 } from "react/jsx-runtime";
|
|
9746
9945
|
function OffersGridContainer({
|
|
9747
9946
|
data,
|
|
9748
9947
|
onOfferClick,
|
|
@@ -9754,17 +9953,17 @@ function OffersGridContainer({
|
|
|
9754
9953
|
onOfferClick,
|
|
9755
9954
|
enabled
|
|
9756
9955
|
});
|
|
9757
|
-
return /* @__PURE__ */
|
|
9956
|
+
return /* @__PURE__ */ jsx56(OffersGridView, { state, onEvent, ...viewProps });
|
|
9758
9957
|
}
|
|
9759
9958
|
|
|
9760
9959
|
// src/client/components/requirements/ConnectedWalletList.tsx
|
|
9761
|
-
import { useState as
|
|
9762
|
-
import { jsx as
|
|
9960
|
+
import { useState as useState26 } from "react";
|
|
9961
|
+
import { jsx as jsx57, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
9763
9962
|
function ConnectedWalletRow({
|
|
9764
9963
|
wallet,
|
|
9765
9964
|
onRemove
|
|
9766
9965
|
}) {
|
|
9767
|
-
const [state, setState] =
|
|
9966
|
+
const [state, setState] = useState26("idle");
|
|
9768
9967
|
const remove = async () => {
|
|
9769
9968
|
if (!onRemove) return;
|
|
9770
9969
|
setState("removing");
|
|
@@ -9775,8 +9974,8 @@ function ConnectedWalletRow({
|
|
|
9775
9974
|
setState("error");
|
|
9776
9975
|
}
|
|
9777
9976
|
};
|
|
9778
|
-
return /* @__PURE__ */
|
|
9779
|
-
/* @__PURE__ */
|
|
9977
|
+
return /* @__PURE__ */ jsxs41("div", { className: "clcosdk:flex clcosdk:min-h-9 clcosdk:flex-wrap clcosdk:items-center clcosdk:justify-between clcosdk:gap-2", children: [
|
|
9978
|
+
/* @__PURE__ */ jsx57(
|
|
9780
9979
|
"span",
|
|
9781
9980
|
{
|
|
9782
9981
|
title: wallet.address,
|
|
@@ -9787,16 +9986,16 @@ function ConnectedWalletRow({
|
|
|
9787
9986
|
children: wallet.shortAddress
|
|
9788
9987
|
}
|
|
9789
9988
|
),
|
|
9790
|
-
onRemove != null && (state === "confirming" ? /* @__PURE__ */
|
|
9791
|
-
/* @__PURE__ */
|
|
9989
|
+
onRemove != null && (state === "confirming" ? /* @__PURE__ */ jsxs41("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-2", children: [
|
|
9990
|
+
/* @__PURE__ */ jsx57(
|
|
9792
9991
|
"span",
|
|
9793
9992
|
{
|
|
9794
9993
|
className: cn(typeClasses.subhead, "clcosdk:text-text-secondary"),
|
|
9795
9994
|
children: "Remove?"
|
|
9796
9995
|
}
|
|
9797
9996
|
),
|
|
9798
|
-
/* @__PURE__ */
|
|
9799
|
-
/* @__PURE__ */
|
|
9997
|
+
/* @__PURE__ */ jsx57(ClButton, { size: "sm", variant: "destructive", onClick: remove, children: "Remove" }),
|
|
9998
|
+
/* @__PURE__ */ jsx57(
|
|
9800
9999
|
ClButton,
|
|
9801
10000
|
{
|
|
9802
10001
|
size: "sm",
|
|
@@ -9805,9 +10004,9 @@ function ConnectedWalletRow({
|
|
|
9805
10004
|
children: "Cancel"
|
|
9806
10005
|
}
|
|
9807
10006
|
)
|
|
9808
|
-
] }) : state === "error" ? /* @__PURE__ */
|
|
9809
|
-
/* @__PURE__ */
|
|
9810
|
-
/* @__PURE__ */
|
|
10007
|
+
] }) : state === "error" ? /* @__PURE__ */ jsxs41("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-2", children: [
|
|
10008
|
+
/* @__PURE__ */ jsx57("span", { className: cn(typeClasses.subhead, "clcosdk:text-error"), children: "Couldn't remove." }),
|
|
10009
|
+
/* @__PURE__ */ jsx57(
|
|
9811
10010
|
ClButton,
|
|
9812
10011
|
{
|
|
9813
10012
|
size: "sm",
|
|
@@ -9816,7 +10015,7 @@ function ConnectedWalletRow({
|
|
|
9816
10015
|
children: "Try again"
|
|
9817
10016
|
}
|
|
9818
10017
|
)
|
|
9819
|
-
] }) : /* @__PURE__ */
|
|
10018
|
+
] }) : /* @__PURE__ */ jsx57(
|
|
9820
10019
|
ClButton,
|
|
9821
10020
|
{
|
|
9822
10021
|
size: "sm",
|
|
@@ -9829,7 +10028,7 @@ function ConnectedWalletRow({
|
|
|
9829
10028
|
] });
|
|
9830
10029
|
}
|
|
9831
10030
|
function ConnectedWalletList(props) {
|
|
9832
|
-
return /* @__PURE__ */
|
|
10031
|
+
return /* @__PURE__ */ jsx57(CoinListStyleScope, { children: /* @__PURE__ */ jsx57(ConnectedWalletListBody, { ...props }) });
|
|
9833
10032
|
}
|
|
9834
10033
|
function ConnectedWalletListBody({
|
|
9835
10034
|
wallets,
|
|
@@ -9839,18 +10038,18 @@ function ConnectedWalletListBody({
|
|
|
9839
10038
|
status = "ready",
|
|
9840
10039
|
className
|
|
9841
10040
|
}) {
|
|
9842
|
-
return /* @__PURE__ */
|
|
10041
|
+
return /* @__PURE__ */ jsxs41(
|
|
9843
10042
|
"div",
|
|
9844
10043
|
{
|
|
9845
10044
|
className: cn("clcosdk:flex clcosdk:flex-col clcosdk:gap-2", className),
|
|
9846
10045
|
children: [
|
|
9847
|
-
status === "loading" ? /* @__PURE__ */
|
|
10046
|
+
status === "loading" ? /* @__PURE__ */ jsx57(AlertBanner, { variant: "info", content: "Loading your connected wallets\u2026" }) : status === "error" ? /* @__PURE__ */ jsx57(
|
|
9848
10047
|
AlertBanner,
|
|
9849
10048
|
{
|
|
9850
10049
|
variant: "error",
|
|
9851
10050
|
content: "Couldn't load your connected wallets."
|
|
9852
10051
|
}
|
|
9853
|
-
) : wallets.length === 0 ? /* @__PURE__ */
|
|
10052
|
+
) : wallets.length === 0 ? /* @__PURE__ */ jsx57(AlertBanner, { variant: "info", content: "No wallets connected yet." }) : /* @__PURE__ */ jsx57("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:divide-y clcosdk:divide-divider", children: wallets.map((wallet) => /* @__PURE__ */ jsx57(
|
|
9854
10053
|
ConnectedWalletRow,
|
|
9855
10054
|
{
|
|
9856
10055
|
wallet,
|
|
@@ -9858,7 +10057,7 @@ function ConnectedWalletListBody({
|
|
|
9858
10057
|
},
|
|
9859
10058
|
wallet.id
|
|
9860
10059
|
)) }),
|
|
9861
|
-
onAdd != null && status !== "loading" && /* @__PURE__ */
|
|
10060
|
+
onAdd != null && status !== "loading" && /* @__PURE__ */ jsx57(
|
|
9862
10061
|
ClButton,
|
|
9863
10062
|
{
|
|
9864
10063
|
size: "sm",
|
|
@@ -9875,9 +10074,9 @@ function ConnectedWalletListBody({
|
|
|
9875
10074
|
|
|
9876
10075
|
// src/client/components/requirements/identity-verification/IdentityVerificationView.tsx
|
|
9877
10076
|
import SumsubWebSdk from "@sumsub/websdk-react";
|
|
9878
|
-
import { jsx as
|
|
10077
|
+
import { jsx as jsx58, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
9879
10078
|
function IdentityVerificationView(props) {
|
|
9880
|
-
return /* @__PURE__ */
|
|
10079
|
+
return /* @__PURE__ */ jsx58(CoinListStyleScope, { children: /* @__PURE__ */ jsx58(IdentityVerificationViewBody, { ...props }) });
|
|
9881
10080
|
}
|
|
9882
10081
|
function IdentityVerificationViewBody({
|
|
9883
10082
|
state,
|
|
@@ -9886,7 +10085,7 @@ function IdentityVerificationViewBody({
|
|
|
9886
10085
|
}) {
|
|
9887
10086
|
switch (state.type) {
|
|
9888
10087
|
case "loading":
|
|
9889
|
-
return /* @__PURE__ */
|
|
10088
|
+
return /* @__PURE__ */ jsx58(
|
|
9890
10089
|
"output",
|
|
9891
10090
|
{
|
|
9892
10091
|
"aria-live": "polite",
|
|
@@ -9894,11 +10093,11 @@ function IdentityVerificationViewBody({
|
|
|
9894
10093
|
"clcosdk:flex clcosdk:min-h-40 clcosdk:items-center clcosdk:justify-center",
|
|
9895
10094
|
className
|
|
9896
10095
|
),
|
|
9897
|
-
children: /* @__PURE__ */
|
|
10096
|
+
children: /* @__PURE__ */ jsx58("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading identity verification..." })
|
|
9898
10097
|
}
|
|
9899
10098
|
);
|
|
9900
10099
|
case "error":
|
|
9901
|
-
return /* @__PURE__ */
|
|
10100
|
+
return /* @__PURE__ */ jsxs42(
|
|
9902
10101
|
"div",
|
|
9903
10102
|
{
|
|
9904
10103
|
className: cn(
|
|
@@ -9906,13 +10105,13 @@ function IdentityVerificationViewBody({
|
|
|
9906
10105
|
className
|
|
9907
10106
|
),
|
|
9908
10107
|
children: [
|
|
9909
|
-
/* @__PURE__ */
|
|
9910
|
-
state.retryable && /* @__PURE__ */
|
|
10108
|
+
/* @__PURE__ */ jsx58(AlertBanner, { variant: "error", icon: true, content: state.message }),
|
|
10109
|
+
state.retryable && /* @__PURE__ */ jsx58(ClButton, { size: "sm", onClick: () => onEvent({ type: "ON_RETRY" }), children: "Try again" })
|
|
9911
10110
|
]
|
|
9912
10111
|
}
|
|
9913
10112
|
);
|
|
9914
10113
|
case "ready":
|
|
9915
|
-
return /* @__PURE__ */
|
|
10114
|
+
return /* @__PURE__ */ jsx58("div", { className: cn("clcosdk:w-full", className), children: /* @__PURE__ */ jsx58(
|
|
9916
10115
|
SumsubWebSdk,
|
|
9917
10116
|
{
|
|
9918
10117
|
accessToken: state.accessToken,
|
|
@@ -9952,25 +10151,25 @@ function toError(error) {
|
|
|
9952
10151
|
}
|
|
9953
10152
|
|
|
9954
10153
|
// src/client/hooks/requirements/identity-verification/useIdentityVerificationViewModel.ts
|
|
9955
|
-
import { useCallback as
|
|
10154
|
+
import { useCallback as useCallback9, useEffect as useEffect23, useMemo as useMemo7, useRef as useRef15 } from "react";
|
|
9956
10155
|
|
|
9957
10156
|
// src/client/hooks/requirements/data/useKycToken.ts
|
|
9958
|
-
import { useCallback as
|
|
10157
|
+
import { useCallback as useCallback8, useEffect as useEffect22, useRef as useRef14, useState as useState27 } from "react";
|
|
9959
10158
|
var IDLE_STATE = { type: "IDLE" };
|
|
9960
|
-
var
|
|
10159
|
+
var LOADING_STATE5 = { type: "LOADING" };
|
|
9961
10160
|
function useKycToken(levelName, reset) {
|
|
9962
10161
|
const { coinlist } = useCoinList();
|
|
9963
10162
|
const log = useLogger("useKycToken");
|
|
9964
|
-
const [kycTokenState, setKycTokenState] =
|
|
10163
|
+
const [kycTokenState, setKycTokenState] = useState27(IDLE_STATE);
|
|
9965
10164
|
const resetPendingRef = useRef14(reset === true);
|
|
9966
10165
|
const tokenIssuedRef = useRef14(false);
|
|
9967
|
-
|
|
10166
|
+
useEffect22(() => {
|
|
9968
10167
|
if (!tokenIssuedRef.current) {
|
|
9969
10168
|
resetPendingRef.current = reset === true;
|
|
9970
10169
|
}
|
|
9971
10170
|
}, [reset]);
|
|
9972
|
-
const fetchToken =
|
|
9973
|
-
setKycTokenState(
|
|
10171
|
+
const fetchToken = useCallback8(async () => {
|
|
10172
|
+
setKycTokenState(LOADING_STATE5);
|
|
9974
10173
|
try {
|
|
9975
10174
|
const kycToken = await coinlist.requirements.createKycToken({
|
|
9976
10175
|
levelName,
|
|
@@ -10004,7 +10203,7 @@ function useIdentityVerificationViewModel(options = {}) {
|
|
|
10004
10203
|
const { levelName, reset, locale, onSubmitted, onError } = options;
|
|
10005
10204
|
const { kycTokenState, fetchToken } = useKycToken(levelName, reset);
|
|
10006
10205
|
const fetchedRef = useRef15(false);
|
|
10007
|
-
|
|
10206
|
+
useEffect23(() => {
|
|
10008
10207
|
if (fetchedRef.current) {
|
|
10009
10208
|
return;
|
|
10010
10209
|
}
|
|
@@ -10012,7 +10211,7 @@ function useIdentityVerificationViewModel(options = {}) {
|
|
|
10012
10211
|
fetchToken().catch(() => {
|
|
10013
10212
|
});
|
|
10014
10213
|
}, [fetchToken]);
|
|
10015
|
-
const state =
|
|
10214
|
+
const state = useMemo7(() => {
|
|
10016
10215
|
switch (kycTokenState.type) {
|
|
10017
10216
|
case "IDLE":
|
|
10018
10217
|
case "LOADING":
|
|
@@ -10038,7 +10237,7 @@ function useIdentityVerificationViewModel(options = {}) {
|
|
|
10038
10237
|
}
|
|
10039
10238
|
}
|
|
10040
10239
|
}, [kycTokenState, locale, fetchToken]);
|
|
10041
|
-
const onEvent =
|
|
10240
|
+
const onEvent = useCallback9(
|
|
10042
10241
|
(event) => {
|
|
10043
10242
|
switch (event.type) {
|
|
10044
10243
|
case "ON_RETRY":
|
|
@@ -10063,7 +10262,7 @@ function useIdentityVerificationViewModel(options = {}) {
|
|
|
10063
10262
|
}
|
|
10064
10263
|
|
|
10065
10264
|
// src/client/components/requirements/identity-verification/IdentityVerificationContainer.tsx
|
|
10066
|
-
import { jsx as
|
|
10265
|
+
import { jsx as jsx59 } from "react/jsx-runtime";
|
|
10067
10266
|
function IdentityVerificationContainer({
|
|
10068
10267
|
levelName,
|
|
10069
10268
|
reset,
|
|
@@ -10079,7 +10278,7 @@ function IdentityVerificationContainer({
|
|
|
10079
10278
|
onSubmitted,
|
|
10080
10279
|
onError
|
|
10081
10280
|
});
|
|
10082
|
-
return /* @__PURE__ */
|
|
10281
|
+
return /* @__PURE__ */ jsx59(
|
|
10083
10282
|
IdentityVerificationView,
|
|
10084
10283
|
{
|
|
10085
10284
|
state,
|
|
@@ -10094,7 +10293,7 @@ import { ChevronRight } from "lucide-react";
|
|
|
10094
10293
|
|
|
10095
10294
|
// src/client/components/design-system/StepStatusIcon.tsx
|
|
10096
10295
|
import { CircleCheck as CircleCheck2, CircleX, Info as Info5 } from "lucide-react";
|
|
10097
|
-
import { jsx as
|
|
10296
|
+
import { jsx as jsx60 } from "react/jsx-runtime";
|
|
10098
10297
|
var statusConfig = {
|
|
10099
10298
|
required: {
|
|
10100
10299
|
Icon: Info5,
|
|
@@ -10119,7 +10318,7 @@ var statusConfig = {
|
|
|
10119
10318
|
};
|
|
10120
10319
|
function StepStatusIcon({ status, className }) {
|
|
10121
10320
|
const { Icon, colorClass, fillClass } = statusConfig[status];
|
|
10122
|
-
return /* @__PURE__ */
|
|
10321
|
+
return /* @__PURE__ */ jsx60(
|
|
10123
10322
|
Icon,
|
|
10124
10323
|
{
|
|
10125
10324
|
className: cn(
|
|
@@ -10134,7 +10333,7 @@ function StepStatusIcon({ status, className }) {
|
|
|
10134
10333
|
}
|
|
10135
10334
|
|
|
10136
10335
|
// src/client/components/requirements/RequirementItem.tsx
|
|
10137
|
-
import { Fragment as
|
|
10336
|
+
import { Fragment as Fragment10, jsx as jsx61, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
10138
10337
|
function VerificationActionZone({
|
|
10139
10338
|
status,
|
|
10140
10339
|
onAction,
|
|
@@ -10143,9 +10342,9 @@ function VerificationActionZone({
|
|
|
10143
10342
|
switch (status) {
|
|
10144
10343
|
case "required":
|
|
10145
10344
|
if (onAction === null) return null;
|
|
10146
|
-
return /* @__PURE__ */
|
|
10345
|
+
return /* @__PURE__ */ jsx61(ClButton, { size: "sm", onClick: onAction, children: "Continue" });
|
|
10147
10346
|
case "pending":
|
|
10148
|
-
return /* @__PURE__ */
|
|
10347
|
+
return /* @__PURE__ */ jsx61(
|
|
10149
10348
|
AlertBanner,
|
|
10150
10349
|
{
|
|
10151
10350
|
variant: "warning",
|
|
@@ -10153,16 +10352,16 @@ function VerificationActionZone({
|
|
|
10153
10352
|
}
|
|
10154
10353
|
);
|
|
10155
10354
|
case "completed":
|
|
10156
|
-
return /* @__PURE__ */
|
|
10355
|
+
return /* @__PURE__ */ jsx61(AlertBanner, { variant: "success", content: "Identity verified." });
|
|
10157
10356
|
case "rejected":
|
|
10158
|
-
return /* @__PURE__ */
|
|
10357
|
+
return /* @__PURE__ */ jsx61(
|
|
10159
10358
|
AlertBanner,
|
|
10160
10359
|
{
|
|
10161
10360
|
variant: "error",
|
|
10162
|
-
content: onContactSupport === null ? "Verification rejected." : /* @__PURE__ */
|
|
10361
|
+
content: onContactSupport === null ? "Verification rejected." : /* @__PURE__ */ jsxs43(Fragment10, { children: [
|
|
10163
10362
|
"Verification rejected.",
|
|
10164
10363
|
" ",
|
|
10165
|
-
/* @__PURE__ */
|
|
10364
|
+
/* @__PURE__ */ jsx61(
|
|
10166
10365
|
"button",
|
|
10167
10366
|
{
|
|
10168
10367
|
type: "button",
|
|
@@ -10186,8 +10385,8 @@ function WalletActionZone({
|
|
|
10186
10385
|
onRemoveWallet
|
|
10187
10386
|
}) {
|
|
10188
10387
|
if (multiWallet) {
|
|
10189
|
-
return /* @__PURE__ */
|
|
10190
|
-
/* @__PURE__ */
|
|
10388
|
+
return /* @__PURE__ */ jsxs43(Fragment10, { children: [
|
|
10389
|
+
/* @__PURE__ */ jsx61(
|
|
10191
10390
|
ConnectedWalletList,
|
|
10192
10391
|
{
|
|
10193
10392
|
wallets: connectedWallets,
|
|
@@ -10196,7 +10395,7 @@ function WalletActionZone({
|
|
|
10196
10395
|
status: walletsStatus
|
|
10197
10396
|
}
|
|
10198
10397
|
),
|
|
10199
|
-
status === "rejected" && /* @__PURE__ */
|
|
10398
|
+
status === "rejected" && /* @__PURE__ */ jsx61(
|
|
10200
10399
|
AlertBanner,
|
|
10201
10400
|
{
|
|
10202
10401
|
variant: "error",
|
|
@@ -10207,21 +10406,21 @@ function WalletActionZone({
|
|
|
10207
10406
|
}
|
|
10208
10407
|
if (status === "completed") {
|
|
10209
10408
|
const connected = connectedWallets[0];
|
|
10210
|
-
return /* @__PURE__ */
|
|
10211
|
-
onAction !== null && /* @__PURE__ */
|
|
10212
|
-
walletsStatus === "loading" ? /* @__PURE__ */
|
|
10409
|
+
return /* @__PURE__ */ jsxs43(Fragment10, { children: [
|
|
10410
|
+
onAction !== null && /* @__PURE__ */ jsx61(ClButton, { size: "sm", variant: "secondary", onClick: onAction, children: "Change wallet" }),
|
|
10411
|
+
walletsStatus === "loading" ? /* @__PURE__ */ jsx61(
|
|
10213
10412
|
AlertBanner,
|
|
10214
10413
|
{
|
|
10215
10414
|
variant: "info",
|
|
10216
10415
|
content: "Loading your connected wallet\u2026"
|
|
10217
10416
|
}
|
|
10218
|
-
) : walletsStatus === "error" ? /* @__PURE__ */
|
|
10417
|
+
) : walletsStatus === "error" ? /* @__PURE__ */ jsx61(
|
|
10219
10418
|
AlertBanner,
|
|
10220
10419
|
{
|
|
10221
10420
|
variant: "error",
|
|
10222
10421
|
content: "Couldn't load your connected wallet."
|
|
10223
10422
|
}
|
|
10224
|
-
) : /* @__PURE__ */
|
|
10423
|
+
) : /* @__PURE__ */ jsx61(
|
|
10225
10424
|
AlertBanner,
|
|
10226
10425
|
{
|
|
10227
10426
|
variant: "success",
|
|
@@ -10231,9 +10430,9 @@ function WalletActionZone({
|
|
|
10231
10430
|
] });
|
|
10232
10431
|
}
|
|
10233
10432
|
if (status === "rejected") {
|
|
10234
|
-
return /* @__PURE__ */
|
|
10235
|
-
onAction !== null && /* @__PURE__ */
|
|
10236
|
-
/* @__PURE__ */
|
|
10433
|
+
return /* @__PURE__ */ jsxs43(Fragment10, { children: [
|
|
10434
|
+
onAction !== null && /* @__PURE__ */ jsx61(ClButton, { size: "sm", onClick: onAction, children: "Connect wallet" }),
|
|
10435
|
+
/* @__PURE__ */ jsx61(
|
|
10237
10436
|
AlertBanner,
|
|
10238
10437
|
{
|
|
10239
10438
|
variant: "error",
|
|
@@ -10243,7 +10442,7 @@ function WalletActionZone({
|
|
|
10243
10442
|
] });
|
|
10244
10443
|
}
|
|
10245
10444
|
if (onAction === null) return null;
|
|
10246
|
-
return /* @__PURE__ */
|
|
10445
|
+
return /* @__PURE__ */ jsx61(ClButton, { size: "sm", onClick: onAction, children: "Connect wallet" });
|
|
10247
10446
|
}
|
|
10248
10447
|
function RequirementItem({
|
|
10249
10448
|
ui,
|
|
@@ -10255,7 +10454,7 @@ function RequirementItem({
|
|
|
10255
10454
|
walletsStatus,
|
|
10256
10455
|
onContactSupport
|
|
10257
10456
|
}) {
|
|
10258
|
-
return /* @__PURE__ */
|
|
10457
|
+
return /* @__PURE__ */ jsx61(CoinListStyleScope, { children: /* @__PURE__ */ jsxs43(
|
|
10259
10458
|
"div",
|
|
10260
10459
|
{
|
|
10261
10460
|
className: cn(
|
|
@@ -10263,7 +10462,7 @@ function RequirementItem({
|
|
|
10263
10462
|
className
|
|
10264
10463
|
),
|
|
10265
10464
|
children: [
|
|
10266
|
-
/* @__PURE__ */
|
|
10465
|
+
/* @__PURE__ */ jsxs43(
|
|
10267
10466
|
"button",
|
|
10268
10467
|
{
|
|
10269
10468
|
type: "button",
|
|
@@ -10271,9 +10470,9 @@ function RequirementItem({
|
|
|
10271
10470
|
"aria-expanded": expanded,
|
|
10272
10471
|
className: "clcosdk:flex clcosdk:h-14 clcosdk:w-full clcosdk:cursor-pointer clcosdk:items-center clcosdk:justify-between clcosdk:rounded-2xl clcosdk:px-2 clcosdk:transition-colors clcosdk:hover:bg-surface",
|
|
10273
10472
|
children: [
|
|
10274
|
-
/* @__PURE__ */
|
|
10275
|
-
/* @__PURE__ */
|
|
10276
|
-
/* @__PURE__ */
|
|
10473
|
+
/* @__PURE__ */ jsxs43("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-3", children: [
|
|
10474
|
+
/* @__PURE__ */ jsx61(StepStatusIcon, { status: ui.status }),
|
|
10475
|
+
/* @__PURE__ */ jsx61(
|
|
10277
10476
|
"span",
|
|
10278
10477
|
{
|
|
10279
10478
|
className: cn(
|
|
@@ -10284,7 +10483,7 @@ function RequirementItem({
|
|
|
10284
10483
|
}
|
|
10285
10484
|
)
|
|
10286
10485
|
] }),
|
|
10287
|
-
/* @__PURE__ */
|
|
10486
|
+
/* @__PURE__ */ jsx61(
|
|
10288
10487
|
ChevronRight,
|
|
10289
10488
|
{
|
|
10290
10489
|
className: cn(
|
|
@@ -10297,15 +10496,15 @@ function RequirementItem({
|
|
|
10297
10496
|
]
|
|
10298
10497
|
}
|
|
10299
10498
|
),
|
|
10300
|
-
/* @__PURE__ */
|
|
10499
|
+
/* @__PURE__ */ jsx61(
|
|
10301
10500
|
"div",
|
|
10302
10501
|
{
|
|
10303
10502
|
className: cn(
|
|
10304
10503
|
"clcosdk:grid clcosdk:transition-[grid-template-rows] clcosdk:duration-300 clcosdk:ease-in-out",
|
|
10305
10504
|
expanded ? "clcosdk:grid-rows-[1fr]" : "clcosdk:grid-rows-[0fr]"
|
|
10306
10505
|
),
|
|
10307
|
-
children: /* @__PURE__ */
|
|
10308
|
-
/* @__PURE__ */
|
|
10506
|
+
children: /* @__PURE__ */ jsx61("div", { className: "clcosdk:min-h-0 clcosdk:overflow-hidden", children: /* @__PURE__ */ jsxs43("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-4 clcosdk:px-2 clcosdk:pb-4", children: [
|
|
10507
|
+
/* @__PURE__ */ jsx61(
|
|
10309
10508
|
"p",
|
|
10310
10509
|
{
|
|
10311
10510
|
className: cn(
|
|
@@ -10315,14 +10514,14 @@ function RequirementItem({
|
|
|
10315
10514
|
children: ui.description
|
|
10316
10515
|
}
|
|
10317
10516
|
),
|
|
10318
|
-
ui.variant === "verification" ? /* @__PURE__ */
|
|
10517
|
+
ui.variant === "verification" ? /* @__PURE__ */ jsx61(
|
|
10319
10518
|
VerificationActionZone,
|
|
10320
10519
|
{
|
|
10321
10520
|
status: ui.status,
|
|
10322
10521
|
onAction,
|
|
10323
10522
|
onContactSupport
|
|
10324
10523
|
}
|
|
10325
|
-
) : /* @__PURE__ */
|
|
10524
|
+
) : /* @__PURE__ */ jsx61(
|
|
10326
10525
|
WalletActionZone,
|
|
10327
10526
|
{
|
|
10328
10527
|
status: ui.status,
|
|
@@ -10342,9 +10541,9 @@ function RequirementItem({
|
|
|
10342
10541
|
}
|
|
10343
10542
|
|
|
10344
10543
|
// src/client/components/requirements/RequirementsChecklistView.tsx
|
|
10345
|
-
import { jsx as
|
|
10544
|
+
import { jsx as jsx62, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
10346
10545
|
function RequirementsChecklistView(props) {
|
|
10347
|
-
return /* @__PURE__ */
|
|
10546
|
+
return /* @__PURE__ */ jsx62(CoinListStyleScope, { children: /* @__PURE__ */ jsx62(RequirementsChecklistViewBody, { ...props }) });
|
|
10348
10547
|
}
|
|
10349
10548
|
function RequirementsChecklistViewBody({
|
|
10350
10549
|
state,
|
|
@@ -10356,11 +10555,11 @@ function RequirementsChecklistViewBody({
|
|
|
10356
10555
|
}) {
|
|
10357
10556
|
switch (state.type) {
|
|
10358
10557
|
case "loading":
|
|
10359
|
-
return loading ?? /* @__PURE__ */
|
|
10558
|
+
return loading ?? /* @__PURE__ */ jsx62(LoadingState2, {});
|
|
10360
10559
|
case "not-authenticated":
|
|
10361
10560
|
return unauthenticatedState ?? null;
|
|
10362
10561
|
case "error":
|
|
10363
|
-
return error ?? /* @__PURE__ */
|
|
10562
|
+
return error ?? /* @__PURE__ */ jsx62(
|
|
10364
10563
|
AlertBanner,
|
|
10365
10564
|
{
|
|
10366
10565
|
variant: "error",
|
|
@@ -10370,7 +10569,7 @@ function RequirementsChecklistViewBody({
|
|
|
10370
10569
|
}
|
|
10371
10570
|
);
|
|
10372
10571
|
case "content":
|
|
10373
|
-
return /* @__PURE__ */
|
|
10572
|
+
return /* @__PURE__ */ jsxs44(
|
|
10374
10573
|
"div",
|
|
10375
10574
|
{
|
|
10376
10575
|
className: cn(
|
|
@@ -10378,11 +10577,11 @@ function RequirementsChecklistViewBody({
|
|
|
10378
10577
|
className
|
|
10379
10578
|
),
|
|
10380
10579
|
children: [
|
|
10381
|
-
/* @__PURE__ */
|
|
10382
|
-
/* @__PURE__ */
|
|
10383
|
-
/* @__PURE__ */
|
|
10580
|
+
/* @__PURE__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
10581
|
+
/* @__PURE__ */ jsx62("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: state.title }),
|
|
10582
|
+
/* @__PURE__ */ jsx62("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: state.description })
|
|
10384
10583
|
] }),
|
|
10385
|
-
/* @__PURE__ */
|
|
10584
|
+
/* @__PURE__ */ jsx62("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:divide-y clcosdk:divide-divider", children: state.items.map((row) => /* @__PURE__ */ jsx62(
|
|
10386
10585
|
RequirementItem,
|
|
10387
10586
|
{
|
|
10388
10587
|
ui: row.item,
|
|
@@ -10401,7 +10600,7 @@ function RequirementsChecklistViewBody({
|
|
|
10401
10600
|
},
|
|
10402
10601
|
row.id
|
|
10403
10602
|
)) }),
|
|
10404
|
-
state.ineligible && /* @__PURE__ */
|
|
10603
|
+
state.ineligible && /* @__PURE__ */ jsx62(
|
|
10405
10604
|
AlertBanner,
|
|
10406
10605
|
{
|
|
10407
10606
|
variant: "error",
|
|
@@ -10409,7 +10608,7 @@ function RequirementsChecklistViewBody({
|
|
|
10409
10608
|
content: "You are not eligible to participate."
|
|
10410
10609
|
}
|
|
10411
10610
|
),
|
|
10412
|
-
state.continueAction && /* @__PURE__ */
|
|
10611
|
+
state.continueAction && /* @__PURE__ */ jsx62(
|
|
10413
10612
|
ClButton,
|
|
10414
10613
|
{
|
|
10415
10614
|
fullWidth: true,
|
|
@@ -10428,18 +10627,18 @@ function RequirementsChecklistViewBody({
|
|
|
10428
10627
|
}
|
|
10429
10628
|
}
|
|
10430
10629
|
function LoadingState2() {
|
|
10431
|
-
return /* @__PURE__ */
|
|
10630
|
+
return /* @__PURE__ */ jsx62(
|
|
10432
10631
|
"output",
|
|
10433
10632
|
{
|
|
10434
10633
|
"aria-live": "polite",
|
|
10435
10634
|
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",
|
|
10436
|
-
children: /* @__PURE__ */
|
|
10635
|
+
children: /* @__PURE__ */ jsx62("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading requirements..." })
|
|
10437
10636
|
}
|
|
10438
10637
|
);
|
|
10439
10638
|
}
|
|
10440
10639
|
|
|
10441
10640
|
// src/client/components/requirements/tax-document/TaxDocumentModalView.tsx
|
|
10442
|
-
import { jsx as
|
|
10641
|
+
import { jsx as jsx63, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
10443
10642
|
function TaxDocumentModalView({
|
|
10444
10643
|
state,
|
|
10445
10644
|
onEvent,
|
|
@@ -10448,7 +10647,7 @@ function TaxDocumentModalView({
|
|
|
10448
10647
|
if (state.type === "hidden") {
|
|
10449
10648
|
return null;
|
|
10450
10649
|
}
|
|
10451
|
-
return /* @__PURE__ */
|
|
10650
|
+
return /* @__PURE__ */ jsx63(CoinListStyleScope, { children: /* @__PURE__ */ jsx63("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__ */ jsxs45(
|
|
10452
10651
|
"div",
|
|
10453
10652
|
{
|
|
10454
10653
|
className: cn(
|
|
@@ -10456,11 +10655,11 @@ function TaxDocumentModalView({
|
|
|
10456
10655
|
className
|
|
10457
10656
|
),
|
|
10458
10657
|
children: [
|
|
10459
|
-
/* @__PURE__ */
|
|
10460
|
-
/* @__PURE__ */
|
|
10461
|
-
/* @__PURE__ */
|
|
10658
|
+
/* @__PURE__ */ jsxs45("div", { className: "clcosdk:flex clcosdk:items-start clcosdk:justify-between clcosdk:gap-4", children: [
|
|
10659
|
+
/* @__PURE__ */ jsx63("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: state.title }),
|
|
10660
|
+
/* @__PURE__ */ jsx63(CloseButton, { onClick: () => onEvent({ type: "ON_CLOSE" }) })
|
|
10462
10661
|
] }),
|
|
10463
|
-
/* @__PURE__ */
|
|
10662
|
+
/* @__PURE__ */ jsx63(Screen, { screen: state.screen, onEvent })
|
|
10464
10663
|
]
|
|
10465
10664
|
}
|
|
10466
10665
|
) }) });
|
|
@@ -10471,11 +10670,11 @@ function Screen({
|
|
|
10471
10670
|
}) {
|
|
10472
10671
|
switch (screen.type) {
|
|
10473
10672
|
case "loading":
|
|
10474
|
-
return /* @__PURE__ */
|
|
10673
|
+
return /* @__PURE__ */ jsx63(LoadingScreen, {});
|
|
10475
10674
|
case "error":
|
|
10476
|
-
return /* @__PURE__ */
|
|
10675
|
+
return /* @__PURE__ */ jsx63(AlertBanner, { variant: "error", icon: true, content: screen.message });
|
|
10477
10676
|
case "review":
|
|
10478
|
-
return /* @__PURE__ */
|
|
10677
|
+
return /* @__PURE__ */ jsx63(
|
|
10479
10678
|
ReviewScreen,
|
|
10480
10679
|
{
|
|
10481
10680
|
fields: screen.fields,
|
|
@@ -10486,9 +10685,9 @@ function Screen({
|
|
|
10486
10685
|
}
|
|
10487
10686
|
);
|
|
10488
10687
|
case "editing":
|
|
10489
|
-
return /* @__PURE__ */
|
|
10688
|
+
return /* @__PURE__ */ jsx63(EditScreen, { fields: screen.fields, onEvent });
|
|
10490
10689
|
case "sign-only":
|
|
10491
|
-
return /* @__PURE__ */
|
|
10690
|
+
return /* @__PURE__ */ jsx63(
|
|
10492
10691
|
SignOnlyScreen,
|
|
10493
10692
|
{
|
|
10494
10693
|
signing: screen.signing,
|
|
@@ -10503,14 +10702,14 @@ function Screen({
|
|
|
10503
10702
|
}
|
|
10504
10703
|
}
|
|
10505
10704
|
function LoadingScreen() {
|
|
10506
|
-
return /* @__PURE__ */
|
|
10705
|
+
return /* @__PURE__ */ jsx63(
|
|
10507
10706
|
"output",
|
|
10508
10707
|
{
|
|
10509
10708
|
"aria-live": "polite",
|
|
10510
10709
|
className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-4",
|
|
10511
|
-
children: [0, 1, 2, 3, 4].map((row) => /* @__PURE__ */
|
|
10512
|
-
/* @__PURE__ */
|
|
10513
|
-
/* @__PURE__ */
|
|
10710
|
+
children: [0, 1, 2, 3, 4].map((row) => /* @__PURE__ */ jsxs45("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1", children: [
|
|
10711
|
+
/* @__PURE__ */ jsx63("div", { className: "clcosdk:h-3 clcosdk:w-28 clcosdk:animate-pulse clcosdk:rounded clcosdk:bg-surface" }),
|
|
10712
|
+
/* @__PURE__ */ jsx63("div", { className: "clcosdk:h-5 clcosdk:w-48 clcosdk:animate-pulse clcosdk:rounded clcosdk:bg-surface" })
|
|
10514
10713
|
] }, row))
|
|
10515
10714
|
}
|
|
10516
10715
|
);
|
|
@@ -10522,9 +10721,9 @@ function ReviewScreen({
|
|
|
10522
10721
|
signError,
|
|
10523
10722
|
onEvent
|
|
10524
10723
|
}) {
|
|
10525
|
-
return /* @__PURE__ */
|
|
10526
|
-
/* @__PURE__ */
|
|
10527
|
-
piiUnavailable && /* @__PURE__ */
|
|
10724
|
+
return /* @__PURE__ */ jsxs45("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
10725
|
+
/* @__PURE__ */ jsx63("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Review your information below. If anything looks incorrect, edit before signing." }),
|
|
10726
|
+
piiUnavailable && /* @__PURE__ */ jsx63(
|
|
10528
10727
|
AlertBanner,
|
|
10529
10728
|
{
|
|
10530
10729
|
variant: "info",
|
|
@@ -10532,27 +10731,27 @@ function ReviewScreen({
|
|
|
10532
10731
|
content: "We don't have this information on file yet \u2014 please fill it in below."
|
|
10533
10732
|
}
|
|
10534
10733
|
),
|
|
10535
|
-
/* @__PURE__ */
|
|
10734
|
+
/* @__PURE__ */ jsx63("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__ */ jsxs45(
|
|
10536
10735
|
"div",
|
|
10537
10736
|
{
|
|
10538
10737
|
className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1",
|
|
10539
10738
|
children: [
|
|
10540
|
-
/* @__PURE__ */
|
|
10739
|
+
/* @__PURE__ */ jsx63(
|
|
10541
10740
|
"span",
|
|
10542
10741
|
{
|
|
10543
10742
|
className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
|
|
10544
10743
|
children: label
|
|
10545
10744
|
}
|
|
10546
10745
|
),
|
|
10547
|
-
/* @__PURE__ */
|
|
10746
|
+
/* @__PURE__ */ jsx63("span", { className: cn(typeClasses.body, "clcosdk:text-text-primary"), children: displayValue })
|
|
10548
10747
|
]
|
|
10549
10748
|
},
|
|
10550
10749
|
field
|
|
10551
10750
|
)) }),
|
|
10552
|
-
/* @__PURE__ */
|
|
10553
|
-
signError && /* @__PURE__ */
|
|
10554
|
-
/* @__PURE__ */
|
|
10555
|
-
/* @__PURE__ */
|
|
10751
|
+
/* @__PURE__ */ jsx63("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." }),
|
|
10752
|
+
signError && /* @__PURE__ */ jsx63(AlertBanner, { variant: "error", icon: true, content: signError }),
|
|
10753
|
+
/* @__PURE__ */ jsxs45("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
10754
|
+
/* @__PURE__ */ jsx63(
|
|
10556
10755
|
ClButton,
|
|
10557
10756
|
{
|
|
10558
10757
|
fullWidth: true,
|
|
@@ -10562,7 +10761,7 @@ function ReviewScreen({
|
|
|
10562
10761
|
children: "Sign W-8BEN"
|
|
10563
10762
|
}
|
|
10564
10763
|
),
|
|
10565
|
-
/* @__PURE__ */
|
|
10764
|
+
/* @__PURE__ */ jsx63(
|
|
10566
10765
|
ClButton,
|
|
10567
10766
|
{
|
|
10568
10767
|
fullWidth: true,
|
|
@@ -10579,20 +10778,20 @@ function EditScreen({
|
|
|
10579
10778
|
fields,
|
|
10580
10779
|
onEvent
|
|
10581
10780
|
}) {
|
|
10582
|
-
return /* @__PURE__ */
|
|
10583
|
-
/* @__PURE__ */
|
|
10781
|
+
return /* @__PURE__ */ jsxs45("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
10782
|
+
/* @__PURE__ */ jsx63("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__ */ jsxs45(
|
|
10584
10783
|
"label",
|
|
10585
10784
|
{
|
|
10586
10785
|
className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1",
|
|
10587
10786
|
children: [
|
|
10588
|
-
/* @__PURE__ */
|
|
10787
|
+
/* @__PURE__ */ jsx63(
|
|
10589
10788
|
"span",
|
|
10590
10789
|
{
|
|
10591
10790
|
className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
|
|
10592
10791
|
children: label
|
|
10593
10792
|
}
|
|
10594
10793
|
),
|
|
10595
|
-
/* @__PURE__ */
|
|
10794
|
+
/* @__PURE__ */ jsx63(
|
|
10596
10795
|
"input",
|
|
10597
10796
|
{
|
|
10598
10797
|
type: "text",
|
|
@@ -10613,9 +10812,9 @@ function EditScreen({
|
|
|
10613
10812
|
},
|
|
10614
10813
|
field
|
|
10615
10814
|
)) }),
|
|
10616
|
-
/* @__PURE__ */
|
|
10617
|
-
/* @__PURE__ */
|
|
10618
|
-
/* @__PURE__ */
|
|
10815
|
+
/* @__PURE__ */ jsxs45("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
10816
|
+
/* @__PURE__ */ jsx63(ClButton, { fullWidth: true, onClick: () => onEvent({ type: "ON_SAVE_EDIT" }), children: "Save & review" }),
|
|
10817
|
+
/* @__PURE__ */ jsx63(
|
|
10619
10818
|
ClButton,
|
|
10620
10819
|
{
|
|
10621
10820
|
fullWidth: true,
|
|
@@ -10632,10 +10831,10 @@ function SignOnlyScreen({
|
|
|
10632
10831
|
signError,
|
|
10633
10832
|
onEvent
|
|
10634
10833
|
}) {
|
|
10635
|
-
return /* @__PURE__ */
|
|
10636
|
-
/* @__PURE__ */
|
|
10637
|
-
signError && /* @__PURE__ */
|
|
10638
|
-
/* @__PURE__ */
|
|
10834
|
+
return /* @__PURE__ */ jsxs45("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
10835
|
+
/* @__PURE__ */ jsx63("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." }),
|
|
10836
|
+
signError && /* @__PURE__ */ jsx63(AlertBanner, { variant: "error", icon: true, content: signError }),
|
|
10837
|
+
/* @__PURE__ */ jsx63(
|
|
10639
10838
|
ClButton,
|
|
10640
10839
|
{
|
|
10641
10840
|
fullWidth: true,
|
|
@@ -10649,12 +10848,12 @@ function SignOnlyScreen({
|
|
|
10649
10848
|
}
|
|
10650
10849
|
|
|
10651
10850
|
// src/client/hooks/requirements/tax-document/useTaxDocumentModalViewModel.ts
|
|
10652
|
-
import { useCallback as
|
|
10851
|
+
import { useCallback as useCallback11, useEffect as useEffect25, useMemo as useMemo8 } from "react";
|
|
10653
10852
|
|
|
10654
10853
|
// src/client/hooks/requirements/data/useTaxDocument.ts
|
|
10655
|
-
import { useCallback as
|
|
10854
|
+
import { useCallback as useCallback10, useEffect as useEffect24, useState as useState28 } from "react";
|
|
10656
10855
|
var IDLE_SIGN = { type: "idle", error: null };
|
|
10657
|
-
var
|
|
10856
|
+
var LOADING_STATE6 = { type: "LOADING" };
|
|
10658
10857
|
var SIGN_FAILED_MESSAGE = "Unable to sign document. Please try again.";
|
|
10659
10858
|
var DOB_INVALID_MESSAGE = "Enter your date of birth as MM/DD/YYYY.";
|
|
10660
10859
|
var FIELD_KEYS = {
|
|
@@ -10727,8 +10926,8 @@ function useTaxDocument({
|
|
|
10727
10926
|
}) {
|
|
10728
10927
|
const { coinlist, isReady } = useCoinList();
|
|
10729
10928
|
const log = useLogger("useTaxDocument");
|
|
10730
|
-
const [state, setState] =
|
|
10731
|
-
|
|
10929
|
+
const [state, setState] = useState28(LOADING_STATE6);
|
|
10930
|
+
useEffect24(() => {
|
|
10732
10931
|
let isCancelled = false;
|
|
10733
10932
|
if (!isOpen) {
|
|
10734
10933
|
return () => {
|
|
@@ -10736,12 +10935,12 @@ function useTaxDocument({
|
|
|
10736
10935
|
};
|
|
10737
10936
|
}
|
|
10738
10937
|
if (!isReady) {
|
|
10739
|
-
setState(
|
|
10938
|
+
setState(LOADING_STATE6);
|
|
10740
10939
|
return () => {
|
|
10741
10940
|
isCancelled = true;
|
|
10742
10941
|
};
|
|
10743
10942
|
}
|
|
10744
|
-
setState(
|
|
10943
|
+
setState(LOADING_STATE6);
|
|
10745
10944
|
coinlist.requirements.getPii().then((pii) => {
|
|
10746
10945
|
if (isCancelled) return;
|
|
10747
10946
|
if (pii.kind === "company") {
|
|
@@ -10769,7 +10968,7 @@ function useTaxDocument({
|
|
|
10769
10968
|
isCancelled = true;
|
|
10770
10969
|
};
|
|
10771
10970
|
}, [coinlist, isReady, isOpen, log]);
|
|
10772
|
-
const onEditField =
|
|
10971
|
+
const onEditField = useCallback10(
|
|
10773
10972
|
(field, value) => {
|
|
10774
10973
|
setState(
|
|
10775
10974
|
(prev) => prev.type === "EDITING" ? { ...prev, fields: { ...prev.fields, [field]: value } } : prev
|
|
@@ -10777,7 +10976,7 @@ function useTaxDocument({
|
|
|
10777
10976
|
},
|
|
10778
10977
|
[]
|
|
10779
10978
|
);
|
|
10780
|
-
const onStartEdit =
|
|
10979
|
+
const onStartEdit = useCallback10(() => {
|
|
10781
10980
|
setState(
|
|
10782
10981
|
(prev) => prev.type === "REVIEW" ? {
|
|
10783
10982
|
type: "EDITING",
|
|
@@ -10788,7 +10987,7 @@ function useTaxDocument({
|
|
|
10788
10987
|
} : prev
|
|
10789
10988
|
);
|
|
10790
10989
|
}, []);
|
|
10791
|
-
const onSaveEdit =
|
|
10990
|
+
const onSaveEdit = useCallback10(() => {
|
|
10792
10991
|
setState(
|
|
10793
10992
|
(prev) => prev.type === "EDITING" ? {
|
|
10794
10993
|
type: "REVIEW",
|
|
@@ -10799,7 +10998,7 @@ function useTaxDocument({
|
|
|
10799
10998
|
} : prev
|
|
10800
10999
|
);
|
|
10801
11000
|
}, []);
|
|
10802
|
-
const onCancelEdit =
|
|
11001
|
+
const onCancelEdit = useCallback10(() => {
|
|
10803
11002
|
setState(
|
|
10804
11003
|
(prev) => prev.type === "EDITING" ? {
|
|
10805
11004
|
type: "REVIEW",
|
|
@@ -10810,7 +11009,7 @@ function useTaxDocument({
|
|
|
10810
11009
|
} : prev
|
|
10811
11010
|
);
|
|
10812
11011
|
}, []);
|
|
10813
|
-
const onSign =
|
|
11012
|
+
const onSign = useCallback10(() => {
|
|
10814
11013
|
if (state.type !== "REVIEW" && state.type !== "SIGN_ONLY") return;
|
|
10815
11014
|
if (state.type === "REVIEW" && state.fields.dob.trim() !== "" && !isValidUsDate(state.fields.dob)) {
|
|
10816
11015
|
setState({
|
|
@@ -10852,19 +11051,19 @@ function useTaxDocumentModalViewModel({
|
|
|
10852
11051
|
onSubmitted
|
|
10853
11052
|
}) {
|
|
10854
11053
|
const { state, onEditField, onStartEdit, onSaveEdit, onCancelEdit, onSign } = useTaxDocument({ isOpen });
|
|
10855
|
-
|
|
11054
|
+
useEffect25(() => {
|
|
10856
11055
|
if (state.type === "SUBMITTED") {
|
|
10857
11056
|
onSubmitted?.(state.submission);
|
|
10858
11057
|
onClose();
|
|
10859
11058
|
}
|
|
10860
11059
|
}, [state]);
|
|
10861
|
-
const uiState =
|
|
11060
|
+
const uiState = useMemo8(() => {
|
|
10862
11061
|
if (!isOpen || state.type === "SUBMITTED") {
|
|
10863
11062
|
return { type: "hidden" };
|
|
10864
11063
|
}
|
|
10865
11064
|
return { type: "content", title: toTitle(state), screen: toScreen(state) };
|
|
10866
11065
|
}, [isOpen, state]);
|
|
10867
|
-
const onEvent =
|
|
11066
|
+
const onEvent = useCallback11(
|
|
10868
11067
|
(event) => {
|
|
10869
11068
|
switch (event.type) {
|
|
10870
11069
|
case "ON_CLOSE":
|
|
@@ -10947,7 +11146,7 @@ function toFieldsUi(fields) {
|
|
|
10947
11146
|
}
|
|
10948
11147
|
|
|
10949
11148
|
// src/client/components/requirements/tax-document/TaxDocumentModalContainer.tsx
|
|
10950
|
-
import { jsx as
|
|
11149
|
+
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
10951
11150
|
function TaxDocumentModalContainer({
|
|
10952
11151
|
isOpen,
|
|
10953
11152
|
onClose,
|
|
@@ -10959,7 +11158,7 @@ function TaxDocumentModalContainer({
|
|
|
10959
11158
|
onClose,
|
|
10960
11159
|
onSubmitted
|
|
10961
11160
|
});
|
|
10962
|
-
return /* @__PURE__ */
|
|
11161
|
+
return /* @__PURE__ */ jsx64(
|
|
10963
11162
|
TaxDocumentModalView,
|
|
10964
11163
|
{
|
|
10965
11164
|
state,
|
|
@@ -10970,26 +11169,26 @@ function TaxDocumentModalContainer({
|
|
|
10970
11169
|
}
|
|
10971
11170
|
|
|
10972
11171
|
// src/client/components/requirements/VerificationOverlay.tsx
|
|
10973
|
-
import { jsx as
|
|
11172
|
+
import { jsx as jsx65, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
10974
11173
|
function VerificationOverlay({
|
|
10975
11174
|
onClose,
|
|
10976
11175
|
children
|
|
10977
11176
|
}) {
|
|
10978
|
-
return /* @__PURE__ */
|
|
11177
|
+
return /* @__PURE__ */ jsx65(CoinListStyleScope, { children: /* @__PURE__ */ jsx65(VerificationOverlayBody, { onClose, children }) });
|
|
10979
11178
|
}
|
|
10980
11179
|
function VerificationOverlayBody({
|
|
10981
11180
|
onClose,
|
|
10982
11181
|
children
|
|
10983
11182
|
}) {
|
|
10984
|
-
return /* @__PURE__ */
|
|
11183
|
+
return /* @__PURE__ */ jsx65(
|
|
10985
11184
|
"div",
|
|
10986
11185
|
{
|
|
10987
11186
|
role: "dialog",
|
|
10988
11187
|
"aria-modal": "true",
|
|
10989
11188
|
"aria-label": "Identity verification",
|
|
10990
11189
|
className: "clcosdk:fixed clcosdk:inset-0 clcosdk:z-50 clcosdk:flex clcosdk:items-center clcosdk:justify-center clcosdk:bg-overlay clcosdk:p-4",
|
|
10991
|
-
children: /* @__PURE__ */
|
|
10992
|
-
/* @__PURE__ */
|
|
11190
|
+
children: /* @__PURE__ */ jsxs46("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: [
|
|
11191
|
+
/* @__PURE__ */ jsx65(
|
|
10993
11192
|
CloseButton,
|
|
10994
11193
|
{
|
|
10995
11194
|
onClick: onClose,
|
|
@@ -11004,7 +11203,7 @@ function VerificationOverlayBody({
|
|
|
11004
11203
|
|
|
11005
11204
|
// src/client/components/requirements/wallet/ConnectWalletModalView.tsx
|
|
11006
11205
|
import { useId as useId5 } from "react";
|
|
11007
|
-
import { jsx as
|
|
11206
|
+
import { jsx as jsx66, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
11008
11207
|
function ConnectWalletModalView({
|
|
11009
11208
|
state,
|
|
11010
11209
|
onEvent,
|
|
@@ -11014,7 +11213,7 @@ function ConnectWalletModalView({
|
|
|
11014
11213
|
if (state.type === "hidden") {
|
|
11015
11214
|
return null;
|
|
11016
11215
|
}
|
|
11017
|
-
return /* @__PURE__ */
|
|
11216
|
+
return /* @__PURE__ */ jsx66(CoinListStyleScope, { children: /* @__PURE__ */ jsx66("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__ */ jsxs47(
|
|
11018
11217
|
"div",
|
|
11019
11218
|
{
|
|
11020
11219
|
role: "dialog",
|
|
@@ -11025,8 +11224,8 @@ function ConnectWalletModalView({
|
|
|
11025
11224
|
className
|
|
11026
11225
|
),
|
|
11027
11226
|
children: [
|
|
11028
|
-
/* @__PURE__ */
|
|
11029
|
-
/* @__PURE__ */
|
|
11227
|
+
/* @__PURE__ */ jsxs47("div", { className: "clcosdk:flex clcosdk:items-start clcosdk:justify-between clcosdk:gap-4", children: [
|
|
11228
|
+
/* @__PURE__ */ jsx66(
|
|
11030
11229
|
"h3",
|
|
11031
11230
|
{
|
|
11032
11231
|
id: titleId,
|
|
@@ -11034,9 +11233,9 @@ function ConnectWalletModalView({
|
|
|
11034
11233
|
children: "Connect your wallet"
|
|
11035
11234
|
}
|
|
11036
11235
|
),
|
|
11037
|
-
/* @__PURE__ */
|
|
11236
|
+
/* @__PURE__ */ jsx66(CloseButton, { onClick: () => onEvent({ type: "ON_CLOSE" }) })
|
|
11038
11237
|
] }),
|
|
11039
|
-
/* @__PURE__ */
|
|
11238
|
+
/* @__PURE__ */ jsx66(
|
|
11040
11239
|
Screen2,
|
|
11041
11240
|
{
|
|
11042
11241
|
screen: state.screen,
|
|
@@ -11055,9 +11254,9 @@ function Screen2({
|
|
|
11055
11254
|
}) {
|
|
11056
11255
|
switch (screen.type) {
|
|
11057
11256
|
case "needs-wallet":
|
|
11058
|
-
return /* @__PURE__ */
|
|
11059
|
-
/* @__PURE__ */
|
|
11060
|
-
canRequestConnect && /* @__PURE__ */
|
|
11257
|
+
return /* @__PURE__ */ jsxs47("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
11258
|
+
/* @__PURE__ */ jsx66("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Connect an external wallet to prove ownership and bind it to this offer." }),
|
|
11259
|
+
canRequestConnect && /* @__PURE__ */ jsx66(
|
|
11061
11260
|
ClButton,
|
|
11062
11261
|
{
|
|
11063
11262
|
fullWidth: true,
|
|
@@ -11067,23 +11266,23 @@ function Screen2({
|
|
|
11067
11266
|
)
|
|
11068
11267
|
] });
|
|
11069
11268
|
case "ready":
|
|
11070
|
-
return /* @__PURE__ */
|
|
11071
|
-
/* @__PURE__ */
|
|
11072
|
-
/* @__PURE__ */
|
|
11073
|
-
/* @__PURE__ */
|
|
11269
|
+
return /* @__PURE__ */ jsxs47("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
11270
|
+
/* @__PURE__ */ jsx66("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." }),
|
|
11271
|
+
/* @__PURE__ */ jsxs47("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1 clcosdk:border-t clcosdk:border-divider clcosdk:pt-4", children: [
|
|
11272
|
+
/* @__PURE__ */ jsx66(
|
|
11074
11273
|
"span",
|
|
11075
11274
|
{
|
|
11076
11275
|
className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
|
|
11077
11276
|
children: "Wallet address"
|
|
11078
11277
|
}
|
|
11079
11278
|
),
|
|
11080
|
-
/* @__PURE__ */
|
|
11279
|
+
/* @__PURE__ */ jsx66("span", { className: cn(typeClasses.body, "clcosdk:text-text-primary"), children: screen.shortAddress })
|
|
11081
11280
|
] }),
|
|
11082
11281
|
screen.signError && // Live region: the error is inserted async after a failed attempt,
|
|
11083
11282
|
// so screen readers need it announced rather than silently
|
|
11084
11283
|
// rendered.
|
|
11085
|
-
/* @__PURE__ */
|
|
11086
|
-
/* @__PURE__ */
|
|
11284
|
+
/* @__PURE__ */ jsx66("div", { role: "alert", children: /* @__PURE__ */ jsx66(AlertBanner, { variant: "error", icon: true, content: screen.signError }) }),
|
|
11285
|
+
/* @__PURE__ */ jsx66(
|
|
11087
11286
|
ClButton,
|
|
11088
11287
|
{
|
|
11089
11288
|
fullWidth: true,
|
|
@@ -11094,7 +11293,7 @@ function Screen2({
|
|
|
11094
11293
|
children: "Sign & connect"
|
|
11095
11294
|
}
|
|
11096
11295
|
),
|
|
11097
|
-
canRequestConnect && /* @__PURE__ */
|
|
11296
|
+
canRequestConnect && /* @__PURE__ */ jsx66(
|
|
11098
11297
|
ClButton,
|
|
11099
11298
|
{
|
|
11100
11299
|
fullWidth: true,
|
|
@@ -11113,10 +11312,10 @@ function Screen2({
|
|
|
11113
11312
|
}
|
|
11114
11313
|
|
|
11115
11314
|
// src/client/hooks/requirements/wallet/useConnectWalletModalViewModel.ts
|
|
11116
|
-
import { useCallback as
|
|
11315
|
+
import { useCallback as useCallback13, useEffect as useEffect27, useMemo as useMemo9 } from "react";
|
|
11117
11316
|
|
|
11118
11317
|
// src/client/hooks/requirements/data/useConnectWallet.ts
|
|
11119
|
-
import { useCallback as
|
|
11318
|
+
import { useCallback as useCallback12, useEffect as useEffect26, useRef as useRef16, useState as useState29 } from "react";
|
|
11120
11319
|
|
|
11121
11320
|
// src/client/core/wallets/connect-external-wallet.ts
|
|
11122
11321
|
var DEFAULT_STATEMENT = "Sign this message to prove you own this wallet. This does not cost gas or move funds.";
|
|
@@ -11247,24 +11446,24 @@ function useConnectWallet({
|
|
|
11247
11446
|
statement
|
|
11248
11447
|
}) {
|
|
11249
11448
|
const { coinlist } = useCoinList();
|
|
11250
|
-
const [state, setState] =
|
|
11449
|
+
const [state, setState] = useState29(
|
|
11251
11450
|
() => wallet ? { type: "READY", address: wallet.address, sign: IDLE_SIGN2 } : { type: "NEEDS_WALLET" }
|
|
11252
11451
|
);
|
|
11253
11452
|
const attempt = useRef16(0);
|
|
11254
|
-
|
|
11453
|
+
useEffect26(() => {
|
|
11255
11454
|
attempt.current += 1;
|
|
11256
11455
|
if (!isOpen) return;
|
|
11257
11456
|
setState(
|
|
11258
11457
|
wallet ? { type: "READY", address: wallet.address, sign: IDLE_SIGN2 } : { type: "NEEDS_WALLET" }
|
|
11259
11458
|
);
|
|
11260
11459
|
}, [isOpen, wallet?.address]);
|
|
11261
|
-
|
|
11460
|
+
useEffect26(
|
|
11262
11461
|
() => () => {
|
|
11263
11462
|
attempt.current += 1;
|
|
11264
11463
|
},
|
|
11265
11464
|
[]
|
|
11266
11465
|
);
|
|
11267
|
-
const onSign =
|
|
11466
|
+
const onSign = useCallback12(() => {
|
|
11268
11467
|
if (!wallet || state.type !== "READY") return;
|
|
11269
11468
|
attempt.current += 1;
|
|
11270
11469
|
const gen = attempt.current;
|
|
@@ -11326,13 +11525,13 @@ function useConnectWalletModalViewModel({
|
|
|
11326
11525
|
challengeType,
|
|
11327
11526
|
statement
|
|
11328
11527
|
});
|
|
11329
|
-
|
|
11528
|
+
useEffect27(() => {
|
|
11330
11529
|
if (state.type === "CONNECTED") {
|
|
11331
11530
|
onConnected?.(state.binding);
|
|
11332
11531
|
onClose();
|
|
11333
11532
|
}
|
|
11334
11533
|
}, [state]);
|
|
11335
|
-
const uiState =
|
|
11534
|
+
const uiState = useMemo9(() => {
|
|
11336
11535
|
if (!isOpen || state.type === "CONNECTED") {
|
|
11337
11536
|
return { type: "hidden" };
|
|
11338
11537
|
}
|
|
@@ -11357,7 +11556,7 @@ function useConnectWalletModalViewModel({
|
|
|
11357
11556
|
canRequestConnect
|
|
11358
11557
|
};
|
|
11359
11558
|
}, [isOpen, state, onRequestConnect]);
|
|
11360
|
-
const onEvent =
|
|
11559
|
+
const onEvent = useCallback13(
|
|
11361
11560
|
(event) => {
|
|
11362
11561
|
switch (event.type) {
|
|
11363
11562
|
case "ON_CLOSE":
|
|
@@ -11381,13 +11580,13 @@ function useConnectWalletModalViewModel({
|
|
|
11381
11580
|
}
|
|
11382
11581
|
|
|
11383
11582
|
// src/client/components/requirements/wallet/ConnectWalletModalContainer.tsx
|
|
11384
|
-
import { jsx as
|
|
11583
|
+
import { jsx as jsx67 } from "react/jsx-runtime";
|
|
11385
11584
|
function ConnectWalletModalContainer({
|
|
11386
11585
|
className,
|
|
11387
11586
|
...options
|
|
11388
11587
|
}) {
|
|
11389
11588
|
const { state, onEvent } = useConnectWalletModalViewModel(options);
|
|
11390
|
-
return /* @__PURE__ */
|
|
11589
|
+
return /* @__PURE__ */ jsx67(
|
|
11391
11590
|
ConnectWalletModalView,
|
|
11392
11591
|
{
|
|
11393
11592
|
state,
|
|
@@ -11398,11 +11597,11 @@ function ConnectWalletModalContainer({
|
|
|
11398
11597
|
}
|
|
11399
11598
|
|
|
11400
11599
|
// src/client/hooks/requirements/useRequirementsChecklistViewModel.ts
|
|
11401
|
-
import { useCallback as
|
|
11600
|
+
import { useCallback as useCallback16, useEffect as useEffect30, useMemo as useMemo10, useRef as useRef17, useState as useState32 } from "react";
|
|
11402
11601
|
|
|
11403
11602
|
// src/client/hooks/requirements/data/useOptionAddresses.ts
|
|
11404
|
-
import { useCallback as
|
|
11405
|
-
var
|
|
11603
|
+
import { useCallback as useCallback14, useEffect as useEffect28, useState as useState30 } from "react";
|
|
11604
|
+
var LOADING_STATE7 = { type: "LOADING" };
|
|
11406
11605
|
var EMPTY_STATE = {
|
|
11407
11606
|
type: "CONTENT",
|
|
11408
11607
|
addresses: []
|
|
@@ -11411,19 +11610,19 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
11411
11610
|
const { coinlist, isReady } = useCoinList();
|
|
11412
11611
|
const log = useLogger("useOptionAddresses");
|
|
11413
11612
|
const { data, enabled = true } = options;
|
|
11414
|
-
const [addressesState, setAddressesState] =
|
|
11415
|
-
data !== void 0 ? { type: "CONTENT", addresses: data } :
|
|
11613
|
+
const [addressesState, setAddressesState] = useState30(
|
|
11614
|
+
data !== void 0 ? { type: "CONTENT", addresses: data } : LOADING_STATE7
|
|
11416
11615
|
);
|
|
11417
|
-
const [fetchKey, setFetchKey] =
|
|
11418
|
-
const refetch =
|
|
11419
|
-
const disconnect =
|
|
11616
|
+
const [fetchKey, setFetchKey] = useState30(0);
|
|
11617
|
+
const refetch = useCallback14(() => setFetchKey((k) => k + 1), []);
|
|
11618
|
+
const disconnect = useCallback14(
|
|
11420
11619
|
async (addressId) => {
|
|
11421
11620
|
await coinlist.wallets.remove({ offerId, addressId });
|
|
11422
11621
|
refetch();
|
|
11423
11622
|
},
|
|
11424
11623
|
[coinlist, offerId, refetch]
|
|
11425
11624
|
);
|
|
11426
|
-
|
|
11625
|
+
useEffect28(() => {
|
|
11427
11626
|
let isCancelled = false;
|
|
11428
11627
|
if (!enabled) {
|
|
11429
11628
|
setAddressesState(
|
|
@@ -11435,7 +11634,7 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
11435
11634
|
}
|
|
11436
11635
|
if (!isReady) {
|
|
11437
11636
|
if (data === void 0) {
|
|
11438
|
-
setAddressesState(
|
|
11637
|
+
setAddressesState(LOADING_STATE7);
|
|
11439
11638
|
}
|
|
11440
11639
|
return () => {
|
|
11441
11640
|
isCancelled = true;
|
|
@@ -11452,7 +11651,7 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
11452
11651
|
isCancelled = true;
|
|
11453
11652
|
};
|
|
11454
11653
|
}
|
|
11455
|
-
setAddressesState(
|
|
11654
|
+
setAddressesState(LOADING_STATE7);
|
|
11456
11655
|
coinlist.wallets.list({ offerId, offerOptionId }).then((addresses) => {
|
|
11457
11656
|
if (!isCancelled) {
|
|
11458
11657
|
log.debug(() => ({
|
|
@@ -11479,18 +11678,18 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
11479
11678
|
}
|
|
11480
11679
|
|
|
11481
11680
|
// src/client/hooks/requirements/data/useRequirements.ts
|
|
11482
|
-
import { useCallback as
|
|
11483
|
-
var
|
|
11681
|
+
import { useCallback as useCallback15, useEffect as useEffect29, useState as useState31 } from "react";
|
|
11682
|
+
var LOADING_STATE8 = { type: "LOADING" };
|
|
11484
11683
|
function useRequirements(offerId, options = {}) {
|
|
11485
11684
|
const { coinlist, isReady } = useCoinList();
|
|
11486
11685
|
const log = useLogger("useRequirements");
|
|
11487
11686
|
const { data, enabled = true } = options;
|
|
11488
|
-
const [requirementsState, setRequirementsState] =
|
|
11489
|
-
data !== void 0 ? { type: "CONTENT", ...data } :
|
|
11687
|
+
const [requirementsState, setRequirementsState] = useState31(
|
|
11688
|
+
data !== void 0 ? { type: "CONTENT", ...data } : LOADING_STATE8
|
|
11490
11689
|
);
|
|
11491
|
-
const [fetchKey, setFetchKey] =
|
|
11492
|
-
const refetch =
|
|
11493
|
-
|
|
11690
|
+
const [fetchKey, setFetchKey] = useState31(0);
|
|
11691
|
+
const refetch = useCallback15(() => setFetchKey((k) => k + 1), []);
|
|
11692
|
+
useEffect29(() => {
|
|
11494
11693
|
let isCancelled = false;
|
|
11495
11694
|
if (!enabled) {
|
|
11496
11695
|
return () => {
|
|
@@ -11499,7 +11698,7 @@ function useRequirements(offerId, options = {}) {
|
|
|
11499
11698
|
}
|
|
11500
11699
|
if (!isReady) {
|
|
11501
11700
|
if (data === void 0) {
|
|
11502
|
-
setRequirementsState(
|
|
11701
|
+
setRequirementsState(LOADING_STATE8);
|
|
11503
11702
|
}
|
|
11504
11703
|
return () => {
|
|
11505
11704
|
isCancelled = true;
|
|
@@ -11516,7 +11715,7 @@ function useRequirements(offerId, options = {}) {
|
|
|
11516
11715
|
isCancelled = true;
|
|
11517
11716
|
};
|
|
11518
11717
|
}
|
|
11519
|
-
setRequirementsState(
|
|
11718
|
+
setRequirementsState(LOADING_STATE8);
|
|
11520
11719
|
Promise.all([
|
|
11521
11720
|
coinlist.requirements.forOffer(offerId),
|
|
11522
11721
|
coinlist.requirements.statuses(offerId)
|
|
@@ -11650,19 +11849,19 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
11650
11849
|
data,
|
|
11651
11850
|
enabled
|
|
11652
11851
|
});
|
|
11653
|
-
const [expandedId, setExpandedId] =
|
|
11654
|
-
const [taxDocumentOpen, setTaxDocumentOpen] =
|
|
11655
|
-
const [connectWalletOpen, setConnectWalletOpen] =
|
|
11656
|
-
const [verifyingRequirementId, setVerifyingRequirementId] =
|
|
11852
|
+
const [expandedId, setExpandedId] = useState32(null);
|
|
11853
|
+
const [taxDocumentOpen, setTaxDocumentOpen] = useState32(false);
|
|
11854
|
+
const [connectWalletOpen, setConnectWalletOpen] = useState32(false);
|
|
11855
|
+
const [verifyingRequirementId, setVerifyingRequirementId] = useState32(null);
|
|
11657
11856
|
const isMountedRef = useRef17(true);
|
|
11658
|
-
|
|
11857
|
+
useEffect30(() => {
|
|
11659
11858
|
isMountedRef.current = true;
|
|
11660
11859
|
return () => {
|
|
11661
11860
|
isMountedRef.current = false;
|
|
11662
11861
|
};
|
|
11663
11862
|
}, []);
|
|
11664
|
-
const [hasWalletRequirement, setHasWalletRequirement] =
|
|
11665
|
-
|
|
11863
|
+
const [hasWalletRequirement, setHasWalletRequirement] = useState32(false);
|
|
11864
|
+
useEffect30(() => {
|
|
11666
11865
|
if (requirementsState.type === "CONTENT") {
|
|
11667
11866
|
setHasWalletRequirement(
|
|
11668
11867
|
(requirementsState.requirements[optionId] ?? []).some(
|
|
@@ -11678,14 +11877,14 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
11678
11877
|
} = useOptionAddresses(offerId, optionId, {
|
|
11679
11878
|
enabled: enabled && hasWalletRequirement
|
|
11680
11879
|
});
|
|
11681
|
-
const removeWallet =
|
|
11880
|
+
const removeWallet = useCallback16(
|
|
11682
11881
|
async (addressId) => {
|
|
11683
11882
|
await disconnect(OfferOptionAddressId(addressId));
|
|
11684
11883
|
refetch();
|
|
11685
11884
|
},
|
|
11686
11885
|
[disconnect, refetch]
|
|
11687
11886
|
);
|
|
11688
|
-
const awaitVerificationResult =
|
|
11887
|
+
const awaitVerificationResult = useCallback16(
|
|
11689
11888
|
(requirementId, statusBeforeSubmit) => {
|
|
11690
11889
|
void (async () => {
|
|
11691
11890
|
const deadline = Date.now() + VERIFICATION_POLL_TIMEOUT_MS;
|
|
@@ -11712,11 +11911,11 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
11712
11911
|
},
|
|
11713
11912
|
[coinlist, offerId, refetch, log]
|
|
11714
11913
|
);
|
|
11715
|
-
const requirements =
|
|
11914
|
+
const requirements = useMemo10(
|
|
11716
11915
|
() => requirementsState.type === "CONTENT" ? requirementsState.requirements[optionId] ?? [] : [],
|
|
11717
11916
|
[requirementsState, optionId]
|
|
11718
11917
|
);
|
|
11719
|
-
const statusById =
|
|
11918
|
+
const statusById = useMemo10(() => {
|
|
11720
11919
|
if (requirementsState.type !== "CONTENT") {
|
|
11721
11920
|
return /* @__PURE__ */ new Map();
|
|
11722
11921
|
}
|
|
@@ -11725,7 +11924,7 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
11725
11924
|
requirementsState.statuses.filter((s) => ids.has(s.id)).map((s) => [s.id, s])
|
|
11726
11925
|
);
|
|
11727
11926
|
}, [requirementsState, requirements]);
|
|
11728
|
-
const state =
|
|
11927
|
+
const state = useMemo10(() => {
|
|
11729
11928
|
switch (requirementsState.type) {
|
|
11730
11929
|
case "LOADING":
|
|
11731
11930
|
return { type: "loading" };
|
|
@@ -11794,7 +11993,7 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
11794
11993
|
identityVerificationOptions,
|
|
11795
11994
|
removeWallet
|
|
11796
11995
|
]);
|
|
11797
|
-
const handleRequirementAction =
|
|
11996
|
+
const handleRequirementAction = useCallback16(
|
|
11798
11997
|
(requirement) => {
|
|
11799
11998
|
const inlineVerification = statusById.get(requirement.id)?.kycLevel !== void 0 && onRequirementActionOverride === void 0;
|
|
11800
11999
|
if (inlineVerification) {
|
|
@@ -11826,7 +12025,7 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
11826
12025
|
coinlist
|
|
11827
12026
|
]
|
|
11828
12027
|
);
|
|
11829
|
-
const onEvent =
|
|
12028
|
+
const onEvent = useCallback16(
|
|
11830
12029
|
(event) => {
|
|
11831
12030
|
switch (event.type) {
|
|
11832
12031
|
case "ON_TOGGLE_ITEM":
|
|
@@ -11924,7 +12123,7 @@ function toVerificationUi(verifyingRequirementId, statusById, identityVerificati
|
|
|
11924
12123
|
}
|
|
11925
12124
|
|
|
11926
12125
|
// src/client/components/requirements/RequirementsChecklistContainer.tsx
|
|
11927
|
-
import { Fragment as
|
|
12126
|
+
import { Fragment as Fragment11, jsx as jsx68, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
11928
12127
|
function RequirementsChecklistContainer({
|
|
11929
12128
|
loading,
|
|
11930
12129
|
error,
|
|
@@ -11937,8 +12136,8 @@ function RequirementsChecklistContainer({
|
|
|
11937
12136
|
...options,
|
|
11938
12137
|
enabled
|
|
11939
12138
|
});
|
|
11940
|
-
return /* @__PURE__ */
|
|
11941
|
-
/* @__PURE__ */
|
|
12139
|
+
return /* @__PURE__ */ jsxs48(Fragment11, { children: [
|
|
12140
|
+
/* @__PURE__ */ jsx68(
|
|
11942
12141
|
RequirementsChecklistView,
|
|
11943
12142
|
{
|
|
11944
12143
|
state,
|
|
@@ -11948,13 +12147,13 @@ function RequirementsChecklistContainer({
|
|
|
11948
12147
|
unauthenticatedState: (
|
|
11949
12148
|
// The sign-in default lives here, not in the View: it is a connected
|
|
11950
12149
|
// component, and a View must render from what it is handed.
|
|
11951
|
-
unauthenticatedState !== void 0 ? unauthenticatedState : /* @__PURE__ */
|
|
12150
|
+
unauthenticatedState !== void 0 ? unauthenticatedState : /* @__PURE__ */ jsx68(CoinListSignInCardContainer, {})
|
|
11952
12151
|
),
|
|
11953
12152
|
className
|
|
11954
12153
|
}
|
|
11955
12154
|
),
|
|
11956
|
-
state.type === "content" && /* @__PURE__ */
|
|
11957
|
-
/* @__PURE__ */
|
|
12155
|
+
state.type === "content" && /* @__PURE__ */ jsxs48(Fragment11, { children: [
|
|
12156
|
+
/* @__PURE__ */ jsx68(
|
|
11958
12157
|
TaxDocumentModalContainer,
|
|
11959
12158
|
{
|
|
11960
12159
|
isOpen: state.taxDocumentOpen,
|
|
@@ -11962,11 +12161,11 @@ function RequirementsChecklistContainer({
|
|
|
11962
12161
|
onSubmitted: () => onEvent({ type: "ON_TAX_DOCUMENT_SUBMITTED" })
|
|
11963
12162
|
}
|
|
11964
12163
|
),
|
|
11965
|
-
state.verification && /* @__PURE__ */
|
|
12164
|
+
state.verification && /* @__PURE__ */ jsx68(
|
|
11966
12165
|
VerificationOverlay,
|
|
11967
12166
|
{
|
|
11968
12167
|
onClose: () => onEvent({ type: "ON_CLOSE_VERIFICATION" }),
|
|
11969
|
-
children: /* @__PURE__ */
|
|
12168
|
+
children: /* @__PURE__ */ jsx68(
|
|
11970
12169
|
IdentityVerificationContainer,
|
|
11971
12170
|
{
|
|
11972
12171
|
levelName: state.verification.levelName,
|
|
@@ -11977,7 +12176,7 @@ function RequirementsChecklistContainer({
|
|
|
11977
12176
|
)
|
|
11978
12177
|
}
|
|
11979
12178
|
),
|
|
11980
|
-
/* @__PURE__ */
|
|
12179
|
+
/* @__PURE__ */ jsx68(
|
|
11981
12180
|
ConnectWalletModalContainer,
|
|
11982
12181
|
{
|
|
11983
12182
|
isOpen: state.connectWalletOpen,
|
|
@@ -12010,7 +12209,7 @@ function pinoClientLogger(options) {
|
|
|
12010
12209
|
}
|
|
12011
12210
|
|
|
12012
12211
|
// src/client/hooks/auth/useCompleteOAuth.ts
|
|
12013
|
-
import { useEffect as
|
|
12212
|
+
import { useEffect as useEffect31, useRef as useRef18 } from "react";
|
|
12014
12213
|
function useCompleteOAuth(options) {
|
|
12015
12214
|
const { coinlist } = useCoinList();
|
|
12016
12215
|
const log = useLogger("useCompleteOAuth");
|
|
@@ -12021,7 +12220,7 @@ function useCompleteOAuth(options) {
|
|
|
12021
12220
|
onFailureRef.current = options.onFailure;
|
|
12022
12221
|
onSuccessRef.current = options.onSuccess;
|
|
12023
12222
|
const hasStartedExchangeRef = useRef18(false);
|
|
12024
|
-
|
|
12223
|
+
useEffect31(() => {
|
|
12025
12224
|
if (typeof window === "undefined") return;
|
|
12026
12225
|
const params = new URLSearchParams(window.location.search);
|
|
12027
12226
|
if (!params.has("code") && !params.has("error")) return;
|
|
@@ -12085,16 +12284,16 @@ function useCompleteOAuth(options) {
|
|
|
12085
12284
|
}
|
|
12086
12285
|
|
|
12087
12286
|
// src/client/hooks/checkout/coin-list/token-sale/data/useParticipations.ts
|
|
12088
|
-
import { useEffect as
|
|
12089
|
-
var
|
|
12287
|
+
import { useEffect as useEffect32, useState as useState33 } from "react";
|
|
12288
|
+
var LOADING_STATE9 = { type: "LOADING" };
|
|
12090
12289
|
function useParticipations(offerId, options = {}) {
|
|
12091
12290
|
const { coinlist, isReady } = useCoinList();
|
|
12092
12291
|
const log = useLogger("useParticipations");
|
|
12093
12292
|
const { data, enabled = true } = options;
|
|
12094
|
-
const [participationsState, setParticipationsState] =
|
|
12095
|
-
data !== void 0 ? { type: "CONTENT", participations: data } :
|
|
12293
|
+
const [participationsState, setParticipationsState] = useState33(
|
|
12294
|
+
data !== void 0 ? { type: "CONTENT", participations: data } : LOADING_STATE9
|
|
12096
12295
|
);
|
|
12097
|
-
|
|
12296
|
+
useEffect32(() => {
|
|
12098
12297
|
let isCancelled = false;
|
|
12099
12298
|
if (!enabled) {
|
|
12100
12299
|
return () => {
|
|
@@ -12103,7 +12302,7 @@ function useParticipations(offerId, options = {}) {
|
|
|
12103
12302
|
}
|
|
12104
12303
|
if (!isReady) {
|
|
12105
12304
|
if (data === void 0) {
|
|
12106
|
-
setParticipationsState(
|
|
12305
|
+
setParticipationsState(LOADING_STATE9);
|
|
12107
12306
|
}
|
|
12108
12307
|
return () => {
|
|
12109
12308
|
isCancelled = true;
|
|
@@ -12114,7 +12313,7 @@ function useParticipations(offerId, options = {}) {
|
|
|
12114
12313
|
isCancelled = true;
|
|
12115
12314
|
};
|
|
12116
12315
|
}
|
|
12117
|
-
setParticipationsState(
|
|
12316
|
+
setParticipationsState(LOADING_STATE9);
|
|
12118
12317
|
coinlist.tokenSale.list(offerId).then((participations) => {
|
|
12119
12318
|
if (!isCancelled) {
|
|
12120
12319
|
log.debug(() => ({
|
|
@@ -12141,16 +12340,16 @@ function useParticipations(offerId, options = {}) {
|
|
|
12141
12340
|
}
|
|
12142
12341
|
|
|
12143
12342
|
// src/client/hooks/offers/data/useOfferDetails.ts
|
|
12144
|
-
import { useEffect as
|
|
12145
|
-
var
|
|
12343
|
+
import { useEffect as useEffect33, useState as useState34 } from "react";
|
|
12344
|
+
var LOADING_STATE10 = { type: "LOADING" };
|
|
12146
12345
|
function useOfferDetails(offerId, options = {}) {
|
|
12147
12346
|
const { coinlist, isReady } = useCoinList();
|
|
12148
12347
|
const log = useLogger("useOfferDetails");
|
|
12149
12348
|
const { data, enabled = true } = options;
|
|
12150
|
-
const [offerDetailsState, setOfferDetailsState] =
|
|
12151
|
-
data !== void 0 ? { type: "CONTENT", offerDetail: data } :
|
|
12349
|
+
const [offerDetailsState, setOfferDetailsState] = useState34(
|
|
12350
|
+
data !== void 0 ? { type: "CONTENT", offerDetail: data } : LOADING_STATE10
|
|
12152
12351
|
);
|
|
12153
|
-
|
|
12352
|
+
useEffect33(() => {
|
|
12154
12353
|
let isCancelled = false;
|
|
12155
12354
|
if (!enabled) {
|
|
12156
12355
|
return () => {
|
|
@@ -12159,7 +12358,7 @@ function useOfferDetails(offerId, options = {}) {
|
|
|
12159
12358
|
}
|
|
12160
12359
|
if (!isReady) {
|
|
12161
12360
|
if (data === void 0) {
|
|
12162
|
-
setOfferDetailsState(
|
|
12361
|
+
setOfferDetailsState(LOADING_STATE10);
|
|
12163
12362
|
}
|
|
12164
12363
|
return () => {
|
|
12165
12364
|
isCancelled = true;
|
|
@@ -12170,7 +12369,7 @@ function useOfferDetails(offerId, options = {}) {
|
|
|
12170
12369
|
isCancelled = true;
|
|
12171
12370
|
};
|
|
12172
12371
|
}
|
|
12173
|
-
setOfferDetailsState(
|
|
12372
|
+
setOfferDetailsState(LOADING_STATE10);
|
|
12174
12373
|
coinlist.offers.get(offerId).then((offerDetail) => {
|
|
12175
12374
|
if (!isCancelled) {
|
|
12176
12375
|
log.debug(() => ({
|
|
@@ -12198,15 +12397,23 @@ function useOfferDetails(offerId, options = {}) {
|
|
|
12198
12397
|
|
|
12199
12398
|
// src/client/hooks/offers/shared/offer-asset-card.types.ts
|
|
12200
12399
|
var OfferAssetCardUi = {
|
|
12201
|
-
|
|
12400
|
+
/**
|
|
12401
|
+
* `tokenMetadata` is the registry's entry for the token the offer is about
|
|
12402
|
+
* (`TokenRegistrySnapshot.forOffer`), or `null` when it lists none. The
|
|
12403
|
+
* registry names win over the offer's own where both exist: they are the
|
|
12404
|
+
* token's canonical name, ticker and artwork, where the offer's are
|
|
12405
|
+
* catalogue copy.
|
|
12406
|
+
*/
|
|
12407
|
+
fromOffer: (offer, tokenMetadata = null) => ({
|
|
12202
12408
|
id: offer.id,
|
|
12203
|
-
|
|
12409
|
+
...tokenMetadata ? { name: tokenMetadata.name, symbol: String(tokenMetadata.symbol) } : {},
|
|
12410
|
+
logo: OfferLogoUi.fromOffer(offer, tokenMetadata)
|
|
12204
12411
|
}),
|
|
12205
|
-
fromDetail: (detail) => ({
|
|
12412
|
+
fromDetail: (detail, tokenMetadata = null) => ({
|
|
12206
12413
|
id: detail.id,
|
|
12207
|
-
name: detail.name,
|
|
12208
|
-
symbol: detail.asset.code,
|
|
12209
|
-
|
|
12414
|
+
name: tokenMetadata?.name ?? detail.name,
|
|
12415
|
+
symbol: tokenMetadata ? String(tokenMetadata.symbol) : detail.asset.code,
|
|
12416
|
+
logo: OfferLogoUi.fromOffer(detail, tokenMetadata)
|
|
12210
12417
|
})
|
|
12211
12418
|
};
|
|
12212
12419
|
|
|
@@ -12248,6 +12455,7 @@ export {
|
|
|
12248
12455
|
OAUTH_STATE_KEY,
|
|
12249
12456
|
OfferAssetCard,
|
|
12250
12457
|
OfferAssetCardUi,
|
|
12458
|
+
OfferLogoUi,
|
|
12251
12459
|
OfferSaleCard,
|
|
12252
12460
|
OfferSaleCardUi,
|
|
12253
12461
|
OffersAssetGrid,
|
|
@@ -12309,6 +12517,7 @@ export {
|
|
|
12309
12517
|
quoteOverAsks,
|
|
12310
12518
|
stablecoinIconUrl,
|
|
12311
12519
|
submitErc20Approval,
|
|
12520
|
+
tokenLogoSrcSet,
|
|
12312
12521
|
tokenLogoUrl,
|
|
12313
12522
|
tokenMetadataOf,
|
|
12314
12523
|
useCheckoutOfferTokenMetadata,
|
|
@@ -12351,6 +12560,7 @@ export {
|
|
|
12351
12560
|
useTaxDocument,
|
|
12352
12561
|
useTaxDocumentModalViewModel,
|
|
12353
12562
|
useTokenMetadata,
|
|
12563
|
+
useTokenRegistry,
|
|
12354
12564
|
validateAmount,
|
|
12355
12565
|
validateSellAmount,
|
|
12356
12566
|
validateSuperstateAmount
|