@coinlist-co/react 0.12.1-rc.e183ffd → 0.12.1-rc.f2804ef

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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-ONLH57LF.js";
42
+ } from "../chunk-VH34YC3Q.js";
41
43
  import {
42
44
  API_VERSION,
43
45
  AssetDecimals,
@@ -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";
@@ -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}`;
@@ -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,19 +9742,56 @@ 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,
9785
+ ...tokenMetadata ? { name: tokenMetadata.name } : {},
9670
9786
  ...saleWindow(offer),
9671
- logoUrl: offer.logoUrl,
9787
+ logo: OfferLogoUi.fromOffer(offer, tokenMetadata),
9672
9788
  endsAt: offer.endsAt
9673
9789
  }),
9674
- fromDetail: (detail) => ({
9790
+ fromDetail: (detail, tokenMetadata = null) => ({
9675
9791
  id: detail.id,
9676
- name: detail.name,
9792
+ name: tokenMetadata?.name ?? detail.name,
9677
9793
  ...saleWindow(detail),
9678
- logoUrl: detail.logoUrl,
9794
+ logo: OfferLogoUi.fromOffer(detail, tokenMetadata),
9679
9795
  endsAt: detail.endsAt
9680
9796
  })
9681
9797
  };
@@ -9693,17 +9809,80 @@ function saleWindow(offer) {
9693
9809
  }
9694
9810
  }
9695
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
+ }
9870
+
9696
9871
  // src/client/hooks/offers/grid/useOffersGridViewModel.ts
9697
9872
  var NOT_AUTHENTICATED_MESSAGE = "Sign in to view available offers.";
9698
9873
  var GENERIC_ERROR_MESSAGE = "Unable to load offers right now. Please try again.";
9699
9874
  function useOffersGridViewModel(options = {}) {
9700
9875
  const { data, onOfferClick, enabled = true } = options;
9701
- const { offersState } = useOffers({ data, enabled });
9702
- const state = useMemo4(
9703
- () => toUiState(offersState, onOfferClick !== void 0),
9704
- [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]
9705
9884
  );
9706
- const onEvent = useCallback6(
9885
+ const onEvent = useCallback7(
9707
9886
  (event) => {
9708
9887
  switch (event.type) {
9709
9888
  case "ON_OFFER_CLICK": {
@@ -9726,7 +9905,7 @@ function useOffersGridViewModel(options = {}) {
9726
9905
  );
9727
9906
  return { state, onEvent };
9728
9907
  }
9729
- function toUiState(offersState, interactive) {
9908
+ function toUiState(offersState, registryState, interactive) {
9730
9909
  switch (offersState.type) {
9731
9910
  case "LOADING":
9732
9911
  return { type: "loading" };
@@ -9739,9 +9918,18 @@ function toUiState(offersState, interactive) {
9739
9918
  if (offersState.offers.length === 0) {
9740
9919
  return { type: "empty" };
9741
9920
  }
9921
+ if (registryState.type === "LOADING") {
9922
+ return { type: "loading" };
9923
+ }
9924
+ const registry = registryState.type === "CONTENT" ? registryState.registry : null;
9742
9925
  return {
9743
9926
  type: "content",
9744
- 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
+ ),
9745
9933
  interactive
9746
9934
  };
9747
9935
  }
@@ -9753,7 +9941,7 @@ function toUiState(offersState, interactive) {
9753
9941
  }
9754
9942
 
9755
9943
  // src/client/components/offers/grid/OffersGridContainer.tsx
9756
- import { jsx as jsx55 } from "react/jsx-runtime";
9944
+ import { jsx as jsx56 } from "react/jsx-runtime";
9757
9945
  function OffersGridContainer({
9758
9946
  data,
9759
9947
  onOfferClick,
@@ -9765,17 +9953,17 @@ function OffersGridContainer({
9765
9953
  onOfferClick,
9766
9954
  enabled
9767
9955
  });
9768
- return /* @__PURE__ */ jsx55(OffersGridView, { state, onEvent, ...viewProps });
9956
+ return /* @__PURE__ */ jsx56(OffersGridView, { state, onEvent, ...viewProps });
9769
9957
  }
9770
9958
 
9771
9959
  // src/client/components/requirements/ConnectedWalletList.tsx
9772
- import { useState as useState25 } from "react";
9773
- 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";
9774
9962
  function ConnectedWalletRow({
9775
9963
  wallet,
9776
9964
  onRemove
9777
9965
  }) {
9778
- const [state, setState] = useState25("idle");
9966
+ const [state, setState] = useState26("idle");
9779
9967
  const remove = async () => {
9780
9968
  if (!onRemove) return;
9781
9969
  setState("removing");
@@ -9786,8 +9974,8 @@ function ConnectedWalletRow({
9786
9974
  setState("error");
9787
9975
  }
9788
9976
  };
9789
- return /* @__PURE__ */ jsxs40("div", { className: "clcosdk:flex clcosdk:min-h-9 clcosdk:flex-wrap clcosdk:items-center clcosdk:justify-between clcosdk:gap-2", children: [
9790
- /* @__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(
9791
9979
  "span",
9792
9980
  {
9793
9981
  title: wallet.address,
@@ -9798,16 +9986,16 @@ function ConnectedWalletRow({
9798
9986
  children: wallet.shortAddress
9799
9987
  }
9800
9988
  ),
9801
- onRemove != null && (state === "confirming" ? /* @__PURE__ */ jsxs40("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-2", children: [
9802
- /* @__PURE__ */ jsx56(
9989
+ onRemove != null && (state === "confirming" ? /* @__PURE__ */ jsxs41("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-2", children: [
9990
+ /* @__PURE__ */ jsx57(
9803
9991
  "span",
9804
9992
  {
9805
9993
  className: cn(typeClasses.subhead, "clcosdk:text-text-secondary"),
9806
9994
  children: "Remove?"
9807
9995
  }
9808
9996
  ),
9809
- /* @__PURE__ */ jsx56(ClButton, { size: "sm", variant: "destructive", onClick: remove, children: "Remove" }),
9810
- /* @__PURE__ */ jsx56(
9997
+ /* @__PURE__ */ jsx57(ClButton, { size: "sm", variant: "destructive", onClick: remove, children: "Remove" }),
9998
+ /* @__PURE__ */ jsx57(
9811
9999
  ClButton,
9812
10000
  {
9813
10001
  size: "sm",
@@ -9816,9 +10004,9 @@ function ConnectedWalletRow({
9816
10004
  children: "Cancel"
9817
10005
  }
9818
10006
  )
9819
- ] }) : state === "error" ? /* @__PURE__ */ jsxs40("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-2", children: [
9820
- /* @__PURE__ */ jsx56("span", { className: cn(typeClasses.subhead, "clcosdk:text-error"), children: "Couldn't remove." }),
9821
- /* @__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(
9822
10010
  ClButton,
9823
10011
  {
9824
10012
  size: "sm",
@@ -9827,7 +10015,7 @@ function ConnectedWalletRow({
9827
10015
  children: "Try again"
9828
10016
  }
9829
10017
  )
9830
- ] }) : /* @__PURE__ */ jsx56(
10018
+ ] }) : /* @__PURE__ */ jsx57(
9831
10019
  ClButton,
9832
10020
  {
9833
10021
  size: "sm",
@@ -9840,7 +10028,7 @@ function ConnectedWalletRow({
9840
10028
  ] });
9841
10029
  }
9842
10030
  function ConnectedWalletList(props) {
9843
- return /* @__PURE__ */ jsx56(CoinListStyleScope, { children: /* @__PURE__ */ jsx56(ConnectedWalletListBody, { ...props }) });
10031
+ return /* @__PURE__ */ jsx57(CoinListStyleScope, { children: /* @__PURE__ */ jsx57(ConnectedWalletListBody, { ...props }) });
9844
10032
  }
9845
10033
  function ConnectedWalletListBody({
9846
10034
  wallets,
@@ -9850,18 +10038,18 @@ function ConnectedWalletListBody({
9850
10038
  status = "ready",
9851
10039
  className
9852
10040
  }) {
9853
- return /* @__PURE__ */ jsxs40(
10041
+ return /* @__PURE__ */ jsxs41(
9854
10042
  "div",
9855
10043
  {
9856
10044
  className: cn("clcosdk:flex clcosdk:flex-col clcosdk:gap-2", className),
9857
10045
  children: [
9858
- 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(
9859
10047
  AlertBanner,
9860
10048
  {
9861
10049
  variant: "error",
9862
10050
  content: "Couldn't load your connected wallets."
9863
10051
  }
9864
- ) : 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(
9865
10053
  ConnectedWalletRow,
9866
10054
  {
9867
10055
  wallet,
@@ -9869,7 +10057,7 @@ function ConnectedWalletListBody({
9869
10057
  },
9870
10058
  wallet.id
9871
10059
  )) }),
9872
- onAdd != null && status !== "loading" && /* @__PURE__ */ jsx56(
10060
+ onAdd != null && status !== "loading" && /* @__PURE__ */ jsx57(
9873
10061
  ClButton,
9874
10062
  {
9875
10063
  size: "sm",
@@ -9886,9 +10074,9 @@ function ConnectedWalletListBody({
9886
10074
 
9887
10075
  // src/client/components/requirements/identity-verification/IdentityVerificationView.tsx
9888
10076
  import SumsubWebSdk from "@sumsub/websdk-react";
9889
- import { jsx as jsx57, jsxs as jsxs41 } from "react/jsx-runtime";
10077
+ import { jsx as jsx58, jsxs as jsxs42 } from "react/jsx-runtime";
9890
10078
  function IdentityVerificationView(props) {
9891
- return /* @__PURE__ */ jsx57(CoinListStyleScope, { children: /* @__PURE__ */ jsx57(IdentityVerificationViewBody, { ...props }) });
10079
+ return /* @__PURE__ */ jsx58(CoinListStyleScope, { children: /* @__PURE__ */ jsx58(IdentityVerificationViewBody, { ...props }) });
9892
10080
  }
9893
10081
  function IdentityVerificationViewBody({
9894
10082
  state,
@@ -9897,7 +10085,7 @@ function IdentityVerificationViewBody({
9897
10085
  }) {
9898
10086
  switch (state.type) {
9899
10087
  case "loading":
9900
- return /* @__PURE__ */ jsx57(
10088
+ return /* @__PURE__ */ jsx58(
9901
10089
  "output",
9902
10090
  {
9903
10091
  "aria-live": "polite",
@@ -9905,11 +10093,11 @@ function IdentityVerificationViewBody({
9905
10093
  "clcosdk:flex clcosdk:min-h-40 clcosdk:items-center clcosdk:justify-center",
9906
10094
  className
9907
10095
  ),
9908
- 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..." })
9909
10097
  }
9910
10098
  );
9911
10099
  case "error":
9912
- return /* @__PURE__ */ jsxs41(
10100
+ return /* @__PURE__ */ jsxs42(
9913
10101
  "div",
9914
10102
  {
9915
10103
  className: cn(
@@ -9917,13 +10105,13 @@ function IdentityVerificationViewBody({
9917
10105
  className
9918
10106
  ),
9919
10107
  children: [
9920
- /* @__PURE__ */ jsx57(AlertBanner, { variant: "error", icon: true, content: state.message }),
9921
- 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" })
9922
10110
  ]
9923
10111
  }
9924
10112
  );
9925
10113
  case "ready":
9926
- 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(
9927
10115
  SumsubWebSdk,
9928
10116
  {
9929
10117
  accessToken: state.accessToken,
@@ -9963,25 +10151,25 @@ function toError(error) {
9963
10151
  }
9964
10152
 
9965
10153
  // src/client/hooks/requirements/identity-verification/useIdentityVerificationViewModel.ts
9966
- 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";
9967
10155
 
9968
10156
  // src/client/hooks/requirements/data/useKycToken.ts
9969
- 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";
9970
10158
  var IDLE_STATE = { type: "IDLE" };
9971
- var LOADING_STATE4 = { type: "LOADING" };
10159
+ var LOADING_STATE5 = { type: "LOADING" };
9972
10160
  function useKycToken(levelName, reset) {
9973
10161
  const { coinlist } = useCoinList();
9974
10162
  const log = useLogger("useKycToken");
9975
- const [kycTokenState, setKycTokenState] = useState26(IDLE_STATE);
10163
+ const [kycTokenState, setKycTokenState] = useState27(IDLE_STATE);
9976
10164
  const resetPendingRef = useRef14(reset === true);
9977
10165
  const tokenIssuedRef = useRef14(false);
9978
- useEffect21(() => {
10166
+ useEffect22(() => {
9979
10167
  if (!tokenIssuedRef.current) {
9980
10168
  resetPendingRef.current = reset === true;
9981
10169
  }
9982
10170
  }, [reset]);
9983
- const fetchToken = useCallback7(async () => {
9984
- setKycTokenState(LOADING_STATE4);
10171
+ const fetchToken = useCallback8(async () => {
10172
+ setKycTokenState(LOADING_STATE5);
9985
10173
  try {
9986
10174
  const kycToken = await coinlist.requirements.createKycToken({
9987
10175
  levelName,
@@ -10015,7 +10203,7 @@ function useIdentityVerificationViewModel(options = {}) {
10015
10203
  const { levelName, reset, locale, onSubmitted, onError } = options;
10016
10204
  const { kycTokenState, fetchToken } = useKycToken(levelName, reset);
10017
10205
  const fetchedRef = useRef15(false);
10018
- useEffect22(() => {
10206
+ useEffect23(() => {
10019
10207
  if (fetchedRef.current) {
10020
10208
  return;
10021
10209
  }
@@ -10023,7 +10211,7 @@ function useIdentityVerificationViewModel(options = {}) {
10023
10211
  fetchToken().catch(() => {
10024
10212
  });
10025
10213
  }, [fetchToken]);
10026
- const state = useMemo5(() => {
10214
+ const state = useMemo7(() => {
10027
10215
  switch (kycTokenState.type) {
10028
10216
  case "IDLE":
10029
10217
  case "LOADING":
@@ -10049,7 +10237,7 @@ function useIdentityVerificationViewModel(options = {}) {
10049
10237
  }
10050
10238
  }
10051
10239
  }, [kycTokenState, locale, fetchToken]);
10052
- const onEvent = useCallback8(
10240
+ const onEvent = useCallback9(
10053
10241
  (event) => {
10054
10242
  switch (event.type) {
10055
10243
  case "ON_RETRY":
@@ -10074,7 +10262,7 @@ function useIdentityVerificationViewModel(options = {}) {
10074
10262
  }
10075
10263
 
10076
10264
  // src/client/components/requirements/identity-verification/IdentityVerificationContainer.tsx
10077
- import { jsx as jsx58 } from "react/jsx-runtime";
10265
+ import { jsx as jsx59 } from "react/jsx-runtime";
10078
10266
  function IdentityVerificationContainer({
10079
10267
  levelName,
10080
10268
  reset,
@@ -10090,7 +10278,7 @@ function IdentityVerificationContainer({
10090
10278
  onSubmitted,
10091
10279
  onError
10092
10280
  });
10093
- return /* @__PURE__ */ jsx58(
10281
+ return /* @__PURE__ */ jsx59(
10094
10282
  IdentityVerificationView,
10095
10283
  {
10096
10284
  state,
@@ -10105,7 +10293,7 @@ import { ChevronRight } from "lucide-react";
10105
10293
 
10106
10294
  // src/client/components/design-system/StepStatusIcon.tsx
10107
10295
  import { CircleCheck as CircleCheck2, CircleX, Info as Info5 } from "lucide-react";
10108
- import { jsx as jsx59 } from "react/jsx-runtime";
10296
+ import { jsx as jsx60 } from "react/jsx-runtime";
10109
10297
  var statusConfig = {
10110
10298
  required: {
10111
10299
  Icon: Info5,
@@ -10130,7 +10318,7 @@ var statusConfig = {
10130
10318
  };
10131
10319
  function StepStatusIcon({ status, className }) {
10132
10320
  const { Icon, colorClass, fillClass } = statusConfig[status];
10133
- return /* @__PURE__ */ jsx59(
10321
+ return /* @__PURE__ */ jsx60(
10134
10322
  Icon,
10135
10323
  {
10136
10324
  className: cn(
@@ -10145,7 +10333,7 @@ function StepStatusIcon({ status, className }) {
10145
10333
  }
10146
10334
 
10147
10335
  // src/client/components/requirements/RequirementItem.tsx
10148
- 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";
10149
10337
  function VerificationActionZone({
10150
10338
  status,
10151
10339
  onAction,
@@ -10154,9 +10342,9 @@ function VerificationActionZone({
10154
10342
  switch (status) {
10155
10343
  case "required":
10156
10344
  if (onAction === null) return null;
10157
- return /* @__PURE__ */ jsx60(ClButton, { size: "sm", onClick: onAction, children: "Continue" });
10345
+ return /* @__PURE__ */ jsx61(ClButton, { size: "sm", onClick: onAction, children: "Continue" });
10158
10346
  case "pending":
10159
- return /* @__PURE__ */ jsx60(
10347
+ return /* @__PURE__ */ jsx61(
10160
10348
  AlertBanner,
10161
10349
  {
10162
10350
  variant: "warning",
@@ -10164,16 +10352,16 @@ function VerificationActionZone({
10164
10352
  }
10165
10353
  );
10166
10354
  case "completed":
10167
- return /* @__PURE__ */ jsx60(AlertBanner, { variant: "success", content: "Identity verified." });
10355
+ return /* @__PURE__ */ jsx61(AlertBanner, { variant: "success", content: "Identity verified." });
10168
10356
  case "rejected":
10169
- return /* @__PURE__ */ jsx60(
10357
+ return /* @__PURE__ */ jsx61(
10170
10358
  AlertBanner,
10171
10359
  {
10172
10360
  variant: "error",
10173
- content: onContactSupport === null ? "Verification rejected." : /* @__PURE__ */ jsxs42(Fragment9, { children: [
10361
+ content: onContactSupport === null ? "Verification rejected." : /* @__PURE__ */ jsxs43(Fragment10, { children: [
10174
10362
  "Verification rejected.",
10175
10363
  " ",
10176
- /* @__PURE__ */ jsx60(
10364
+ /* @__PURE__ */ jsx61(
10177
10365
  "button",
10178
10366
  {
10179
10367
  type: "button",
@@ -10197,8 +10385,8 @@ function WalletActionZone({
10197
10385
  onRemoveWallet
10198
10386
  }) {
10199
10387
  if (multiWallet) {
10200
- return /* @__PURE__ */ jsxs42(Fragment9, { children: [
10201
- /* @__PURE__ */ jsx60(
10388
+ return /* @__PURE__ */ jsxs43(Fragment10, { children: [
10389
+ /* @__PURE__ */ jsx61(
10202
10390
  ConnectedWalletList,
10203
10391
  {
10204
10392
  wallets: connectedWallets,
@@ -10207,7 +10395,7 @@ function WalletActionZone({
10207
10395
  status: walletsStatus
10208
10396
  }
10209
10397
  ),
10210
- status === "rejected" && /* @__PURE__ */ jsx60(
10398
+ status === "rejected" && /* @__PURE__ */ jsx61(
10211
10399
  AlertBanner,
10212
10400
  {
10213
10401
  variant: "error",
@@ -10218,21 +10406,21 @@ function WalletActionZone({
10218
10406
  }
10219
10407
  if (status === "completed") {
10220
10408
  const connected = connectedWallets[0];
10221
- return /* @__PURE__ */ jsxs42(Fragment9, { children: [
10222
- onAction !== null && /* @__PURE__ */ jsx60(ClButton, { size: "sm", variant: "secondary", onClick: onAction, children: "Change wallet" }),
10223
- 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(
10224
10412
  AlertBanner,
10225
10413
  {
10226
10414
  variant: "info",
10227
10415
  content: "Loading your connected wallet\u2026"
10228
10416
  }
10229
- ) : walletsStatus === "error" ? /* @__PURE__ */ jsx60(
10417
+ ) : walletsStatus === "error" ? /* @__PURE__ */ jsx61(
10230
10418
  AlertBanner,
10231
10419
  {
10232
10420
  variant: "error",
10233
10421
  content: "Couldn't load your connected wallet."
10234
10422
  }
10235
- ) : /* @__PURE__ */ jsx60(
10423
+ ) : /* @__PURE__ */ jsx61(
10236
10424
  AlertBanner,
10237
10425
  {
10238
10426
  variant: "success",
@@ -10242,9 +10430,9 @@ function WalletActionZone({
10242
10430
  ] });
10243
10431
  }
10244
10432
  if (status === "rejected") {
10245
- return /* @__PURE__ */ jsxs42(Fragment9, { children: [
10246
- onAction !== null && /* @__PURE__ */ jsx60(ClButton, { size: "sm", onClick: onAction, children: "Connect wallet" }),
10247
- /* @__PURE__ */ jsx60(
10433
+ return /* @__PURE__ */ jsxs43(Fragment10, { children: [
10434
+ onAction !== null && /* @__PURE__ */ jsx61(ClButton, { size: "sm", onClick: onAction, children: "Connect wallet" }),
10435
+ /* @__PURE__ */ jsx61(
10248
10436
  AlertBanner,
10249
10437
  {
10250
10438
  variant: "error",
@@ -10254,7 +10442,7 @@ function WalletActionZone({
10254
10442
  ] });
10255
10443
  }
10256
10444
  if (onAction === null) return null;
10257
- return /* @__PURE__ */ jsx60(ClButton, { size: "sm", onClick: onAction, children: "Connect wallet" });
10445
+ return /* @__PURE__ */ jsx61(ClButton, { size: "sm", onClick: onAction, children: "Connect wallet" });
10258
10446
  }
10259
10447
  function RequirementItem({
10260
10448
  ui,
@@ -10266,7 +10454,7 @@ function RequirementItem({
10266
10454
  walletsStatus,
10267
10455
  onContactSupport
10268
10456
  }) {
10269
- return /* @__PURE__ */ jsx60(CoinListStyleScope, { children: /* @__PURE__ */ jsxs42(
10457
+ return /* @__PURE__ */ jsx61(CoinListStyleScope, { children: /* @__PURE__ */ jsxs43(
10270
10458
  "div",
10271
10459
  {
10272
10460
  className: cn(
@@ -10274,7 +10462,7 @@ function RequirementItem({
10274
10462
  className
10275
10463
  ),
10276
10464
  children: [
10277
- /* @__PURE__ */ jsxs42(
10465
+ /* @__PURE__ */ jsxs43(
10278
10466
  "button",
10279
10467
  {
10280
10468
  type: "button",
@@ -10282,9 +10470,9 @@ function RequirementItem({
10282
10470
  "aria-expanded": expanded,
10283
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",
10284
10472
  children: [
10285
- /* @__PURE__ */ jsxs42("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-3", children: [
10286
- /* @__PURE__ */ jsx60(StepStatusIcon, { status: ui.status }),
10287
- /* @__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(
10288
10476
  "span",
10289
10477
  {
10290
10478
  className: cn(
@@ -10295,7 +10483,7 @@ function RequirementItem({
10295
10483
  }
10296
10484
  )
10297
10485
  ] }),
10298
- /* @__PURE__ */ jsx60(
10486
+ /* @__PURE__ */ jsx61(
10299
10487
  ChevronRight,
10300
10488
  {
10301
10489
  className: cn(
@@ -10308,15 +10496,15 @@ function RequirementItem({
10308
10496
  ]
10309
10497
  }
10310
10498
  ),
10311
- /* @__PURE__ */ jsx60(
10499
+ /* @__PURE__ */ jsx61(
10312
10500
  "div",
10313
10501
  {
10314
10502
  className: cn(
10315
10503
  "clcosdk:grid clcosdk:transition-[grid-template-rows] clcosdk:duration-300 clcosdk:ease-in-out",
10316
10504
  expanded ? "clcosdk:grid-rows-[1fr]" : "clcosdk:grid-rows-[0fr]"
10317
10505
  ),
10318
- 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: [
10319
- /* @__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(
10320
10508
  "p",
10321
10509
  {
10322
10510
  className: cn(
@@ -10326,14 +10514,14 @@ function RequirementItem({
10326
10514
  children: ui.description
10327
10515
  }
10328
10516
  ),
10329
- ui.variant === "verification" ? /* @__PURE__ */ jsx60(
10517
+ ui.variant === "verification" ? /* @__PURE__ */ jsx61(
10330
10518
  VerificationActionZone,
10331
10519
  {
10332
10520
  status: ui.status,
10333
10521
  onAction,
10334
10522
  onContactSupport
10335
10523
  }
10336
- ) : /* @__PURE__ */ jsx60(
10524
+ ) : /* @__PURE__ */ jsx61(
10337
10525
  WalletActionZone,
10338
10526
  {
10339
10527
  status: ui.status,
@@ -10353,9 +10541,9 @@ function RequirementItem({
10353
10541
  }
10354
10542
 
10355
10543
  // src/client/components/requirements/RequirementsChecklistView.tsx
10356
- import { jsx as jsx61, jsxs as jsxs43 } from "react/jsx-runtime";
10544
+ import { jsx as jsx62, jsxs as jsxs44 } from "react/jsx-runtime";
10357
10545
  function RequirementsChecklistView(props) {
10358
- return /* @__PURE__ */ jsx61(CoinListStyleScope, { children: /* @__PURE__ */ jsx61(RequirementsChecklistViewBody, { ...props }) });
10546
+ return /* @__PURE__ */ jsx62(CoinListStyleScope, { children: /* @__PURE__ */ jsx62(RequirementsChecklistViewBody, { ...props }) });
10359
10547
  }
10360
10548
  function RequirementsChecklistViewBody({
10361
10549
  state,
@@ -10367,11 +10555,11 @@ function RequirementsChecklistViewBody({
10367
10555
  }) {
10368
10556
  switch (state.type) {
10369
10557
  case "loading":
10370
- return loading ?? /* @__PURE__ */ jsx61(LoadingState2, {});
10558
+ return loading ?? /* @__PURE__ */ jsx62(LoadingState2, {});
10371
10559
  case "not-authenticated":
10372
10560
  return unauthenticatedState ?? null;
10373
10561
  case "error":
10374
- return error ?? /* @__PURE__ */ jsx61(
10562
+ return error ?? /* @__PURE__ */ jsx62(
10375
10563
  AlertBanner,
10376
10564
  {
10377
10565
  variant: "error",
@@ -10381,7 +10569,7 @@ function RequirementsChecklistViewBody({
10381
10569
  }
10382
10570
  );
10383
10571
  case "content":
10384
- return /* @__PURE__ */ jsxs43(
10572
+ return /* @__PURE__ */ jsxs44(
10385
10573
  "div",
10386
10574
  {
10387
10575
  className: cn(
@@ -10389,11 +10577,11 @@ function RequirementsChecklistViewBody({
10389
10577
  className
10390
10578
  ),
10391
10579
  children: [
10392
- /* @__PURE__ */ jsxs43("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
10393
- /* @__PURE__ */ jsx61("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: state.title }),
10394
- /* @__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 })
10395
10583
  ] }),
10396
- /* @__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(
10397
10585
  RequirementItem,
10398
10586
  {
10399
10587
  ui: row.item,
@@ -10412,7 +10600,7 @@ function RequirementsChecklistViewBody({
10412
10600
  },
10413
10601
  row.id
10414
10602
  )) }),
10415
- state.ineligible && /* @__PURE__ */ jsx61(
10603
+ state.ineligible && /* @__PURE__ */ jsx62(
10416
10604
  AlertBanner,
10417
10605
  {
10418
10606
  variant: "error",
@@ -10420,7 +10608,7 @@ function RequirementsChecklistViewBody({
10420
10608
  content: "You are not eligible to participate."
10421
10609
  }
10422
10610
  ),
10423
- state.continueAction && /* @__PURE__ */ jsx61(
10611
+ state.continueAction && /* @__PURE__ */ jsx62(
10424
10612
  ClButton,
10425
10613
  {
10426
10614
  fullWidth: true,
@@ -10439,18 +10627,18 @@ function RequirementsChecklistViewBody({
10439
10627
  }
10440
10628
  }
10441
10629
  function LoadingState2() {
10442
- return /* @__PURE__ */ jsx61(
10630
+ return /* @__PURE__ */ jsx62(
10443
10631
  "output",
10444
10632
  {
10445
10633
  "aria-live": "polite",
10446
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",
10447
- 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..." })
10448
10636
  }
10449
10637
  );
10450
10638
  }
10451
10639
 
10452
10640
  // src/client/components/requirements/tax-document/TaxDocumentModalView.tsx
10453
- import { jsx as jsx62, jsxs as jsxs44 } from "react/jsx-runtime";
10641
+ import { jsx as jsx63, jsxs as jsxs45 } from "react/jsx-runtime";
10454
10642
  function TaxDocumentModalView({
10455
10643
  state,
10456
10644
  onEvent,
@@ -10459,7 +10647,7 @@ function TaxDocumentModalView({
10459
10647
  if (state.type === "hidden") {
10460
10648
  return null;
10461
10649
  }
10462
- 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(
10463
10651
  "div",
10464
10652
  {
10465
10653
  className: cn(
@@ -10467,11 +10655,11 @@ function TaxDocumentModalView({
10467
10655
  className
10468
10656
  ),
10469
10657
  children: [
10470
- /* @__PURE__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:items-start clcosdk:justify-between clcosdk:gap-4", children: [
10471
- /* @__PURE__ */ jsx62("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: state.title }),
10472
- /* @__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" }) })
10473
10661
  ] }),
10474
- /* @__PURE__ */ jsx62(Screen, { screen: state.screen, onEvent })
10662
+ /* @__PURE__ */ jsx63(Screen, { screen: state.screen, onEvent })
10475
10663
  ]
10476
10664
  }
10477
10665
  ) }) });
@@ -10482,11 +10670,11 @@ function Screen({
10482
10670
  }) {
10483
10671
  switch (screen.type) {
10484
10672
  case "loading":
10485
- return /* @__PURE__ */ jsx62(LoadingScreen, {});
10673
+ return /* @__PURE__ */ jsx63(LoadingScreen, {});
10486
10674
  case "error":
10487
- return /* @__PURE__ */ jsx62(AlertBanner, { variant: "error", icon: true, content: screen.message });
10675
+ return /* @__PURE__ */ jsx63(AlertBanner, { variant: "error", icon: true, content: screen.message });
10488
10676
  case "review":
10489
- return /* @__PURE__ */ jsx62(
10677
+ return /* @__PURE__ */ jsx63(
10490
10678
  ReviewScreen,
10491
10679
  {
10492
10680
  fields: screen.fields,
@@ -10497,9 +10685,9 @@ function Screen({
10497
10685
  }
10498
10686
  );
10499
10687
  case "editing":
10500
- return /* @__PURE__ */ jsx62(EditScreen, { fields: screen.fields, onEvent });
10688
+ return /* @__PURE__ */ jsx63(EditScreen, { fields: screen.fields, onEvent });
10501
10689
  case "sign-only":
10502
- return /* @__PURE__ */ jsx62(
10690
+ return /* @__PURE__ */ jsx63(
10503
10691
  SignOnlyScreen,
10504
10692
  {
10505
10693
  signing: screen.signing,
@@ -10514,14 +10702,14 @@ function Screen({
10514
10702
  }
10515
10703
  }
10516
10704
  function LoadingScreen() {
10517
- return /* @__PURE__ */ jsx62(
10705
+ return /* @__PURE__ */ jsx63(
10518
10706
  "output",
10519
10707
  {
10520
10708
  "aria-live": "polite",
10521
10709
  className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-4",
10522
- children: [0, 1, 2, 3, 4].map((row) => /* @__PURE__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1", children: [
10523
- /* @__PURE__ */ jsx62("div", { className: "clcosdk:h-3 clcosdk:w-28 clcosdk:animate-pulse clcosdk:rounded clcosdk:bg-surface" }),
10524
- /* @__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" })
10525
10713
  ] }, row))
10526
10714
  }
10527
10715
  );
@@ -10533,9 +10721,9 @@ function ReviewScreen({
10533
10721
  signError,
10534
10722
  onEvent
10535
10723
  }) {
10536
- return /* @__PURE__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
10537
- /* @__PURE__ */ jsx62("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Review your information below. If anything looks incorrect, edit before signing." }),
10538
- 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(
10539
10727
  AlertBanner,
10540
10728
  {
10541
10729
  variant: "info",
@@ -10543,27 +10731,27 @@ function ReviewScreen({
10543
10731
  content: "We don't have this information on file yet \u2014 please fill it in below."
10544
10732
  }
10545
10733
  ),
10546
- /* @__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(
10547
10735
  "div",
10548
10736
  {
10549
10737
  className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1",
10550
10738
  children: [
10551
- /* @__PURE__ */ jsx62(
10739
+ /* @__PURE__ */ jsx63(
10552
10740
  "span",
10553
10741
  {
10554
10742
  className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
10555
10743
  children: label
10556
10744
  }
10557
10745
  ),
10558
- /* @__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 })
10559
10747
  ]
10560
10748
  },
10561
10749
  field
10562
10750
  )) }),
10563
- /* @__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." }),
10564
- signError && /* @__PURE__ */ jsx62(AlertBanner, { variant: "error", icon: true, content: signError }),
10565
- /* @__PURE__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
10566
- /* @__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(
10567
10755
  ClButton,
10568
10756
  {
10569
10757
  fullWidth: true,
@@ -10573,7 +10761,7 @@ function ReviewScreen({
10573
10761
  children: "Sign W-8BEN"
10574
10762
  }
10575
10763
  ),
10576
- /* @__PURE__ */ jsx62(
10764
+ /* @__PURE__ */ jsx63(
10577
10765
  ClButton,
10578
10766
  {
10579
10767
  fullWidth: true,
@@ -10590,20 +10778,20 @@ function EditScreen({
10590
10778
  fields,
10591
10779
  onEvent
10592
10780
  }) {
10593
- return /* @__PURE__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
10594
- /* @__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(
10595
10783
  "label",
10596
10784
  {
10597
10785
  className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1",
10598
10786
  children: [
10599
- /* @__PURE__ */ jsx62(
10787
+ /* @__PURE__ */ jsx63(
10600
10788
  "span",
10601
10789
  {
10602
10790
  className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
10603
10791
  children: label
10604
10792
  }
10605
10793
  ),
10606
- /* @__PURE__ */ jsx62(
10794
+ /* @__PURE__ */ jsx63(
10607
10795
  "input",
10608
10796
  {
10609
10797
  type: "text",
@@ -10624,9 +10812,9 @@ function EditScreen({
10624
10812
  },
10625
10813
  field
10626
10814
  )) }),
10627
- /* @__PURE__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
10628
- /* @__PURE__ */ jsx62(ClButton, { fullWidth: true, onClick: () => onEvent({ type: "ON_SAVE_EDIT" }), children: "Save & review" }),
10629
- /* @__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(
10630
10818
  ClButton,
10631
10819
  {
10632
10820
  fullWidth: true,
@@ -10643,10 +10831,10 @@ function SignOnlyScreen({
10643
10831
  signError,
10644
10832
  onEvent
10645
10833
  }) {
10646
- return /* @__PURE__ */ jsxs44("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
10647
- /* @__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." }),
10648
- signError && /* @__PURE__ */ jsx62(AlertBanner, { variant: "error", icon: true, content: signError }),
10649
- /* @__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(
10650
10838
  ClButton,
10651
10839
  {
10652
10840
  fullWidth: true,
@@ -10660,12 +10848,12 @@ function SignOnlyScreen({
10660
10848
  }
10661
10849
 
10662
10850
  // src/client/hooks/requirements/tax-document/useTaxDocumentModalViewModel.ts
10663
- 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";
10664
10852
 
10665
10853
  // src/client/hooks/requirements/data/useTaxDocument.ts
10666
- 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";
10667
10855
  var IDLE_SIGN = { type: "idle", error: null };
10668
- var LOADING_STATE5 = { type: "LOADING" };
10856
+ var LOADING_STATE6 = { type: "LOADING" };
10669
10857
  var SIGN_FAILED_MESSAGE = "Unable to sign document. Please try again.";
10670
10858
  var DOB_INVALID_MESSAGE = "Enter your date of birth as MM/DD/YYYY.";
10671
10859
  var FIELD_KEYS = {
@@ -10738,8 +10926,8 @@ function useTaxDocument({
10738
10926
  }) {
10739
10927
  const { coinlist, isReady } = useCoinList();
10740
10928
  const log = useLogger("useTaxDocument");
10741
- const [state, setState] = useState27(LOADING_STATE5);
10742
- useEffect23(() => {
10929
+ const [state, setState] = useState28(LOADING_STATE6);
10930
+ useEffect24(() => {
10743
10931
  let isCancelled = false;
10744
10932
  if (!isOpen) {
10745
10933
  return () => {
@@ -10747,12 +10935,12 @@ function useTaxDocument({
10747
10935
  };
10748
10936
  }
10749
10937
  if (!isReady) {
10750
- setState(LOADING_STATE5);
10938
+ setState(LOADING_STATE6);
10751
10939
  return () => {
10752
10940
  isCancelled = true;
10753
10941
  };
10754
10942
  }
10755
- setState(LOADING_STATE5);
10943
+ setState(LOADING_STATE6);
10756
10944
  coinlist.requirements.getPii().then((pii) => {
10757
10945
  if (isCancelled) return;
10758
10946
  if (pii.kind === "company") {
@@ -10780,7 +10968,7 @@ function useTaxDocument({
10780
10968
  isCancelled = true;
10781
10969
  };
10782
10970
  }, [coinlist, isReady, isOpen, log]);
10783
- const onEditField = useCallback9(
10971
+ const onEditField = useCallback10(
10784
10972
  (field, value) => {
10785
10973
  setState(
10786
10974
  (prev) => prev.type === "EDITING" ? { ...prev, fields: { ...prev.fields, [field]: value } } : prev
@@ -10788,7 +10976,7 @@ function useTaxDocument({
10788
10976
  },
10789
10977
  []
10790
10978
  );
10791
- const onStartEdit = useCallback9(() => {
10979
+ const onStartEdit = useCallback10(() => {
10792
10980
  setState(
10793
10981
  (prev) => prev.type === "REVIEW" ? {
10794
10982
  type: "EDITING",
@@ -10799,7 +10987,7 @@ function useTaxDocument({
10799
10987
  } : prev
10800
10988
  );
10801
10989
  }, []);
10802
- const onSaveEdit = useCallback9(() => {
10990
+ const onSaveEdit = useCallback10(() => {
10803
10991
  setState(
10804
10992
  (prev) => prev.type === "EDITING" ? {
10805
10993
  type: "REVIEW",
@@ -10810,7 +10998,7 @@ function useTaxDocument({
10810
10998
  } : prev
10811
10999
  );
10812
11000
  }, []);
10813
- const onCancelEdit = useCallback9(() => {
11001
+ const onCancelEdit = useCallback10(() => {
10814
11002
  setState(
10815
11003
  (prev) => prev.type === "EDITING" ? {
10816
11004
  type: "REVIEW",
@@ -10821,7 +11009,7 @@ function useTaxDocument({
10821
11009
  } : prev
10822
11010
  );
10823
11011
  }, []);
10824
- const onSign = useCallback9(() => {
11012
+ const onSign = useCallback10(() => {
10825
11013
  if (state.type !== "REVIEW" && state.type !== "SIGN_ONLY") return;
10826
11014
  if (state.type === "REVIEW" && state.fields.dob.trim() !== "" && !isValidUsDate(state.fields.dob)) {
10827
11015
  setState({
@@ -10863,19 +11051,19 @@ function useTaxDocumentModalViewModel({
10863
11051
  onSubmitted
10864
11052
  }) {
10865
11053
  const { state, onEditField, onStartEdit, onSaveEdit, onCancelEdit, onSign } = useTaxDocument({ isOpen });
10866
- useEffect24(() => {
11054
+ useEffect25(() => {
10867
11055
  if (state.type === "SUBMITTED") {
10868
11056
  onSubmitted?.(state.submission);
10869
11057
  onClose();
10870
11058
  }
10871
11059
  }, [state]);
10872
- const uiState = useMemo6(() => {
11060
+ const uiState = useMemo8(() => {
10873
11061
  if (!isOpen || state.type === "SUBMITTED") {
10874
11062
  return { type: "hidden" };
10875
11063
  }
10876
11064
  return { type: "content", title: toTitle(state), screen: toScreen(state) };
10877
11065
  }, [isOpen, state]);
10878
- const onEvent = useCallback10(
11066
+ const onEvent = useCallback11(
10879
11067
  (event) => {
10880
11068
  switch (event.type) {
10881
11069
  case "ON_CLOSE":
@@ -10958,7 +11146,7 @@ function toFieldsUi(fields) {
10958
11146
  }
10959
11147
 
10960
11148
  // src/client/components/requirements/tax-document/TaxDocumentModalContainer.tsx
10961
- import { jsx as jsx63 } from "react/jsx-runtime";
11149
+ import { jsx as jsx64 } from "react/jsx-runtime";
10962
11150
  function TaxDocumentModalContainer({
10963
11151
  isOpen,
10964
11152
  onClose,
@@ -10970,7 +11158,7 @@ function TaxDocumentModalContainer({
10970
11158
  onClose,
10971
11159
  onSubmitted
10972
11160
  });
10973
- return /* @__PURE__ */ jsx63(
11161
+ return /* @__PURE__ */ jsx64(
10974
11162
  TaxDocumentModalView,
10975
11163
  {
10976
11164
  state,
@@ -10981,26 +11169,26 @@ function TaxDocumentModalContainer({
10981
11169
  }
10982
11170
 
10983
11171
  // src/client/components/requirements/VerificationOverlay.tsx
10984
- import { jsx as jsx64, jsxs as jsxs45 } from "react/jsx-runtime";
11172
+ import { jsx as jsx65, jsxs as jsxs46 } from "react/jsx-runtime";
10985
11173
  function VerificationOverlay({
10986
11174
  onClose,
10987
11175
  children
10988
11176
  }) {
10989
- return /* @__PURE__ */ jsx64(CoinListStyleScope, { children: /* @__PURE__ */ jsx64(VerificationOverlayBody, { onClose, children }) });
11177
+ return /* @__PURE__ */ jsx65(CoinListStyleScope, { children: /* @__PURE__ */ jsx65(VerificationOverlayBody, { onClose, children }) });
10990
11178
  }
10991
11179
  function VerificationOverlayBody({
10992
11180
  onClose,
10993
11181
  children
10994
11182
  }) {
10995
- return /* @__PURE__ */ jsx64(
11183
+ return /* @__PURE__ */ jsx65(
10996
11184
  "div",
10997
11185
  {
10998
11186
  role: "dialog",
10999
11187
  "aria-modal": "true",
11000
11188
  "aria-label": "Identity verification",
11001
11189
  className: "clcosdk:fixed clcosdk:inset-0 clcosdk:z-50 clcosdk:flex clcosdk:items-center clcosdk:justify-center clcosdk:bg-overlay clcosdk:p-4",
11002
- 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: [
11003
- /* @__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(
11004
11192
  CloseButton,
11005
11193
  {
11006
11194
  onClick: onClose,
@@ -11015,7 +11203,7 @@ function VerificationOverlayBody({
11015
11203
 
11016
11204
  // src/client/components/requirements/wallet/ConnectWalletModalView.tsx
11017
11205
  import { useId as useId5 } from "react";
11018
- import { jsx as jsx65, jsxs as jsxs46 } from "react/jsx-runtime";
11206
+ import { jsx as jsx66, jsxs as jsxs47 } from "react/jsx-runtime";
11019
11207
  function ConnectWalletModalView({
11020
11208
  state,
11021
11209
  onEvent,
@@ -11025,7 +11213,7 @@ function ConnectWalletModalView({
11025
11213
  if (state.type === "hidden") {
11026
11214
  return null;
11027
11215
  }
11028
- 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(
11029
11217
  "div",
11030
11218
  {
11031
11219
  role: "dialog",
@@ -11036,8 +11224,8 @@ function ConnectWalletModalView({
11036
11224
  className
11037
11225
  ),
11038
11226
  children: [
11039
- /* @__PURE__ */ jsxs46("div", { className: "clcosdk:flex clcosdk:items-start clcosdk:justify-between clcosdk:gap-4", children: [
11040
- /* @__PURE__ */ jsx65(
11227
+ /* @__PURE__ */ jsxs47("div", { className: "clcosdk:flex clcosdk:items-start clcosdk:justify-between clcosdk:gap-4", children: [
11228
+ /* @__PURE__ */ jsx66(
11041
11229
  "h3",
11042
11230
  {
11043
11231
  id: titleId,
@@ -11045,9 +11233,9 @@ function ConnectWalletModalView({
11045
11233
  children: "Connect your wallet"
11046
11234
  }
11047
11235
  ),
11048
- /* @__PURE__ */ jsx65(CloseButton, { onClick: () => onEvent({ type: "ON_CLOSE" }) })
11236
+ /* @__PURE__ */ jsx66(CloseButton, { onClick: () => onEvent({ type: "ON_CLOSE" }) })
11049
11237
  ] }),
11050
- /* @__PURE__ */ jsx65(
11238
+ /* @__PURE__ */ jsx66(
11051
11239
  Screen2,
11052
11240
  {
11053
11241
  screen: state.screen,
@@ -11066,9 +11254,9 @@ function Screen2({
11066
11254
  }) {
11067
11255
  switch (screen.type) {
11068
11256
  case "needs-wallet":
11069
- return /* @__PURE__ */ jsxs46("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
11070
- /* @__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." }),
11071
- 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(
11072
11260
  ClButton,
11073
11261
  {
11074
11262
  fullWidth: true,
@@ -11078,23 +11266,23 @@ function Screen2({
11078
11266
  )
11079
11267
  ] });
11080
11268
  case "ready":
11081
- return /* @__PURE__ */ jsxs46("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
11082
- /* @__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." }),
11083
- /* @__PURE__ */ jsxs46("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1 clcosdk:border-t clcosdk:border-divider clcosdk:pt-4", children: [
11084
- /* @__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(
11085
11273
  "span",
11086
11274
  {
11087
11275
  className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
11088
11276
  children: "Wallet address"
11089
11277
  }
11090
11278
  ),
11091
- /* @__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 })
11092
11280
  ] }),
11093
11281
  screen.signError && // Live region: the error is inserted async after a failed attempt,
11094
11282
  // so screen readers need it announced rather than silently
11095
11283
  // rendered.
11096
- /* @__PURE__ */ jsx65("div", { role: "alert", children: /* @__PURE__ */ jsx65(AlertBanner, { variant: "error", icon: true, content: screen.signError }) }),
11097
- /* @__PURE__ */ jsx65(
11284
+ /* @__PURE__ */ jsx66("div", { role: "alert", children: /* @__PURE__ */ jsx66(AlertBanner, { variant: "error", icon: true, content: screen.signError }) }),
11285
+ /* @__PURE__ */ jsx66(
11098
11286
  ClButton,
11099
11287
  {
11100
11288
  fullWidth: true,
@@ -11105,7 +11293,7 @@ function Screen2({
11105
11293
  children: "Sign & connect"
11106
11294
  }
11107
11295
  ),
11108
- canRequestConnect && /* @__PURE__ */ jsx65(
11296
+ canRequestConnect && /* @__PURE__ */ jsx66(
11109
11297
  ClButton,
11110
11298
  {
11111
11299
  fullWidth: true,
@@ -11124,10 +11312,10 @@ function Screen2({
11124
11312
  }
11125
11313
 
11126
11314
  // src/client/hooks/requirements/wallet/useConnectWalletModalViewModel.ts
11127
- 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";
11128
11316
 
11129
11317
  // src/client/hooks/requirements/data/useConnectWallet.ts
11130
- 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";
11131
11319
 
11132
11320
  // src/client/core/wallets/connect-external-wallet.ts
11133
11321
  var DEFAULT_STATEMENT = "Sign this message to prove you own this wallet. This does not cost gas or move funds.";
@@ -11258,24 +11446,24 @@ function useConnectWallet({
11258
11446
  statement
11259
11447
  }) {
11260
11448
  const { coinlist } = useCoinList();
11261
- const [state, setState] = useState28(
11449
+ const [state, setState] = useState29(
11262
11450
  () => wallet ? { type: "READY", address: wallet.address, sign: IDLE_SIGN2 } : { type: "NEEDS_WALLET" }
11263
11451
  );
11264
11452
  const attempt = useRef16(0);
11265
- useEffect25(() => {
11453
+ useEffect26(() => {
11266
11454
  attempt.current += 1;
11267
11455
  if (!isOpen) return;
11268
11456
  setState(
11269
11457
  wallet ? { type: "READY", address: wallet.address, sign: IDLE_SIGN2 } : { type: "NEEDS_WALLET" }
11270
11458
  );
11271
11459
  }, [isOpen, wallet?.address]);
11272
- useEffect25(
11460
+ useEffect26(
11273
11461
  () => () => {
11274
11462
  attempt.current += 1;
11275
11463
  },
11276
11464
  []
11277
11465
  );
11278
- const onSign = useCallback11(() => {
11466
+ const onSign = useCallback12(() => {
11279
11467
  if (!wallet || state.type !== "READY") return;
11280
11468
  attempt.current += 1;
11281
11469
  const gen = attempt.current;
@@ -11337,13 +11525,13 @@ function useConnectWalletModalViewModel({
11337
11525
  challengeType,
11338
11526
  statement
11339
11527
  });
11340
- useEffect26(() => {
11528
+ useEffect27(() => {
11341
11529
  if (state.type === "CONNECTED") {
11342
11530
  onConnected?.(state.binding);
11343
11531
  onClose();
11344
11532
  }
11345
11533
  }, [state]);
11346
- const uiState = useMemo7(() => {
11534
+ const uiState = useMemo9(() => {
11347
11535
  if (!isOpen || state.type === "CONNECTED") {
11348
11536
  return { type: "hidden" };
11349
11537
  }
@@ -11368,7 +11556,7 @@ function useConnectWalletModalViewModel({
11368
11556
  canRequestConnect
11369
11557
  };
11370
11558
  }, [isOpen, state, onRequestConnect]);
11371
- const onEvent = useCallback12(
11559
+ const onEvent = useCallback13(
11372
11560
  (event) => {
11373
11561
  switch (event.type) {
11374
11562
  case "ON_CLOSE":
@@ -11392,13 +11580,13 @@ function useConnectWalletModalViewModel({
11392
11580
  }
11393
11581
 
11394
11582
  // src/client/components/requirements/wallet/ConnectWalletModalContainer.tsx
11395
- import { jsx as jsx66 } from "react/jsx-runtime";
11583
+ import { jsx as jsx67 } from "react/jsx-runtime";
11396
11584
  function ConnectWalletModalContainer({
11397
11585
  className,
11398
11586
  ...options
11399
11587
  }) {
11400
11588
  const { state, onEvent } = useConnectWalletModalViewModel(options);
11401
- return /* @__PURE__ */ jsx66(
11589
+ return /* @__PURE__ */ jsx67(
11402
11590
  ConnectWalletModalView,
11403
11591
  {
11404
11592
  state,
@@ -11409,11 +11597,11 @@ function ConnectWalletModalContainer({
11409
11597
  }
11410
11598
 
11411
11599
  // src/client/hooks/requirements/useRequirementsChecklistViewModel.ts
11412
- 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";
11413
11601
 
11414
11602
  // src/client/hooks/requirements/data/useOptionAddresses.ts
11415
- import { useCallback as useCallback13, useEffect as useEffect27, useState as useState29 } from "react";
11416
- var LOADING_STATE6 = { type: "LOADING" };
11603
+ import { useCallback as useCallback14, useEffect as useEffect28, useState as useState30 } from "react";
11604
+ var LOADING_STATE7 = { type: "LOADING" };
11417
11605
  var EMPTY_STATE = {
11418
11606
  type: "CONTENT",
11419
11607
  addresses: []
@@ -11422,19 +11610,19 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
11422
11610
  const { coinlist, isReady } = useCoinList();
11423
11611
  const log = useLogger("useOptionAddresses");
11424
11612
  const { data, enabled = true } = options;
11425
- const [addressesState, setAddressesState] = useState29(
11426
- data !== void 0 ? { type: "CONTENT", addresses: data } : LOADING_STATE6
11613
+ const [addressesState, setAddressesState] = useState30(
11614
+ data !== void 0 ? { type: "CONTENT", addresses: data } : LOADING_STATE7
11427
11615
  );
11428
- const [fetchKey, setFetchKey] = useState29(0);
11429
- const refetch = useCallback13(() => setFetchKey((k) => k + 1), []);
11430
- const disconnect = useCallback13(
11616
+ const [fetchKey, setFetchKey] = useState30(0);
11617
+ const refetch = useCallback14(() => setFetchKey((k) => k + 1), []);
11618
+ const disconnect = useCallback14(
11431
11619
  async (addressId) => {
11432
11620
  await coinlist.wallets.remove({ offerId, addressId });
11433
11621
  refetch();
11434
11622
  },
11435
11623
  [coinlist, offerId, refetch]
11436
11624
  );
11437
- useEffect27(() => {
11625
+ useEffect28(() => {
11438
11626
  let isCancelled = false;
11439
11627
  if (!enabled) {
11440
11628
  setAddressesState(
@@ -11446,7 +11634,7 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
11446
11634
  }
11447
11635
  if (!isReady) {
11448
11636
  if (data === void 0) {
11449
- setAddressesState(LOADING_STATE6);
11637
+ setAddressesState(LOADING_STATE7);
11450
11638
  }
11451
11639
  return () => {
11452
11640
  isCancelled = true;
@@ -11463,7 +11651,7 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
11463
11651
  isCancelled = true;
11464
11652
  };
11465
11653
  }
11466
- setAddressesState(LOADING_STATE6);
11654
+ setAddressesState(LOADING_STATE7);
11467
11655
  coinlist.wallets.list({ offerId, offerOptionId }).then((addresses) => {
11468
11656
  if (!isCancelled) {
11469
11657
  log.debug(() => ({
@@ -11490,18 +11678,18 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
11490
11678
  }
11491
11679
 
11492
11680
  // src/client/hooks/requirements/data/useRequirements.ts
11493
- import { useCallback as useCallback14, useEffect as useEffect28, useState as useState30 } from "react";
11494
- var LOADING_STATE7 = { type: "LOADING" };
11681
+ import { useCallback as useCallback15, useEffect as useEffect29, useState as useState31 } from "react";
11682
+ var LOADING_STATE8 = { type: "LOADING" };
11495
11683
  function useRequirements(offerId, options = {}) {
11496
11684
  const { coinlist, isReady } = useCoinList();
11497
11685
  const log = useLogger("useRequirements");
11498
11686
  const { data, enabled = true } = options;
11499
- const [requirementsState, setRequirementsState] = useState30(
11500
- data !== void 0 ? { type: "CONTENT", ...data } : LOADING_STATE7
11687
+ const [requirementsState, setRequirementsState] = useState31(
11688
+ data !== void 0 ? { type: "CONTENT", ...data } : LOADING_STATE8
11501
11689
  );
11502
- const [fetchKey, setFetchKey] = useState30(0);
11503
- const refetch = useCallback14(() => setFetchKey((k) => k + 1), []);
11504
- useEffect28(() => {
11690
+ const [fetchKey, setFetchKey] = useState31(0);
11691
+ const refetch = useCallback15(() => setFetchKey((k) => k + 1), []);
11692
+ useEffect29(() => {
11505
11693
  let isCancelled = false;
11506
11694
  if (!enabled) {
11507
11695
  return () => {
@@ -11510,7 +11698,7 @@ function useRequirements(offerId, options = {}) {
11510
11698
  }
11511
11699
  if (!isReady) {
11512
11700
  if (data === void 0) {
11513
- setRequirementsState(LOADING_STATE7);
11701
+ setRequirementsState(LOADING_STATE8);
11514
11702
  }
11515
11703
  return () => {
11516
11704
  isCancelled = true;
@@ -11527,7 +11715,7 @@ function useRequirements(offerId, options = {}) {
11527
11715
  isCancelled = true;
11528
11716
  };
11529
11717
  }
11530
- setRequirementsState(LOADING_STATE7);
11718
+ setRequirementsState(LOADING_STATE8);
11531
11719
  Promise.all([
11532
11720
  coinlist.requirements.forOffer(offerId),
11533
11721
  coinlist.requirements.statuses(offerId)
@@ -11661,19 +11849,19 @@ function useRequirementsChecklistViewModel(options) {
11661
11849
  data,
11662
11850
  enabled
11663
11851
  });
11664
- const [expandedId, setExpandedId] = useState31(null);
11665
- const [taxDocumentOpen, setTaxDocumentOpen] = useState31(false);
11666
- const [connectWalletOpen, setConnectWalletOpen] = useState31(false);
11667
- 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);
11668
11856
  const isMountedRef = useRef17(true);
11669
- useEffect29(() => {
11857
+ useEffect30(() => {
11670
11858
  isMountedRef.current = true;
11671
11859
  return () => {
11672
11860
  isMountedRef.current = false;
11673
11861
  };
11674
11862
  }, []);
11675
- const [hasWalletRequirement, setHasWalletRequirement] = useState31(false);
11676
- useEffect29(() => {
11863
+ const [hasWalletRequirement, setHasWalletRequirement] = useState32(false);
11864
+ useEffect30(() => {
11677
11865
  if (requirementsState.type === "CONTENT") {
11678
11866
  setHasWalletRequirement(
11679
11867
  (requirementsState.requirements[optionId] ?? []).some(
@@ -11689,14 +11877,14 @@ function useRequirementsChecklistViewModel(options) {
11689
11877
  } = useOptionAddresses(offerId, optionId, {
11690
11878
  enabled: enabled && hasWalletRequirement
11691
11879
  });
11692
- const removeWallet = useCallback15(
11880
+ const removeWallet = useCallback16(
11693
11881
  async (addressId) => {
11694
11882
  await disconnect(OfferOptionAddressId(addressId));
11695
11883
  refetch();
11696
11884
  },
11697
11885
  [disconnect, refetch]
11698
11886
  );
11699
- const awaitVerificationResult = useCallback15(
11887
+ const awaitVerificationResult = useCallback16(
11700
11888
  (requirementId, statusBeforeSubmit) => {
11701
11889
  void (async () => {
11702
11890
  const deadline = Date.now() + VERIFICATION_POLL_TIMEOUT_MS;
@@ -11723,11 +11911,11 @@ function useRequirementsChecklistViewModel(options) {
11723
11911
  },
11724
11912
  [coinlist, offerId, refetch, log]
11725
11913
  );
11726
- const requirements = useMemo8(
11914
+ const requirements = useMemo10(
11727
11915
  () => requirementsState.type === "CONTENT" ? requirementsState.requirements[optionId] ?? [] : [],
11728
11916
  [requirementsState, optionId]
11729
11917
  );
11730
- const statusById = useMemo8(() => {
11918
+ const statusById = useMemo10(() => {
11731
11919
  if (requirementsState.type !== "CONTENT") {
11732
11920
  return /* @__PURE__ */ new Map();
11733
11921
  }
@@ -11736,7 +11924,7 @@ function useRequirementsChecklistViewModel(options) {
11736
11924
  requirementsState.statuses.filter((s) => ids.has(s.id)).map((s) => [s.id, s])
11737
11925
  );
11738
11926
  }, [requirementsState, requirements]);
11739
- const state = useMemo8(() => {
11927
+ const state = useMemo10(() => {
11740
11928
  switch (requirementsState.type) {
11741
11929
  case "LOADING":
11742
11930
  return { type: "loading" };
@@ -11805,7 +11993,7 @@ function useRequirementsChecklistViewModel(options) {
11805
11993
  identityVerificationOptions,
11806
11994
  removeWallet
11807
11995
  ]);
11808
- const handleRequirementAction = useCallback15(
11996
+ const handleRequirementAction = useCallback16(
11809
11997
  (requirement) => {
11810
11998
  const inlineVerification = statusById.get(requirement.id)?.kycLevel !== void 0 && onRequirementActionOverride === void 0;
11811
11999
  if (inlineVerification) {
@@ -11837,7 +12025,7 @@ function useRequirementsChecklistViewModel(options) {
11837
12025
  coinlist
11838
12026
  ]
11839
12027
  );
11840
- const onEvent = useCallback15(
12028
+ const onEvent = useCallback16(
11841
12029
  (event) => {
11842
12030
  switch (event.type) {
11843
12031
  case "ON_TOGGLE_ITEM":
@@ -11935,7 +12123,7 @@ function toVerificationUi(verifyingRequirementId, statusById, identityVerificati
11935
12123
  }
11936
12124
 
11937
12125
  // src/client/components/requirements/RequirementsChecklistContainer.tsx
11938
- 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";
11939
12127
  function RequirementsChecklistContainer({
11940
12128
  loading,
11941
12129
  error,
@@ -11948,8 +12136,8 @@ function RequirementsChecklistContainer({
11948
12136
  ...options,
11949
12137
  enabled
11950
12138
  });
11951
- return /* @__PURE__ */ jsxs47(Fragment10, { children: [
11952
- /* @__PURE__ */ jsx67(
12139
+ return /* @__PURE__ */ jsxs48(Fragment11, { children: [
12140
+ /* @__PURE__ */ jsx68(
11953
12141
  RequirementsChecklistView,
11954
12142
  {
11955
12143
  state,
@@ -11959,13 +12147,13 @@ function RequirementsChecklistContainer({
11959
12147
  unauthenticatedState: (
11960
12148
  // The sign-in default lives here, not in the View: it is a connected
11961
12149
  // component, and a View must render from what it is handed.
11962
- unauthenticatedState !== void 0 ? unauthenticatedState : /* @__PURE__ */ jsx67(CoinListSignInCardContainer, {})
12150
+ unauthenticatedState !== void 0 ? unauthenticatedState : /* @__PURE__ */ jsx68(CoinListSignInCardContainer, {})
11963
12151
  ),
11964
12152
  className
11965
12153
  }
11966
12154
  ),
11967
- state.type === "content" && /* @__PURE__ */ jsxs47(Fragment10, { children: [
11968
- /* @__PURE__ */ jsx67(
12155
+ state.type === "content" && /* @__PURE__ */ jsxs48(Fragment11, { children: [
12156
+ /* @__PURE__ */ jsx68(
11969
12157
  TaxDocumentModalContainer,
11970
12158
  {
11971
12159
  isOpen: state.taxDocumentOpen,
@@ -11973,11 +12161,11 @@ function RequirementsChecklistContainer({
11973
12161
  onSubmitted: () => onEvent({ type: "ON_TAX_DOCUMENT_SUBMITTED" })
11974
12162
  }
11975
12163
  ),
11976
- state.verification && /* @__PURE__ */ jsx67(
12164
+ state.verification && /* @__PURE__ */ jsx68(
11977
12165
  VerificationOverlay,
11978
12166
  {
11979
12167
  onClose: () => onEvent({ type: "ON_CLOSE_VERIFICATION" }),
11980
- children: /* @__PURE__ */ jsx67(
12168
+ children: /* @__PURE__ */ jsx68(
11981
12169
  IdentityVerificationContainer,
11982
12170
  {
11983
12171
  levelName: state.verification.levelName,
@@ -11988,7 +12176,7 @@ function RequirementsChecklistContainer({
11988
12176
  )
11989
12177
  }
11990
12178
  ),
11991
- /* @__PURE__ */ jsx67(
12179
+ /* @__PURE__ */ jsx68(
11992
12180
  ConnectWalletModalContainer,
11993
12181
  {
11994
12182
  isOpen: state.connectWalletOpen,
@@ -12021,7 +12209,7 @@ function pinoClientLogger(options) {
12021
12209
  }
12022
12210
 
12023
12211
  // src/client/hooks/auth/useCompleteOAuth.ts
12024
- import { useEffect as useEffect30, useRef as useRef18 } from "react";
12212
+ import { useEffect as useEffect31, useRef as useRef18 } from "react";
12025
12213
  function useCompleteOAuth(options) {
12026
12214
  const { coinlist } = useCoinList();
12027
12215
  const log = useLogger("useCompleteOAuth");
@@ -12032,7 +12220,7 @@ function useCompleteOAuth(options) {
12032
12220
  onFailureRef.current = options.onFailure;
12033
12221
  onSuccessRef.current = options.onSuccess;
12034
12222
  const hasStartedExchangeRef = useRef18(false);
12035
- useEffect30(() => {
12223
+ useEffect31(() => {
12036
12224
  if (typeof window === "undefined") return;
12037
12225
  const params = new URLSearchParams(window.location.search);
12038
12226
  if (!params.has("code") && !params.has("error")) return;
@@ -12096,16 +12284,16 @@ function useCompleteOAuth(options) {
12096
12284
  }
12097
12285
 
12098
12286
  // src/client/hooks/checkout/coin-list/token-sale/data/useParticipations.ts
12099
- import { useEffect as useEffect31, useState as useState32 } from "react";
12100
- var LOADING_STATE8 = { type: "LOADING" };
12287
+ import { useEffect as useEffect32, useState as useState33 } from "react";
12288
+ var LOADING_STATE9 = { type: "LOADING" };
12101
12289
  function useParticipations(offerId, options = {}) {
12102
12290
  const { coinlist, isReady } = useCoinList();
12103
12291
  const log = useLogger("useParticipations");
12104
12292
  const { data, enabled = true } = options;
12105
- const [participationsState, setParticipationsState] = useState32(
12106
- data !== void 0 ? { type: "CONTENT", participations: data } : LOADING_STATE8
12293
+ const [participationsState, setParticipationsState] = useState33(
12294
+ data !== void 0 ? { type: "CONTENT", participations: data } : LOADING_STATE9
12107
12295
  );
12108
- useEffect31(() => {
12296
+ useEffect32(() => {
12109
12297
  let isCancelled = false;
12110
12298
  if (!enabled) {
12111
12299
  return () => {
@@ -12114,7 +12302,7 @@ function useParticipations(offerId, options = {}) {
12114
12302
  }
12115
12303
  if (!isReady) {
12116
12304
  if (data === void 0) {
12117
- setParticipationsState(LOADING_STATE8);
12305
+ setParticipationsState(LOADING_STATE9);
12118
12306
  }
12119
12307
  return () => {
12120
12308
  isCancelled = true;
@@ -12125,7 +12313,7 @@ function useParticipations(offerId, options = {}) {
12125
12313
  isCancelled = true;
12126
12314
  };
12127
12315
  }
12128
- setParticipationsState(LOADING_STATE8);
12316
+ setParticipationsState(LOADING_STATE9);
12129
12317
  coinlist.tokenSale.list(offerId).then((participations) => {
12130
12318
  if (!isCancelled) {
12131
12319
  log.debug(() => ({
@@ -12152,16 +12340,16 @@ function useParticipations(offerId, options = {}) {
12152
12340
  }
12153
12341
 
12154
12342
  // src/client/hooks/offers/data/useOfferDetails.ts
12155
- import { useEffect as useEffect32, useState as useState33 } from "react";
12156
- var LOADING_STATE9 = { type: "LOADING" };
12343
+ import { useEffect as useEffect33, useState as useState34 } from "react";
12344
+ var LOADING_STATE10 = { type: "LOADING" };
12157
12345
  function useOfferDetails(offerId, options = {}) {
12158
12346
  const { coinlist, isReady } = useCoinList();
12159
12347
  const log = useLogger("useOfferDetails");
12160
12348
  const { data, enabled = true } = options;
12161
- const [offerDetailsState, setOfferDetailsState] = useState33(
12162
- data !== void 0 ? { type: "CONTENT", offerDetail: data } : LOADING_STATE9
12349
+ const [offerDetailsState, setOfferDetailsState] = useState34(
12350
+ data !== void 0 ? { type: "CONTENT", offerDetail: data } : LOADING_STATE10
12163
12351
  );
12164
- useEffect32(() => {
12352
+ useEffect33(() => {
12165
12353
  let isCancelled = false;
12166
12354
  if (!enabled) {
12167
12355
  return () => {
@@ -12170,7 +12358,7 @@ function useOfferDetails(offerId, options = {}) {
12170
12358
  }
12171
12359
  if (!isReady) {
12172
12360
  if (data === void 0) {
12173
- setOfferDetailsState(LOADING_STATE9);
12361
+ setOfferDetailsState(LOADING_STATE10);
12174
12362
  }
12175
12363
  return () => {
12176
12364
  isCancelled = true;
@@ -12181,7 +12369,7 @@ function useOfferDetails(offerId, options = {}) {
12181
12369
  isCancelled = true;
12182
12370
  };
12183
12371
  }
12184
- setOfferDetailsState(LOADING_STATE9);
12372
+ setOfferDetailsState(LOADING_STATE10);
12185
12373
  coinlist.offers.get(offerId).then((offerDetail) => {
12186
12374
  if (!isCancelled) {
12187
12375
  log.debug(() => ({
@@ -12209,15 +12397,23 @@ function useOfferDetails(offerId, options = {}) {
12209
12397
 
12210
12398
  // src/client/hooks/offers/shared/offer-asset-card.types.ts
12211
12399
  var OfferAssetCardUi = {
12212
- 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) => ({
12213
12408
  id: offer.id,
12214
- logoUrl: offer.logoUrl
12409
+ ...tokenMetadata ? { name: tokenMetadata.name, symbol: String(tokenMetadata.symbol) } : {},
12410
+ logo: OfferLogoUi.fromOffer(offer, tokenMetadata)
12215
12411
  }),
12216
- fromDetail: (detail) => ({
12412
+ fromDetail: (detail, tokenMetadata = null) => ({
12217
12413
  id: detail.id,
12218
- name: detail.name,
12219
- symbol: detail.asset.code,
12220
- logoUrl: detail.logoUrl
12414
+ name: tokenMetadata?.name ?? detail.name,
12415
+ symbol: tokenMetadata ? String(tokenMetadata.symbol) : detail.asset.code,
12416
+ logo: OfferLogoUi.fromOffer(detail, tokenMetadata)
12221
12417
  })
12222
12418
  };
12223
12419
 
@@ -12259,6 +12455,7 @@ export {
12259
12455
  OAUTH_STATE_KEY,
12260
12456
  OfferAssetCard,
12261
12457
  OfferAssetCardUi,
12458
+ OfferLogoUi,
12262
12459
  OfferSaleCard,
12263
12460
  OfferSaleCardUi,
12264
12461
  OffersAssetGrid,
@@ -12320,6 +12517,7 @@ export {
12320
12517
  quoteOverAsks,
12321
12518
  stablecoinIconUrl,
12322
12519
  submitErc20Approval,
12520
+ tokenLogoSrcSet,
12323
12521
  tokenLogoUrl,
12324
12522
  tokenMetadataOf,
12325
12523
  useCheckoutOfferTokenMetadata,
@@ -12362,6 +12560,7 @@ export {
12362
12560
  useTaxDocument,
12363
12561
  useTaxDocumentModalViewModel,
12364
12562
  useTokenMetadata,
12563
+ useTokenRegistry,
12365
12564
  validateAmount,
12366
12565
  validateSellAmount,
12367
12566
  validateSuperstateAmount