@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.
@@ -5,7 +5,7 @@ import {
5
5
  SDK_LOGGER_NAME,
6
6
  loggerOverPino,
7
7
  publicClients
8
- } from "../chunk-I5EHOV7V.js";
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-3EOK47CQ.js";
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-VSYGGTI6.js";
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 === "" ? null : AssetIconUrl(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: transaction?.expiresAt ?? null,
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 || isTooCloseToExpiry(secondsLeft)) {
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 byChain = offer.tokens.filter((token) => token.chain === chain);
4855
- const asset = byChain.find((token) => token.role === "swap") ?? byChain.find((token) => token.role === "distribution");
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: transaction?.expiresAt ?? null,
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 || isTooCloseToExpiry2(secondsLeft)) {
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.type, {
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(offer)
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(type, branches) {
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 = type;
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 jsx51, jsxs as jsxs37 } from "react/jsx-runtime";
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__ */ jsx51(
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__ */ jsxs37("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: [
9234
- offer.logoUrl ? /* @__PURE__ */ jsx51("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__ */ jsx51(
9235
- "img",
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
- src: offer.logoUrl,
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__ */ jsxs37("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:flex-1 clcosdk:flex-col clcosdk:items-start clcosdk:justify-center", children: [
9246
- offer.name ? /* @__PURE__ */ jsx51(
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__ */ jsx51("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
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__ */ jsx51("div", { className: containerClassName, children: card }) : card;
9261
- return /* @__PURE__ */ jsx51(CoinListStyleScope, { children: wrapped });
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 jsx52 } from "react/jsx-runtime";
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__ */ jsx52(CoinListStyleScope, { children: /* @__PURE__ */ jsx52(
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__ */ jsx52(
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__ */ jsx52(
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 jsx53, jsxs as jsxs38 } from "react/jsx-runtime";
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 card = /* @__PURE__ */ jsxs38(
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
- offer.logoUrl ? /* @__PURE__ */ jsx53(
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__ */ jsx53(
9380
- "img",
9456
+ children: /* @__PURE__ */ jsx54(
9457
+ ThemedImage,
9381
9458
  {
9382
- src: offer.logoUrl,
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__ */ jsxs38("div", { className: "clcosdk:relative clcosdk:z-10 clcosdk:flex clcosdk:flex-col clcosdk:gap-2 clcosdk:md:gap-3", children: [
9391
- /* @__PURE__ */ jsxs38("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:items-center clcosdk:gap-2.5 clcosdk:md:gap-3", children: [
9392
- offer.logoUrl ? /* @__PURE__ */ jsx53("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__ */ jsx53(
9393
- "img",
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
- src: offer.logoUrl,
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__ */ jsx53(
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__ */ jsx53(
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__ */ jsxs38("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: [
9425
- /* @__PURE__ */ jsxs38("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:items-center clcosdk:gap-2 clcosdk:md:gap-3", children: [
9426
- status.phase === "live" ? /* @__PURE__ */ jsxs38(
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__ */ jsx53("span", { className: "clcosdk-status-dot-ping clcosdk:absolute clcosdk:inset-0 clcosdk:rounded-full clcosdk:bg-positive" }),
9433
- /* @__PURE__ */ jsx53("span", { className: "clcosdk:relative clcosdk:inline-flex clcosdk:size-full clcosdk:rounded-full clcosdk:bg-positive" })
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__ */ jsx53(
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__ */ jsxs38(
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__ */ jsx53("span", { className: "clcosdk:max-md:hidden", children: " offer" }),
9459
- /* @__PURE__ */ jsx53(ArrowRight, { className: "clcosdk:size-4", "aria-hidden": true })
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__ */ jsx53("div", { className: containerClassName, children: card }) : card;
9468
- return /* @__PURE__ */ jsx53(CoinListStyleScope, { children: wrapped });
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 jsx54, jsxs as jsxs39 } from "react/jsx-runtime";
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__ */ jsx54(CoinListStyleScope, { children: /* @__PURE__ */ jsx54(OffersGridViewBody, { ...props }) });
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__ */ jsx54(LoadingState, {});
9577
+ return loading ?? /* @__PURE__ */ jsx55(LoadingState, {});
9499
9578
  case "error":
9500
- return error ?? /* @__PURE__ */ jsx54(ErrorState, { message: state.message });
9579
+ return error ?? /* @__PURE__ */ jsx55(ErrorState, { message: state.message });
9501
9580
  case "empty":
9502
- return emptyState ?? /* @__PURE__ */ jsx54(EmptyState, {});
9581
+ return emptyState ?? /* @__PURE__ */ jsx55(EmptyState, {});
9503
9582
  case "content":
9504
- return /* @__PURE__ */ jsx54(
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__ */ jsx54(
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__ */ jsx54(
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__ */ jsx54(
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__ */ jsx54(
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__ */ jsx54("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading offers..." })
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__ */ jsx54(
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__ */ jsxs39(
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__ */ jsx54(
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__ */ jsx54("p", { className: cn(typeClasses.subhead, "clcosdk:text-text-secondary"), children: "Check back soon for upcoming opportunities." })
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 useCallback6, useMemo as useMemo4 } from "react";
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
- fromOffer: (offer) => ({
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
- tagline: offer.tagline,
9671
- logoUrl: offer.logoUrl,
9672
- startsAt: offer.startsAt,
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
- tagline: detail.tagline,
9679
- logoUrl: detail.logoUrl,
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 = useMemo4(
9692
- () => toUiState(offersState, onOfferClick !== void 0),
9693
- [offersState, onOfferClick]
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 = useCallback6(
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(OfferSaleCardUi.fromOffer),
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 jsx55 } from "react/jsx-runtime";
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__ */ jsx55(OffersGridView, { state, onEvent, ...viewProps });
9956
+ return /* @__PURE__ */ jsx56(OffersGridView, { state, onEvent, ...viewProps });
9758
9957
  }
9759
9958
 
9760
9959
  // src/client/components/requirements/ConnectedWalletList.tsx
9761
- import { useState as useState25 } from "react";
9762
- import { jsx as jsx56, jsxs as jsxs40 } from "react/jsx-runtime";
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] = useState25("idle");
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__ */ jsxs40("div", { className: "clcosdk:flex clcosdk:min-h-9 clcosdk:flex-wrap clcosdk:items-center clcosdk:justify-between clcosdk:gap-2", children: [
9779
- /* @__PURE__ */ jsx56(
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__ */ jsxs40("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-2", children: [
9791
- /* @__PURE__ */ jsx56(
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__ */ jsx56(ClButton, { size: "sm", variant: "destructive", onClick: remove, children: "Remove" }),
9799
- /* @__PURE__ */ jsx56(
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__ */ jsxs40("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-2", children: [
9809
- /* @__PURE__ */ jsx56("span", { className: cn(typeClasses.subhead, "clcosdk:text-error"), children: "Couldn't remove." }),
9810
- /* @__PURE__ */ jsx56(
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__ */ jsx56(
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__ */ jsx56(CoinListStyleScope, { children: /* @__PURE__ */ jsx56(ConnectedWalletListBody, { ...props }) });
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__ */ jsxs40(
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__ */ jsx56(AlertBanner, { variant: "info", content: "Loading your connected wallets\u2026" }) : status === "error" ? /* @__PURE__ */ jsx56(
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__ */ jsx56(AlertBanner, { variant: "info", content: "No wallets connected yet." }) : /* @__PURE__ */ jsx56("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:divide-y clcosdk:divide-divider", children: wallets.map((wallet) => /* @__PURE__ */ jsx56(
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__ */ jsx56(
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 jsx57, jsxs as jsxs41 } from "react/jsx-runtime";
10077
+ import { jsx as jsx58, jsxs as jsxs42 } from "react/jsx-runtime";
9879
10078
  function IdentityVerificationView(props) {
9880
- return /* @__PURE__ */ jsx57(CoinListStyleScope, { children: /* @__PURE__ */ jsx57(IdentityVerificationViewBody, { ...props }) });
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__ */ jsx57(
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__ */ jsx57("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading identity verification..." })
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__ */ jsxs41(
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__ */ jsx57(AlertBanner, { variant: "error", icon: true, content: state.message }),
9910
- state.retryable && /* @__PURE__ */ jsx57(ClButton, { size: "sm", onClick: () => onEvent({ type: "ON_RETRY" }), children: "Try again" })
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__ */ jsx57("div", { className: cn("clcosdk:w-full", className), children: /* @__PURE__ */ jsx57(
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 useCallback8, useEffect as useEffect22, useMemo as useMemo5, useRef as useRef15 } from "react";
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 useCallback7, useEffect as useEffect21, useRef as useRef14, useState as useState26 } from "react";
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 LOADING_STATE4 = { type: "LOADING" };
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] = useState26(IDLE_STATE);
10163
+ const [kycTokenState, setKycTokenState] = useState27(IDLE_STATE);
9965
10164
  const resetPendingRef = useRef14(reset === true);
9966
10165
  const tokenIssuedRef = useRef14(false);
9967
- useEffect21(() => {
10166
+ useEffect22(() => {
9968
10167
  if (!tokenIssuedRef.current) {
9969
10168
  resetPendingRef.current = reset === true;
9970
10169
  }
9971
10170
  }, [reset]);
9972
- const fetchToken = useCallback7(async () => {
9973
- setKycTokenState(LOADING_STATE4);
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
- useEffect22(() => {
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 = useMemo5(() => {
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 = useCallback8(
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 jsx58 } from "react/jsx-runtime";
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__ */ jsx58(
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 jsx59 } from "react/jsx-runtime";
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__ */ jsx59(
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 Fragment9, jsx as jsx60, jsxs as jsxs42 } from "react/jsx-runtime";
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__ */ jsx60(ClButton, { size: "sm", onClick: onAction, children: "Continue" });
10345
+ return /* @__PURE__ */ jsx61(ClButton, { size: "sm", onClick: onAction, children: "Continue" });
10147
10346
  case "pending":
10148
- return /* @__PURE__ */ jsx60(
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__ */ jsx60(AlertBanner, { variant: "success", content: "Identity verified." });
10355
+ return /* @__PURE__ */ jsx61(AlertBanner, { variant: "success", content: "Identity verified." });
10157
10356
  case "rejected":
10158
- return /* @__PURE__ */ jsx60(
10357
+ return /* @__PURE__ */ jsx61(
10159
10358
  AlertBanner,
10160
10359
  {
10161
10360
  variant: "error",
10162
- content: onContactSupport === null ? "Verification rejected." : /* @__PURE__ */ jsxs42(Fragment9, { children: [
10361
+ content: onContactSupport === null ? "Verification rejected." : /* @__PURE__ */ jsxs43(Fragment10, { children: [
10163
10362
  "Verification rejected.",
10164
10363
  " ",
10165
- /* @__PURE__ */ jsx60(
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__ */ jsxs42(Fragment9, { children: [
10190
- /* @__PURE__ */ jsx60(
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__ */ jsx60(
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__ */ jsxs42(Fragment9, { children: [
10211
- onAction !== null && /* @__PURE__ */ jsx60(ClButton, { size: "sm", variant: "secondary", onClick: onAction, children: "Change wallet" }),
10212
- walletsStatus === "loading" ? /* @__PURE__ */ jsx60(
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__ */ jsx60(
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__ */ jsx60(
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__ */ jsxs42(Fragment9, { children: [
10235
- onAction !== null && /* @__PURE__ */ jsx60(ClButton, { size: "sm", onClick: onAction, children: "Connect wallet" }),
10236
- /* @__PURE__ */ jsx60(
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__ */ jsx60(ClButton, { size: "sm", onClick: onAction, children: "Connect wallet" });
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__ */ jsx60(CoinListStyleScope, { children: /* @__PURE__ */ jsxs42(
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__ */ jsxs42(
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__ */ jsxs42("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-3", children: [
10275
- /* @__PURE__ */ jsx60(StepStatusIcon, { status: ui.status }),
10276
- /* @__PURE__ */ jsx60(
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__ */ jsx60(
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__ */ jsx60(
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__ */ jsx60("div", { className: "clcosdk:min-h-0 clcosdk:overflow-hidden", children: /* @__PURE__ */ jsxs42("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-4 clcosdk:px-2 clcosdk:pb-4", children: [
10308
- /* @__PURE__ */ jsx60(
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__ */ jsx60(
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__ */ jsx60(
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 jsx61, jsxs as jsxs43 } from "react/jsx-runtime";
10544
+ import { jsx as jsx62, jsxs as jsxs44 } from "react/jsx-runtime";
10346
10545
  function RequirementsChecklistView(props) {
10347
- return /* @__PURE__ */ jsx61(CoinListStyleScope, { children: /* @__PURE__ */ jsx61(RequirementsChecklistViewBody, { ...props }) });
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__ */ jsx61(LoadingState2, {});
10558
+ return loading ?? /* @__PURE__ */ jsx62(LoadingState2, {});
10360
10559
  case "not-authenticated":
10361
10560
  return unauthenticatedState ?? null;
10362
10561
  case "error":
10363
- return error ?? /* @__PURE__ */ jsx61(
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__ */ jsxs43(
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__ */ jsxs43("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
10382
- /* @__PURE__ */ jsx61("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: state.title }),
10383
- /* @__PURE__ */ jsx61("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: state.description })
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__ */ jsx61("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:divide-y clcosdk:divide-divider", children: state.items.map((row) => /* @__PURE__ */ jsx61(
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__ */ jsx61(
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__ */ jsx61(
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__ */ jsx61(
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__ */ jsx61("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading requirements..." })
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 jsx62, jsxs as jsxs44 } from "react/jsx-runtime";
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__ */ jsx62(CoinListStyleScope, { children: /* @__PURE__ */ jsx62("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__ */ jsxs44(
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__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:items-start clcosdk:justify-between clcosdk:gap-4", children: [
10460
- /* @__PURE__ */ jsx62("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: state.title }),
10461
- /* @__PURE__ */ jsx62(CloseButton, { onClick: () => onEvent({ type: "ON_CLOSE" }) })
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__ */ jsx62(Screen, { screen: state.screen, onEvent })
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__ */ jsx62(LoadingScreen, {});
10673
+ return /* @__PURE__ */ jsx63(LoadingScreen, {});
10475
10674
  case "error":
10476
- return /* @__PURE__ */ jsx62(AlertBanner, { variant: "error", icon: true, content: screen.message });
10675
+ return /* @__PURE__ */ jsx63(AlertBanner, { variant: "error", icon: true, content: screen.message });
10477
10676
  case "review":
10478
- return /* @__PURE__ */ jsx62(
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__ */ jsx62(EditScreen, { fields: screen.fields, onEvent });
10688
+ return /* @__PURE__ */ jsx63(EditScreen, { fields: screen.fields, onEvent });
10490
10689
  case "sign-only":
10491
- return /* @__PURE__ */ jsx62(
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__ */ jsx62(
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__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1", children: [
10512
- /* @__PURE__ */ jsx62("div", { className: "clcosdk:h-3 clcosdk:w-28 clcosdk:animate-pulse clcosdk:rounded clcosdk:bg-surface" }),
10513
- /* @__PURE__ */ jsx62("div", { className: "clcosdk:h-5 clcosdk:w-48 clcosdk:animate-pulse clcosdk:rounded clcosdk:bg-surface" })
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__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
10526
- /* @__PURE__ */ jsx62("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Review your information below. If anything looks incorrect, edit before signing." }),
10527
- piiUnavailable && /* @__PURE__ */ jsx62(
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__ */ jsx62("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__ */ jsxs44(
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__ */ jsx62(
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__ */ jsx62("span", { className: cn(typeClasses.body, "clcosdk:text-text-primary"), children: displayValue })
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__ */ jsx62("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." }),
10553
- signError && /* @__PURE__ */ jsx62(AlertBanner, { variant: "error", icon: true, content: signError }),
10554
- /* @__PURE__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
10555
- /* @__PURE__ */ jsx62(
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__ */ jsx62(
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__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
10583
- /* @__PURE__ */ jsx62("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__ */ jsxs44(
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__ */ jsx62(
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__ */ jsx62(
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__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
10617
- /* @__PURE__ */ jsx62(ClButton, { fullWidth: true, onClick: () => onEvent({ type: "ON_SAVE_EDIT" }), children: "Save & review" }),
10618
- /* @__PURE__ */ jsx62(
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__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
10636
- /* @__PURE__ */ jsx62("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." }),
10637
- signError && /* @__PURE__ */ jsx62(AlertBanner, { variant: "error", icon: true, content: signError }),
10638
- /* @__PURE__ */ jsx62(
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 useCallback10, useEffect as useEffect24, useMemo as useMemo6 } from "react";
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 useCallback9, useEffect as useEffect23, useState as useState27 } from "react";
10854
+ import { useCallback as useCallback10, useEffect as useEffect24, useState as useState28 } from "react";
10656
10855
  var IDLE_SIGN = { type: "idle", error: null };
10657
- var LOADING_STATE5 = { type: "LOADING" };
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] = useState27(LOADING_STATE5);
10731
- useEffect23(() => {
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(LOADING_STATE5);
10938
+ setState(LOADING_STATE6);
10740
10939
  return () => {
10741
10940
  isCancelled = true;
10742
10941
  };
10743
10942
  }
10744
- setState(LOADING_STATE5);
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 = useCallback9(
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 = useCallback9(() => {
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 = useCallback9(() => {
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 = useCallback9(() => {
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 = useCallback9(() => {
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
- useEffect24(() => {
11054
+ useEffect25(() => {
10856
11055
  if (state.type === "SUBMITTED") {
10857
11056
  onSubmitted?.(state.submission);
10858
11057
  onClose();
10859
11058
  }
10860
11059
  }, [state]);
10861
- const uiState = useMemo6(() => {
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 = useCallback10(
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 jsx63 } from "react/jsx-runtime";
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__ */ jsx63(
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 jsx64, jsxs as jsxs45 } from "react/jsx-runtime";
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__ */ jsx64(CoinListStyleScope, { children: /* @__PURE__ */ jsx64(VerificationOverlayBody, { onClose, children }) });
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__ */ jsx64(
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__ */ jsxs45("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: [
10992
- /* @__PURE__ */ jsx64(
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 jsx65, jsxs as jsxs46 } from "react/jsx-runtime";
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__ */ jsx65(CoinListStyleScope, { children: /* @__PURE__ */ jsx65("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__ */ jsxs46(
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__ */ jsxs46("div", { className: "clcosdk:flex clcosdk:items-start clcosdk:justify-between clcosdk:gap-4", children: [
11029
- /* @__PURE__ */ jsx65(
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__ */ jsx65(CloseButton, { onClick: () => onEvent({ type: "ON_CLOSE" }) })
11236
+ /* @__PURE__ */ jsx66(CloseButton, { onClick: () => onEvent({ type: "ON_CLOSE" }) })
11038
11237
  ] }),
11039
- /* @__PURE__ */ jsx65(
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__ */ jsxs46("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
11059
- /* @__PURE__ */ jsx65("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Connect an external wallet to prove ownership and bind it to this offer." }),
11060
- canRequestConnect && /* @__PURE__ */ jsx65(
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__ */ jsxs46("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
11071
- /* @__PURE__ */ jsx65("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." }),
11072
- /* @__PURE__ */ jsxs46("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1 clcosdk:border-t clcosdk:border-divider clcosdk:pt-4", children: [
11073
- /* @__PURE__ */ jsx65(
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__ */ jsx65("span", { className: cn(typeClasses.body, "clcosdk:text-text-primary"), children: screen.shortAddress })
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__ */ jsx65("div", { role: "alert", children: /* @__PURE__ */ jsx65(AlertBanner, { variant: "error", icon: true, content: screen.signError }) }),
11086
- /* @__PURE__ */ jsx65(
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__ */ jsx65(
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 useCallback12, useEffect as useEffect26, useMemo as useMemo7 } from "react";
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 useCallback11, useEffect as useEffect25, useRef as useRef16, useState as useState28 } from "react";
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] = useState28(
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
- useEffect25(() => {
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
- useEffect25(
11460
+ useEffect26(
11262
11461
  () => () => {
11263
11462
  attempt.current += 1;
11264
11463
  },
11265
11464
  []
11266
11465
  );
11267
- const onSign = useCallback11(() => {
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
- useEffect26(() => {
11528
+ useEffect27(() => {
11330
11529
  if (state.type === "CONNECTED") {
11331
11530
  onConnected?.(state.binding);
11332
11531
  onClose();
11333
11532
  }
11334
11533
  }, [state]);
11335
- const uiState = useMemo7(() => {
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 = useCallback12(
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 jsx66 } from "react/jsx-runtime";
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__ */ jsx66(
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 useCallback15, useEffect as useEffect29, useMemo as useMemo8, useRef as useRef17, useState as useState31 } from "react";
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 useCallback13, useEffect as useEffect27, useState as useState29 } from "react";
11405
- var LOADING_STATE6 = { type: "LOADING" };
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] = useState29(
11415
- data !== void 0 ? { type: "CONTENT", addresses: data } : LOADING_STATE6
11613
+ const [addressesState, setAddressesState] = useState30(
11614
+ data !== void 0 ? { type: "CONTENT", addresses: data } : LOADING_STATE7
11416
11615
  );
11417
- const [fetchKey, setFetchKey] = useState29(0);
11418
- const refetch = useCallback13(() => setFetchKey((k) => k + 1), []);
11419
- const disconnect = useCallback13(
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
- useEffect27(() => {
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(LOADING_STATE6);
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(LOADING_STATE6);
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 useCallback14, useEffect as useEffect28, useState as useState30 } from "react";
11483
- var LOADING_STATE7 = { type: "LOADING" };
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] = useState30(
11489
- data !== void 0 ? { type: "CONTENT", ...data } : LOADING_STATE7
11687
+ const [requirementsState, setRequirementsState] = useState31(
11688
+ data !== void 0 ? { type: "CONTENT", ...data } : LOADING_STATE8
11490
11689
  );
11491
- const [fetchKey, setFetchKey] = useState30(0);
11492
- const refetch = useCallback14(() => setFetchKey((k) => k + 1), []);
11493
- useEffect28(() => {
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(LOADING_STATE7);
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(LOADING_STATE7);
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] = useState31(null);
11654
- const [taxDocumentOpen, setTaxDocumentOpen] = useState31(false);
11655
- const [connectWalletOpen, setConnectWalletOpen] = useState31(false);
11656
- const [verifyingRequirementId, setVerifyingRequirementId] = useState31(null);
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
- useEffect29(() => {
11857
+ useEffect30(() => {
11659
11858
  isMountedRef.current = true;
11660
11859
  return () => {
11661
11860
  isMountedRef.current = false;
11662
11861
  };
11663
11862
  }, []);
11664
- const [hasWalletRequirement, setHasWalletRequirement] = useState31(false);
11665
- useEffect29(() => {
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 = useCallback15(
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 = useCallback15(
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 = useMemo8(
11914
+ const requirements = useMemo10(
11716
11915
  () => requirementsState.type === "CONTENT" ? requirementsState.requirements[optionId] ?? [] : [],
11717
11916
  [requirementsState, optionId]
11718
11917
  );
11719
- const statusById = useMemo8(() => {
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 = useMemo8(() => {
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 = useCallback15(
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 = useCallback15(
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 Fragment10, jsx as jsx67, jsxs as jsxs47 } from "react/jsx-runtime";
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__ */ jsxs47(Fragment10, { children: [
11941
- /* @__PURE__ */ jsx67(
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__ */ jsx67(CoinListSignInCardContainer, {})
12150
+ unauthenticatedState !== void 0 ? unauthenticatedState : /* @__PURE__ */ jsx68(CoinListSignInCardContainer, {})
11952
12151
  ),
11953
12152
  className
11954
12153
  }
11955
12154
  ),
11956
- state.type === "content" && /* @__PURE__ */ jsxs47(Fragment10, { children: [
11957
- /* @__PURE__ */ jsx67(
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__ */ jsx67(
12164
+ state.verification && /* @__PURE__ */ jsx68(
11966
12165
  VerificationOverlay,
11967
12166
  {
11968
12167
  onClose: () => onEvent({ type: "ON_CLOSE_VERIFICATION" }),
11969
- children: /* @__PURE__ */ jsx67(
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__ */ jsx67(
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 useEffect30, useRef as useRef18 } from "react";
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
- useEffect30(() => {
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 useEffect31, useState as useState32 } from "react";
12089
- var LOADING_STATE8 = { type: "LOADING" };
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] = useState32(
12095
- data !== void 0 ? { type: "CONTENT", participations: data } : LOADING_STATE8
12293
+ const [participationsState, setParticipationsState] = useState33(
12294
+ data !== void 0 ? { type: "CONTENT", participations: data } : LOADING_STATE9
12096
12295
  );
12097
- useEffect31(() => {
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(LOADING_STATE8);
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(LOADING_STATE8);
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 useEffect32, useState as useState33 } from "react";
12145
- var LOADING_STATE9 = { type: "LOADING" };
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] = useState33(
12151
- data !== void 0 ? { type: "CONTENT", offerDetail: data } : LOADING_STATE9
12349
+ const [offerDetailsState, setOfferDetailsState] = useState34(
12350
+ data !== void 0 ? { type: "CONTENT", offerDetail: data } : LOADING_STATE10
12152
12351
  );
12153
- useEffect32(() => {
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(LOADING_STATE9);
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(LOADING_STATE9);
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
- fromOffer: (offer) => ({
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
- logoUrl: offer.logoUrl
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
- logoUrl: detail.logoUrl
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