@coinlist-co/react 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-N3WBC2VS.js → chunk-5C4TEVM7.js} +2 -2
- package/dist/{chunk-V6WO67RO.js → chunk-7SB2GKEU.js} +1 -1
- package/dist/{chunk-V6WO67RO.js.map → chunk-7SB2GKEU.js.map} +1 -1
- package/dist/chunk-UEJVCU2J.js +43 -0
- package/dist/chunk-UEJVCU2J.js.map +1 -0
- package/dist/client/index.cjs +441 -302
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +33 -3
- package/dist/client/index.d.ts +33 -3
- package/dist/client/index.js +422 -308
- package/dist/client/index.js.map +1 -1
- package/dist/{requirement-BEO42QOr.d.ts → requirement-Dk6nYN1c.d.cts} +8 -6
- package/dist/{requirement-BEO42QOr.d.cts → requirement-Dk6nYN1c.d.ts} +8 -6
- package/dist/server/index.cjs +41 -9
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +68 -8
- package/dist/server/index.d.ts +68 -8
- package/dist/server/index.js +42 -11
- package/dist/server/index.js.map +1 -1
- package/dist/shared/index.cjs +68 -19
- package/dist/shared/index.cjs.map +1 -1
- package/dist/shared/index.d.cts +23 -3
- package/dist/shared/index.d.ts +23 -3
- package/dist/shared/index.js +8 -4
- package/dist/shared/index.js.map +1 -1
- package/package.json +27 -28
- package/dist/chunk-CRACFEJ4.js +0 -17
- package/dist/chunk-CRACFEJ4.js.map +0 -1
- package/dist/client/styles.css +0 -2
- /package/dist/{chunk-N3WBC2VS.js.map → chunk-5C4TEVM7.js.map} +0 -0
package/dist/client/index.cjs
CHANGED
|
@@ -23,8 +23,10 @@ __export(client_exports, {
|
|
|
23
23
|
ChecklistStatus: () => ChecklistStatus,
|
|
24
24
|
CoinListClientInitializationError: () => CoinListClientInitializationError,
|
|
25
25
|
CoinListContext: () => CoinListContext,
|
|
26
|
+
CoinListContextProvider: () => CoinListContextProvider,
|
|
26
27
|
CoinListProvider: () => CoinListProvider,
|
|
27
28
|
CoinListSignInCard: () => CoinListSignInCard,
|
|
29
|
+
CoinListStyleScope: () => CoinListStyleScope,
|
|
28
30
|
OAUTH_CODE_VERIFIER_KEY: () => OAUTH_CODE_VERIFIER_KEY,
|
|
29
31
|
OAUTH_STATE_KEY: () => OAUTH_STATE_KEY,
|
|
30
32
|
OfferCard: () => OfferCard,
|
|
@@ -44,11 +46,40 @@ __export(client_exports, {
|
|
|
44
46
|
useRequirements: () => useRequirements
|
|
45
47
|
});
|
|
46
48
|
module.exports = __toCommonJS(client_exports);
|
|
47
|
-
var import_styles = require("./styles.css");
|
|
48
49
|
|
|
49
50
|
// src/client/CoinListProvider.tsx
|
|
50
51
|
var import_react = require("react");
|
|
51
52
|
|
|
53
|
+
// src/client/generated/sdk-styles.gen.ts
|
|
54
|
+
var sdkStyles = '/*! tailwindcss v4.2.1 | 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-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking: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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--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-spacing:.25rem;--clcosdk-container-md:28rem;--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-font-weight-normal:400;--clcosdk-font-weight-medium:500;--clcosdk-font-weight-semibold:600;--clcosdk-radius-md:.375rem;--clcosdk-radius-lg:.5rem;--clcosdk-radius-2xl:1rem;--clcosdk-ease-in-out:cubic-bezier(.4, 0, .2, 1);--clcosdk-animate-spin:spin 1s linear 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}@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}}: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}.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 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 img,.clco-sdk-root svg{max-width:100%;display:block}}@layer components;@layer utilities{.clcosdk\\:absolute{position:absolute}.clcosdk\\:relative{position:relative}.clcosdk\\:inset-0{inset:calc(var(--clcosdk-spacing) * 0)}.clcosdk\\:top-4{top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:right-4{right:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:mt-4{margin-top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:mb-6{margin-bottom:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:flex{display:flex}.clcosdk\\:grid{display:grid}.clcosdk\\:inline-flex{display:inline-flex}.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-9{height:calc(var(--clcosdk-spacing) * 9)}.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-28{height:calc(var(--clcosdk-spacing) * 28)}.clcosdk\\:h-52{height:calc(var(--clcosdk-spacing) * 52)}.clcosdk\\:h-\\[18px\\]{height:18px}.clcosdk\\:h-auto{height:auto}.clcosdk\\:h-full{height:100%}.clcosdk\\:min-h-0{min-height:calc(var(--clcosdk-spacing) * 0)}.clcosdk\\:min-h-40{min-height:calc(var(--clcosdk-spacing) * 40)}.clcosdk\\:min-h-\\[2\\.4rem\\]{min-height:2.4rem}.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-12{width:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:w-16{width:calc(var(--clcosdk-spacing) * 16)}.clcosdk\\:w-28{width:calc(var(--clcosdk-spacing) * 28)}.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-\\[448px\\]{width:448px}.clcosdk\\:w-auto{width:auto}.clcosdk\\:w-full{width:100%}.clcosdk\\:max-w-\\[22rem\\]{max-width:22rem}.clcosdk\\:max-w-\\[28rem\\]{max-width:28rem}.clcosdk\\:max-w-\\[30rem\\]{max-width:30rem}.clcosdk\\:max-w-\\[1200px\\]{max-width:1200px}.clcosdk\\:max-w-md{max-width:var(--clcosdk-container-md)}.clcosdk\\:shrink-0{flex-shrink:0}.clcosdk\\:rotate-90{rotate:90deg}.clcosdk\\:animate-spin{animation:var(--clcosdk-animate-spin)}.clcosdk\\:cursor-pointer{cursor:pointer}.clcosdk\\:grid-cols-2{grid-template-columns:repeat(2,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-start{align-items:flex-start}.clcosdk\\:justify-between{justify-content:space-between}.clcosdk\\:justify-center{justify-content:center}.clcosdk\\:gap-1{gap:calc(var(--clcosdk-spacing) * 1)}.clcosdk\\:gap-2{gap:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:gap-3{gap:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:gap-4{gap:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:gap-5{gap:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:gap-6{gap:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:gap-8{gap:calc(var(--clcosdk-spacing) * 8)}.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\\:overflow-hidden{overflow:hidden}.clcosdk\\:rounded-2xl{border-radius:var(--clcosdk-radius-2xl)}.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\\:border{border-style:var(--tw-border-style);border-width:1px}.clcosdk\\:border-2{border-style:var(--tw-border-style);border-width:2px}.clcosdk\\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.clcosdk\\:border-dashed{--tw-border-style:dashed;border-style:dashed}.clcosdk\\:border-accent\\/50{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.clcosdk\\:border-accent\\/50{border-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.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-border,.clcosdk\\:border-border\\/60{border-color:var(--color-border)}@supports (color:color-mix(in lab, red, red)){.clcosdk\\:border-border\\/60{border-color:color-mix(in oklab, var(--color-border) 60%, transparent)}}.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-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-accent\\/10{background-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.clcosdk\\:bg-accent\\/10{background-color:color-mix(in oklab, var(--color-accent) 10%, transparent)}}.clcosdk\\:bg-background{background-color:var(--color-background)}.clcosdk\\:bg-brand-primary{background-color:var(--color-brand-primary)}.clcosdk\\:bg-error-subtle{background-color:var(--color-error-subtle)}.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-transparent{background-color:#0000}.clcosdk\\:bg-warning-subtle{background-color:var(--color-warning-subtle)}.clcosdk\\:bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.clcosdk\\:bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.clcosdk\\:from-surface{--tw-gradient-from:var(--color-surface);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.clcosdk\\:from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.clcosdk\\:via-section{--tw-gradient-via:var(--color-section);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.clcosdk\\:via-transparent{--tw-gradient-via:transparent;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.clcosdk\\:to-background{--tw-gradient-to:var(--color-background);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.clcosdk\\:to-overlay\\/35{--tw-gradient-to:var(--color-overlay)}@supports (color:color-mix(in lab, red, red)){.clcosdk\\:to-overlay\\/35{--tw-gradient-to:color-mix(in oklab, var(--color-overlay) 35%, transparent)}}.clcosdk\\:to-overlay\\/35{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.clcosdk\\:object-cover{object-fit:cover}.clcosdk\\:p-0{padding:calc(var(--clcosdk-spacing) * 0)}.clcosdk\\:p-1\\.5{padding:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:p-3{padding:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:p-6{padding:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:p-8{padding:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:px-2{padding-inline:calc(var(--clcosdk-spacing) * 2)}.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\\:pt-4{padding-top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:pb-4{padding-bottom:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:text-center{text-align:center}.clcosdk\\:text-left{text-align:left}.clcosdk\\:text-base{font-size:var(--clcosdk-text-base);line-height:var(--tw-leading,var(--clcosdk-text-base--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-\\[14px\\]{font-size:14px}.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-\\[110\\%\\]{--tw-leading:110%;line-height:110%}.clcosdk\\:leading-\\[120\\%\\]{--tw-leading:120%;line-height:120%}.clcosdk\\:leading-\\[125\\%\\]{--tw-leading:125%;line-height:125%}.clcosdk\\:leading-\\[130\\%\\]{--tw-leading:130%;line-height:130%}.clcosdk\\:leading-\\[135\\%\\]{--tw-leading:135%;line-height:135%}.clcosdk\\:leading-\\[140\\%\\]{--tw-leading:140%;line-height:140%}.clcosdk\\:leading-\\[150\\%\\]{--tw-leading:150%;line-height:150%}.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\\:whitespace-nowrap{white-space:nowrap}.clcosdk\\:text-error{color:var(--color-error)}.clcosdk\\:text-success{color:var(--color-success)}.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\\:underline{text-decoration-line:underline}.clcosdk\\:underline-offset-2{text-underline-offset:2px}.clcosdk\\:underline-offset-4{text-underline-offset:4px}.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-\\[0_0_0_3px_rgba\\(59\\,130\\,246\\,0\\.18\\)\\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#3b82f62e);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-\\[0_0_0_3px_rgba\\(59\\,130\\,246\\,0\\.25\\)\\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#3b82f640);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-\\[0_10px_24px_rgba\\(0\\,0\\,0\\,0\\.18\\)\\]{--tw-shadow:0 10px 24px var(--tw-shadow-color,#0000002e);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-\\[0_10px_24px_rgba\\(0\\,0\\,0\\,0\\.25\\)\\]{--tw-shadow:0 10px 24px var(--tw-shadow-color,#00000040);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\\: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-all{transition-property:all;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-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\\:ease-in-out{--tw-ease:var(--clcosdk-ease-in-out);transition-timing-function:var(--clcosdk-ease-in-out)}@media (hover:hover){.clcosdk\\:hover\\:-translate-y-0\\.5:hover{--tw-translate-y:calc(var(--clcosdk-spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.clcosdk\\:hover\\:border-divider:hover{border-color:var(--color-divider)}.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\\:shadow-\\[0px_14px_32px_-10px_rgba\\(0\\,0\\,0\\,0\\.35\\)\\]:hover{--tw-shadow:0px 14px 32px -10px var(--tw-shadow-color,#00000059);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-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-accent-focus:focus-visible{--tw-ring-color:var(--color-accent-focus)}.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-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\\:disabled\\:pointer-events-none:disabled{pointer-events:none}.clcosdk\\:disabled\\:opacity-40:disabled{opacity:.4}@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-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-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{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-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}@keyframes spin{to{transform:rotate(360deg)}}';
|
|
55
|
+
|
|
56
|
+
// src/client/CoinListStyleScope.tsx
|
|
57
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
58
|
+
function CoinListStyleScope({ children }) {
|
|
59
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
60
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("link", { rel: "preconnect", href: "https://fonts.googleapis.com" }),
|
|
61
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
62
|
+
"link",
|
|
63
|
+
{
|
|
64
|
+
rel: "preconnect",
|
|
65
|
+
href: "https://fonts.gstatic.com",
|
|
66
|
+
crossOrigin: "anonymous"
|
|
67
|
+
}
|
|
68
|
+
),
|
|
69
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
70
|
+
"link",
|
|
71
|
+
{
|
|
72
|
+
rel: "stylesheet",
|
|
73
|
+
href: "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap"
|
|
74
|
+
}
|
|
75
|
+
),
|
|
76
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "clco-sdk-root", children: [
|
|
77
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", { dangerouslySetInnerHTML: { __html: sdkStyles } }),
|
|
78
|
+
children
|
|
79
|
+
] })
|
|
80
|
+
] });
|
|
81
|
+
}
|
|
82
|
+
|
|
52
83
|
// src/shared/utils.ts
|
|
53
84
|
async function sha256(data) {
|
|
54
85
|
const bytes = typeof data === "string" ? new TextEncoder().encode(data) : data;
|
|
@@ -788,6 +819,29 @@ async function fetchRequirementStatuses(api, offerId) {
|
|
|
788
819
|
return RequirementStatusInfo.fromStatusesDto(response);
|
|
789
820
|
}
|
|
790
821
|
|
|
822
|
+
// src/shared/types/oauth.ts
|
|
823
|
+
var AuthorizationCode = (value) => value;
|
|
824
|
+
var CodeVerifier = (value) => value;
|
|
825
|
+
var CodeChallenge = (value) => value;
|
|
826
|
+
var PKCEState = (value) => value;
|
|
827
|
+
|
|
828
|
+
// src/shared/pkce.ts
|
|
829
|
+
async function generatePKCEParams(config) {
|
|
830
|
+
const state = generateSecureRandomBase64Url(32);
|
|
831
|
+
const codeVerifier = generateSecureRandomBase64Url(32);
|
|
832
|
+
const codeChallengeRaw = await sha256(codeVerifier);
|
|
833
|
+
const codeChallenge = arrayBufferToBase64Url(codeChallengeRaw, false);
|
|
834
|
+
return {
|
|
835
|
+
clientId: config.clientId,
|
|
836
|
+
responseType: "code",
|
|
837
|
+
redirectUri: config.redirectUri,
|
|
838
|
+
codeChallenge: CodeChallenge(codeChallenge),
|
|
839
|
+
codeChallengeMethod: "S256",
|
|
840
|
+
state: PKCEState(state),
|
|
841
|
+
codeVerifier: CodeVerifier(codeVerifier)
|
|
842
|
+
};
|
|
843
|
+
}
|
|
844
|
+
|
|
791
845
|
// src/shared/types/errors.ts
|
|
792
846
|
var NotAuthenticatedError = class extends Error {
|
|
793
847
|
constructor(message = "The user is not authenticated. Go through the OAuth flow first!") {
|
|
@@ -796,10 +850,6 @@ var NotAuthenticatedError = class extends Error {
|
|
|
796
850
|
}
|
|
797
851
|
};
|
|
798
852
|
|
|
799
|
-
// src/shared/types/oauth.ts
|
|
800
|
-
var AuthorizationCode = (value) => value;
|
|
801
|
-
var CodeVerifier = (value) => value;
|
|
802
|
-
|
|
803
853
|
// src/client/core/coinlist-client.ts
|
|
804
854
|
var OAUTH_STATE_KEY = "coinlist.oauth_state";
|
|
805
855
|
var OAUTH_CODE_VERIFIER_KEY = "coinlist.oauth_code_verifier";
|
|
@@ -838,19 +888,16 @@ var CoinListClientImpl = class {
|
|
|
838
888
|
return this._accessToken !== null ? "logged-in" : "logged-out";
|
|
839
889
|
}
|
|
840
890
|
async startOAuth() {
|
|
841
|
-
const
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
const codeChallenge = arrayBufferToBase64Url(codeChallengeRaw, false);
|
|
845
|
-
sessionStorage.setItem(OAUTH_STATE_KEY, state);
|
|
846
|
-
sessionStorage.setItem(OAUTH_CODE_VERIFIER_KEY, codeVerifier);
|
|
891
|
+
const pkceParams = await generatePKCEParams(this._config);
|
|
892
|
+
sessionStorage.setItem(OAUTH_STATE_KEY, pkceParams.state);
|
|
893
|
+
sessionStorage.setItem(OAUTH_CODE_VERIFIER_KEY, pkceParams.codeVerifier);
|
|
847
894
|
const params = new URLSearchParams({
|
|
848
|
-
client_id:
|
|
849
|
-
response_type:
|
|
850
|
-
redirect_uri:
|
|
851
|
-
code_challenge: codeChallenge,
|
|
852
|
-
code_challenge_method:
|
|
853
|
-
state
|
|
895
|
+
client_id: pkceParams.clientId,
|
|
896
|
+
response_type: pkceParams.responseType,
|
|
897
|
+
redirect_uri: pkceParams.redirectUri,
|
|
898
|
+
code_challenge: pkceParams.codeChallenge,
|
|
899
|
+
code_challenge_method: pkceParams.codeChallengeMethod,
|
|
900
|
+
state: pkceParams.state
|
|
854
901
|
});
|
|
855
902
|
const baseUrl = this._config.coinlistBaseUrl ?? COINLIST_BASE_URL;
|
|
856
903
|
const url = `${baseUrl}${OAUTH_PAGE_PATH}?${params.toString()}`;
|
|
@@ -974,9 +1021,12 @@ function createCoinListClient(config) {
|
|
|
974
1021
|
}
|
|
975
1022
|
|
|
976
1023
|
// src/client/CoinListProvider.tsx
|
|
977
|
-
var
|
|
1024
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
978
1025
|
var CoinListContext = (0, import_react.createContext)(null);
|
|
979
|
-
function
|
|
1026
|
+
function CoinListContextProvider({
|
|
1027
|
+
config,
|
|
1028
|
+
children
|
|
1029
|
+
}) {
|
|
980
1030
|
const [isReady, setIsReady] = (0, import_react.useState)(false);
|
|
981
1031
|
const coinlist = (0, import_react.useMemo)(() => createCoinListClient(config), [config]);
|
|
982
1032
|
(0, import_react.useEffect)(() => {
|
|
@@ -999,7 +1049,10 @@ function CoinListProvider({ config, children }) {
|
|
|
999
1049
|
};
|
|
1000
1050
|
}, [coinlist]);
|
|
1001
1051
|
const value = (0, import_react.useMemo)(() => ({ coinlist, isReady }), [coinlist, isReady]);
|
|
1002
|
-
return /* @__PURE__ */ (0,
|
|
1052
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(CoinListContext.Provider, { value, children });
|
|
1053
|
+
}
|
|
1054
|
+
function CoinListProvider({ config, children }) {
|
|
1055
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(CoinListContextProvider, { config, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(CoinListStyleScope, { children }) });
|
|
1003
1056
|
}
|
|
1004
1057
|
|
|
1005
1058
|
// src/client/components/design-system/AlertBanner.tsx
|
|
@@ -1007,17 +1060,17 @@ var import_lucide_react = require("lucide-react");
|
|
|
1007
1060
|
|
|
1008
1061
|
// src/client/components/design-system/tokens/typography.ts
|
|
1009
1062
|
var typeClasses = {
|
|
1010
|
-
hero: "text-[64px] leading-[110%] font-semibold",
|
|
1011
|
-
display: "text-[48px] leading-[110%] font-semibold",
|
|
1012
|
-
h1: "text-[36px] leading-[120%] font-semibold",
|
|
1013
|
-
h2: "text-[28px] leading-[125%] font-semibold",
|
|
1014
|
-
h3: "text-[22px] leading-[130%] font-semibold",
|
|
1015
|
-
h4: "text-[18px] leading-[135%] font-medium",
|
|
1016
|
-
body: "text-[16px] leading-[150%] font-normal",
|
|
1017
|
-
subhead: "text-[14px] leading-[150%] font-normal",
|
|
1018
|
-
caption: "text-[12px] leading-[140%] font-normal",
|
|
1019
|
-
label: "text-[14px] leading-[140%] font-medium",
|
|
1020
|
-
data: "text-[14px] leading-[140%] font-normal"
|
|
1063
|
+
hero: "clcosdk:text-[64px] clcosdk:leading-[110%] clcosdk:font-semibold",
|
|
1064
|
+
display: "clcosdk:text-[48px] clcosdk:leading-[110%] clcosdk:font-semibold",
|
|
1065
|
+
h1: "clcosdk:text-[36px] clcosdk:leading-[120%] clcosdk:font-semibold",
|
|
1066
|
+
h2: "clcosdk:text-[28px] clcosdk:leading-[125%] clcosdk:font-semibold",
|
|
1067
|
+
h3: "clcosdk:text-[22px] clcosdk:leading-[130%] clcosdk:font-semibold",
|
|
1068
|
+
h4: "clcosdk:text-[18px] clcosdk:leading-[135%] clcosdk:font-medium",
|
|
1069
|
+
body: "clcosdk:text-[16px] clcosdk:leading-[150%] clcosdk:font-normal",
|
|
1070
|
+
subhead: "clcosdk:text-[14px] clcosdk:leading-[150%] clcosdk:font-normal",
|
|
1071
|
+
caption: "clcosdk:text-[12px] clcosdk:leading-[140%] clcosdk:font-normal",
|
|
1072
|
+
label: "clcosdk:text-[14px] clcosdk:leading-[140%] clcosdk:font-medium",
|
|
1073
|
+
data: "clcosdk:text-[14px] clcosdk:leading-[140%] clcosdk:font-normal"
|
|
1021
1074
|
};
|
|
1022
1075
|
|
|
1023
1076
|
// src/client/components/design-system/utils.ts
|
|
@@ -1027,26 +1080,26 @@ function cn(...inputs) {
|
|
|
1027
1080
|
}
|
|
1028
1081
|
|
|
1029
1082
|
// src/client/components/design-system/AlertBanner.tsx
|
|
1030
|
-
var
|
|
1083
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
1031
1084
|
var variantConfig = {
|
|
1032
1085
|
info: {
|
|
1033
|
-
container: "bg-surface border-border",
|
|
1034
|
-
text: "text-text-secondary",
|
|
1086
|
+
container: "clcosdk:bg-surface clcosdk:border-border",
|
|
1087
|
+
text: "clcosdk:text-text-secondary",
|
|
1035
1088
|
Icon: import_lucide_react.Info
|
|
1036
1089
|
},
|
|
1037
1090
|
success: {
|
|
1038
|
-
container: "bg-success-subtle border-success-border",
|
|
1039
|
-
text: "text-success",
|
|
1091
|
+
container: "clcosdk:bg-success-subtle clcosdk:border-success-border",
|
|
1092
|
+
text: "clcosdk:text-success",
|
|
1040
1093
|
Icon: import_lucide_react.CircleCheck
|
|
1041
1094
|
},
|
|
1042
1095
|
warning: {
|
|
1043
|
-
container: "bg-warning-subtle border-warning-border",
|
|
1044
|
-
text: "text-warning",
|
|
1096
|
+
container: "clcosdk:bg-warning-subtle clcosdk:border-warning-border",
|
|
1097
|
+
text: "clcosdk:text-warning",
|
|
1045
1098
|
Icon: import_lucide_react.Info
|
|
1046
1099
|
},
|
|
1047
1100
|
error: {
|
|
1048
|
-
container: "bg-error-subtle border-error-border",
|
|
1049
|
-
text: "text-error",
|
|
1101
|
+
container: "clcosdk:bg-error-subtle clcosdk:border-error-border",
|
|
1102
|
+
text: "clcosdk:text-error",
|
|
1050
1103
|
Icon: import_lucide_react.Info
|
|
1051
1104
|
}
|
|
1052
1105
|
};
|
|
@@ -1057,18 +1110,24 @@ function AlertBanner({
|
|
|
1057
1110
|
className
|
|
1058
1111
|
}) {
|
|
1059
1112
|
const { container, text, Icon } = variantConfig[variant];
|
|
1060
|
-
return /* @__PURE__ */ (0,
|
|
1113
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
1061
1114
|
"div",
|
|
1062
1115
|
{
|
|
1063
1116
|
className: cn(
|
|
1064
|
-
"flex items-center rounded-btn border p-3",
|
|
1065
|
-
icon && "gap-2",
|
|
1117
|
+
"clcosdk:flex clcosdk:items-center clcosdk:rounded-btn clcosdk:border clcosdk:p-3",
|
|
1118
|
+
icon && "clcosdk:gap-2",
|
|
1066
1119
|
container,
|
|
1067
1120
|
className
|
|
1068
1121
|
),
|
|
1069
1122
|
children: [
|
|
1070
|
-
icon && /* @__PURE__ */ (0,
|
|
1071
|
-
|
|
1123
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
1124
|
+
Icon,
|
|
1125
|
+
{
|
|
1126
|
+
className: cn("clcosdk:h-4 clcosdk:w-4 clcosdk:shrink-0", text),
|
|
1127
|
+
"aria-hidden": "true"
|
|
1128
|
+
}
|
|
1129
|
+
),
|
|
1130
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: cn(typeClasses.subhead, text), children: content })
|
|
1072
1131
|
]
|
|
1073
1132
|
}
|
|
1074
1133
|
);
|
|
@@ -1076,31 +1135,31 @@ function AlertBanner({
|
|
|
1076
1135
|
|
|
1077
1136
|
// src/client/components/design-system/CloseButton.tsx
|
|
1078
1137
|
var import_lucide_react2 = require("lucide-react");
|
|
1079
|
-
var
|
|
1138
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
1080
1139
|
function CloseButton({
|
|
1081
1140
|
onClick,
|
|
1082
1141
|
"aria-label": ariaLabel = "Close",
|
|
1083
1142
|
className
|
|
1084
1143
|
}) {
|
|
1085
|
-
return /* @__PURE__ */ (0,
|
|
1144
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1086
1145
|
"button",
|
|
1087
1146
|
{
|
|
1088
1147
|
type: "button",
|
|
1089
1148
|
onClick,
|
|
1090
1149
|
"aria-label": ariaLabel,
|
|
1091
1150
|
className: cn(
|
|
1092
|
-
"cursor-pointer rounded-full p-1.5 text-text-secondary transition-colors hover:bg-surface hover:text-text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-400 focus-visible:ring-offset-2",
|
|
1151
|
+
"clcosdk:cursor-pointer clcosdk:rounded-full clcosdk:p-1.5 clcosdk:text-text-secondary clcosdk:transition-colors clcosdk:hover:bg-surface clcosdk:hover:text-text-primary clcosdk:focus-visible:outline-none clcosdk:focus-visible:ring-2 clcosdk:focus-visible:ring-gray-400 clcosdk:focus-visible:ring-offset-2",
|
|
1093
1152
|
className
|
|
1094
1153
|
),
|
|
1095
|
-
children: /* @__PURE__ */ (0,
|
|
1154
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react2.X, { className: "clcosdk:h-5 clcosdk:w-5" })
|
|
1096
1155
|
}
|
|
1097
1156
|
);
|
|
1098
1157
|
}
|
|
1099
1158
|
|
|
1100
1159
|
// src/client/components/design-system/logos/CoinListWordmark.tsx
|
|
1101
|
-
var
|
|
1160
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
1102
1161
|
function CoinListWordmark(props) {
|
|
1103
|
-
return /* @__PURE__ */ (0,
|
|
1162
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1104
1163
|
"svg",
|
|
1105
1164
|
{
|
|
1106
1165
|
width: "638",
|
|
@@ -1111,35 +1170,35 @@ function CoinListWordmark(props) {
|
|
|
1111
1170
|
"aria-hidden": "true",
|
|
1112
1171
|
...props,
|
|
1113
1172
|
children: [
|
|
1114
|
-
/* @__PURE__ */ (0,
|
|
1173
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1115
1174
|
"path",
|
|
1116
1175
|
{
|
|
1117
1176
|
d: "M68.7724 123.966C74.8226 124.172 80.7696 123.519 86.5104 121.799C97.4076 118.531 106.551 112.58 113.942 103.947C113.942 103.947 113.942 103.947 113.908 103.912C111.879 102.193 109.851 100.507 107.857 98.8218L105.829 97.1363C105.451 96.8268 105.107 96.5172 104.729 96.2076C103.939 95.5197 103.148 94.8662 102.323 94.2126C95.3107 98.8562 87.6104 101.539 79.1196 101.883C74.8569 102.055 70.6287 101.642 66.5036 100.507C59.5252 98.6154 53.2688 95.1757 48.2499 89.7755C39.1059 79.938 35.8745 68.1743 38.2465 55.0348C39.7246 46.9172 43.4373 40.0723 49.1093 34.5C47.9061 34.7408 46.703 35.016 45.5342 35.3943C36.5277 38.2148 29.6181 43.6839 24.6336 51.6639C20.6803 58.0273 18.5834 64.9411 18.3428 72.4739C18.2053 76.7047 18.4803 80.7979 19.4428 84.7879C22.5023 97.2395 29.3087 107.043 39.6903 114.335H39.7934V114.403C40.1372 114.644 40.4809 114.919 40.8247 115.16C49.2812 120.801 58.5971 123.691 68.7724 124.035V123.966Z",
|
|
1118
1177
|
fill: "currentColor"
|
|
1119
1178
|
}
|
|
1120
1179
|
),
|
|
1121
|
-
/* @__PURE__ */ (0,
|
|
1180
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1122
1181
|
"path",
|
|
1123
1182
|
{
|
|
1124
1183
|
d: "M72.2101 89.052C68.1881 90.8406 64.0286 91.8725 59.6973 92.2165C64.9912 95.209 70.8007 96.688 77.1259 96.8256C79.1885 96.86 81.251 96.6536 83.4167 96.3097C88.745 95.4841 93.6951 93.5579 98.3015 90.7374C93.9358 87.057 89.6044 83.4109 85.2386 79.7305C81.526 83.6861 77.1946 86.8506 72.2101 89.052Z",
|
|
1125
1184
|
fill: "currentColor"
|
|
1126
1185
|
}
|
|
1127
1186
|
),
|
|
1128
|
-
/* @__PURE__ */ (0,
|
|
1187
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1129
1188
|
"path",
|
|
1130
1189
|
{
|
|
1131
1190
|
d: "M66.9848 0.241609C66.4348 0.276006 65.8848 0.344799 65.3691 0.413592C70.663 1.4111 75.7851 3.13093 80.6321 5.71068C90.0511 10.7326 97.3732 17.9215 102.289 27.4494L104.936 25.1448C107.652 22.7714 110.368 20.3981 113.084 18.0247C106.655 11.1797 99.092 6.15784 90.223 3.06214C84.3103 0.998336 78.2601 -0.0335643 72.0381 0.000832319C70.388 0.000832319 68.7036 0.138419 66.9848 0.241609Z",
|
|
1132
1191
|
fill: "currentColor"
|
|
1133
1192
|
}
|
|
1134
1193
|
),
|
|
1135
|
-
/* @__PURE__ */ (0,
|
|
1194
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1136
1195
|
"path",
|
|
1137
1196
|
{
|
|
1138
1197
|
d: "M25.4242 107.871C17.4833 97.9988 13.1519 86.7167 13.2207 73.818C13.2207 67.317 14.5614 61.0568 17.1396 55.1062C20.9553 46.2662 26.9711 39.1805 35.4276 34.2962C43.3685 29.687 51.9968 27.8984 61.1752 29.2743C70.5943 30.7189 78.3976 35.2249 84.6541 42.2762C84.6541 42.2762 84.8603 42.5514 84.9634 42.6546C85.8916 41.8291 86.8541 41.0035 87.7823 40.178L88.9167 39.1805C89.8792 38.355 90.8417 37.4951 91.8043 36.6696C94.0043 34.7434 96.17 32.8515 98.3357 30.9253C94.1075 22.223 87.7479 15.55 79.3258 10.8377C69.3911 5.26541 58.7002 3.54557 47.3904 5.02463C41.7528 5.78136 36.3557 7.50119 31.1993 10.0465C13.702 18.7145 1.08597 36.532 0.0546833 58.4771C-0.117196 62.0887 0.123436 65.7348 0.673452 69.3464C2.04849 78.3239 5.34859 86.4759 10.6425 93.8368C14.7676 99.5123 19.6834 104.19 25.3898 107.871H25.4242Z",
|
|
1139
1198
|
fill: "currentColor"
|
|
1140
1199
|
}
|
|
1141
1200
|
),
|
|
1142
|
-
/* @__PURE__ */ (0,
|
|
1201
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1143
1202
|
"path",
|
|
1144
1203
|
{
|
|
1145
1204
|
fillRule: "evenodd",
|
|
@@ -1154,18 +1213,18 @@ function CoinListWordmark(props) {
|
|
|
1154
1213
|
}
|
|
1155
1214
|
|
|
1156
1215
|
// src/client/components/design-system/PoweredByCoinList.tsx
|
|
1157
|
-
var
|
|
1216
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
1158
1217
|
function PoweredByCoinList({ className }) {
|
|
1159
|
-
return /* @__PURE__ */ (0,
|
|
1218
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
1160
1219
|
"div",
|
|
1161
1220
|
{
|
|
1162
1221
|
className: cn(
|
|
1163
|
-
"flex items-center justify-center gap-[5px] text-text-secondary",
|
|
1222
|
+
"clcosdk:flex clcosdk:items-center clcosdk:justify-center clcosdk:gap-[5px] clcosdk:text-text-secondary",
|
|
1164
1223
|
className
|
|
1165
1224
|
),
|
|
1166
1225
|
children: [
|
|
1167
|
-
/* @__PURE__ */ (0,
|
|
1168
|
-
/* @__PURE__ */ (0,
|
|
1226
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: cn(typeClasses.caption, "clcosdk:tracking-[0.12px]"), children: "Powered by" }),
|
|
1227
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(CoinListWordmark, { className: "clcosdk:h-3 clcosdk:w-auto" })
|
|
1169
1228
|
]
|
|
1170
1229
|
}
|
|
1171
1230
|
);
|
|
@@ -1174,48 +1233,48 @@ function PoweredByCoinList({ className }) {
|
|
|
1174
1233
|
// src/client/components/design-system/ClButton.tsx
|
|
1175
1234
|
var import_class_variance_authority = require("class-variance-authority");
|
|
1176
1235
|
var import_react2 = require("react");
|
|
1177
|
-
var
|
|
1236
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1178
1237
|
var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
1179
|
-
"inline-flex items-center justify-center gap-3 whitespace-nowrap transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-40 cursor-pointer",
|
|
1238
|
+
"clcosdk:inline-flex clcosdk:items-center clcosdk:justify-center clcosdk:gap-3 clcosdk:whitespace-nowrap clcosdk:transition-colors clcosdk:focus-visible:outline-none clcosdk:focus-visible:ring-2 clcosdk:focus-visible:ring-offset-2 clcosdk:disabled:pointer-events-none clcosdk:disabled:opacity-40 clcosdk:cursor-pointer",
|
|
1180
1239
|
{
|
|
1181
1240
|
variants: {
|
|
1182
1241
|
variant: {
|
|
1183
1242
|
// Primary — tokens auto-switch: dark bg (#171717) → light bg (#f4f4f5) in dark mode
|
|
1184
|
-
primary: "bg-brand-primary text-text-inverse font-semibold hover:bg-brand-primary-hover active:bg-brand-primary-active focus-visible:ring-gray-500",
|
|
1243
|
+
primary: "clcosdk:bg-brand-primary clcosdk:text-text-inverse clcosdk:font-semibold clcosdk:hover:bg-brand-primary-hover clcosdk:active:bg-brand-primary-active clcosdk:focus-visible:ring-gray-500",
|
|
1185
1244
|
// Secondary — bg-section, border-border, text-text-primary all auto-switch
|
|
1186
1245
|
// hover maps to border token value; active has no token so uses dark: override
|
|
1187
|
-
secondary: "bg-section border border-border text-text-primary font-medium hover:bg-border active:bg-[#d9d9d9] dark:active:bg-divider focus-visible:ring-gray-400",
|
|
1246
|
+
secondary: "clcosdk:bg-section clcosdk:border clcosdk:border-border clcosdk:text-text-primary clcosdk:font-medium clcosdk:hover:bg-border clcosdk:active:bg-[#d9d9d9] clcosdk:dark:active:bg-divider clcosdk:focus-visible:ring-gray-400",
|
|
1188
1247
|
// Destructive — error tokens auto-switch to translucent dark equivalents
|
|
1189
1248
|
// hover/active have no tokens so use dark: overrides
|
|
1190
|
-
destructive: "bg-error-subtle border border-error-border text-error font-semibold hover:bg-[#fcdcd8] active:bg-[#f9c9c4] dark:hover:bg-[rgba(248,113,113,0.20)] dark:active:bg-[rgba(248,113,113,0.30)] focus-visible:ring-red-400",
|
|
1249
|
+
destructive: "clcosdk:bg-error-subtle clcosdk:border clcosdk:border-error-border clcosdk:text-error clcosdk:font-semibold clcosdk:hover:bg-[#fcdcd8] clcosdk:active:bg-[#f9c9c4] clcosdk:dark:hover:bg-[rgba(248,113,113,0.20)] clcosdk:dark:active:bg-[rgba(248,113,113,0.30)] clcosdk:focus-visible:ring-red-400",
|
|
1191
1250
|
// Ghost — transparent base; hover/active use section/border tokens (auto-switch)
|
|
1192
|
-
ghost: "bg-transparent text-text-primary font-medium hover:bg-section active:bg-border focus-visible:ring-gray-400",
|
|
1251
|
+
ghost: "clcosdk:bg-transparent clcosdk:text-text-primary clcosdk:font-medium clcosdk:hover:bg-section clcosdk:active:bg-border clcosdk:focus-visible:ring-gray-400",
|
|
1193
1252
|
// Link — text-text-primary auto-switches light/dark
|
|
1194
|
-
link: "h-auto p-0 text-text-primary font-medium underline-offset-4 hover:underline focus-visible:ring-gray-500",
|
|
1253
|
+
link: "clcosdk:h-auto clcosdk:p-0 clcosdk:text-text-primary clcosdk:font-medium clcosdk:underline-offset-4 clcosdk:hover:underline clcosdk:focus-visible:ring-gray-500",
|
|
1195
1254
|
// Destructive link — text-error auto-switches (#b42318 → #f87171 in dark)
|
|
1196
|
-
destructiveLink: "h-auto p-0 text-error font-medium hover:text-[#8b1a13] active:text-[#6d1510] dark:hover:text-[#fca5a5] dark:active:text-[#f87171] focus-visible:ring-red-500"
|
|
1255
|
+
destructiveLink: "clcosdk:h-auto clcosdk:p-0 clcosdk:text-error clcosdk:font-medium clcosdk:hover:text-[#8b1a13] clcosdk:active:text-[#6d1510] clcosdk:dark:hover:text-[#fca5a5] clcosdk:dark:active:text-[#f87171] clcosdk:focus-visible:ring-red-500"
|
|
1197
1256
|
},
|
|
1198
1257
|
size: {
|
|
1199
|
-
sm: "h-9 px-4 text-sm tracking-[0.28px]",
|
|
1200
|
-
default: "h-11 px-5 text-sm tracking-[0.28px]",
|
|
1201
|
-
lg: "h-14 px-6 text-base",
|
|
1202
|
-
icon: "h-12 w-12"
|
|
1258
|
+
sm: "clcosdk:h-9 clcosdk:px-4 clcosdk:text-sm clcosdk:tracking-[0.28px]",
|
|
1259
|
+
default: "clcosdk:h-11 clcosdk:px-5 clcosdk:text-sm clcosdk:tracking-[0.28px]",
|
|
1260
|
+
lg: "clcosdk:h-14 clcosdk:px-6 clcosdk:text-base",
|
|
1261
|
+
icon: "clcosdk:h-12 clcosdk:w-12"
|
|
1203
1262
|
},
|
|
1204
1263
|
radius: {
|
|
1205
|
-
pill: "rounded-full",
|
|
1264
|
+
pill: "clcosdk:rounded-full",
|
|
1206
1265
|
// compound variants below handle size-specific radii
|
|
1207
1266
|
rounded: ""
|
|
1208
1267
|
},
|
|
1209
1268
|
fullWidth: {
|
|
1210
|
-
true: "w-full",
|
|
1269
|
+
true: "clcosdk:w-full",
|
|
1211
1270
|
false: ""
|
|
1212
1271
|
}
|
|
1213
1272
|
},
|
|
1214
1273
|
compoundVariants: [
|
|
1215
|
-
{ size: "sm", radius: "rounded", className: "rounded-lg" },
|
|
1216
|
-
{ size: "default", radius: "rounded", className: "rounded-2xl" },
|
|
1217
|
-
{ size: "lg", radius: "rounded", className: "rounded-2xl" },
|
|
1218
|
-
{ size: "icon", radius: "rounded", className: "rounded-md" }
|
|
1274
|
+
{ size: "sm", radius: "rounded", className: "clcosdk:rounded-lg" },
|
|
1275
|
+
{ size: "default", radius: "rounded", className: "clcosdk:rounded-2xl" },
|
|
1276
|
+
{ size: "lg", radius: "rounded", className: "clcosdk:rounded-2xl" },
|
|
1277
|
+
{ size: "icon", radius: "rounded", className: "clcosdk:rounded-md" }
|
|
1219
1278
|
],
|
|
1220
1279
|
defaultVariants: {
|
|
1221
1280
|
variant: "primary",
|
|
@@ -1241,7 +1300,7 @@ var ClButton = (0, import_react2.forwardRef)(
|
|
|
1241
1300
|
...props
|
|
1242
1301
|
}, ref) => {
|
|
1243
1302
|
const isDisabled = disabled || isLoading;
|
|
1244
|
-
return /* @__PURE__ */ (0,
|
|
1303
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
1245
1304
|
"button",
|
|
1246
1305
|
{
|
|
1247
1306
|
className: cn(
|
|
@@ -1252,16 +1311,16 @@ var ClButton = (0, import_react2.forwardRef)(
|
|
|
1252
1311
|
disabled: isDisabled,
|
|
1253
1312
|
...props,
|
|
1254
1313
|
children: [
|
|
1255
|
-
isLoading && /* @__PURE__ */ (0,
|
|
1314
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1256
1315
|
"span",
|
|
1257
1316
|
{
|
|
1258
|
-
className: "h-4 w-4 shrink-0 animate-spin rounded-full border-2 border-current border-t-transparent opacity-60",
|
|
1317
|
+
className: "clcosdk:h-4 clcosdk:w-4 clcosdk:shrink-0 clcosdk:animate-spin clcosdk:rounded-full clcosdk:border-2 clcosdk:border-current clcosdk:border-t-transparent clcosdk:opacity-60",
|
|
1259
1318
|
"aria-hidden": "true"
|
|
1260
1319
|
}
|
|
1261
1320
|
),
|
|
1262
|
-
startIcon && !isLoading && /* @__PURE__ */ (0,
|
|
1263
|
-
/* @__PURE__ */ (0,
|
|
1264
|
-
endIcon && !isLoading && /* @__PURE__ */ (0,
|
|
1321
|
+
startIcon && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "clcosdk:shrink-0", children: startIcon }),
|
|
1322
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: cn(isLoading && "clcosdk:opacity-60"), children: isLoading && loadingText ? loadingText : children }),
|
|
1323
|
+
endIcon && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "clcosdk:shrink-0", children: endIcon })
|
|
1265
1324
|
]
|
|
1266
1325
|
}
|
|
1267
1326
|
);
|
|
@@ -1270,9 +1329,9 @@ var ClButton = (0, import_react2.forwardRef)(
|
|
|
1270
1329
|
ClButton.displayName = "ClButton";
|
|
1271
1330
|
|
|
1272
1331
|
// src/client/components/design-system/logos/CoinListLogomark.tsx
|
|
1273
|
-
var
|
|
1332
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
1274
1333
|
function CoinListLogomark(props) {
|
|
1275
|
-
return /* @__PURE__ */ (0,
|
|
1334
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
1276
1335
|
"svg",
|
|
1277
1336
|
{
|
|
1278
1337
|
width: "115",
|
|
@@ -1283,28 +1342,28 @@ function CoinListLogomark(props) {
|
|
|
1283
1342
|
"aria-hidden": "true",
|
|
1284
1343
|
...props,
|
|
1285
1344
|
children: [
|
|
1286
|
-
/* @__PURE__ */ (0,
|
|
1345
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1287
1346
|
"path",
|
|
1288
1347
|
{
|
|
1289
1348
|
d: "M69.7519 123.966C75.8021 124.172 81.7491 123.519 87.4899 121.799C98.3871 118.531 107.531 112.58 114.922 103.947C114.922 103.947 114.922 103.947 114.888 103.912C112.859 102.193 110.831 100.507 108.837 98.8218L106.809 97.1363C106.431 96.8268 106.087 96.5172 105.709 96.2076C104.919 95.5197 104.128 94.8662 103.303 94.2126C96.2902 98.8562 88.5899 101.539 80.0991 101.883C75.8364 102.055 71.6082 101.642 67.4831 100.507C60.5047 98.6154 54.2483 95.1757 49.2294 89.7755C40.0854 79.938 36.854 68.1743 39.226 55.0348C40.7041 46.9172 44.4168 40.0723 50.0888 34.5C48.8856 34.7408 47.6825 35.016 46.5137 35.3943C37.5072 38.2148 30.5976 43.6839 25.6131 51.6639C21.6598 58.0273 19.5629 64.9411 19.3223 72.4739C19.1848 76.7047 19.4598 80.7979 20.4223 84.7879C23.4818 97.2395 30.2882 107.043 40.6698 114.335H40.7729V114.403C41.1167 114.644 41.4604 114.919 41.8042 115.16C50.2607 120.801 59.5766 123.691 69.7519 124.035V123.966Z",
|
|
1290
1349
|
fill: "currentColor"
|
|
1291
1350
|
}
|
|
1292
1351
|
),
|
|
1293
|
-
/* @__PURE__ */ (0,
|
|
1352
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1294
1353
|
"path",
|
|
1295
1354
|
{
|
|
1296
1355
|
d: "M73.1896 89.052C69.1676 90.8406 65.0081 91.8725 60.6768 92.2165C65.9707 95.209 71.7802 96.688 78.1054 96.8256C80.168 96.86 82.2305 96.6536 84.3962 96.3097C89.7245 95.4841 94.6746 93.5579 99.281 90.7374C94.9153 87.057 90.5839 83.4109 86.2181 79.7305C82.5055 83.6861 78.1741 86.8506 73.1896 89.052Z",
|
|
1297
1356
|
fill: "currentColor"
|
|
1298
1357
|
}
|
|
1299
1358
|
),
|
|
1300
|
-
/* @__PURE__ */ (0,
|
|
1359
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1301
1360
|
"path",
|
|
1302
1361
|
{
|
|
1303
1362
|
d: "M67.9643 0.241609C67.4143 0.276006 66.8643 0.344799 66.3486 0.413592C71.6425 1.4111 76.7646 3.13093 81.6116 5.71068C91.0306 10.7326 98.3527 17.9215 103.268 27.4494L105.915 25.1448C108.631 22.7714 111.347 20.3981 114.063 18.0247C107.634 11.1797 100.072 6.15784 91.2025 3.06214C85.2898 0.998336 79.2396 -0.0335643 73.0176 0.000832322C71.3675 0.000832322 69.6831 0.138419 67.9643 0.241609Z",
|
|
1304
1363
|
fill: "currentColor"
|
|
1305
1364
|
}
|
|
1306
1365
|
),
|
|
1307
|
-
/* @__PURE__ */ (0,
|
|
1366
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1308
1367
|
"path",
|
|
1309
1368
|
{
|
|
1310
1369
|
d: "M26.4037 107.871C18.4628 97.9988 14.1314 86.7167 14.2002 73.818C14.2002 67.317 15.5409 61.0568 18.1191 55.1062C21.9348 46.2662 27.9506 39.1805 36.4071 34.2962C44.348 29.687 52.9763 27.8984 62.1547 29.2743C71.5738 30.7189 79.3771 35.2249 85.6336 42.2762C85.6336 42.2762 85.8398 42.5514 85.9429 42.6546C86.8711 41.8291 87.8336 41.0035 88.7618 40.178L89.8962 39.1805C90.8587 38.355 91.8212 37.4951 92.7838 36.6696C94.9838 34.7434 97.1495 32.8515 99.3152 30.9253C95.087 22.223 88.7274 15.55 80.3053 10.8377C70.3706 5.26541 59.6797 3.54557 48.37 5.02463C42.7323 5.78136 37.3352 7.50119 32.1788 10.0465C14.6815 18.7145 2.06546 36.532 1.03418 58.4771C0.862296 62.0887 1.10293 65.7348 1.65294 69.3464C3.02798 78.3239 6.32808 86.4759 11.622 93.8368C15.7471 99.5123 20.6629 104.19 26.3693 107.871H26.4037Z",
|
|
@@ -1317,7 +1376,7 @@ function CoinListLogomark(props) {
|
|
|
1317
1376
|
}
|
|
1318
1377
|
|
|
1319
1378
|
// src/client/components/oauth/CoinListSignInButton.tsx
|
|
1320
|
-
var
|
|
1379
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1321
1380
|
function CoinListSignInButton({
|
|
1322
1381
|
onClick,
|
|
1323
1382
|
disabled = false,
|
|
@@ -1325,7 +1384,7 @@ function CoinListSignInButton({
|
|
|
1325
1384
|
isLoading = false,
|
|
1326
1385
|
className
|
|
1327
1386
|
}) {
|
|
1328
|
-
return /* @__PURE__ */ (0,
|
|
1387
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1329
1388
|
ClButton,
|
|
1330
1389
|
{
|
|
1331
1390
|
variant: "primary",
|
|
@@ -1335,7 +1394,7 @@ function CoinListSignInButton({
|
|
|
1335
1394
|
disabled,
|
|
1336
1395
|
isLoading,
|
|
1337
1396
|
loadingText: "Signing in...",
|
|
1338
|
-
startIcon: /* @__PURE__ */ (0,
|
|
1397
|
+
startIcon: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CoinListLogomark, { className: "clcosdk:h-[18px] clcosdk:w-[16px] clcosdk:shrink-0" }),
|
|
1339
1398
|
className,
|
|
1340
1399
|
children: "Continue with CoinList"
|
|
1341
1400
|
}
|
|
@@ -1362,7 +1421,7 @@ var CoinListClientInitializationError = class extends Error {
|
|
|
1362
1421
|
};
|
|
1363
1422
|
|
|
1364
1423
|
// src/client/components/oauth/CoinListSignInCard.tsx
|
|
1365
|
-
var
|
|
1424
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1366
1425
|
function CoinListSignInCard({
|
|
1367
1426
|
state = "idle",
|
|
1368
1427
|
onSignIn,
|
|
@@ -1373,37 +1432,50 @@ function CoinListSignInCard({
|
|
|
1373
1432
|
const handleSignIn = onSignIn ?? (() => {
|
|
1374
1433
|
void coinlist.startOAuth();
|
|
1375
1434
|
});
|
|
1376
|
-
return /* @__PURE__ */ (0,
|
|
1435
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
1377
1436
|
"div",
|
|
1378
1437
|
{
|
|
1379
1438
|
className: cn(
|
|
1380
|
-
"relative flex w-full max-w-md flex-col rounded-card border border-border bg-background p-6 shadow-card",
|
|
1439
|
+
"clcosdk:relative clcosdk:flex clcosdk:w-full clcosdk:max-w-md clcosdk:flex-col clcosdk:rounded-card clcosdk:border clcosdk:border-border clcosdk:bg-background clcosdk:p-6 clcosdk:shadow-card",
|
|
1381
1440
|
className
|
|
1382
1441
|
),
|
|
1383
1442
|
children: [
|
|
1384
|
-
onClose && /* @__PURE__ */ (0,
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1443
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1444
|
+
CloseButton,
|
|
1445
|
+
{
|
|
1446
|
+
onClick: onClose,
|
|
1447
|
+
className: "clcosdk:absolute clcosdk:right-4 clcosdk:top-4"
|
|
1448
|
+
}
|
|
1449
|
+
),
|
|
1450
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
1451
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: "Sign in to participate" }),
|
|
1452
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "A CoinList account is required to participate in this sale." })
|
|
1388
1453
|
] }),
|
|
1389
|
-
/* @__PURE__ */ (0,
|
|
1390
|
-
|
|
1454
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1455
|
+
CoinListSignInButton,
|
|
1456
|
+
{
|
|
1457
|
+
onClick: handleSignIn,
|
|
1458
|
+
fullWidth: true,
|
|
1459
|
+
className: "clcosdk:mt-4"
|
|
1460
|
+
}
|
|
1461
|
+
),
|
|
1462
|
+
state === "error" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1391
1463
|
AlertBanner,
|
|
1392
1464
|
{
|
|
1393
1465
|
variant: "error",
|
|
1394
1466
|
icon: true,
|
|
1395
1467
|
content: "Error signing in. Please try again.",
|
|
1396
|
-
className: "mt-4"
|
|
1468
|
+
className: "clcosdk:mt-4"
|
|
1397
1469
|
}
|
|
1398
1470
|
),
|
|
1399
|
-
/* @__PURE__ */ (0,
|
|
1471
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(PoweredByCoinList, { className: "clcosdk:mt-4" })
|
|
1400
1472
|
]
|
|
1401
1473
|
}
|
|
1402
1474
|
);
|
|
1403
1475
|
}
|
|
1404
1476
|
|
|
1405
1477
|
// src/client/components/offers/OfferCard.tsx
|
|
1406
|
-
var
|
|
1478
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1407
1479
|
var monthYearFormatter = new Intl.DateTimeFormat("en-US", {
|
|
1408
1480
|
month: "short",
|
|
1409
1481
|
year: "numeric"
|
|
@@ -1424,46 +1496,67 @@ function OfferCard({
|
|
|
1424
1496
|
containerClassName
|
|
1425
1497
|
}) {
|
|
1426
1498
|
const cardLabel = "Open offer details";
|
|
1427
|
-
const cardContent = /* @__PURE__ */ (0,
|
|
1428
|
-
/* @__PURE__ */ (0,
|
|
1429
|
-
offer.bannerUrl ? /* @__PURE__ */ (0,
|
|
1499
|
+
const cardContent = /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
|
|
1500
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "clcosdk:relative clcosdk:mb-6 clcosdk:h-52 clcosdk:w-full clcosdk:overflow-hidden clcosdk:rounded-2xl clcosdk:border clcosdk:border-border/60 clcosdk:bg-section", children: [
|
|
1501
|
+
offer.bannerUrl ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1430
1502
|
"img",
|
|
1431
1503
|
{
|
|
1432
1504
|
src: offer.bannerUrl,
|
|
1433
1505
|
alt: "Offer banner",
|
|
1434
|
-
className: "h-full w-full object-cover"
|
|
1506
|
+
className: "clcosdk:h-full clcosdk:w-full clcosdk:object-cover"
|
|
1435
1507
|
}
|
|
1436
|
-
) : /* @__PURE__ */ (0,
|
|
1437
|
-
/* @__PURE__ */ (0,
|
|
1438
|
-
/* @__PURE__ */ (0,
|
|
1508
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "clcosdk:h-full clcosdk:w-full clcosdk:bg-gradient-to-br clcosdk:from-surface clcosdk:via-section clcosdk:to-background" }),
|
|
1509
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "clcosdk:absolute clcosdk:inset-0 clcosdk:bg-gradient-to-b clcosdk:from-transparent clcosdk:via-transparent clcosdk:to-overlay/35" }),
|
|
1510
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "clcosdk:absolute clcosdk:inset-0 clcosdk:flex clcosdk:items-center clcosdk:justify-center clcosdk:p-6", children: offer.logoUrl ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1439
1511
|
"img",
|
|
1440
1512
|
{
|
|
1441
1513
|
src: offer.logoUrl,
|
|
1442
1514
|
alt: "Offer logo",
|
|
1443
|
-
className: "h-28 w-28 rounded-full border border-border bg-surface object-cover shadow-[0_10px_24px_rgba(0,0,0,0.25)]"
|
|
1515
|
+
className: "clcosdk:h-28 clcosdk:w-28 clcosdk:rounded-full clcosdk:border clcosdk:border-border clcosdk:bg-surface clcosdk:object-cover clcosdk:shadow-[0_10px_24px_rgba(0,0,0,0.25)]"
|
|
1444
1516
|
}
|
|
1445
|
-
) : /* @__PURE__ */ (0,
|
|
1517
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "clcosdk:h-28 clcosdk:w-28 clcosdk:rounded-full clcosdk:border clcosdk:border-border clcosdk:bg-surface clcosdk:shadow-[0_10px_24px_rgba(0,0,0,0.18)]" }) })
|
|
1446
1518
|
] }),
|
|
1447
|
-
offer.tagline && /* @__PURE__ */ (0,
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1519
|
+
offer.tagline && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1520
|
+
"p",
|
|
1521
|
+
{
|
|
1522
|
+
className: cn(
|
|
1523
|
+
typeClasses.h3,
|
|
1524
|
+
"clcosdk:min-h-[2.4rem] clcosdk:text-text-primary"
|
|
1525
|
+
),
|
|
1526
|
+
children: offer.tagline
|
|
1527
|
+
}
|
|
1528
|
+
),
|
|
1529
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "clcosdk:mt-4 clcosdk:grid clcosdk:grid-cols-2 clcosdk:gap-5 clcosdk:border-t clcosdk:border-divider clcosdk:pt-4", children: [
|
|
1530
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1", children: [
|
|
1531
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1532
|
+
"span",
|
|
1533
|
+
{
|
|
1534
|
+
className: cn(typeClasses.subhead, "clcosdk:text-text-secondary"),
|
|
1535
|
+
children: "Starts"
|
|
1536
|
+
}
|
|
1537
|
+
),
|
|
1538
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: cn(typeClasses.label, "clcosdk:text-text-primary"), children: offer.formattedStartsAt })
|
|
1452
1539
|
] }),
|
|
1453
|
-
/* @__PURE__ */ (0,
|
|
1454
|
-
/* @__PURE__ */ (0,
|
|
1455
|
-
|
|
1540
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1", children: [
|
|
1541
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1542
|
+
"span",
|
|
1543
|
+
{
|
|
1544
|
+
className: cn(typeClasses.subhead, "clcosdk:text-text-secondary"),
|
|
1545
|
+
children: "Ends"
|
|
1546
|
+
}
|
|
1547
|
+
),
|
|
1548
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: cn(typeClasses.label, "clcosdk:text-text-primary"), children: offer.formattedEndsAt })
|
|
1456
1549
|
] })
|
|
1457
1550
|
] })
|
|
1458
1551
|
] });
|
|
1459
1552
|
const baseClasses = cn(
|
|
1460
|
-
"relative flex w-full max-w-[28rem] flex-col rounded-card border border-border bg-background p-6 text-left shadow-card transition-all duration-200",
|
|
1553
|
+
"clcosdk:relative clcosdk:flex clcosdk:w-full clcosdk:max-w-[28rem] clcosdk:flex-col clcosdk:rounded-card clcosdk:border clcosdk:border-border clcosdk:bg-background clcosdk:p-6 clcosdk:text-left clcosdk:shadow-card clcosdk:transition-all clcosdk:duration-200",
|
|
1461
1554
|
className,
|
|
1462
|
-
onClick && "cursor-pointer hover:-translate-y-0.5 hover:border-divider hover:shadow-[0px_14px_32px_-10px_rgba(0,0,0,0.35)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-focus focus-visible:ring-offset-2"
|
|
1555
|
+
onClick && "clcosdk:cursor-pointer clcosdk:hover:-translate-y-0.5 clcosdk:hover:border-divider clcosdk:hover:shadow-[0px_14px_32px_-10px_rgba(0,0,0,0.35)] clcosdk:focus-visible:outline-none clcosdk:focus-visible:ring-2 clcosdk:focus-visible:ring-accent-focus clcosdk:focus-visible:ring-offset-2"
|
|
1463
1556
|
);
|
|
1464
1557
|
let cardNode;
|
|
1465
1558
|
if (onClick) {
|
|
1466
|
-
cardNode = /* @__PURE__ */ (0,
|
|
1559
|
+
cardNode = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1467
1560
|
"button",
|
|
1468
1561
|
{
|
|
1469
1562
|
type: "button",
|
|
@@ -1474,12 +1567,12 @@ function OfferCard({
|
|
|
1474
1567
|
}
|
|
1475
1568
|
);
|
|
1476
1569
|
} else {
|
|
1477
|
-
cardNode = /* @__PURE__ */ (0,
|
|
1570
|
+
cardNode = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: baseClasses, children: cardContent });
|
|
1478
1571
|
}
|
|
1479
1572
|
if (!containerClassName) {
|
|
1480
1573
|
return cardNode;
|
|
1481
1574
|
}
|
|
1482
|
-
return /* @__PURE__ */ (0,
|
|
1575
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: containerClassName, children: cardNode });
|
|
1483
1576
|
}
|
|
1484
1577
|
|
|
1485
1578
|
// src/client/hooks/useOffers.ts
|
|
@@ -1525,7 +1618,7 @@ function useOffers(options = {}) {
|
|
|
1525
1618
|
}
|
|
1526
1619
|
|
|
1527
1620
|
// src/client/components/offers/OffersGrid.tsx
|
|
1528
|
-
var
|
|
1621
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1529
1622
|
var DEFAULT_MAX_COLUMNS = 3;
|
|
1530
1623
|
function OffersGrid({
|
|
1531
1624
|
data,
|
|
@@ -1543,12 +1636,12 @@ function OffersGrid({
|
|
|
1543
1636
|
if (loading) {
|
|
1544
1637
|
return loading;
|
|
1545
1638
|
}
|
|
1546
|
-
return /* @__PURE__ */ (0,
|
|
1639
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1547
1640
|
"output",
|
|
1548
1641
|
{
|
|
1549
1642
|
"aria-live": "polite",
|
|
1550
|
-
className: "flex min-h-40 items-center justify-center rounded-2xl border border-border bg-background p-6",
|
|
1551
|
-
children: /* @__PURE__ */ (0,
|
|
1643
|
+
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",
|
|
1644
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading offers..." })
|
|
1552
1645
|
}
|
|
1553
1646
|
);
|
|
1554
1647
|
}
|
|
@@ -1557,13 +1650,13 @@ function OffersGrid({
|
|
|
1557
1650
|
return error;
|
|
1558
1651
|
}
|
|
1559
1652
|
const errorMessage = offersState.reason === "not-authenticated" ? "Sign in to view available offers." : "Unable to load offers right now. Please try again.";
|
|
1560
|
-
return /* @__PURE__ */ (0,
|
|
1653
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1561
1654
|
AlertBanner,
|
|
1562
1655
|
{
|
|
1563
1656
|
variant: "error",
|
|
1564
1657
|
icon: true,
|
|
1565
1658
|
content: errorMessage,
|
|
1566
|
-
className: "w-full max-w-[28rem]"
|
|
1659
|
+
className: "clcosdk:w-full clcosdk:max-w-[28rem]"
|
|
1567
1660
|
}
|
|
1568
1661
|
);
|
|
1569
1662
|
}
|
|
@@ -1571,37 +1664,55 @@ function OffersGrid({
|
|
|
1571
1664
|
if (emptyState) {
|
|
1572
1665
|
return emptyState;
|
|
1573
1666
|
}
|
|
1574
|
-
return /* @__PURE__ */ (0,
|
|
1667
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
1575
1668
|
"output",
|
|
1576
1669
|
{
|
|
1577
1670
|
"aria-live": "polite",
|
|
1578
|
-
className: "flex min-h-40 flex-col items-center justify-center rounded-2xl border border-border bg-background p-6 text-center",
|
|
1671
|
+
className: "clcosdk:flex clcosdk:min-h-40 clcosdk:flex-col clcosdk:items-center clcosdk:justify-center clcosdk:rounded-2xl clcosdk:border clcosdk:border-border clcosdk:bg-background clcosdk:p-6 clcosdk:text-center",
|
|
1579
1672
|
children: [
|
|
1580
|
-
/* @__PURE__ */ (0,
|
|
1581
|
-
|
|
1673
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1674
|
+
"p",
|
|
1675
|
+
{
|
|
1676
|
+
className: cn(
|
|
1677
|
+
typeClasses.body,
|
|
1678
|
+
"clcosdk:font-medium clcosdk:text-text-primary"
|
|
1679
|
+
),
|
|
1680
|
+
children: "No offers available"
|
|
1681
|
+
}
|
|
1682
|
+
),
|
|
1683
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: cn(typeClasses.subhead, "clcosdk:text-text-secondary"), children: "Check back soon for upcoming opportunities." })
|
|
1582
1684
|
]
|
|
1583
1685
|
}
|
|
1584
1686
|
);
|
|
1585
1687
|
}
|
|
1586
1688
|
const maxGridWidth = `calc(${cols} * 28rem + ${Math.max(cols - 1, 0)} * 1.5rem)`;
|
|
1587
|
-
return /* @__PURE__ */ (0,
|
|
1689
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1588
1690
|
"div",
|
|
1589
1691
|
{
|
|
1590
|
-
className: cn(
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
OfferCard,
|
|
1692
|
+
className: cn(
|
|
1693
|
+
"clcosdk:flex clcosdk:w-full clcosdk:justify-center",
|
|
1694
|
+
containerClassName
|
|
1695
|
+
),
|
|
1696
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1697
|
+
"div",
|
|
1597
1698
|
{
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1699
|
+
className: cn("clcosdk:grid clcosdk:w-full clcosdk:gap-6", className),
|
|
1700
|
+
style: {
|
|
1701
|
+
gridTemplateColumns: "repeat(auto-fit, minmax(min(100%, 20rem), 1fr))",
|
|
1702
|
+
maxWidth: maxGridWidth
|
|
1703
|
+
},
|
|
1704
|
+
children: offersState.offers.map((offer) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1705
|
+
OfferCard,
|
|
1706
|
+
{
|
|
1707
|
+
offer: OfferCardUi.fromDomain(offer),
|
|
1708
|
+
onClick: onOfferClick ? () => onOfferClick(offer) : void 0
|
|
1709
|
+
},
|
|
1710
|
+
offer.id
|
|
1711
|
+
))
|
|
1712
|
+
}
|
|
1713
|
+
)
|
|
1603
1714
|
}
|
|
1604
|
-
)
|
|
1715
|
+
);
|
|
1605
1716
|
}
|
|
1606
1717
|
|
|
1607
1718
|
// src/client/components/requirements/RequirementItem.tsx
|
|
@@ -1609,42 +1720,47 @@ var import_lucide_react4 = require("lucide-react");
|
|
|
1609
1720
|
|
|
1610
1721
|
// src/client/components/design-system/StepStatusIcon.tsx
|
|
1611
1722
|
var import_lucide_react3 = require("lucide-react");
|
|
1612
|
-
var
|
|
1723
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1613
1724
|
var statusConfig = {
|
|
1614
1725
|
required: {
|
|
1615
1726
|
Icon: import_lucide_react3.Info,
|
|
1616
|
-
colorClass: "text-warning",
|
|
1617
|
-
fillClass: "[&_circle]:fill-warning-subtle"
|
|
1727
|
+
colorClass: "clcosdk:text-warning",
|
|
1728
|
+
fillClass: "clcosdk:[&_circle]:fill-warning-subtle"
|
|
1618
1729
|
},
|
|
1619
1730
|
pending: {
|
|
1620
1731
|
Icon: import_lucide_react3.Info,
|
|
1621
|
-
colorClass: "text-warning",
|
|
1622
|
-
fillClass: "[&_circle]:fill-warning-subtle"
|
|
1732
|
+
colorClass: "clcosdk:text-warning",
|
|
1733
|
+
fillClass: "clcosdk:[&_circle]:fill-warning-subtle"
|
|
1623
1734
|
},
|
|
1624
1735
|
completed: {
|
|
1625
1736
|
Icon: import_lucide_react3.CircleCheck,
|
|
1626
|
-
colorClass: "text-success",
|
|
1627
|
-
fillClass: "[&_circle]:fill-success-subtle"
|
|
1737
|
+
colorClass: "clcosdk:text-success",
|
|
1738
|
+
fillClass: "clcosdk:[&_circle]:fill-success-subtle"
|
|
1628
1739
|
},
|
|
1629
1740
|
rejected: {
|
|
1630
1741
|
Icon: import_lucide_react3.CircleX,
|
|
1631
|
-
colorClass: "text-error",
|
|
1632
|
-
fillClass: "[&_circle]:fill-error-subtle"
|
|
1742
|
+
colorClass: "clcosdk:text-error",
|
|
1743
|
+
fillClass: "clcosdk:[&_circle]:fill-error-subtle"
|
|
1633
1744
|
}
|
|
1634
1745
|
};
|
|
1635
1746
|
function StepStatusIcon({ status, className }) {
|
|
1636
1747
|
const { Icon, colorClass, fillClass } = statusConfig[status];
|
|
1637
|
-
return /* @__PURE__ */ (0,
|
|
1748
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1638
1749
|
Icon,
|
|
1639
1750
|
{
|
|
1640
|
-
className: cn(
|
|
1751
|
+
className: cn(
|
|
1752
|
+
"clcosdk:h-6 clcosdk:w-6 clcosdk:shrink-0",
|
|
1753
|
+
colorClass,
|
|
1754
|
+
fillClass,
|
|
1755
|
+
className
|
|
1756
|
+
),
|
|
1641
1757
|
"aria-hidden": "true"
|
|
1642
1758
|
}
|
|
1643
1759
|
);
|
|
1644
1760
|
}
|
|
1645
1761
|
|
|
1646
1762
|
// src/client/components/requirements/RequirementItem.tsx
|
|
1647
|
-
var
|
|
1763
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1648
1764
|
var RequirementVariant = {
|
|
1649
1765
|
fromType(type) {
|
|
1650
1766
|
switch (type) {
|
|
@@ -1697,9 +1813,9 @@ function VerificationActionZone({
|
|
|
1697
1813
|
switch (status) {
|
|
1698
1814
|
case "required":
|
|
1699
1815
|
if (onAction === null) return null;
|
|
1700
|
-
return /* @__PURE__ */ (0,
|
|
1816
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ClButton, { size: "sm", onClick: onAction, children: "Continue" });
|
|
1701
1817
|
case "pending":
|
|
1702
|
-
return /* @__PURE__ */ (0,
|
|
1818
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1703
1819
|
AlertBanner,
|
|
1704
1820
|
{
|
|
1705
1821
|
variant: "warning",
|
|
@@ -1707,21 +1823,21 @@ function VerificationActionZone({
|
|
|
1707
1823
|
}
|
|
1708
1824
|
);
|
|
1709
1825
|
case "completed":
|
|
1710
|
-
return /* @__PURE__ */ (0,
|
|
1826
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(AlertBanner, { variant: "success", content: "Identity verified." });
|
|
1711
1827
|
case "rejected":
|
|
1712
|
-
return /* @__PURE__ */ (0,
|
|
1828
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1713
1829
|
AlertBanner,
|
|
1714
1830
|
{
|
|
1715
1831
|
variant: "error",
|
|
1716
|
-
content: onContactSupport === null ? "Verification rejected." : /* @__PURE__ */ (0,
|
|
1832
|
+
content: onContactSupport === null ? "Verification rejected." : /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
1717
1833
|
"Verification rejected.",
|
|
1718
1834
|
" ",
|
|
1719
|
-
/* @__PURE__ */ (0,
|
|
1835
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1720
1836
|
"button",
|
|
1721
1837
|
{
|
|
1722
1838
|
type: "button",
|
|
1723
1839
|
onClick: onContactSupport,
|
|
1724
|
-
className: "underline",
|
|
1840
|
+
className: "clcosdk:underline",
|
|
1725
1841
|
children: "Contact support"
|
|
1726
1842
|
}
|
|
1727
1843
|
),
|
|
@@ -1737,9 +1853,9 @@ function WalletActionZone({
|
|
|
1737
1853
|
onAction
|
|
1738
1854
|
}) {
|
|
1739
1855
|
if (status === "completed") {
|
|
1740
|
-
return /* @__PURE__ */ (0,
|
|
1741
|
-
onAction !== null && /* @__PURE__ */ (0,
|
|
1742
|
-
/* @__PURE__ */ (0,
|
|
1856
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
1857
|
+
onAction !== null && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ClButton, { size: "sm", variant: "secondary", onClick: onAction, children: "Change wallet" }),
|
|
1858
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1743
1859
|
AlertBanner,
|
|
1744
1860
|
{
|
|
1745
1861
|
variant: "success",
|
|
@@ -1749,9 +1865,9 @@ function WalletActionZone({
|
|
|
1749
1865
|
] });
|
|
1750
1866
|
}
|
|
1751
1867
|
if (status === "rejected") {
|
|
1752
|
-
return /* @__PURE__ */ (0,
|
|
1753
|
-
onAction !== null && /* @__PURE__ */ (0,
|
|
1754
|
-
/* @__PURE__ */ (0,
|
|
1868
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
1869
|
+
onAction !== null && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ClButton, { size: "sm", onClick: onAction, children: "Connect wallet" }),
|
|
1870
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1755
1871
|
AlertBanner,
|
|
1756
1872
|
{
|
|
1757
1873
|
variant: "error",
|
|
@@ -1761,7 +1877,7 @@ function WalletActionZone({
|
|
|
1761
1877
|
] });
|
|
1762
1878
|
}
|
|
1763
1879
|
if (onAction === null) return null;
|
|
1764
|
-
return /* @__PURE__ */ (0,
|
|
1880
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ClButton, { size: "sm", onClick: onAction, children: "Connect wallet" });
|
|
1765
1881
|
}
|
|
1766
1882
|
function RequirementItem({
|
|
1767
1883
|
ui,
|
|
@@ -1771,69 +1887,81 @@ function RequirementItem({
|
|
|
1771
1887
|
onAction,
|
|
1772
1888
|
onContactSupport
|
|
1773
1889
|
}) {
|
|
1774
|
-
return /* @__PURE__ */ (0,
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
{
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
"
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
className: cn(
|
|
1813
|
-
"grid transition-[grid-template-rows] duration-300 ease-in-out",
|
|
1814
|
-
expanded ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
|
|
1890
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
1891
|
+
"div",
|
|
1892
|
+
{
|
|
1893
|
+
className: cn("clcosdk:flex clcosdk:w-full clcosdk:flex-col", className),
|
|
1894
|
+
children: [
|
|
1895
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
1896
|
+
"button",
|
|
1897
|
+
{
|
|
1898
|
+
type: "button",
|
|
1899
|
+
onClick: onToggle,
|
|
1900
|
+
"aria-expanded": expanded,
|
|
1901
|
+
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",
|
|
1902
|
+
children: [
|
|
1903
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-3", children: [
|
|
1904
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(StepStatusIcon, { status: ui.status }),
|
|
1905
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1906
|
+
"span",
|
|
1907
|
+
{
|
|
1908
|
+
className: cn(
|
|
1909
|
+
typeClasses.body,
|
|
1910
|
+
"clcosdk:whitespace-nowrap clcosdk:font-medium clcosdk:text-text-primary"
|
|
1911
|
+
),
|
|
1912
|
+
children: ui.label
|
|
1913
|
+
}
|
|
1914
|
+
)
|
|
1915
|
+
] }),
|
|
1916
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1917
|
+
import_lucide_react4.ChevronRight,
|
|
1918
|
+
{
|
|
1919
|
+
className: cn(
|
|
1920
|
+
"clcosdk:h-6 clcosdk:w-6 clcosdk:shrink-0 clcosdk:text-text-secondary clcosdk:transition-transform clcosdk:duration-300",
|
|
1921
|
+
expanded && "clcosdk:rotate-90"
|
|
1922
|
+
),
|
|
1923
|
+
"aria-hidden": "true"
|
|
1924
|
+
}
|
|
1925
|
+
)
|
|
1926
|
+
]
|
|
1927
|
+
}
|
|
1815
1928
|
),
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1929
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1930
|
+
"div",
|
|
1931
|
+
{
|
|
1932
|
+
className: cn(
|
|
1933
|
+
"clcosdk:grid clcosdk:transition-[grid-template-rows] clcosdk:duration-300 clcosdk:ease-in-out",
|
|
1934
|
+
expanded ? "clcosdk:grid-rows-[1fr]" : "clcosdk:grid-rows-[0fr]"
|
|
1935
|
+
),
|
|
1936
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "clcosdk:min-h-0 clcosdk:overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-4 clcosdk:px-2 clcosdk:pb-4", children: [
|
|
1937
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1938
|
+
"p",
|
|
1939
|
+
{
|
|
1940
|
+
className: cn(typeClasses.subhead, "clcosdk:text-text-secondary"),
|
|
1941
|
+
children: ui.description
|
|
1942
|
+
}
|
|
1943
|
+
),
|
|
1944
|
+
ui.variant === "verification" ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1945
|
+
VerificationActionZone,
|
|
1946
|
+
{
|
|
1947
|
+
status: ui.status,
|
|
1948
|
+
onAction,
|
|
1949
|
+
onContactSupport
|
|
1950
|
+
}
|
|
1951
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1952
|
+
WalletActionZone,
|
|
1953
|
+
{
|
|
1954
|
+
status: ui.status,
|
|
1955
|
+
walletAddress: ui.walletAddress,
|
|
1956
|
+
onAction
|
|
1957
|
+
}
|
|
1958
|
+
)
|
|
1959
|
+
] }) })
|
|
1960
|
+
}
|
|
1961
|
+
)
|
|
1962
|
+
]
|
|
1963
|
+
}
|
|
1964
|
+
);
|
|
1837
1965
|
}
|
|
1838
1966
|
|
|
1839
1967
|
// src/client/components/requirements/RequirementsChecklist.tsx
|
|
@@ -1891,7 +2019,7 @@ function useRequirements(offerId, options = {}) {
|
|
|
1891
2019
|
}
|
|
1892
2020
|
|
|
1893
2021
|
// src/client/components/requirements/RequirementsChecklist.tsx
|
|
1894
|
-
var
|
|
2022
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1895
2023
|
var DEFAULT_LABELS = {
|
|
1896
2024
|
kyc_approved: "KYC Verification",
|
|
1897
2025
|
identity_verified: "Identity Verification",
|
|
@@ -1934,25 +2062,25 @@ function RequirementsChecklist({
|
|
|
1934
2062
|
const onContactSupport = onContactSupportOverride !== void 0 ? onContactSupportOverride : () => coinlist.contactSupport();
|
|
1935
2063
|
if (requirementsState.type === "LOADING") {
|
|
1936
2064
|
if (loading) return loading;
|
|
1937
|
-
return /* @__PURE__ */ (0,
|
|
2065
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1938
2066
|
"output",
|
|
1939
2067
|
{
|
|
1940
2068
|
"aria-live": "polite",
|
|
1941
|
-
className: "flex min-h-40 items-center justify-center rounded-2xl border border-border bg-background p-6",
|
|
1942
|
-
children: /* @__PURE__ */ (0,
|
|
2069
|
+
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",
|
|
2070
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading requirements..." })
|
|
1943
2071
|
}
|
|
1944
2072
|
);
|
|
1945
2073
|
}
|
|
1946
2074
|
if (requirementsState.type === "ERROR") {
|
|
1947
2075
|
if (error) return error;
|
|
1948
2076
|
const errorMessage = requirementsState.reason === "not-authenticated" ? "Sign in to view requirements." : "Unable to load requirements right now. Please try again.";
|
|
1949
|
-
return /* @__PURE__ */ (0,
|
|
2077
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1950
2078
|
AlertBanner,
|
|
1951
2079
|
{
|
|
1952
2080
|
variant: "error",
|
|
1953
2081
|
icon: true,
|
|
1954
2082
|
content: errorMessage,
|
|
1955
|
-
className: "w-full max-w-[28rem]"
|
|
2083
|
+
className: "clcosdk:w-full clcosdk:max-w-[28rem]"
|
|
1956
2084
|
}
|
|
1957
2085
|
);
|
|
1958
2086
|
}
|
|
@@ -1962,62 +2090,71 @@ function RequirementsChecklist({
|
|
|
1962
2090
|
const optionStatuses = statuses.filter((s) => requirementIds.has(s.id));
|
|
1963
2091
|
const statusByRequirementId = new Map(optionStatuses.map((s) => [s.id, s]));
|
|
1964
2092
|
const checklistStatus = ChecklistStatus.derive(optionStatuses);
|
|
1965
|
-
return /* @__PURE__ */ (0,
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2093
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
2094
|
+
"div",
|
|
2095
|
+
{
|
|
2096
|
+
className: cn(
|
|
2097
|
+
"clcosdk:flex clcosdk:w-full clcosdk:flex-col clcosdk:gap-4",
|
|
2098
|
+
className
|
|
2099
|
+
),
|
|
2100
|
+
children: [
|
|
2101
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
2102
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: title }),
|
|
2103
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: description })
|
|
2104
|
+
] }),
|
|
2105
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:divide-y clcosdk:divide-divider", children: requirements.map((req, index) => {
|
|
2106
|
+
const statusInfo = statusByRequirementId.get(req.id);
|
|
2107
|
+
const label = getLabel ? getLabel(req) : DEFAULT_LABELS[req.type];
|
|
2108
|
+
const itemDescription = (getDescription ? getDescription(req) : null) ?? DEFAULT_DESCRIPTIONS[req.type];
|
|
2109
|
+
let onActionBound;
|
|
2110
|
+
if (onRequirementAction === null) {
|
|
2111
|
+
onActionBound = null;
|
|
2112
|
+
} else if (onRequirementAction) {
|
|
2113
|
+
onActionBound = () => onRequirementAction(req);
|
|
2114
|
+
}
|
|
2115
|
+
let onContactSupportBound;
|
|
2116
|
+
if (onContactSupport === null) {
|
|
2117
|
+
onContactSupportBound = null;
|
|
2118
|
+
} else if (onContactSupport) {
|
|
2119
|
+
onContactSupportBound = () => onContactSupport(req);
|
|
2120
|
+
}
|
|
2121
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
2122
|
+
RequirementItem,
|
|
2123
|
+
{
|
|
2124
|
+
ui: RequirementItemUi.fromDomain(
|
|
2125
|
+
req,
|
|
2126
|
+
statusInfo,
|
|
2127
|
+
label,
|
|
2128
|
+
itemDescription
|
|
2129
|
+
),
|
|
2130
|
+
expanded: expandedIndex === index,
|
|
2131
|
+
onToggle: () => setExpandedIndex((prev) => prev === index ? null : index),
|
|
2132
|
+
onAction: onActionBound,
|
|
2133
|
+
onContactSupport: onContactSupportBound
|
|
2134
|
+
},
|
|
2135
|
+
req.id
|
|
2136
|
+
);
|
|
2137
|
+
}) }),
|
|
2138
|
+
checklistStatus === "ineligible" && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
2139
|
+
AlertBanner,
|
|
2140
|
+
{
|
|
2141
|
+
variant: "error",
|
|
2142
|
+
icon: true,
|
|
2143
|
+
content: "You are not eligible to participate."
|
|
2144
|
+
}
|
|
2145
|
+
),
|
|
2146
|
+
onContinue && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
2147
|
+
ClButton,
|
|
2148
|
+
{
|
|
2149
|
+
fullWidth: true,
|
|
2150
|
+
disabled: checklistStatus !== "eligible",
|
|
2151
|
+
onClick: onContinue,
|
|
2152
|
+
children: "Continue"
|
|
2153
|
+
}
|
|
2154
|
+
)
|
|
2155
|
+
]
|
|
2156
|
+
}
|
|
2157
|
+
);
|
|
2021
2158
|
}
|
|
2022
2159
|
|
|
2023
2160
|
// src/client/hooks/useCompleteOAuth.ts
|
|
@@ -2162,8 +2299,10 @@ function useParticipations(offerId, options = {}) {
|
|
|
2162
2299
|
ChecklistStatus,
|
|
2163
2300
|
CoinListClientInitializationError,
|
|
2164
2301
|
CoinListContext,
|
|
2302
|
+
CoinListContextProvider,
|
|
2165
2303
|
CoinListProvider,
|
|
2166
2304
|
CoinListSignInCard,
|
|
2305
|
+
CoinListStyleScope,
|
|
2167
2306
|
OAUTH_CODE_VERIFIER_KEY,
|
|
2168
2307
|
OAUTH_STATE_KEY,
|
|
2169
2308
|
OfferCard,
|