@coinlist-co/react 0.12.1-rc.df659d8 → 0.12.1-rc.f2804ef
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-I5EHOV7V.js → chunk-DCW7NQXH.js} +2 -2
- package/dist/{chunk-VSYGGTI6.js → chunk-MOE5S6CE.js} +186 -106
- package/dist/chunk-MOE5S6CE.js.map +1 -0
- package/dist/{chunk-3EOK47CQ.js → chunk-VH34YC3Q.js} +56 -4
- package/dist/chunk-VH34YC3Q.js.map +1 -0
- package/dist/client/index.cjs +755 -417
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +286 -122
- package/dist/client/index.d.ts +286 -122
- package/dist/client/index.js +550 -340
- package/dist/client/index.js.map +1 -1
- package/dist/server/index.cjs +149 -71
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +2 -2
- package/dist/{collections-C6b-rJpx.d.ts → token-registry-snapshot-BNBNuDu1.d.ts} +65 -2
- package/dist/{collections-UYVlXbEh.d.cts → token-registry-snapshot-CqI6dXM_.d.cts} +65 -2
- package/dist/{tokens-namespace-C-BxcYMj.d.cts → tokens-namespace-CIWBtgt2.d.cts} +171 -46
- package/dist/{tokens-namespace-C-BxcYMj.d.ts → tokens-namespace-CIWBtgt2.d.ts} +171 -46
- package/dist/universal/index.cjs +211 -74
- package/dist/universal/index.cjs.map +1 -1
- package/dist/universal/index.d.cts +9 -14
- package/dist/universal/index.d.ts +9 -14
- package/dist/universal/index.js +14 -4
- package/package.json +1 -1
- package/dist/chunk-3EOK47CQ.js.map +0 -1
- package/dist/chunk-VSYGGTI6.js.map +0 -1
- /package/dist/{chunk-I5EHOV7V.js.map → chunk-DCW7NQXH.js.map} +0 -0
package/dist/client/index.cjs
CHANGED
|
@@ -59,6 +59,7 @@ __export(client_exports, {
|
|
|
59
59
|
OAUTH_STATE_KEY: () => OAUTH_STATE_KEY,
|
|
60
60
|
OfferAssetCard: () => OfferAssetCard,
|
|
61
61
|
OfferAssetCardUi: () => OfferAssetCardUi,
|
|
62
|
+
OfferLogoUi: () => OfferLogoUi,
|
|
62
63
|
OfferSaleCard: () => OfferSaleCard,
|
|
63
64
|
OfferSaleCardUi: () => OfferSaleCardUi,
|
|
64
65
|
OffersAssetGrid: () => OffersAssetGrid,
|
|
@@ -120,6 +121,7 @@ __export(client_exports, {
|
|
|
120
121
|
quoteOverAsks: () => quoteOverAsks,
|
|
121
122
|
stablecoinIconUrl: () => stablecoinIconUrl,
|
|
122
123
|
submitErc20Approval: () => submitErc20Approval,
|
|
124
|
+
tokenLogoSrcSet: () => tokenLogoSrcSet,
|
|
123
125
|
tokenLogoUrl: () => tokenLogoUrl,
|
|
124
126
|
tokenMetadataOf: () => tokenMetadataOf,
|
|
125
127
|
useCheckoutOfferTokenMetadata: () => useCheckoutOfferTokenMetadata,
|
|
@@ -162,6 +164,7 @@ __export(client_exports, {
|
|
|
162
164
|
useTaxDocument: () => useTaxDocument,
|
|
163
165
|
useTaxDocumentModalViewModel: () => useTaxDocumentModalViewModel,
|
|
164
166
|
useTokenMetadata: () => useTokenMetadata,
|
|
167
|
+
useTokenRegistry: () => useTokenRegistry,
|
|
165
168
|
validateAmount: () => validateAmount,
|
|
166
169
|
validateSellAmount: () => validateSellAmount,
|
|
167
170
|
validateSuperstateAmount: () => validateSuperstateAmount
|
|
@@ -1317,8 +1320,15 @@ async function fetchAllPages(fetchPage, baseParams) {
|
|
|
1317
1320
|
// src/universal/types/pagination.ts
|
|
1318
1321
|
var Cursor = (value) => value;
|
|
1319
1322
|
var PaginatedResponse = {
|
|
1320
|
-
fromDto: (dto, itemMapper) => (
|
|
1321
|
-
|
|
1323
|
+
fromDto: (dto, itemMapper) => PaginatedResponse.fromDtoPage(dto, (items) => items.map(itemMapper)),
|
|
1324
|
+
/**
|
|
1325
|
+
* For a mapper that decides the page as a whole - one that drops items it
|
|
1326
|
+
* cannot map, such as `Offer.listFromDto` - rather than item by item. The
|
|
1327
|
+
* cursors are the wire's either way: dropping an item changes what the
|
|
1328
|
+
* page holds, not where the next page starts.
|
|
1329
|
+
*/
|
|
1330
|
+
fromDtoPage: (dto, pageMapper) => ({
|
|
1331
|
+
data: pageMapper(dto.data),
|
|
1322
1332
|
startingAfter: dto.starting_after ? Cursor(dto.starting_after) : null,
|
|
1323
1333
|
startingBefore: dto.starting_before ? Cursor(dto.starting_before) : null
|
|
1324
1334
|
})
|
|
@@ -1351,6 +1361,40 @@ var Asset = {
|
|
|
1351
1361
|
})
|
|
1352
1362
|
};
|
|
1353
1363
|
|
|
1364
|
+
// src/universal/core/shared/utils/wire.ts
|
|
1365
|
+
function unknownTypeError(dto, model) {
|
|
1366
|
+
const type = dto.type;
|
|
1367
|
+
throw new ValidationError(
|
|
1368
|
+
`${model}.type: unknown type ${JSON.stringify(type)}`
|
|
1369
|
+
);
|
|
1370
|
+
}
|
|
1371
|
+
function requiredString(value, field) {
|
|
1372
|
+
const text = notBlankStringOrNull(value);
|
|
1373
|
+
if (text === null) {
|
|
1374
|
+
throw new ValidationError(
|
|
1375
|
+
`${field}: expected a non-blank string, got ${typeof value === "string" ? "a blank string" : String(value)}`
|
|
1376
|
+
);
|
|
1377
|
+
}
|
|
1378
|
+
return text;
|
|
1379
|
+
}
|
|
1380
|
+
function requiredDate(value, field) {
|
|
1381
|
+
const date = typeof value === "string" ? new Date(value) : null;
|
|
1382
|
+
if (date === null || Number.isNaN(date.getTime())) {
|
|
1383
|
+
throw new ValidationError(
|
|
1384
|
+
`${field}: expected a date, got ${JSON.stringify(value)}`
|
|
1385
|
+
);
|
|
1386
|
+
}
|
|
1387
|
+
return date;
|
|
1388
|
+
}
|
|
1389
|
+
function requiredArray(value, field) {
|
|
1390
|
+
if (!Array.isArray(value)) {
|
|
1391
|
+
throw new ValidationError(
|
|
1392
|
+
`${field}: expected an array, got ${typeof value}`
|
|
1393
|
+
);
|
|
1394
|
+
}
|
|
1395
|
+
return value;
|
|
1396
|
+
}
|
|
1397
|
+
|
|
1354
1398
|
// src/universal/types/blockchain/core.ts
|
|
1355
1399
|
var ETHEREUM_CHAINS = {
|
|
1356
1400
|
ethereum_mainnet: true,
|
|
@@ -1444,25 +1488,69 @@ var Bps = (value) => value;
|
|
|
1444
1488
|
// src/universal/types/offer.ts
|
|
1445
1489
|
var OfferId = (value) => value;
|
|
1446
1490
|
var OfferSlug = (value) => value;
|
|
1491
|
+
var OFFER_TYPES = {
|
|
1492
|
+
"coinlist::token_sale": true,
|
|
1493
|
+
"superstate::swap": true,
|
|
1494
|
+
"ondo::swap": true
|
|
1495
|
+
};
|
|
1496
|
+
var isOfferType = (value) => Object.keys(OFFER_TYPES).includes(value);
|
|
1497
|
+
var OfferEditorial = {
|
|
1498
|
+
/**
|
|
1499
|
+
* `model` prefixes the field in the error (`'Offer'`, `'OfferDetail'`), so
|
|
1500
|
+
* the same three checks name the payload that failed them.
|
|
1501
|
+
*/
|
|
1502
|
+
fromDto: (dto, model) => ({
|
|
1503
|
+
tagline: requiredString(dto.tagline, `${model}.tagline`),
|
|
1504
|
+
bannerUrl: requiredString(dto.banner_url, `${model}.banner_url`),
|
|
1505
|
+
startsAt: requiredDate(dto.starts_at, `${model}.starts_at`)
|
|
1506
|
+
})
|
|
1507
|
+
};
|
|
1447
1508
|
var Offer = {
|
|
1448
1509
|
fromDto: (dto) => {
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
`Offer.tokens: expected an array, got ${typeof dto.tokens}`
|
|
1452
|
-
);
|
|
1453
|
-
}
|
|
1454
|
-
return {
|
|
1510
|
+
const tokens = requiredArray(dto.tokens, "Offer.tokens");
|
|
1511
|
+
const base2 = {
|
|
1455
1512
|
id: OfferId(dto.id),
|
|
1456
1513
|
slug: OfferSlug(dto.slug),
|
|
1457
|
-
type: dto.type,
|
|
1458
|
-
tagline: dto.tagline,
|
|
1459
|
-
bannerUrl: dto.banner_url,
|
|
1460
|
-
logoUrl: dto.logo_url,
|
|
1461
|
-
startsAt: new Date(dto.starts_at),
|
|
1462
1514
|
endsAt: dto.ends_at ? new Date(dto.ends_at) : null,
|
|
1463
|
-
tokens: OfferToken.listFromDto(
|
|
1515
|
+
tokens: OfferToken.listFromDto(tokens)
|
|
1464
1516
|
};
|
|
1465
|
-
|
|
1517
|
+
switch (dto.type) {
|
|
1518
|
+
case "coinlist::token_sale":
|
|
1519
|
+
return {
|
|
1520
|
+
...base2,
|
|
1521
|
+
...OfferEditorial.fromDto(dto, "Offer"),
|
|
1522
|
+
type: dto.type,
|
|
1523
|
+
logoUrl: requiredString(dto.logo_url, "Offer.logo_url")
|
|
1524
|
+
};
|
|
1525
|
+
case "superstate::swap":
|
|
1526
|
+
return {
|
|
1527
|
+
...base2,
|
|
1528
|
+
...OfferEditorial.fromDto(dto, "Offer"),
|
|
1529
|
+
type: dto.type,
|
|
1530
|
+
logoUrl: notBlankStringOrNull(dto.logo_url)
|
|
1531
|
+
};
|
|
1532
|
+
// `tagline`, `banner_url` and `starts_at` arrive as `null` and are left
|
|
1533
|
+
// on the wire: copying them would hand every consumer a `startsAt` that
|
|
1534
|
+
// is 1970 for one variant and a date for the others.
|
|
1535
|
+
case "ondo::swap":
|
|
1536
|
+
return {
|
|
1537
|
+
...base2,
|
|
1538
|
+
type: dto.type,
|
|
1539
|
+
logoUrl: notBlankStringOrNull(dto.logo_url)
|
|
1540
|
+
};
|
|
1541
|
+
default:
|
|
1542
|
+
return unknownTypeError(dto, "Offer");
|
|
1543
|
+
}
|
|
1544
|
+
},
|
|
1545
|
+
/**
|
|
1546
|
+
* Maps a page of offers, dropping every offer whose `type` this SDK does not
|
|
1547
|
+
* name. The same reasoning as {@link OfferToken.listFromDto}: a plain `.map`
|
|
1548
|
+
* would throw out of `fromDto` and, through `PaginatedResponse.fromDto`,
|
|
1549
|
+
* reject the whole page, so one offer of an unknown type would blank the
|
|
1550
|
+
* grid for every offer beside it. A single offer fetched by id still
|
|
1551
|
+
* throws, because there is nothing beside it to keep.
|
|
1552
|
+
*/
|
|
1553
|
+
listFromDto: (dtos) => dtos.filter((dto) => isOfferType(dto.type)).map(Offer.fromDto)
|
|
1466
1554
|
};
|
|
1467
1555
|
var OfferToken = {
|
|
1468
1556
|
fromDto: (dto) => ({
|
|
@@ -1499,76 +1587,69 @@ var OfferSwapContract = {
|
|
|
1499
1587
|
};
|
|
1500
1588
|
var OfferDetail = {
|
|
1501
1589
|
fromDto: (dto) => {
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
if (!Array.isArray(dto.terms)) {
|
|
1513
|
-
throw new ValidationError(
|
|
1514
|
-
`OfferDetail.terms: expected an array, got ${typeof dto.terms}`
|
|
1515
|
-
);
|
|
1516
|
-
}
|
|
1517
|
-
if (!Array.isArray(dto.links)) {
|
|
1518
|
-
throw new ValidationError(
|
|
1519
|
-
`OfferDetail.links: expected an array, got ${typeof dto.links}`
|
|
1520
|
-
);
|
|
1521
|
-
}
|
|
1522
|
-
if (!Array.isArray(dto.faqs)) {
|
|
1523
|
-
throw new ValidationError(
|
|
1524
|
-
`OfferDetail.faqs: expected an array, got ${typeof dto.faqs}`
|
|
1525
|
-
);
|
|
1526
|
-
}
|
|
1527
|
-
if (!Array.isArray(dto.milestones)) {
|
|
1528
|
-
throw new ValidationError(
|
|
1529
|
-
`OfferDetail.milestones: expected an array, got ${typeof dto.milestones}`
|
|
1530
|
-
);
|
|
1531
|
-
}
|
|
1532
|
-
if (!Array.isArray(dto.tokens)) {
|
|
1533
|
-
throw new ValidationError(
|
|
1534
|
-
`OfferDetail.tokens: expected an array, got ${typeof dto.tokens}`
|
|
1535
|
-
);
|
|
1536
|
-
}
|
|
1537
|
-
const swapContracts = dto.swap_contracts === void 0 ? [] : dto.swap_contracts;
|
|
1538
|
-
if (!Array.isArray(swapContracts)) {
|
|
1539
|
-
throw new ValidationError(
|
|
1540
|
-
`OfferDetail.swap_contracts: expected an array, got ${typeof swapContracts}`
|
|
1541
|
-
);
|
|
1542
|
-
}
|
|
1590
|
+
const fundingAssets = requiredArray(
|
|
1591
|
+
dto.funding_assets,
|
|
1592
|
+
"OfferDetail.funding_assets"
|
|
1593
|
+
);
|
|
1594
|
+
const options = requiredArray(dto.options, "OfferDetail.options");
|
|
1595
|
+
const terms = requiredArray(dto.terms, "OfferDetail.terms");
|
|
1596
|
+
const links = requiredArray(dto.links, "OfferDetail.links");
|
|
1597
|
+
const faqs = requiredArray(dto.faqs, "OfferDetail.faqs");
|
|
1598
|
+
const milestones = requiredArray(dto.milestones, "OfferDetail.milestones");
|
|
1599
|
+
const tokens = requiredArray(dto.tokens, "OfferDetail.tokens");
|
|
1543
1600
|
const isin = notBlankStringOrNull(dto.isin);
|
|
1544
1601
|
const ticker = notBlankStringOrNull(dto.ticker);
|
|
1545
|
-
|
|
1602
|
+
const base2 = {
|
|
1546
1603
|
id: OfferId(dto.id),
|
|
1547
1604
|
slug: OfferSlug(dto.slug),
|
|
1548
|
-
type: dto.type,
|
|
1549
1605
|
name: dto.name,
|
|
1550
1606
|
asset: Asset.fromDto(dto.asset),
|
|
1551
|
-
fundingAssets:
|
|
1552
|
-
tokens: OfferToken.listFromDto(
|
|
1553
|
-
swapContracts: swapContracts.map(OfferSwapContract.fromDto),
|
|
1607
|
+
fundingAssets: fundingAssets.map(Asset.fromDto),
|
|
1608
|
+
tokens: OfferToken.listFromDto(tokens),
|
|
1554
1609
|
about: notBlankStringOrNull(dto.about),
|
|
1555
|
-
tagline: dto.tagline,
|
|
1556
|
-
bannerUrl: dto.banner_url,
|
|
1557
|
-
logoUrl: dto.logo_url,
|
|
1558
1610
|
category: dto.category,
|
|
1559
1611
|
issuer: notBlankStringOrNull(dto.issuer),
|
|
1560
1612
|
isin: isin === null ? null : Isin(isin),
|
|
1561
1613
|
ticker: ticker === null ? null : Ticker(ticker),
|
|
1562
1614
|
instrumentType: notBlankStringOrNull(dto.instrument_type),
|
|
1563
1615
|
listingVenue: notBlankStringOrNull(dto.listing_venue),
|
|
1564
|
-
startsAt: new Date(dto.starts_at),
|
|
1565
1616
|
endsAt: dto.ends_at ? new Date(dto.ends_at) : null,
|
|
1566
|
-
faqs:
|
|
1567
|
-
links:
|
|
1568
|
-
milestones:
|
|
1569
|
-
options:
|
|
1570
|
-
terms:
|
|
1617
|
+
faqs: faqs.map(FaqItem.fromDto),
|
|
1618
|
+
links: links.map(Link.fromDto),
|
|
1619
|
+
milestones: milestones.map(Milestone.fromDto),
|
|
1620
|
+
options: options.map(OfferOption.fromDto),
|
|
1621
|
+
terms: terms.map(TermItem.fromDto)
|
|
1571
1622
|
};
|
|
1623
|
+
switch (dto.type) {
|
|
1624
|
+
case "coinlist::token_sale":
|
|
1625
|
+
return {
|
|
1626
|
+
...base2,
|
|
1627
|
+
...OfferEditorial.fromDto(dto, "OfferDetail"),
|
|
1628
|
+
type: dto.type,
|
|
1629
|
+
logoUrl: requiredString(dto.logo_url, "OfferDetail.logo_url")
|
|
1630
|
+
};
|
|
1631
|
+
case "superstate::swap":
|
|
1632
|
+
return {
|
|
1633
|
+
...base2,
|
|
1634
|
+
...OfferEditorial.fromDto(dto, "OfferDetail"),
|
|
1635
|
+
type: dto.type,
|
|
1636
|
+
logoUrl: notBlankStringOrNull(dto.logo_url)
|
|
1637
|
+
};
|
|
1638
|
+
// `tagline`, `banner_url` and `starts_at` arrive as `null` and are left
|
|
1639
|
+
// on the wire, as in `Offer.fromDto`.
|
|
1640
|
+
case "ondo::swap":
|
|
1641
|
+
return {
|
|
1642
|
+
...base2,
|
|
1643
|
+
type: dto.type,
|
|
1644
|
+
logoUrl: notBlankStringOrNull(dto.logo_url),
|
|
1645
|
+
swapContracts: requiredArray(
|
|
1646
|
+
dto.swap_contracts,
|
|
1647
|
+
"OfferDetail.swap_contracts"
|
|
1648
|
+
).map(OfferSwapContract.fromDto)
|
|
1649
|
+
};
|
|
1650
|
+
default:
|
|
1651
|
+
return unknownTypeError(dto, "OfferDetail");
|
|
1652
|
+
}
|
|
1572
1653
|
}
|
|
1573
1654
|
};
|
|
1574
1655
|
var OfferOption = {
|
|
@@ -1787,7 +1868,7 @@ var TOKEN_REGISTRY = {
|
|
|
1787
1868
|
|
|
1788
1869
|
// src/universal/core/checkout/ondo/constants.ts
|
|
1789
1870
|
var ONDO_POLL_INTERVAL_MS = 15e3;
|
|
1790
|
-
var
|
|
1871
|
+
var ONDO_QUOTE_MAX_TTL_MS = 15e3;
|
|
1791
1872
|
var DEFAULT_ONDO_AMOUNT_TO_COMPUTE_PRICE = DecimalString("1000");
|
|
1792
1873
|
var ONDO_SETTLEMENT_ASSET = USDC_SYMBOL;
|
|
1793
1874
|
var DEFAULT_ONDO_SELL_TOKENS_TO_COMPUTE_PRICE = 1;
|
|
@@ -1810,6 +1891,9 @@ function computeOndoSellPrice(transaction) {
|
|
|
1810
1891
|
shares: spendInputAmount
|
|
1811
1892
|
});
|
|
1812
1893
|
}
|
|
1894
|
+
function ondoQuoteOfferDeadline(expiresAt, nowMs = Date.now()) {
|
|
1895
|
+
return new Date(Math.min(expiresAt.getTime(), nowMs + ONDO_QUOTE_MAX_TTL_MS));
|
|
1896
|
+
}
|
|
1813
1897
|
function grossProceeds(expected) {
|
|
1814
1898
|
const raw = expected.quantity.raw + expected.fee.raw;
|
|
1815
1899
|
if (raw > MAX_UINT_256) {
|
|
@@ -3495,7 +3579,7 @@ async function fetchOffersPage(api, params, clientCreds) {
|
|
|
3495
3579
|
Attributes.clientCredentials(clientCreds)
|
|
3496
3580
|
)
|
|
3497
3581
|
});
|
|
3498
|
-
return PaginatedResponse.
|
|
3582
|
+
return PaginatedResponse.fromDtoPage(pageDto, Offer.listFromDto);
|
|
3499
3583
|
}
|
|
3500
3584
|
async function fetchOfferDetails(api, id, clientCreds) {
|
|
3501
3585
|
const dto = await api.send({
|
|
@@ -3757,6 +3841,52 @@ var Erc20NamespaceImpl = class {
|
|
|
3757
3841
|
}
|
|
3758
3842
|
};
|
|
3759
3843
|
|
|
3844
|
+
// src/universal/core/tokens/token-registry-snapshot.ts
|
|
3845
|
+
var TokenRegistrySnapshot = {
|
|
3846
|
+
/** Indexes a `tokens.list()` result. `[]` is a valid, empty snapshot. */
|
|
3847
|
+
fromTokens: (tokens) => ({
|
|
3848
|
+
tokens,
|
|
3849
|
+
byKey: new Map(
|
|
3850
|
+
tokens.map((token) => [registryKey(token.identifier), token])
|
|
3851
|
+
)
|
|
3852
|
+
}),
|
|
3853
|
+
/**
|
|
3854
|
+
* The registry's entry for one token, or `null` when it lists none. The
|
|
3855
|
+
* registry is curated, so `null` is an ordinary answer rather than an
|
|
3856
|
+
* error, and callers fall back to their own display defaults.
|
|
3857
|
+
*/
|
|
3858
|
+
get: (snapshot, token) => snapshot.byKey.get(registryKey(token)) ?? null,
|
|
3859
|
+
/**
|
|
3860
|
+
* The registry's entry for the token an offer is *about*, or `null` when
|
|
3861
|
+
* it lists none of them.
|
|
3862
|
+
*
|
|
3863
|
+
* Resolution follows {@link offerDisplayTokens}: the token a sale
|
|
3864
|
+
* distributes or a swap hands over, never the funding token the user pays
|
|
3865
|
+
* with. An offer deployed on several chains carries one such token per
|
|
3866
|
+
* chain, and the first the registry knows wins - they are the same asset,
|
|
3867
|
+
* so any listed one answers for the offer.
|
|
3868
|
+
*/
|
|
3869
|
+
forOffer: (snapshot, offer) => {
|
|
3870
|
+
for (const token of offerDisplayTokens(offer)) {
|
|
3871
|
+
const metadata = TokenRegistrySnapshot.get(snapshot, token);
|
|
3872
|
+
if (metadata !== null) {
|
|
3873
|
+
return metadata;
|
|
3874
|
+
}
|
|
3875
|
+
}
|
|
3876
|
+
return null;
|
|
3877
|
+
}
|
|
3878
|
+
};
|
|
3879
|
+
function offerDisplayTokens(offer) {
|
|
3880
|
+
const swaps = offer.tokens.filter((token) => token.role === "swap");
|
|
3881
|
+
const distributions = offer.tokens.filter(
|
|
3882
|
+
(token) => token.role === "distribution"
|
|
3883
|
+
);
|
|
3884
|
+
return [...swaps, ...distributions];
|
|
3885
|
+
}
|
|
3886
|
+
function registryKey(token) {
|
|
3887
|
+
return `${token.chain}:${token.address.toLowerCase()}`;
|
|
3888
|
+
}
|
|
3889
|
+
|
|
3760
3890
|
// src/universal/api/nabu/tokens.ts
|
|
3761
3891
|
var import_viem6 = require("viem");
|
|
3762
3892
|
|
|
@@ -4957,7 +5087,7 @@ var CoinListProvider = CoinListContextProvider;
|
|
|
4957
5087
|
var import_react4 = require("react");
|
|
4958
5088
|
|
|
4959
5089
|
// src/client/generated/sdk-styles.gen.ts
|
|
4960
|
-
var sdkStyles = '/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--clcosdk-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--clcosdk-color-red-400:oklch(70.4% .191 22.216);--clcosdk-color-red-500:oklch(63.7% .237 25.331);--clcosdk-color-amber-500:oklch(76.9% .188 70.08);--clcosdk-color-gray-400:oklch(70.7% .022 261.325);--clcosdk-color-gray-500:oklch(55.1% .027 264.364);--clcosdk-color-black:#000;--clcosdk-spacing:.25rem;--clcosdk-container-sm:24rem;--clcosdk-container-md:28rem;--clcosdk-container-xl:36rem;--clcosdk-text-xs:.75rem;--clcosdk-text-xs--line-height:calc(1 / .75);--clcosdk-text-sm:.875rem;--clcosdk-text-sm--line-height:calc(1.25 / .875);--clcosdk-text-base:1rem;--clcosdk-text-base--line-height:calc(1.5 / 1);--clcosdk-text-lg:1.125rem;--clcosdk-text-lg--line-height:calc(1.75 / 1.125);--clcosdk-font-weight-normal:400;--clcosdk-font-weight-medium:500;--clcosdk-font-weight-semibold:600;--clcosdk-radius-md:.375rem;--clcosdk-radius-lg:.5rem;--clcosdk-radius-xl:.75rem;--clcosdk-radius-2xl:1rem;--clcosdk-ease-out:cubic-bezier(0, 0, .2, 1);--clcosdk-ease-in-out:cubic-bezier(.4, 0, .2, 1);--clcosdk-animate-spin:spin 1s linear infinite;--clcosdk-animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--clcosdk-color-brand-primary:var(--color-brand-primary)}}@layer base{.clco-sdk-root{--color-brand-primary:#171717;--color-brand-primary-hover:#000;--color-brand-primary-active:#262626;--color-accent:#2b3a67;--color-accent-hover:#243057;--color-accent-active:#1d2647;--color-accent-focus:#c7d2fe;--color-accent-subtle:#eef1f8;--color-text-primary:#171717;--color-text-secondary:#8c8c8c;--color-text-disabled:#d1d1d1;--color-text-inverse:#fff;--color-background:#fff;--color-surface:#fafafa;--color-section:#f3f3f3;--color-border:#e5e5e5;--color-divider:#ececec;--color-overlay:#00000080;--color-positive:#15803d;--color-positive-subtle:#dcfce7;--color-negative:#dc2626;--color-negative-subtle:#fee2e2;--color-success:#2c8c5e;--color-success-subtle:#e6f4ec;--color-success-border:#cfe9db;--color-warning:#e08a1a;--color-warning-subtle:#fff7ed;--color-warning-border:#fdead7;--color-error:#b42318;--color-error-subtle:#feeceb;--color-error-border:#fbd5d2;--shadow-step-active:0px 0px 10px 0px #0000001a;--shadow-dialog:0px 8px 32px 0px #0000001a;--btn-primary-gradient:linear-gradient(180deg, #262626 0%, #1c1c1c 50%, #0f0f0f 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #00000059, inset 0px 1px 2px 0px #ffffff2e, inset 0px 1px 0px 0px #ffffff1a;--sale-card-surface:linear-gradient(to top, #0a0a0a 0%, #1a1a1a 100%);--color-sale-card-text:#f4f4f5;--color-sale-card-text-muted:#a1a1aa;--color-sale-card-text-strong:#fff;--color-sale-card-border:#ffffff40;--color-sale-card-chrome-border:#ffffff4d;--color-sale-card-chrome-bg:#ffffff26;--color-sale-card-chrome-emphasis-border:#fff6;--color-sale-card-chrome-emphasis-bg:#ffffff40;--color-sale-card-focus-ring:#ffffff80}@media (prefers-color-scheme:dark){.clco-sdk-root:not(:where(.light,.light *)){--color-brand-primary:#f4f4f5;--color-brand-primary-hover:#fff;--color-brand-primary-active:#e4e4e7;--color-accent:#6f82c9;--color-accent-hover:#8799e4;--color-accent-active:#5b6fcf;--color-accent-focus:#6f82c959;--color-accent-subtle:#6f82c91f;--color-text-primary:#f4f4f5;--color-text-secondary:#a1a1aa;--color-text-disabled:#71717a;--color-text-inverse:#171717;--color-background:#0f1115;--color-surface:#161a20;--color-section:#20242c;--color-border:#2a2e35;--color-divider:#323741;--color-overlay:#000000b3;--color-positive:#22c55e;--color-positive-subtle:#22c55e1f;--color-negative:#ef4444;--color-negative-subtle:#ef44441f;--color-success:#34d399;--color-success-subtle:#34d3991f;--color-success-border:#34d39940;--color-warning:#f59e0b;--color-warning-subtle:#f59e0b1f;--color-warning-border:#f59e0b40;--color-error:#f87171;--color-error-subtle:#f871711f;--color-error-border:#f8717140;--shadow-step-active:0px 0px 10px 0px #00000080;--shadow-dialog:0px 8px 32px 0px #0009;--btn-primary-gradient:linear-gradient(180deg, #fafafa 0%, #f0f0f0 50%, #e4e4e7 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #0000001f, inset 0px 1px 2px 0px #fff9, inset 0px 1px 0px 0px #fff6}}:where(.dark,.dark *) .clco-sdk-root{--color-brand-primary:#f4f4f5;--color-brand-primary-hover:#fff;--color-brand-primary-active:#e4e4e7;--color-accent:#6f82c9;--color-accent-hover:#8799e4;--color-accent-active:#5b6fcf;--color-accent-focus:#6f82c959;--color-accent-subtle:#6f82c91f;--color-text-primary:#f4f4f5;--color-text-secondary:#a1a1aa;--color-text-disabled:#71717a;--color-text-inverse:#171717;--color-background:#0f1115;--color-surface:#161a20;--color-section:#20242c;--color-border:#2a2e35;--color-divider:#323741;--color-overlay:#000000b3;--color-positive:#22c55e;--color-positive-subtle:#22c55e1f;--color-negative:#ef4444;--color-negative-subtle:#ef44441f;--color-success:#34d399;--color-success-subtle:#34d3991f;--color-success-border:#34d39940;--color-warning:#f59e0b;--color-warning-subtle:#f59e0b1f;--color-warning-border:#f59e0b40;--color-error:#f87171;--color-error-subtle:#f871711f;--color-error-border:#f8717140;--shadow-step-active:0px 0px 10px 0px #00000080;--shadow-dialog:0px 8px 32px 0px #0009;--btn-primary-gradient:linear-gradient(180deg, #fafafa 0%, #f0f0f0 50%, #e4e4e7 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #0000001f, inset 0px 1px 2px 0px #fff9, inset 0px 1px 0px 0px #fff6}.clco-sdk-root{color:var(--color-text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.clco-sdk-root *,.clco-sdk-root :before,.clco-sdk-root :after{box-sizing:border-box}.clco-sdk-root button{appearance:none;cursor:pointer;font:inherit;color:inherit;background:0 0;border:none;padding:0}.clco-sdk-root input,.clco-sdk-root textarea,.clco-sdk-root select{font:inherit;color:inherit;background:0 0;border:none;border-radius:0;padding:0}.clco-sdk-root a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.clco-sdk-root ul,.clco-sdk-root ol{margin:0;padding:0;list-style:none}.clco-sdk-root h1,.clco-sdk-root h2,.clco-sdk-root h3,.clco-sdk-root h4,.clco-sdk-root h5,.clco-sdk-root h6,.clco-sdk-root p,.clco-sdk-root figure,.clco-sdk-root blockquote,.clco-sdk-root dl,.clco-sdk-root dd,.clco-sdk-root pre{margin:0}.clco-sdk-root img,.clco-sdk-root svg{max-width:100%;display:block}@keyframes clco-status-ping{0%{opacity:.7;transform:scale(1)}75%,to{opacity:0;transform:scale(3.25)}}.clco-sdk-root .clcosdk-status-dot-ping{animation:1.6s cubic-bezier(0,0,.2,1) infinite clco-status-ping}@media (prefers-reduced-motion:reduce){.clco-sdk-root .clcosdk-status-dot-ping{opacity:0;animation:none}}}@layer components;@layer utilities{.clcosdk\\:pointer-events-none{pointer-events:none}.clcosdk\\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.clcosdk\\:absolute{position:absolute}.clcosdk\\:fixed{position:fixed}.clcosdk\\:relative{position:relative}.clcosdk\\:inset-0{inset:0}.clcosdk\\:top-1\\/2{top:50%}.clcosdk\\:top-4{top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:top-full{top:100%}.clcosdk\\:-right-0\\.5{right:calc(var(--clcosdk-spacing) * -.5)}.clcosdk\\:right-4{right:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:right-\\[-14\\%\\]{right:-14%}.clcosdk\\:-bottom-0\\.5{bottom:calc(var(--clcosdk-spacing) * -.5)}.clcosdk\\:bottom-full{bottom:100%}.clcosdk\\:left-1\\/2{left:50%}.clcosdk\\:z-0{z-index:0}.clcosdk\\:z-10{z-index:10}.clcosdk\\:z-50{z-index:50}.clcosdk\\:order-1{order:1}.clcosdk\\:order-2{order:2}.clcosdk\\:mt-2{margin-top:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:mt-4{margin-top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:mt-auto{margin-top:auto}.clcosdk\\:mb-2{margin-bottom:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:flex{display:flex}.clcosdk\\:grid{display:grid}.clcosdk\\:inline-flex{display:inline-flex}.clcosdk\\:size-2{width:calc(var(--clcosdk-spacing) * 2);height:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:size-3{width:calc(var(--clcosdk-spacing) * 3);height:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:size-3\\.5{width:calc(var(--clcosdk-spacing) * 3.5);height:calc(var(--clcosdk-spacing) * 3.5)}.clcosdk\\:size-4{width:calc(var(--clcosdk-spacing) * 4);height:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:size-5{width:calc(var(--clcosdk-spacing) * 5);height:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:size-10{width:calc(var(--clcosdk-spacing) * 10);height:calc(var(--clcosdk-spacing) * 10)}.clcosdk\\:size-16{width:calc(var(--clcosdk-spacing) * 16);height:calc(var(--clcosdk-spacing) * 16)}.clcosdk\\:size-24{width:calc(var(--clcosdk-spacing) * 24);height:calc(var(--clcosdk-spacing) * 24)}.clcosdk\\:size-\\[15rem\\]{width:15rem;height:15rem}.clcosdk\\:size-full{width:100%;height:100%}.clcosdk\\:h-1{height:var(--clcosdk-spacing)}.clcosdk\\:h-3{height:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:h-4{height:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:h-5{height:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:h-6{height:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:h-8{height:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:h-9{height:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:h-10{height:calc(var(--clcosdk-spacing) * 10)}.clcosdk\\:h-11{height:calc(var(--clcosdk-spacing) * 11)}.clcosdk\\:h-12{height:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:h-14{height:calc(var(--clcosdk-spacing) * 14)}.clcosdk\\:h-\\[1em\\]{height:1em}.clcosdk\\:h-\\[18px\\]{height:18px}.clcosdk\\:h-\\[54px\\]{height:54px}.clcosdk\\:h-\\[71px\\]{height:71px}.clcosdk\\:h-auto{height:auto}.clcosdk\\:h-full{height:100%}.clcosdk\\:h-px{height:1px}.clcosdk\\:max-h-\\[92vh\\]{max-height:92vh}.clcosdk\\:max-h-full{max-height:100%}.clcosdk\\:min-h-0{min-height:0}.clcosdk\\:min-h-9{min-height:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:min-h-40{min-height:calc(var(--clcosdk-spacing) * 40)}.clcosdk\\:min-h-\\[1lh\\]{min-height:1lh}.clcosdk\\:min-h-screen{min-height:100vh}.clcosdk\\:w-1{width:var(--clcosdk-spacing)}.clcosdk\\:w-4{width:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:w-5{width:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:w-6{width:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:w-8{width:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:w-10{width:calc(var(--clcosdk-spacing) * 10)}.clcosdk\\:w-12{width:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:w-16{width:calc(var(--clcosdk-spacing) * 16)}.clcosdk\\:w-20{width:calc(var(--clcosdk-spacing) * 20)}.clcosdk\\:w-24{width:calc(var(--clcosdk-spacing) * 24)}.clcosdk\\:w-28{width:calc(var(--clcosdk-spacing) * 28)}.clcosdk\\:w-32{width:calc(var(--clcosdk-spacing) * 32)}.clcosdk\\:w-40{width:calc(var(--clcosdk-spacing) * 40)}.clcosdk\\:w-48{width:calc(var(--clcosdk-spacing) * 48)}.clcosdk\\:w-80{width:calc(var(--clcosdk-spacing) * 80)}.clcosdk\\:w-96{width:calc(var(--clcosdk-spacing) * 96)}.clcosdk\\:w-\\[16px\\]{width:16px}.clcosdk\\:w-\\[28rem\\]{width:28rem}.clcosdk\\:w-\\[448px\\]{width:448px}.clcosdk\\:w-auto{width:auto}.clcosdk\\:w-component{width:448px}.clcosdk\\:w-fit{width:fit-content}.clcosdk\\:w-full{width:100%}.clcosdk\\:w-max{width:max-content}.clcosdk\\:max-w-\\[16rem\\]{max-width:16rem}.clcosdk\\:max-w-\\[28rem\\]{max-width:28rem}.clcosdk\\:max-w-\\[30rem\\]{max-width:30rem}.clcosdk\\:max-w-\\[40rem\\]{max-width:40rem}.clcosdk\\:max-w-\\[56rem\\]{max-width:56rem}.clcosdk\\:max-w-\\[64rem\\]{max-width:64rem}.clcosdk\\:max-w-\\[760px\\]{max-width:760px}.clcosdk\\:max-w-full{max-width:100%}.clcosdk\\:max-w-md{max-width:var(--clcosdk-container-md)}.clcosdk\\:max-w-sm{max-width:var(--clcosdk-container-sm)}.clcosdk\\:max-w-xl{max-width:var(--clcosdk-container-xl)}.clcosdk\\:min-w-0{min-width:0}.clcosdk\\:flex-1{flex:1}.clcosdk\\:shrink-0{flex-shrink:0}.clcosdk\\:-translate-x-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.clcosdk\\:-translate-y-1\\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.clcosdk\\:rotate-90{rotate:90deg}.clcosdk\\:rotate-180{rotate:180deg}.clcosdk\\:animate-pulse{animation:var(--clcosdk-animate-pulse)}.clcosdk\\:animate-spin{animation:var(--clcosdk-animate-spin)}.clcosdk\\:cursor-pointer{cursor:pointer}.clcosdk\\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.clcosdk\\:grid-rows-\\[0fr\\]{grid-template-rows:0fr}.clcosdk\\:grid-rows-\\[1fr\\]{grid-template-rows:1fr}.clcosdk\\:flex-col{flex-direction:column}.clcosdk\\:flex-wrap{flex-wrap:wrap}.clcosdk\\:items-center{align-items:center}.clcosdk\\:items-end{align-items:flex-end}.clcosdk\\:items-start{align-items:flex-start}.clcosdk\\:justify-between{justify-content:space-between}.clcosdk\\:justify-center{justify-content:center}.clcosdk\\:justify-end{justify-content:flex-end}.clcosdk\\:gap-1{gap:var(--clcosdk-spacing)}.clcosdk\\:gap-1\\.5{gap:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:gap-2{gap:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:gap-2\\.5{gap:calc(var(--clcosdk-spacing) * 2.5)}.clcosdk\\:gap-3{gap:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:gap-4{gap:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:gap-6{gap:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:gap-\\[5px\\]{gap:5px}:where(.clcosdk\\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--clcosdk-spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--clcosdk-spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.clcosdk\\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--clcosdk-spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--clcosdk-spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.clcosdk\\:divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.clcosdk\\:divide-border>:not(:last-child)){border-color:var(--color-border)}:where(.clcosdk\\:divide-divider>:not(:last-child)){border-color:var(--color-divider)}.clcosdk\\:self-start{align-self:flex-start}.clcosdk\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.clcosdk\\:overflow-hidden{overflow:hidden}.clcosdk\\:overflow-y-auto{overflow-y:auto}.clcosdk\\:rounded{border-radius:.25rem}.clcosdk\\:rounded-2xl{border-radius:var(--clcosdk-radius-2xl)}.clcosdk\\:rounded-\\[20px\\]{border-radius:20px}.clcosdk\\:rounded-\\[28px\\]{border-radius:28px}.clcosdk\\:rounded-btn{border-radius:12px}.clcosdk\\:rounded-card{border-radius:24px}.clcosdk\\:rounded-full{border-radius:3.40282e38px}.clcosdk\\:rounded-lg{border-radius:var(--clcosdk-radius-lg)}.clcosdk\\:rounded-md{border-radius:var(--clcosdk-radius-md)}.clcosdk\\:rounded-xl{border-radius:var(--clcosdk-radius-xl)}.clcosdk\\:border{border-style:var(--tw-border-style);border-width:1px}.clcosdk\\:border-2{border-style:var(--tw-border-style);border-width:2px}.clcosdk\\:border-\\[1\\.5px\\]{border-style:var(--tw-border-style);border-width:1.5px}.clcosdk\\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.clcosdk\\:border-accent\\/60{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.clcosdk\\:border-accent\\/60{border-color:color-mix(in oklab, var(--color-accent) 60%, transparent)}}.clcosdk\\:border-amber-500{border-color:var(--clcosdk-color-amber-500)}.clcosdk\\:border-background{border-color:var(--color-background)}.clcosdk\\:border-border{border-color:var(--color-border)}.clcosdk\\:border-brand-primary{border-color:var(--color-brand-primary)}.clcosdk\\:border-current{border-color:currentColor}.clcosdk\\:border-divider{border-color:var(--color-divider)}.clcosdk\\:border-error-border{border-color:var(--color-error-border)}.clcosdk\\:border-sale-card-border{border-color:var(--color-sale-card-border)}.clcosdk\\:border-sale-card-chrome-border{border-color:var(--color-sale-card-chrome-border)}.clcosdk\\:border-success-border{border-color:var(--color-success-border)}.clcosdk\\:border-warning-border{border-color:var(--color-warning-border)}.clcosdk\\:border-t-transparent{border-top-color:#0000}.clcosdk\\:bg-background{background-color:var(--color-background)}.clcosdk\\:bg-black\\/50{background-color:var(--clcosdk-color-black)}@supports (color:color-mix(in lab, red, red)){.clcosdk\\:bg-black\\/50{background-color:color-mix(in oklab, var(--clcosdk-color-black) 50%, transparent)}}.clcosdk\\:bg-brand-primary{background-color:var(--color-brand-primary)}.clcosdk\\:bg-divider{background-color:var(--color-divider)}.clcosdk\\:bg-error-subtle{background-color:var(--color-error-subtle)}.clcosdk\\:bg-overlay{background-color:var(--color-overlay)}.clcosdk\\:bg-positive{background-color:var(--color-positive)}.clcosdk\\:bg-positive-subtle{background-color:var(--color-positive-subtle)}.clcosdk\\:bg-sale-card-chrome-bg{background-color:var(--color-sale-card-chrome-bg)}.clcosdk\\:bg-section{background-color:var(--color-section)}.clcosdk\\:bg-success-subtle{background-color:var(--color-success-subtle)}.clcosdk\\:bg-surface{background-color:var(--color-surface)}.clcosdk\\:bg-text-disabled{background-color:var(--color-text-disabled)}.clcosdk\\:bg-text-primary{background-color:var(--color-text-primary)}.clcosdk\\:bg-transparent{background-color:#0000}.clcosdk\\:bg-warning-subtle{background-color:var(--color-warning-subtle)}.clcosdk\\:bg-\\[image\\:var\\(--btn-primary-gradient\\)\\]{background-image:var(--btn-primary-gradient)}.clcosdk\\:bg-\\[image\\:var\\(--sale-card-surface\\)\\]{background-image:var(--sale-card-surface)}.clcosdk\\:object-contain{object-fit:contain}.clcosdk\\:object-cover{object-fit:cover}.clcosdk\\:p-0{padding:0}.clcosdk\\:p-1\\.5{padding:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:p-3{padding:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:p-3\\.5{padding:calc(var(--clcosdk-spacing) * 3.5)}.clcosdk\\:p-4{padding:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:p-5{padding:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:p-6{padding:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:p-8{padding:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:p-16{padding:calc(var(--clcosdk-spacing) * 16)}.clcosdk\\:px-2{padding-inline:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:px-3{padding-inline:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:px-4{padding-inline:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:px-5{padding-inline:calc(var(--clcosdk-spacing) * 5)}.clcosdk\\:px-6{padding-inline:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:py-1\\.5{padding-block:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:py-2{padding-block:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:py-3{padding-block:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:py-8{padding-block:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:py-12{padding-block:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:pt-1{padding-top:var(--clcosdk-spacing)}.clcosdk\\:pt-4{padding-top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:pt-14{padding-top:calc(var(--clcosdk-spacing) * 14)}.clcosdk\\:pr-1\\.5{padding-right:calc(var(--clcosdk-spacing) * 1.5)}.clcosdk\\:pr-3{padding-right:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:pr-4{padding-right:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:pb-4{padding-bottom:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:pl-3{padding-left:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:text-center{text-align:center}.clcosdk\\:text-left{text-align:left}.clcosdk\\:text-right{text-align:right}.clcosdk\\:font-mono{font-family:var(--clcosdk-font-mono)}.clcosdk\\:text-base{font-size:var(--clcosdk-text-base);line-height:var(--tw-leading,var(--clcosdk-text-base--line-height))}.clcosdk\\:text-lg{font-size:var(--clcosdk-text-lg);line-height:var(--tw-leading,var(--clcosdk-text-lg--line-height))}.clcosdk\\:text-sm{font-size:var(--clcosdk-text-sm);line-height:var(--tw-leading,var(--clcosdk-text-sm--line-height))}.clcosdk\\:text-xs{font-size:var(--clcosdk-text-xs);line-height:var(--tw-leading,var(--clcosdk-text-xs--line-height))}.clcosdk\\:text-\\[11px\\]{font-size:11px}.clcosdk\\:text-\\[12px\\]{font-size:12px}.clcosdk\\:text-\\[13px\\]{font-size:13px}.clcosdk\\:text-\\[14px\\]{font-size:14px}.clcosdk\\:text-\\[15px\\]{font-size:15px}.clcosdk\\:text-\\[16px\\]{font-size:16px}.clcosdk\\:text-\\[18px\\]{font-size:18px}.clcosdk\\:text-\\[22px\\]{font-size:22px}.clcosdk\\:text-\\[28px\\]{font-size:28px}.clcosdk\\:text-\\[36px\\]{font-size:36px}.clcosdk\\:text-\\[48px\\]{font-size:48px}.clcosdk\\:text-\\[64px\\]{font-size:64px}.clcosdk\\:leading-\\[105\\%\\]{--tw-leading:105%;line-height:105%}.clcosdk\\:leading-\\[108\\%\\]{--tw-leading:108%;line-height:108%}.clcosdk\\:leading-\\[110\\%\\]{--tw-leading:110%;line-height:110%}.clcosdk\\:leading-\\[120\\%\\]{--tw-leading:120%;line-height:120%}.clcosdk\\:leading-\\[130\\%\\]{--tw-leading:130%;line-height:130%}.clcosdk\\:leading-\\[140\\%\\]{--tw-leading:140%;line-height:140%}.clcosdk\\:leading-\\[150\\%\\]{--tw-leading:150%;line-height:150%}.clcosdk\\:leading-\\[160\\%\\]{--tw-leading:160%;line-height:160%}.clcosdk\\:font-medium{--tw-font-weight:var(--clcosdk-font-weight-medium);font-weight:var(--clcosdk-font-weight-medium)}.clcosdk\\:font-normal{--tw-font-weight:var(--clcosdk-font-weight-normal);font-weight:var(--clcosdk-font-weight-normal)}.clcosdk\\:font-semibold{--tw-font-weight:var(--clcosdk-font-weight-semibold);font-weight:var(--clcosdk-font-weight-semibold)}.clcosdk\\:tracking-\\[0\\.12px\\]{--tw-tracking:.12px;letter-spacing:.12px}.clcosdk\\:tracking-\\[0\\.28px\\]{--tw-tracking:.28px;letter-spacing:.28px}.clcosdk\\:break-words{overflow-wrap:break-word}.clcosdk\\:whitespace-nowrap{white-space:nowrap}.clcosdk\\:text-background{color:var(--color-background)}.clcosdk\\:text-brand-primary{color:var(--color-brand-primary)}.clcosdk\\:text-error{color:var(--color-error)}.clcosdk\\:text-positive{color:var(--color-positive)}.clcosdk\\:text-sale-card-text{color:var(--color-sale-card-text)}.clcosdk\\:text-sale-card-text-muted{color:var(--color-sale-card-text-muted)}.clcosdk\\:text-sale-card-text-strong{color:var(--color-sale-card-text-strong)}.clcosdk\\:text-success{color:var(--color-success)}.clcosdk\\:text-text-disabled{color:var(--color-text-disabled)}.clcosdk\\:text-text-inverse{color:var(--color-text-inverse)}.clcosdk\\:text-text-primary{color:var(--color-text-primary)}.clcosdk\\:text-text-secondary{color:var(--color-text-secondary)}.clcosdk\\:text-warning{color:var(--color-warning)}.clcosdk\\:capitalize{text-transform:capitalize}.clcosdk\\:lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.clcosdk\\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.clcosdk\\:no-underline{text-decoration-line:none}.clcosdk\\:underline{text-decoration-line:underline}.clcosdk\\:underline-offset-2{text-underline-offset:2px}.clcosdk\\:underline-offset-4{text-underline-offset:4px}.clcosdk\\:opacity-0{opacity:0}.clcosdk\\:opacity-60{opacity:.6}.clcosdk\\:shadow-\\[0_0_0_3px_rgba\\(59\\,130\\,246\\,0\\.2\\)\\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#3b82f633);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-\\[0px_1px_1px_0px_rgba\\(10\\,10\\,10\\,0\\.04\\)\\,0px_8px_12px_0px_rgba\\(10\\,10\\,10\\,0\\.08\\)\\]{--tw-shadow:0px 1px 1px 0px var(--tw-shadow-color,#0a0a0a0a), 0px 8px 12px 0px var(--tw-shadow-color,#0a0a0a14);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-\\[0px_4px_12px_0px_rgba\\(0\\,0\\,0\\,0\\.08\\)\\,0px_12px_28px_0px_rgba\\(0\\,0\\,0\\,0\\.13\\)\\]{--tw-shadow:0px 4px 12px 0px var(--tw-shadow-color,#00000014), 0px 12px 28px 0px var(--tw-shadow-color,#00000021);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-\\[var\\(--btn-primary-shadow\\)\\]{--tw-shadow:var(--btn-primary-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-card{--tw-shadow:0px 4px 6px -2px var(--tw-shadow-color,#0000000d), 0px 12px 24px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-dialog{--tw-shadow:var(--shadow-dialog);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:shadow-step-active{--tw-shadow:var(--shadow-step-active);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:transition-\\[background-color\\,border-color\\]{transition-property:background-color,border-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-\\[grid-template-rows\\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.clcosdk\\:duration-200{--tw-duration:.2s;transition-duration:.2s}.clcosdk\\:duration-300{--tw-duration:.3s;transition-duration:.3s}.clcosdk\\:duration-500{--tw-duration:.5s;transition-duration:.5s}.clcosdk\\:ease-in-out{--tw-ease:var(--clcosdk-ease-in-out);transition-timing-function:var(--clcosdk-ease-in-out)}.clcosdk\\:ease-out{--tw-ease:var(--clcosdk-ease-out);transition-timing-function:var(--clcosdk-ease-out)}.clcosdk\\:outline-none{--tw-outline-style:none;outline-style:none}.clcosdk\\:group-focus-within\\:opacity-100:is(:where(.clcosdk\\:group):focus-within *){opacity:1}@media (hover:hover){.clcosdk\\:group-hover\\:border-sale-card-chrome-emphasis-border:is(:where(.clcosdk\\:group):hover *){border-color:var(--color-sale-card-chrome-emphasis-border)}.clcosdk\\:group-hover\\:bg-sale-card-chrome-emphasis-bg:is(:where(.clcosdk\\:group):hover *){background-color:var(--color-sale-card-chrome-emphasis-bg)}.clcosdk\\:group-hover\\:opacity-100:is(:where(.clcosdk\\:group):hover *){opacity:1}}.clcosdk\\:group-focus-visible\\:border-sale-card-chrome-emphasis-border:is(:where(.clcosdk\\:group):focus-visible *){border-color:var(--color-sale-card-chrome-emphasis-border)}.clcosdk\\:group-focus-visible\\:bg-sale-card-chrome-emphasis-bg:is(:where(.clcosdk\\:group):focus-visible *){background-color:var(--color-sale-card-chrome-emphasis-bg)}.clcosdk\\:placeholder\\:text-text-disabled::placeholder{color:var(--color-text-disabled)}@media (hover:hover){.clcosdk\\:hover\\:scale-\\[1\\.02\\]:hover{scale:1.02}.clcosdk\\:hover\\:border-text-disabled:hover{border-color:var(--color-text-disabled)}.clcosdk\\:hover\\:bg-\\[\\#fcdcd8\\]:hover{background-color:#fcdcd8}.clcosdk\\:hover\\:bg-border:hover{background-color:var(--color-border)}.clcosdk\\:hover\\:bg-brand-primary:hover{background-color:var(--color-brand-primary)}.clcosdk\\:hover\\:bg-brand-primary-hover:hover{background-color:var(--color-brand-primary-hover)}.clcosdk\\:hover\\:bg-section:hover{background-color:var(--color-section)}.clcosdk\\:hover\\:bg-surface:hover{background-color:var(--color-surface)}.clcosdk\\:hover\\:text-\\[\\#8b1a13\\]:hover{color:#8b1a13}.clcosdk\\:hover\\:text-text-primary:hover{color:var(--color-text-primary)}.clcosdk\\:hover\\:underline:hover{text-decoration-line:underline}.clcosdk\\:hover\\:opacity-80:hover{opacity:.8}.clcosdk\\:hover\\:opacity-90:hover{opacity:.9}}.clcosdk\\:focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.clcosdk\\:focus-visible\\:ring-gray-400:focus-visible{--tw-ring-color:var(--clcosdk-color-gray-400)}.clcosdk\\:focus-visible\\:ring-gray-500:focus-visible{--tw-ring-color:var(--clcosdk-color-gray-500)}.clcosdk\\:focus-visible\\:ring-red-400:focus-visible{--tw-ring-color:var(--clcosdk-color-red-400)}.clcosdk\\:focus-visible\\:ring-red-500:focus-visible{--tw-ring-color:var(--clcosdk-color-red-500)}.clcosdk\\:focus-visible\\:ring-sale-card-focus-ring:focus-visible{--tw-ring-color:var(--color-sale-card-focus-ring)}.clcosdk\\:focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.clcosdk\\:focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.clcosdk\\:active\\:bg-\\[\\#d9d9d9\\]:active{background-color:#d9d9d9}.clcosdk\\:active\\:bg-\\[\\#f9c9c4\\]:active{background-color:#f9c9c4}.clcosdk\\:active\\:bg-border:active{background-color:var(--color-border)}.clcosdk\\:active\\:bg-brand-primary-active:active{background-color:var(--color-brand-primary-active)}.clcosdk\\:active\\:text-\\[\\#6d1510\\]:active{color:#6d1510}.clcosdk\\:active\\:opacity-80:active{opacity:.8}.clcosdk\\:disabled\\:pointer-events-none:disabled{pointer-events:none}.clcosdk\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.clcosdk\\:disabled\\:opacity-40:disabled{opacity:.4}.clcosdk\\:disabled\\:opacity-50:disabled{opacity:.5}.clcosdk\\:aria-disabled\\:cursor-not-allowed[aria-disabled=true]{cursor:not-allowed}.clcosdk\\:aria-disabled\\:opacity-50[aria-disabled=true]{opacity:.5}@media not all and (min-width:48rem){.clcosdk\\:max-md\\:hidden{display:none}.clcosdk\\:max-md\\:w-full{width:100%}.clcosdk\\:max-md\\:justify-start{justify-content:flex-start}.clcosdk\\:max-md\\:gap-4{gap:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:max-md\\:rounded-none{border-radius:0}.clcosdk\\:max-md\\:border-0{border-style:var(--tw-border-style);border-width:0}.clcosdk\\:max-md\\:bg-transparent{background-color:#0000}.clcosdk\\:max-md\\:p-0{padding:0}@media (hover:hover){.clcosdk\\:max-md\\:hover\\:scale-100:hover{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}}}@media (min-width:40rem){.clcosdk\\:sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:48rem){.clcosdk\\:md\\:right-\\[-10\\%\\]{right:-10%}.clcosdk\\:md\\:order-1{order:1}.clcosdk\\:md\\:order-2{order:2}.clcosdk\\:md\\:hidden{display:none}.clcosdk\\:md\\:size-\\[20rem\\]{width:20rem;height:20rem}.clcosdk\\:md\\:h-9{height:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:md\\:h-12{height:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:md\\:h-\\[54px\\]{height:54px}.clcosdk\\:md\\:w-9{width:calc(var(--clcosdk-spacing) * 9)}.clcosdk\\:md\\:w-12{width:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.clcosdk\\:md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.clcosdk\\:md\\:grid-cols-\\[minmax\\(0\\,11fr\\)_minmax\\(0\\,8fr\\)\\]{grid-template-columns:minmax(0,11fr) minmax(0,8fr)}.clcosdk\\:md\\:flex-row{flex-direction:row}.clcosdk\\:md\\:items-center{align-items:center}.clcosdk\\:md\\:items-end{align-items:flex-end}.clcosdk\\:md\\:justify-between{justify-content:space-between}.clcosdk\\:md\\:justify-end{justify-content:flex-end}.clcosdk\\:md\\:gap-3{gap:calc(var(--clcosdk-spacing) * 3)}.clcosdk\\:md\\:gap-6{gap:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:md\\:gap-x-12{column-gap:calc(var(--clcosdk-spacing) * 12)}.clcosdk\\:md\\:self-end{align-self:flex-end}.clcosdk\\:md\\:rounded-\\[40px\\]{border-radius:40px}.clcosdk\\:md\\:rounded-card{border-radius:24px}.clcosdk\\:md\\:rounded-dialog{border-radius:32px}.clcosdk\\:md\\:p-4{padding:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:md\\:p-6{padding:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:md\\:p-8{padding:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:md\\:px-6{padding-inline:calc(var(--clcosdk-spacing) * 6)}.clcosdk\\:md\\:px-8{padding-inline:calc(var(--clcosdk-spacing) * 8)}.clcosdk\\:md\\:py-2{padding-block:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:md\\:pr-2{padding-right:calc(var(--clcosdk-spacing) * 2)}.clcosdk\\:md\\:pr-4{padding-right:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:md\\:pl-4{padding-left:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:md\\:text-base{font-size:var(--clcosdk-text-base);line-height:var(--tw-leading,var(--clcosdk-text-base--line-height))}.clcosdk\\:md\\:text-\\[14px\\]{font-size:14px}.clcosdk\\:md\\:text-\\[16px\\]{font-size:16px}.clcosdk\\:md\\:text-\\[18px\\]{font-size:18px}.clcosdk\\:md\\:text-\\[28px\\]{font-size:28px}.clcosdk\\:md\\:leading-\\[120\\%\\]{--tw-leading:120%;line-height:120%}.clcosdk\\:md\\:leading-\\[160\\%\\]{--tw-leading:160%;line-height:160%}}@media (prefers-color-scheme:dark){@media (hover:hover){.clcosdk\\:dark\\:hover\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.20\\)\\]:not(:where(.light,.light *)):hover{background-color:#f8717133}}}@media (hover:hover){.clcosdk\\:dark\\:hover\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.20\\)\\]:where(.dark,.dark *):hover{background-color:#f8717133}}@media (prefers-color-scheme:dark){@media (hover:hover){.clcosdk\\:dark\\:hover\\:text-\\[\\#fca5a5\\]:not(:where(.light,.light *)):hover{color:#fca5a5}}}@media (hover:hover){.clcosdk\\:dark\\:hover\\:text-\\[\\#fca5a5\\]:where(.dark,.dark *):hover{color:#fca5a5}}@media (prefers-color-scheme:dark){.clcosdk\\:dark\\:active\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.30\\)\\]:not(:where(.light,.light *)):active{background-color:#f871714d}}.clcosdk\\:dark\\:active\\:bg-\\[rgba\\(248\\,113\\,113\\,0\\.30\\)\\]:where(.dark,.dark *):active{background-color:#f871714d}@media (prefers-color-scheme:dark){.clcosdk\\:dark\\:active\\:bg-divider:not(:where(.light,.light *)):active{background-color:var(--color-divider)}}.clcosdk\\:dark\\:active\\:bg-divider:where(.dark,.dark *):active{background-color:var(--color-divider)}@media (prefers-color-scheme:dark){.clcosdk\\:dark\\:active\\:text-\\[\\#f87171\\]:not(:where(.light,.light *)):active{color:#f87171}}.clcosdk\\:dark\\:active\\:text-\\[\\#f87171\\]:where(.dark,.dark *):active{color:#f87171}.clcosdk\\:\\[\\&_circle\\]\\:fill-error-subtle circle{fill:var(--color-error-subtle)}.clcosdk\\:\\[\\&_circle\\]\\:fill-success-subtle circle{fill:var(--color-success-subtle)}.clcosdk\\:\\[\\&_circle\\]\\:fill-warning-subtle circle{fill:var(--color-warning-subtle)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}';
|
|
5090
|
+
var sdkStyles = '/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--clcosdk-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--clcosdk-color-red-400:oklch(70.4% .191 22.216);--clcosdk-color-red-500:oklch(63.7% .237 25.331);--clcosdk-color-amber-500:oklch(76.9% .188 70.08);--clcosdk-color-gray-400:oklch(70.7% .022 261.325);--clcosdk-color-gray-500:oklch(55.1% .027 264.364);--clcosdk-color-black:#000;--clcosdk-spacing:.25rem;--clcosdk-container-sm:24rem;--clcosdk-container-md:28rem;--clcosdk-container-xl:36rem;--clcosdk-text-xs:.75rem;--clcosdk-text-xs--line-height:calc(1 / .75);--clcosdk-text-sm:.875rem;--clcosdk-text-sm--line-height:calc(1.25 / .875);--clcosdk-text-base:1rem;--clcosdk-text-base--line-height:calc(1.5 / 1);--clcosdk-text-lg:1.125rem;--clcosdk-text-lg--line-height:calc(1.75 / 1.125);--clcosdk-font-weight-normal:400;--clcosdk-font-weight-medium:500;--clcosdk-font-weight-semibold:600;--clcosdk-radius-md:.375rem;--clcosdk-radius-lg:.5rem;--clcosdk-radius-xl:.75rem;--clcosdk-radius-2xl:1rem;--clcosdk-ease-out:cubic-bezier(0, 0, .2, 1);--clcosdk-ease-in-out:cubic-bezier(.4, 0, .2, 1);--clcosdk-animate-spin:spin 1s linear infinite;--clcosdk-animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--clcosdk-color-brand-primary:var(--color-brand-primary)}}@layer base{.clco-sdk-root{--color-brand-primary:#171717;--color-brand-primary-hover:#000;--color-brand-primary-active:#262626;--color-accent:#2b3a67;--color-accent-hover:#243057;--color-accent-active:#1d2647;--color-accent-focus:#c7d2fe;--color-accent-subtle:#eef1f8;--color-text-primary:#171717;--color-text-secondary:#8c8c8c;--color-text-disabled:#d1d1d1;--color-text-inverse:#fff;--color-background:#fff;--color-surface:#fafafa;--color-section:#f3f3f3;--color-border:#e5e5e5;--color-divider:#ececec;--color-overlay:#00000080;--color-positive:#15803d;--color-positive-subtle:#dcfce7;--color-negative:#dc2626;--color-negative-subtle:#fee2e2;--color-success:#2c8c5e;--color-success-subtle:#e6f4ec;--color-success-border:#cfe9db;--color-warning:#e08a1a;--color-warning-subtle:#fff7ed;--color-warning-border:#fdead7;--color-error:#b42318;--color-error-subtle:#feeceb;--color-error-border:#fbd5d2;--shadow-step-active:0px 0px 10px 0px #0000001a;--shadow-dialog:0px 8px 32px 0px #0000001a;--btn-primary-gradient:linear-gradient(180deg, #262626 0%, #1c1c1c 50%, #0f0f0f 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #00000059, inset 0px 1px 2px 0px #ffffff2e, inset 0px 1px 0px 0px #ffffff1a;--sale-card-surface:linear-gradient(to top, #0a0a0a 0%, #1a1a1a 100%);--color-sale-card-text:#f4f4f5;--color-sale-card-text-muted:#a1a1aa;--color-sale-card-text-strong:#fff;--color-sale-card-border:#ffffff40;--color-sale-card-chrome-border:#ffffff4d;--color-sale-card-chrome-bg:#ffffff26;--color-sale-card-chrome-emphasis-border:#fff6;--color-sale-card-chrome-emphasis-bg:#ffffff40;--color-sale-card-focus-ring:#ffffff80;--display-on-light:block;--display-on-dark:none}@media (prefers-color-scheme:dark){.clco-sdk-root:not(:where(.light,.light *)){--color-brand-primary:#f4f4f5;--color-brand-primary-hover:#fff;--color-brand-primary-active:#e4e4e7;--color-accent:#6f82c9;--color-accent-hover:#8799e4;--color-accent-active:#5b6fcf;--color-accent-focus:#6f82c959;--color-accent-subtle:#6f82c91f;--color-text-primary:#f4f4f5;--color-text-secondary:#a1a1aa;--color-text-disabled:#71717a;--color-text-inverse:#171717;--color-background:#0f1115;--color-surface:#161a20;--color-section:#20242c;--color-border:#2a2e35;--color-divider:#323741;--color-overlay:#000000b3;--color-positive:#22c55e;--color-positive-subtle:#22c55e1f;--color-negative:#ef4444;--color-negative-subtle:#ef44441f;--color-success:#34d399;--color-success-subtle:#34d3991f;--color-success-border:#34d39940;--color-warning:#f59e0b;--color-warning-subtle:#f59e0b1f;--color-warning-border:#f59e0b40;--color-error:#f87171;--color-error-subtle:#f871711f;--color-error-border:#f8717140;--shadow-step-active:0px 0px 10px 0px #00000080;--shadow-dialog:0px 8px 32px 0px #0009;--btn-primary-gradient:linear-gradient(180deg, #fafafa 0%, #f0f0f0 50%, #e4e4e7 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #0000001f, inset 0px 1px 2px 0px #fff9, inset 0px 1px 0px 0px #fff6;--display-on-light:none;--display-on-dark:block}}:where(.dark,.dark *) .clco-sdk-root{--color-brand-primary:#f4f4f5;--color-brand-primary-hover:#fff;--color-brand-primary-active:#e4e4e7;--color-accent:#6f82c9;--color-accent-hover:#8799e4;--color-accent-active:#5b6fcf;--color-accent-focus:#6f82c959;--color-accent-subtle:#6f82c91f;--color-text-primary:#f4f4f5;--color-text-secondary:#a1a1aa;--color-text-disabled:#71717a;--color-text-inverse:#171717;--color-background:#0f1115;--color-surface:#161a20;--color-section:#20242c;--color-border:#2a2e35;--color-divider:#323741;--color-overlay:#000000b3;--color-positive:#22c55e;--color-positive-subtle:#22c55e1f;--color-negative:#ef4444;--color-negative-subtle:#ef44441f;--color-success:#34d399;--color-success-subtle:#34d3991f;--color-success-border:#34d39940;--color-warning:#f59e0b;--color-warning-subtle:#f59e0b1f;--color-warning-border:#f59e0b40;--color-error:#f87171;--color-error-subtle:#f871711f;--color-error-border:#f8717140;--shadow-step-active:0px 0px 10px 0px #00000080;--shadow-dialog:0px 8px 32px 0px #0009;--btn-primary-gradient:linear-gradient(180deg, #fafafa 0%, #f0f0f0 50%, #e4e4e7 100%);--btn-primary-shadow:inset 0px -1px 3px 0px #0000001f, inset 0px 1px 2px 0px #fff9, inset 0px 1px 0px 0px #fff6;--display-on-light:none;--display-on-dark:block}.clco-sdk-root{color:var(--color-text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}.clco-sdk-root *,.clco-sdk-root :before,.clco-sdk-root :after{box-sizing:border-box}.clco-sdk-root button{appearance:none;cursor:pointer;font:inherit;color:inherit;background:0 0;border:none;padding:0}.clco-sdk-root input,.clco-sdk-root textarea,.clco-sdk-root select{font:inherit;color:inherit;background:0 0;border:none;border-radius:0;padding:0}.clco-sdk-root a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.clco-sdk-root ul,.clco-sdk-root ol{margin:0;padding:0;list-style:none}.clco-sdk-root h1,.clco-sdk-root h2,.clco-sdk-root h3,.clco-sdk-root h4,.clco-sdk-root h5,.clco-sdk-root h6,.clco-sdk-root p,.clco-sdk-root figure,.clco-sdk-root blockquote,.clco-sdk-root dl,.clco-sdk-root dd,.clco-sdk-root pre{margin:0}.clco-sdk-root img,.clco-sdk-root svg{max-width:100%;display:block}@keyframes clco-status-ping{0%{opacity:.7;transform:scale(1)}75%,to{opacity:0;transform:scale(3.25)}}.clco-sdk-root .clcosdk-status-dot-ping{animation:1.6s cubic-bezier(0,0,.2,1) infinite clco-status-ping}.clco-sdk-root .clcosdk-on-light{display:var(--display-on-light)}.clco-sdk-root .clcosdk-on-dark{display:var(--display-on-dark)}@media (prefers-reduced-motion:reduce){.clco-sdk-root .clcosdk-status-dot-ping{opacity:0;animation:none}}}@layer components;@layer utilities{.clcosdk\\:pointer-events-none{pointer-events:none}.clcosdk\\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.clcosdk\\:absolute{position:absolute}.clcosdk\\:fixed{position:fixed}.clcosdk\\:relative{position:relative}.clcosdk\\:inset-0{inset:0}.clcosdk\\:top-1\\/2{top:50%}.clcosdk\\:top-4{top:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:top-full{top:100%}.clcosdk\\:-right-0\\.5{right:calc(var(--clcosdk-spacing) * -.5)}.clcosdk\\:right-4{right:calc(var(--clcosdk-spacing) * 4)}.clcosdk\\:right-\\[-14\\%\\]{right:-14%}.clcosdk\\:-bottom-0\\.5{bottom:calc(var(--clcosdk-spacing) * -.5)}.clcosdk\\:bottom-full{bottom:100%}.clcosdk\\:left-1\\/2{left:50%}.clcosdk\\:z-0{z-index:0}.clcosdk\\:z-10{z-index:10}.clcosdk\\:z-50{z-index:50}.clcosdk\\:order-1{order:1}.clcosdk\\:order-2{order:2}.clcosdk\\: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}}';
|
|
4961
5091
|
|
|
4962
5092
|
// src/client/CoinListStyleScope.tsx
|
|
4963
5093
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
@@ -7465,7 +7595,7 @@ function stablecoinIconUrl(symbol) {
|
|
|
7465
7595
|
}
|
|
7466
7596
|
}
|
|
7467
7597
|
function offerIconUrl(offer) {
|
|
7468
|
-
return offer.logoUrl
|
|
7598
|
+
return offer.logoUrl ? AssetIconUrl(offer.logoUrl) : null;
|
|
7469
7599
|
}
|
|
7470
7600
|
function tokenLogoUrl(logo, minWidth = 40) {
|
|
7471
7601
|
switch (logo.kind) {
|
|
@@ -7484,6 +7614,20 @@ function tokenLogoUrl(logo, minWidth = 40) {
|
|
|
7484
7614
|
}
|
|
7485
7615
|
}
|
|
7486
7616
|
}
|
|
7617
|
+
function tokenLogoSrcSet(logo) {
|
|
7618
|
+
switch (logo.kind) {
|
|
7619
|
+
case "VECTOR":
|
|
7620
|
+
return null;
|
|
7621
|
+
case "RASTER": {
|
|
7622
|
+
const candidates = logo.variants.length > 0 ? logo.variants : [logo.original];
|
|
7623
|
+
return [...candidates].sort((a, b) => a.width - b.width).map((image) => `${image.url} ${image.width}w`).join(", ");
|
|
7624
|
+
}
|
|
7625
|
+
default: {
|
|
7626
|
+
const exhaustive = logo;
|
|
7627
|
+
return exhaustive;
|
|
7628
|
+
}
|
|
7629
|
+
}
|
|
7630
|
+
}
|
|
7487
7631
|
function offerAssetIconUrl(offer, tokenMetadata) {
|
|
7488
7632
|
return (tokenMetadata ? tokenLogoUrl(tokenMetadata.logo) : null) ?? offerIconUrl(offer);
|
|
7489
7633
|
}
|
|
@@ -8090,8 +8234,12 @@ function useOndoBuyReviewViewModel({
|
|
|
8090
8234
|
}
|
|
8091
8235
|
}, [stepInput.type]);
|
|
8092
8236
|
const transaction = transactionState.type === "CONTENT" ? transactionState.transaction : null;
|
|
8237
|
+
const offerUntil = (0, import_react17.useMemo)(
|
|
8238
|
+
() => transaction === null ? null : ondoQuoteOfferDeadline(transaction.expiresAt),
|
|
8239
|
+
[transaction]
|
|
8240
|
+
);
|
|
8093
8241
|
const secondsLeft = useCountdown({
|
|
8094
|
-
until:
|
|
8242
|
+
until: offerUntil,
|
|
8095
8243
|
enabled
|
|
8096
8244
|
});
|
|
8097
8245
|
const quoteStatus = toQuoteStatusUi(transactionState, secondsLeft);
|
|
@@ -8215,14 +8363,11 @@ function toQuoteStatusUi(state, secondsLeft) {
|
|
|
8215
8363
|
message: refreshErrorMessage(state.refreshError)
|
|
8216
8364
|
};
|
|
8217
8365
|
}
|
|
8218
|
-
if (secondsLeft === null ||
|
|
8366
|
+
if (secondsLeft === null || secondsLeft === 0) {
|
|
8219
8367
|
return { type: "expired" };
|
|
8220
8368
|
}
|
|
8221
8369
|
return { type: "valid", expiresInLabel: expiresInLabel(secondsLeft) };
|
|
8222
8370
|
}
|
|
8223
|
-
function isTooCloseToExpiry(secondsLeft) {
|
|
8224
|
-
return secondsLeft * 1e3 <= ONDO_QUOTE_EXPIRY_THRESHOLD_MS;
|
|
8225
|
-
}
|
|
8226
8371
|
function expiresInLabel(secondsLeft) {
|
|
8227
8372
|
const unit = secondsLeft === 1 ? "second" : "seconds";
|
|
8228
8373
|
return `Quote expires in ${secondsLeft} ${unit}`;
|
|
@@ -8714,8 +8859,9 @@ var NO_TOKEN_ADDRESS = EvmContractAddress(
|
|
|
8714
8859
|
"0x0000000000000000000000000000000000000000"
|
|
8715
8860
|
);
|
|
8716
8861
|
function offerTokenIdentifier(offer, chain) {
|
|
8717
|
-
const
|
|
8718
|
-
|
|
8862
|
+
const asset = offerDisplayTokens(offer).find(
|
|
8863
|
+
(token) => token.chain === chain
|
|
8864
|
+
);
|
|
8719
8865
|
return asset === void 0 ? null : { chain, address: asset.address };
|
|
8720
8866
|
}
|
|
8721
8867
|
function tokenMetadataOf(state) {
|
|
@@ -10152,8 +10298,12 @@ function useOndoSellReviewViewModel({
|
|
|
10152
10298
|
}
|
|
10153
10299
|
}, [stepInput.type]);
|
|
10154
10300
|
const transaction = transactionState.type === "CONTENT" ? transactionState.transaction : null;
|
|
10301
|
+
const offerUntil = (0, import_react26.useMemo)(
|
|
10302
|
+
() => transaction === null ? null : ondoQuoteOfferDeadline(transaction.expiresAt),
|
|
10303
|
+
[transaction]
|
|
10304
|
+
);
|
|
10155
10305
|
const secondsLeft = useCountdown({
|
|
10156
|
-
until:
|
|
10306
|
+
until: offerUntil,
|
|
10157
10307
|
enabled
|
|
10158
10308
|
});
|
|
10159
10309
|
const quoteStatus = toQuoteStatusUi2(transactionState, secondsLeft);
|
|
@@ -10282,14 +10432,11 @@ function toQuoteStatusUi2(state, secondsLeft) {
|
|
|
10282
10432
|
message: refreshErrorMessage2(state.refreshError)
|
|
10283
10433
|
};
|
|
10284
10434
|
}
|
|
10285
|
-
if (secondsLeft === null ||
|
|
10435
|
+
if (secondsLeft === null || secondsLeft === 0) {
|
|
10286
10436
|
return { type: "expired" };
|
|
10287
10437
|
}
|
|
10288
10438
|
return { type: "valid", expiresInLabel: expiresInLabel2(secondsLeft) };
|
|
10289
10439
|
}
|
|
10290
|
-
function isTooCloseToExpiry2(secondsLeft) {
|
|
10291
|
-
return secondsLeft * 1e3 <= ONDO_QUOTE_EXPIRY_THRESHOLD_MS;
|
|
10292
|
-
}
|
|
10293
10440
|
function expiresInLabel2(secondsLeft) {
|
|
10294
10441
|
const unit = secondsLeft === 1 ? "second" : "seconds";
|
|
10295
10442
|
return `Quote expires in ${secondsLeft} ${unit}`;
|
|
@@ -12973,11 +13120,11 @@ function CheckoutContainer({
|
|
|
12973
13120
|
enabled = true,
|
|
12974
13121
|
className
|
|
12975
13122
|
}) {
|
|
12976
|
-
return renderOffer(offer
|
|
12977
|
-
ondo: () => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
13123
|
+
return renderOffer(offer, {
|
|
13124
|
+
ondo: (ondoOffer) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
12978
13125
|
OndoCheckoutContainer,
|
|
12979
13126
|
{
|
|
12980
|
-
offer,
|
|
13127
|
+
offer: ondoOffer,
|
|
12981
13128
|
chain,
|
|
12982
13129
|
wallets,
|
|
12983
13130
|
config: config["ondo::swap"],
|
|
@@ -12985,10 +13132,10 @@ function CheckoutContainer({
|
|
|
12985
13132
|
className
|
|
12986
13133
|
}
|
|
12987
13134
|
),
|
|
12988
|
-
superstate: () => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
13135
|
+
superstate: (superstateOffer) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
12989
13136
|
SuperstateSwapCheckoutContainer,
|
|
12990
13137
|
{
|
|
12991
|
-
offer,
|
|
13138
|
+
offer: superstateOffer,
|
|
12992
13139
|
chain,
|
|
12993
13140
|
wallets,
|
|
12994
13141
|
enabled,
|
|
@@ -12996,7 +13143,7 @@ function CheckoutContainer({
|
|
|
12996
13143
|
className
|
|
12997
13144
|
}
|
|
12998
13145
|
),
|
|
12999
|
-
tokenSale: () => config["coinlist::token_sale"].render(
|
|
13146
|
+
tokenSale: (tokenSaleOffer) => config["coinlist::token_sale"].render(tokenSaleOffer)
|
|
13000
13147
|
});
|
|
13001
13148
|
}
|
|
13002
13149
|
function OndoCheckoutContainer({
|
|
@@ -13036,16 +13183,16 @@ function OndoCheckoutContainer({
|
|
|
13036
13183
|
)
|
|
13037
13184
|
});
|
|
13038
13185
|
}
|
|
13039
|
-
function renderOffer(
|
|
13040
|
-
switch (type) {
|
|
13186
|
+
function renderOffer(offer, branches) {
|
|
13187
|
+
switch (offer.type) {
|
|
13041
13188
|
case "ondo::swap":
|
|
13042
|
-
return branches.ondo();
|
|
13189
|
+
return branches.ondo(offer);
|
|
13043
13190
|
case "superstate::swap":
|
|
13044
|
-
return branches.superstate();
|
|
13191
|
+
return branches.superstate(offer);
|
|
13045
13192
|
case "coinlist::token_sale":
|
|
13046
|
-
return branches.tokenSale();
|
|
13193
|
+
return branches.tokenSale(offer);
|
|
13047
13194
|
default: {
|
|
13048
|
-
const exhaustive =
|
|
13195
|
+
const exhaustive = offer;
|
|
13049
13196
|
return exhaustive;
|
|
13050
13197
|
}
|
|
13051
13198
|
}
|
|
@@ -13063,6 +13210,58 @@ function renderOndoSide(side, branches) {
|
|
|
13063
13210
|
}
|
|
13064
13211
|
}
|
|
13065
13212
|
|
|
13213
|
+
// src/client/components/design-system/ThemedImage.tsx
|
|
13214
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
13215
|
+
function ThemedImage({
|
|
13216
|
+
light,
|
|
13217
|
+
dark,
|
|
13218
|
+
sizes,
|
|
13219
|
+
alt,
|
|
13220
|
+
width,
|
|
13221
|
+
height,
|
|
13222
|
+
className,
|
|
13223
|
+
style
|
|
13224
|
+
}) {
|
|
13225
|
+
const shared = { width, height, style };
|
|
13226
|
+
if (!dark) {
|
|
13227
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
13228
|
+
"img",
|
|
13229
|
+
{
|
|
13230
|
+
src: light.src,
|
|
13231
|
+
srcSet: light.srcSet,
|
|
13232
|
+
sizes: light.srcSet ? sizes : void 0,
|
|
13233
|
+
className,
|
|
13234
|
+
alt,
|
|
13235
|
+
...shared
|
|
13236
|
+
}
|
|
13237
|
+
);
|
|
13238
|
+
}
|
|
13239
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_jsx_runtime51.Fragment, { children: [
|
|
13240
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
13241
|
+
"img",
|
|
13242
|
+
{
|
|
13243
|
+
src: light.src,
|
|
13244
|
+
srcSet: light.srcSet,
|
|
13245
|
+
sizes: light.srcSet ? sizes : void 0,
|
|
13246
|
+
className: cn("clcosdk-on-light", className),
|
|
13247
|
+
alt,
|
|
13248
|
+
...shared
|
|
13249
|
+
}
|
|
13250
|
+
),
|
|
13251
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
13252
|
+
"img",
|
|
13253
|
+
{
|
|
13254
|
+
src: dark.src,
|
|
13255
|
+
srcSet: dark.srcSet,
|
|
13256
|
+
sizes: dark.srcSet ? sizes : void 0,
|
|
13257
|
+
className: cn("clcosdk-on-dark", className),
|
|
13258
|
+
alt,
|
|
13259
|
+
...shared
|
|
13260
|
+
}
|
|
13261
|
+
)
|
|
13262
|
+
] });
|
|
13263
|
+
}
|
|
13264
|
+
|
|
13066
13265
|
// src/client/components/offers/shared/offer-card-keyboard.ts
|
|
13067
13266
|
function onOfferCardKeyDown(event, onClick) {
|
|
13068
13267
|
if (event.key !== "Enter" && event.key !== " ") return;
|
|
@@ -13071,7 +13270,8 @@ function onOfferCardKeyDown(event, onClick) {
|
|
|
13071
13270
|
}
|
|
13072
13271
|
|
|
13073
13272
|
// src/client/components/offers/shared/OfferAssetCard.tsx
|
|
13074
|
-
var
|
|
13273
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
13274
|
+
var LOGO_SIZES = "(min-width: 768px) 48px, 40px";
|
|
13075
13275
|
function OfferAssetCard({
|
|
13076
13276
|
offer,
|
|
13077
13277
|
onClick,
|
|
@@ -13079,7 +13279,7 @@ function OfferAssetCard({
|
|
|
13079
13279
|
containerClassName
|
|
13080
13280
|
}) {
|
|
13081
13281
|
const interactive = onClick !== void 0;
|
|
13082
|
-
const card = /* @__PURE__ */ (0,
|
|
13282
|
+
const card = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
13083
13283
|
"article",
|
|
13084
13284
|
{
|
|
13085
13285
|
className: cn(
|
|
@@ -13093,11 +13293,13 @@ function OfferAssetCard({
|
|
|
13093
13293
|
tabIndex: interactive ? 0 : void 0,
|
|
13094
13294
|
onClick,
|
|
13095
13295
|
onKeyDown: interactive ? (event) => onOfferCardKeyDown(event, onClick) : void 0,
|
|
13096
|
-
children: /* @__PURE__ */ (0,
|
|
13097
|
-
offer.
|
|
13098
|
-
|
|
13296
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:flex-1 clcosdk:items-center clcosdk:gap-2.5 clcosdk:pr-3 clcosdk:md:gap-3 clcosdk:md:pr-4", children: [
|
|
13297
|
+
offer.logo ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "clcosdk:h-10 clcosdk:w-10 clcosdk:shrink-0 clcosdk:overflow-hidden clcosdk:rounded-full clcosdk:md:h-12 clcosdk:md:w-12", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
13298
|
+
ThemedImage,
|
|
13099
13299
|
{
|
|
13100
|
-
|
|
13300
|
+
light: offer.logo.light,
|
|
13301
|
+
dark: offer.logo.dark ?? void 0,
|
|
13302
|
+
sizes: LOGO_SIZES,
|
|
13101
13303
|
alt: "",
|
|
13102
13304
|
width: 48,
|
|
13103
13305
|
height: 48,
|
|
@@ -13105,8 +13307,8 @@ function OfferAssetCard({
|
|
|
13105
13307
|
style: { maxWidth: "none", width: "100%", height: "100%" }
|
|
13106
13308
|
}
|
|
13107
13309
|
) }) : null,
|
|
13108
|
-
/* @__PURE__ */ (0,
|
|
13109
|
-
offer.name ? /* @__PURE__ */ (0,
|
|
13310
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:flex-1 clcosdk:flex-col clcosdk:items-start clcosdk:justify-center", children: [
|
|
13311
|
+
offer.name ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
13110
13312
|
"h2",
|
|
13111
13313
|
{
|
|
13112
13314
|
className: cn(
|
|
@@ -13115,13 +13317,13 @@ function OfferAssetCard({
|
|
|
13115
13317
|
children: offer.name
|
|
13116
13318
|
}
|
|
13117
13319
|
) : null,
|
|
13118
|
-
offer.symbol ? /* @__PURE__ */ (0,
|
|
13320
|
+
offer.symbol ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("p", { className: "clcosdk:w-full clcosdk:truncate clcosdk:text-[13px] clcosdk:leading-[150%] clcosdk:font-normal clcosdk:text-text-secondary clcosdk:md:text-[14px]", children: offer.symbol }) : null
|
|
13119
13321
|
] })
|
|
13120
13322
|
] })
|
|
13121
13323
|
}
|
|
13122
13324
|
);
|
|
13123
|
-
const wrapped = containerClassName ? /* @__PURE__ */ (0,
|
|
13124
|
-
return /* @__PURE__ */ (0,
|
|
13325
|
+
const wrapped = containerClassName ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: containerClassName, children: card }) : card;
|
|
13326
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(CoinListStyleScope, { children: wrapped });
|
|
13125
13327
|
}
|
|
13126
13328
|
function cardActionLabel(offer) {
|
|
13127
13329
|
const parts = [offer.name, offer.symbol].filter(Boolean);
|
|
@@ -13129,7 +13331,7 @@ function cardActionLabel(offer) {
|
|
|
13129
13331
|
}
|
|
13130
13332
|
|
|
13131
13333
|
// src/client/components/offers/grid/OffersAssetGrid.tsx
|
|
13132
|
-
var
|
|
13334
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
13133
13335
|
var DEFAULT_MAX_COLUMNS = 3;
|
|
13134
13336
|
function OffersAssetGrid({
|
|
13135
13337
|
offers,
|
|
@@ -13144,14 +13346,14 @@ function OffersAssetGrid({
|
|
|
13144
13346
|
);
|
|
13145
13347
|
const maxGridWidth = `calc(${cols} * 20rem + ${Math.max(cols - 1, 0)} * 1.5rem)`;
|
|
13146
13348
|
const interactive = onOfferClick !== void 0;
|
|
13147
|
-
return /* @__PURE__ */ (0,
|
|
13349
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
13148
13350
|
"div",
|
|
13149
13351
|
{
|
|
13150
13352
|
className: cn(
|
|
13151
13353
|
"clcosdk:flex clcosdk:w-full clcosdk:justify-center",
|
|
13152
13354
|
containerClassName
|
|
13153
13355
|
),
|
|
13154
|
-
children: /* @__PURE__ */ (0,
|
|
13356
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
13155
13357
|
"div",
|
|
13156
13358
|
{
|
|
13157
13359
|
className: cn(
|
|
@@ -13161,7 +13363,7 @@ function OffersAssetGrid({
|
|
|
13161
13363
|
className
|
|
13162
13364
|
),
|
|
13163
13365
|
style: { maxWidth: maxGridWidth },
|
|
13164
|
-
children: offers.map((offer) => /* @__PURE__ */ (0,
|
|
13366
|
+
children: offers.map((offer) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
13165
13367
|
OfferAssetCard,
|
|
13166
13368
|
{
|
|
13167
13369
|
offer,
|
|
@@ -13203,7 +13405,9 @@ function saleCardStatus({
|
|
|
13203
13405
|
}
|
|
13204
13406
|
|
|
13205
13407
|
// src/client/components/offers/shared/OfferSaleCard.tsx
|
|
13206
|
-
var
|
|
13408
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
13409
|
+
var HEADER_LOGO_SIZES = "(min-width: 768px) 36px, 32px";
|
|
13410
|
+
var WATERMARK_SIZES = "(min-width: 768px) 20rem, 15rem";
|
|
13207
13411
|
function OfferSaleCard({
|
|
13208
13412
|
offer,
|
|
13209
13413
|
onClick,
|
|
@@ -13218,7 +13422,8 @@ function OfferSaleCard({
|
|
|
13218
13422
|
secondsLeft
|
|
13219
13423
|
});
|
|
13220
13424
|
const interactive = onClick !== void 0;
|
|
13221
|
-
const
|
|
13425
|
+
const logo = offer.logo ? offer.logo.dark ?? offer.logo.light : null;
|
|
13426
|
+
const card = /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
13222
13427
|
"article",
|
|
13223
13428
|
{
|
|
13224
13429
|
className: cn(
|
|
@@ -13233,16 +13438,17 @@ function OfferSaleCard({
|
|
|
13233
13438
|
onClick,
|
|
13234
13439
|
onKeyDown: interactive ? (event) => onOfferCardKeyDown(event, onClick) : void 0,
|
|
13235
13440
|
children: [
|
|
13236
|
-
|
|
13441
|
+
logo ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13237
13442
|
"div",
|
|
13238
13443
|
{
|
|
13239
13444
|
"aria-hidden": "true",
|
|
13240
13445
|
className: "clcosdk:pointer-events-none clcosdk:absolute clcosdk:top-1/2 clcosdk:right-[-14%] clcosdk:z-0 clcosdk:size-[15rem] clcosdk:-translate-y-1/2 clcosdk:md:right-[-10%] clcosdk:md:size-[20rem]",
|
|
13241
13446
|
style: { mixBlendMode: "overlay" },
|
|
13242
|
-
children: /* @__PURE__ */ (0,
|
|
13243
|
-
|
|
13447
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13448
|
+
ThemedImage,
|
|
13244
13449
|
{
|
|
13245
|
-
|
|
13450
|
+
light: logo,
|
|
13451
|
+
sizes: WATERMARK_SIZES,
|
|
13246
13452
|
alt: "",
|
|
13247
13453
|
className: "clcosdk:size-full clcosdk:rounded-full clcosdk:object-cover",
|
|
13248
13454
|
style: { maxWidth: "none", width: "100%", height: "100%" }
|
|
@@ -13250,12 +13456,13 @@ function OfferSaleCard({
|
|
|
13250
13456
|
)
|
|
13251
13457
|
}
|
|
13252
13458
|
) : null,
|
|
13253
|
-
/* @__PURE__ */ (0,
|
|
13254
|
-
/* @__PURE__ */ (0,
|
|
13255
|
-
|
|
13256
|
-
|
|
13459
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "clcosdk:relative clcosdk:z-10 clcosdk:flex clcosdk:flex-col clcosdk:gap-2 clcosdk:md:gap-3", children: [
|
|
13460
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:items-center clcosdk:gap-2.5 clcosdk:md:gap-3", children: [
|
|
13461
|
+
logo ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "clcosdk:h-8 clcosdk:w-8 clcosdk:shrink-0 clcosdk:overflow-hidden clcosdk:rounded-full clcosdk:md:h-9 clcosdk:md:w-9", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13462
|
+
ThemedImage,
|
|
13257
13463
|
{
|
|
13258
|
-
|
|
13464
|
+
light: logo,
|
|
13465
|
+
sizes: HEADER_LOGO_SIZES,
|
|
13259
13466
|
alt: "",
|
|
13260
13467
|
width: 36,
|
|
13261
13468
|
height: 36,
|
|
@@ -13263,7 +13470,7 @@ function OfferSaleCard({
|
|
|
13263
13470
|
style: { maxWidth: "none", width: "100%", height: "100%" }
|
|
13264
13471
|
}
|
|
13265
13472
|
) }) : null,
|
|
13266
|
-
offer.name ? /* @__PURE__ */ (0,
|
|
13473
|
+
offer.name ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13267
13474
|
"h2",
|
|
13268
13475
|
{
|
|
13269
13476
|
className: cn(
|
|
@@ -13273,7 +13480,7 @@ function OfferSaleCard({
|
|
|
13273
13480
|
}
|
|
13274
13481
|
) : null
|
|
13275
13482
|
] }),
|
|
13276
|
-
offer.tagline ? /* @__PURE__ */ (0,
|
|
13483
|
+
offer.tagline ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13277
13484
|
"p",
|
|
13278
13485
|
{
|
|
13279
13486
|
className: cn(
|
|
@@ -13284,20 +13491,20 @@ function OfferSaleCard({
|
|
|
13284
13491
|
}
|
|
13285
13492
|
) : null
|
|
13286
13493
|
] }),
|
|
13287
|
-
/* @__PURE__ */ (0,
|
|
13288
|
-
/* @__PURE__ */ (0,
|
|
13289
|
-
status.phase === "live" ? /* @__PURE__ */ (0,
|
|
13494
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "clcosdk:relative clcosdk:z-10 clcosdk:mt-auto clcosdk:flex clcosdk:h-11 clcosdk:w-full clcosdk:min-w-0 clcosdk:items-center clcosdk:justify-between clcosdk:gap-2 clcosdk:rounded-full clcosdk:border clcosdk:border-sale-card-chrome-border clcosdk:bg-sale-card-chrome-bg clcosdk:py-1.5 clcosdk:pr-1.5 clcosdk:pl-3 clcosdk:md:h-[54px] clcosdk:md:gap-3 clcosdk:md:py-2 clcosdk:md:pr-2 clcosdk:md:pl-4", children: [
|
|
13495
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:items-center clcosdk:gap-2 clcosdk:md:gap-3", children: [
|
|
13496
|
+
status.phase === "live" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
13290
13497
|
"span",
|
|
13291
13498
|
{
|
|
13292
13499
|
className: "clcosdk:relative clcosdk:inline-flex clcosdk:size-2 clcosdk:shrink-0",
|
|
13293
13500
|
"aria-hidden": "true",
|
|
13294
13501
|
children: [
|
|
13295
|
-
/* @__PURE__ */ (0,
|
|
13296
|
-
/* @__PURE__ */ (0,
|
|
13502
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "clcosdk-status-dot-ping clcosdk:absolute clcosdk:inset-0 clcosdk:rounded-full clcosdk:bg-positive" }),
|
|
13503
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "clcosdk:relative clcosdk:inline-flex clcosdk:size-full clcosdk:rounded-full clcosdk:bg-positive" })
|
|
13297
13504
|
]
|
|
13298
13505
|
}
|
|
13299
13506
|
) : null,
|
|
13300
|
-
/* @__PURE__ */ (0,
|
|
13507
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
13301
13508
|
"p",
|
|
13302
13509
|
{
|
|
13303
13510
|
className: cn(
|
|
@@ -13308,7 +13515,7 @@ function OfferSaleCard({
|
|
|
13308
13515
|
}
|
|
13309
13516
|
)
|
|
13310
13517
|
] }),
|
|
13311
|
-
/* @__PURE__ */ (0,
|
|
13518
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
13312
13519
|
"span",
|
|
13313
13520
|
{
|
|
13314
13521
|
className: cn(
|
|
@@ -13318,8 +13525,8 @@ function OfferSaleCard({
|
|
|
13318
13525
|
"aria-hidden": "true",
|
|
13319
13526
|
children: [
|
|
13320
13527
|
"View",
|
|
13321
|
-
/* @__PURE__ */ (0,
|
|
13322
|
-
/* @__PURE__ */ (0,
|
|
13528
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "clcosdk:max-md:hidden", children: " offer" }),
|
|
13529
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react13.ArrowRight, { className: "clcosdk:size-4", "aria-hidden": true })
|
|
13323
13530
|
]
|
|
13324
13531
|
}
|
|
13325
13532
|
)
|
|
@@ -13327,8 +13534,8 @@ function OfferSaleCard({
|
|
|
13327
13534
|
]
|
|
13328
13535
|
}
|
|
13329
13536
|
);
|
|
13330
|
-
const wrapped = containerClassName ? /* @__PURE__ */ (0,
|
|
13331
|
-
return /* @__PURE__ */ (0,
|
|
13537
|
+
const wrapped = containerClassName ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: containerClassName, children: card }) : card;
|
|
13538
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(CoinListStyleScope, { children: wrapped });
|
|
13332
13539
|
}
|
|
13333
13540
|
var SALE_PHASE_LABEL = {
|
|
13334
13541
|
upcoming: "Upcoming",
|
|
@@ -13341,10 +13548,10 @@ function cardActionLabel2(offer, phase) {
|
|
|
13341
13548
|
}
|
|
13342
13549
|
|
|
13343
13550
|
// src/client/components/offers/grid/OffersGridView.tsx
|
|
13344
|
-
var
|
|
13551
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
13345
13552
|
var DEFAULT_MAX_COLUMNS2 = 2;
|
|
13346
13553
|
function OffersGridView(props) {
|
|
13347
|
-
return /* @__PURE__ */ (0,
|
|
13554
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(OffersGridViewBody, { ...props }) });
|
|
13348
13555
|
}
|
|
13349
13556
|
function OffersGridViewBody({
|
|
13350
13557
|
state,
|
|
@@ -13358,13 +13565,13 @@ function OffersGridViewBody({
|
|
|
13358
13565
|
}) {
|
|
13359
13566
|
switch (state.type) {
|
|
13360
13567
|
case "loading":
|
|
13361
|
-
return loading ?? /* @__PURE__ */ (0,
|
|
13568
|
+
return loading ?? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(LoadingState, {});
|
|
13362
13569
|
case "error":
|
|
13363
|
-
return error ?? /* @__PURE__ */ (0,
|
|
13570
|
+
return error ?? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(ErrorState, { message: state.message });
|
|
13364
13571
|
case "empty":
|
|
13365
|
-
return emptyState ?? /* @__PURE__ */ (0,
|
|
13572
|
+
return emptyState ?? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(EmptyState, {});
|
|
13366
13573
|
case "content":
|
|
13367
|
-
return /* @__PURE__ */ (0,
|
|
13574
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13368
13575
|
OffersGridContent,
|
|
13369
13576
|
{
|
|
13370
13577
|
offers: state.offers,
|
|
@@ -13394,14 +13601,14 @@ function OffersGridContent({
|
|
|
13394
13601
|
Math.max(1, maxColumns ?? DEFAULT_MAX_COLUMNS2)
|
|
13395
13602
|
);
|
|
13396
13603
|
const maxGridWidth = `calc(${cols} * 28rem + ${Math.max(cols - 1, 0)} * 1.5rem)`;
|
|
13397
|
-
return /* @__PURE__ */ (0,
|
|
13604
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13398
13605
|
"div",
|
|
13399
13606
|
{
|
|
13400
13607
|
className: cn(
|
|
13401
13608
|
"clcosdk:flex clcosdk:w-full clcosdk:justify-center",
|
|
13402
13609
|
containerClassName
|
|
13403
13610
|
),
|
|
13404
|
-
children: /* @__PURE__ */ (0,
|
|
13611
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13405
13612
|
"div",
|
|
13406
13613
|
{
|
|
13407
13614
|
className: cn(
|
|
@@ -13410,7 +13617,7 @@ function OffersGridContent({
|
|
|
13410
13617
|
className
|
|
13411
13618
|
),
|
|
13412
13619
|
style: { maxWidth: maxGridWidth },
|
|
13413
|
-
children: offers.map((offer) => /* @__PURE__ */ (0,
|
|
13620
|
+
children: offers.map((offer) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13414
13621
|
OfferSaleCard,
|
|
13415
13622
|
{
|
|
13416
13623
|
offer,
|
|
@@ -13424,17 +13631,17 @@ function OffersGridContent({
|
|
|
13424
13631
|
);
|
|
13425
13632
|
}
|
|
13426
13633
|
function LoadingState() {
|
|
13427
|
-
return /* @__PURE__ */ (0,
|
|
13634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13428
13635
|
"output",
|
|
13429
13636
|
{
|
|
13430
13637
|
"aria-live": "polite",
|
|
13431
13638
|
className: "clcosdk:flex clcosdk:min-h-40 clcosdk:items-center clcosdk:justify-center clcosdk:rounded-2xl clcosdk:border clcosdk:border-border clcosdk:bg-background clcosdk:p-6",
|
|
13432
|
-
children: /* @__PURE__ */ (0,
|
|
13639
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading offers..." })
|
|
13433
13640
|
}
|
|
13434
13641
|
);
|
|
13435
13642
|
}
|
|
13436
13643
|
function ErrorState({ message }) {
|
|
13437
|
-
return /* @__PURE__ */ (0,
|
|
13644
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13438
13645
|
AlertBanner,
|
|
13439
13646
|
{
|
|
13440
13647
|
variant: "error",
|
|
@@ -13445,13 +13652,13 @@ function ErrorState({ message }) {
|
|
|
13445
13652
|
);
|
|
13446
13653
|
}
|
|
13447
13654
|
function EmptyState() {
|
|
13448
|
-
return /* @__PURE__ */ (0,
|
|
13655
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
|
|
13449
13656
|
"output",
|
|
13450
13657
|
{
|
|
13451
13658
|
"aria-live": "polite",
|
|
13452
13659
|
className: "clcosdk:flex clcosdk:min-h-40 clcosdk:flex-col clcosdk:items-center clcosdk:justify-center clcosdk:gap-2 clcosdk:rounded-2xl clcosdk:border clcosdk:border-border clcosdk:bg-background clcosdk:p-6 clcosdk:text-center",
|
|
13453
13660
|
children: [
|
|
13454
|
-
/* @__PURE__ */ (0,
|
|
13661
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
13455
13662
|
"p",
|
|
13456
13663
|
{
|
|
13457
13664
|
className: cn(
|
|
@@ -13461,14 +13668,14 @@ function EmptyState() {
|
|
|
13461
13668
|
children: "No offers available"
|
|
13462
13669
|
}
|
|
13463
13670
|
),
|
|
13464
|
-
/* @__PURE__ */ (0,
|
|
13671
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("p", { className: cn(typeClasses.subhead, "clcosdk:text-text-secondary"), children: "Check back soon for upcoming opportunities." })
|
|
13465
13672
|
]
|
|
13466
13673
|
}
|
|
13467
13674
|
);
|
|
13468
13675
|
}
|
|
13469
13676
|
|
|
13470
13677
|
// src/client/hooks/offers/grid/useOffersGridViewModel.ts
|
|
13471
|
-
var
|
|
13678
|
+
var import_react38 = require("react");
|
|
13472
13679
|
|
|
13473
13680
|
// src/client/hooks/offers/data/useOffers.ts
|
|
13474
13681
|
var import_react36 = require("react");
|
|
@@ -13526,36 +13733,147 @@ function useOffers(options = {}) {
|
|
|
13526
13733
|
return { offersState };
|
|
13527
13734
|
}
|
|
13528
13735
|
|
|
13736
|
+
// src/client/hooks/offers/shared/offer-logo.types.ts
|
|
13737
|
+
var CARD_LOGO_WIDTH = 96;
|
|
13738
|
+
var OfferLogoUi = {
|
|
13739
|
+
/**
|
|
13740
|
+
* The registry's logo for the token an offer is about, or the offer's own
|
|
13741
|
+
* artwork otherwise, or `null` when neither exists.
|
|
13742
|
+
*
|
|
13743
|
+
* The registry wins when both exist because it is the token's real artwork
|
|
13744
|
+
* where `Offer.logoUrl` is catalogue artwork, and because a swap publishes
|
|
13745
|
+
* without artwork more often than not - which is why `logoUrl` is `null`
|
|
13746
|
+
* on the swap variants.
|
|
13747
|
+
*/
|
|
13748
|
+
fromOffer: (offer, tokenMetadata) => {
|
|
13749
|
+
const light = tokenMetadata ? logoImage(tokenMetadata.logo) : null;
|
|
13750
|
+
if (light !== null) {
|
|
13751
|
+
const dark = tokenMetadata?.logoDark ? logoImage(tokenMetadata.logoDark) : null;
|
|
13752
|
+
return { light, dark };
|
|
13753
|
+
}
|
|
13754
|
+
return offer.logoUrl ? { light: { src: offer.logoUrl }, dark: null } : null;
|
|
13755
|
+
}
|
|
13756
|
+
};
|
|
13757
|
+
function logoImage(logo) {
|
|
13758
|
+
const src = tokenLogoUrl(logo, CARD_LOGO_WIDTH);
|
|
13759
|
+
if (src === null) {
|
|
13760
|
+
return null;
|
|
13761
|
+
}
|
|
13762
|
+
const srcSet = tokenLogoSrcSet(logo);
|
|
13763
|
+
return srcSet === null ? { src } : { src, srcSet };
|
|
13764
|
+
}
|
|
13765
|
+
|
|
13529
13766
|
// src/client/hooks/offers/shared/offer-sale-card.types.ts
|
|
13530
13767
|
var OfferSaleCardUi = {
|
|
13531
|
-
|
|
13768
|
+
/**
|
|
13769
|
+
* `tokenMetadata` is the registry's entry for the token the offer is about
|
|
13770
|
+
* (`TokenRegistrySnapshot.forOffer`), or `null` when it lists none. The
|
|
13771
|
+
* registry names win over the offer's own where both exist: they are the
|
|
13772
|
+
* token's canonical name and artwork, where the offer's are catalogue copy.
|
|
13773
|
+
*/
|
|
13774
|
+
fromOffer: (offer, tokenMetadata = null) => ({
|
|
13532
13775
|
id: offer.id,
|
|
13533
|
-
|
|
13534
|
-
|
|
13535
|
-
|
|
13776
|
+
...tokenMetadata ? { name: tokenMetadata.name } : {},
|
|
13777
|
+
...saleWindow(offer),
|
|
13778
|
+
logo: OfferLogoUi.fromOffer(offer, tokenMetadata),
|
|
13536
13779
|
endsAt: offer.endsAt
|
|
13537
13780
|
}),
|
|
13538
|
-
fromDetail: (detail) => ({
|
|
13781
|
+
fromDetail: (detail, tokenMetadata = null) => ({
|
|
13539
13782
|
id: detail.id,
|
|
13540
|
-
name: detail.name,
|
|
13541
|
-
|
|
13542
|
-
|
|
13543
|
-
startsAt: detail.startsAt,
|
|
13783
|
+
name: tokenMetadata?.name ?? detail.name,
|
|
13784
|
+
...saleWindow(detail),
|
|
13785
|
+
logo: OfferLogoUi.fromOffer(detail, tokenMetadata),
|
|
13544
13786
|
endsAt: detail.endsAt
|
|
13545
13787
|
})
|
|
13546
13788
|
};
|
|
13789
|
+
function saleWindow(offer) {
|
|
13790
|
+
switch (offer.type) {
|
|
13791
|
+
case "coinlist::token_sale":
|
|
13792
|
+
case "superstate::swap":
|
|
13793
|
+
return { tagline: offer.tagline, startsAt: offer.startsAt };
|
|
13794
|
+
case "ondo::swap":
|
|
13795
|
+
return { tagline: null, startsAt: null };
|
|
13796
|
+
default: {
|
|
13797
|
+
const exhaustive = offer;
|
|
13798
|
+
return exhaustive;
|
|
13799
|
+
}
|
|
13800
|
+
}
|
|
13801
|
+
}
|
|
13802
|
+
|
|
13803
|
+
// src/client/hooks/shared/useTokenRegistry.ts
|
|
13804
|
+
var import_react37 = require("react");
|
|
13805
|
+
var DISABLED_STATE2 = { type: "DISABLED" };
|
|
13806
|
+
var LOADING_STATE4 = { type: "LOADING" };
|
|
13807
|
+
function useTokenRegistry(options = {}) {
|
|
13808
|
+
const { data, enabled = true } = options;
|
|
13809
|
+
const { coinlist, isReady } = useCoinList();
|
|
13810
|
+
const log = useLogger("useTokenRegistry");
|
|
13811
|
+
const [state, setState] = (0, import_react37.useState)(
|
|
13812
|
+
() => data !== void 0 ? { type: "CONTENT", registry: TokenRegistrySnapshot.fromTokens(data) } : LOADING_STATE4
|
|
13813
|
+
);
|
|
13814
|
+
const [refetchCount, setRefetchCount] = (0, import_react37.useState)(0);
|
|
13815
|
+
const refetch = (0, import_react37.useCallback)(() => {
|
|
13816
|
+
setRefetchCount((count) => count + 1);
|
|
13817
|
+
}, []);
|
|
13818
|
+
(0, import_react37.useEffect)(() => {
|
|
13819
|
+
let isCancelled = false;
|
|
13820
|
+
const seedActive = data !== void 0 && refetchCount === 0;
|
|
13821
|
+
if (!isReady || !enabled || seedActive) {
|
|
13822
|
+
return () => {
|
|
13823
|
+
isCancelled = true;
|
|
13824
|
+
};
|
|
13825
|
+
}
|
|
13826
|
+
setState(LOADING_STATE4);
|
|
13827
|
+
coinlist.tokens.list().then((tokens) => {
|
|
13828
|
+
if (!isCancelled) {
|
|
13829
|
+
log.debug(() => ({
|
|
13830
|
+
msg: "settled",
|
|
13831
|
+
fields: { state: "CONTENT", count: tokens.length }
|
|
13832
|
+
}));
|
|
13833
|
+
setState({
|
|
13834
|
+
type: "CONTENT",
|
|
13835
|
+
registry: TokenRegistrySnapshot.fromTokens(tokens)
|
|
13836
|
+
});
|
|
13837
|
+
}
|
|
13838
|
+
}).catch((error) => {
|
|
13839
|
+
if (!isCancelled) {
|
|
13840
|
+
log.failure(
|
|
13841
|
+
() => ({
|
|
13842
|
+
msg: "settled",
|
|
13843
|
+
fields: { state: "ERROR", reason: "generic-error" }
|
|
13844
|
+
}),
|
|
13845
|
+
error
|
|
13846
|
+
);
|
|
13847
|
+
setState({ type: "ERROR", reason: "generic-error" });
|
|
13848
|
+
}
|
|
13849
|
+
});
|
|
13850
|
+
return () => {
|
|
13851
|
+
isCancelled = true;
|
|
13852
|
+
};
|
|
13853
|
+
}, [coinlist, isReady, enabled, data, refetchCount, log]);
|
|
13854
|
+
return {
|
|
13855
|
+
// LOADING would be a lie while disabled: nothing is in flight and nothing
|
|
13856
|
+
// will replace it. Settled states (a seed, a previous answer) survive.
|
|
13857
|
+
state: !enabled && state.type === "LOADING" ? DISABLED_STATE2 : state,
|
|
13858
|
+
refetch
|
|
13859
|
+
};
|
|
13860
|
+
}
|
|
13547
13861
|
|
|
13548
13862
|
// src/client/hooks/offers/grid/useOffersGridViewModel.ts
|
|
13549
13863
|
var NOT_AUTHENTICATED_MESSAGE = "Sign in to view available offers.";
|
|
13550
13864
|
var GENERIC_ERROR_MESSAGE = "Unable to load offers right now. Please try again.";
|
|
13551
13865
|
function useOffersGridViewModel(options = {}) {
|
|
13552
13866
|
const { data, onOfferClick, enabled = true } = options;
|
|
13553
|
-
const { offersState } = useOffers({ data, enabled });
|
|
13554
|
-
const state = (
|
|
13555
|
-
|
|
13556
|
-
|
|
13867
|
+
const { offersState } = useOffers({ data: data?.offers, enabled });
|
|
13868
|
+
const { state: registryState } = useTokenRegistry({
|
|
13869
|
+
data: data?.tokens,
|
|
13870
|
+
enabled
|
|
13871
|
+
});
|
|
13872
|
+
const state = (0, import_react38.useMemo)(
|
|
13873
|
+
() => toUiState(offersState, registryState, onOfferClick !== void 0),
|
|
13874
|
+
[offersState, registryState, onOfferClick]
|
|
13557
13875
|
);
|
|
13558
|
-
const onEvent = (0,
|
|
13876
|
+
const onEvent = (0, import_react38.useCallback)(
|
|
13559
13877
|
(event) => {
|
|
13560
13878
|
switch (event.type) {
|
|
13561
13879
|
case "ON_OFFER_CLICK": {
|
|
@@ -13578,7 +13896,7 @@ function useOffersGridViewModel(options = {}) {
|
|
|
13578
13896
|
);
|
|
13579
13897
|
return { state, onEvent };
|
|
13580
13898
|
}
|
|
13581
|
-
function toUiState(offersState, interactive) {
|
|
13899
|
+
function toUiState(offersState, registryState, interactive) {
|
|
13582
13900
|
switch (offersState.type) {
|
|
13583
13901
|
case "LOADING":
|
|
13584
13902
|
return { type: "loading" };
|
|
@@ -13591,9 +13909,18 @@ function toUiState(offersState, interactive) {
|
|
|
13591
13909
|
if (offersState.offers.length === 0) {
|
|
13592
13910
|
return { type: "empty" };
|
|
13593
13911
|
}
|
|
13912
|
+
if (registryState.type === "LOADING") {
|
|
13913
|
+
return { type: "loading" };
|
|
13914
|
+
}
|
|
13915
|
+
const registry = registryState.type === "CONTENT" ? registryState.registry : null;
|
|
13594
13916
|
return {
|
|
13595
13917
|
type: "content",
|
|
13596
|
-
offers: offersState.offers.map(
|
|
13918
|
+
offers: offersState.offers.map(
|
|
13919
|
+
(offer) => OfferSaleCardUi.fromOffer(
|
|
13920
|
+
offer,
|
|
13921
|
+
registry ? TokenRegistrySnapshot.forOffer(registry, offer) : null
|
|
13922
|
+
)
|
|
13923
|
+
),
|
|
13597
13924
|
interactive
|
|
13598
13925
|
};
|
|
13599
13926
|
}
|
|
@@ -13605,7 +13932,7 @@ function toUiState(offersState, interactive) {
|
|
|
13605
13932
|
}
|
|
13606
13933
|
|
|
13607
13934
|
// src/client/components/offers/grid/OffersGridContainer.tsx
|
|
13608
|
-
var
|
|
13935
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
13609
13936
|
function OffersGridContainer({
|
|
13610
13937
|
data,
|
|
13611
13938
|
onOfferClick,
|
|
@@ -13617,17 +13944,17 @@ function OffersGridContainer({
|
|
|
13617
13944
|
onOfferClick,
|
|
13618
13945
|
enabled
|
|
13619
13946
|
});
|
|
13620
|
-
return /* @__PURE__ */ (0,
|
|
13947
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(OffersGridView, { state, onEvent, ...viewProps });
|
|
13621
13948
|
}
|
|
13622
13949
|
|
|
13623
13950
|
// src/client/components/requirements/ConnectedWalletList.tsx
|
|
13624
|
-
var
|
|
13625
|
-
var
|
|
13951
|
+
var import_react39 = require("react");
|
|
13952
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
13626
13953
|
function ConnectedWalletRow({
|
|
13627
13954
|
wallet,
|
|
13628
13955
|
onRemove
|
|
13629
13956
|
}) {
|
|
13630
|
-
const [state, setState] = (0,
|
|
13957
|
+
const [state, setState] = (0, import_react39.useState)("idle");
|
|
13631
13958
|
const remove = async () => {
|
|
13632
13959
|
if (!onRemove) return;
|
|
13633
13960
|
setState("removing");
|
|
@@ -13638,8 +13965,8 @@ function ConnectedWalletRow({
|
|
|
13638
13965
|
setState("error");
|
|
13639
13966
|
}
|
|
13640
13967
|
};
|
|
13641
|
-
return /* @__PURE__ */ (0,
|
|
13642
|
-
/* @__PURE__ */ (0,
|
|
13968
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "clcosdk:flex clcosdk:min-h-9 clcosdk:flex-wrap clcosdk:items-center clcosdk:justify-between clcosdk:gap-2", children: [
|
|
13969
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13643
13970
|
"span",
|
|
13644
13971
|
{
|
|
13645
13972
|
title: wallet.address,
|
|
@@ -13650,16 +13977,16 @@ function ConnectedWalletRow({
|
|
|
13650
13977
|
children: wallet.shortAddress
|
|
13651
13978
|
}
|
|
13652
13979
|
),
|
|
13653
|
-
onRemove != null && (state === "confirming" ? /* @__PURE__ */ (0,
|
|
13654
|
-
/* @__PURE__ */ (0,
|
|
13980
|
+
onRemove != null && (state === "confirming" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-2", children: [
|
|
13981
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13655
13982
|
"span",
|
|
13656
13983
|
{
|
|
13657
13984
|
className: cn(typeClasses.subhead, "clcosdk:text-text-secondary"),
|
|
13658
13985
|
children: "Remove?"
|
|
13659
13986
|
}
|
|
13660
13987
|
),
|
|
13661
|
-
/* @__PURE__ */ (0,
|
|
13662
|
-
/* @__PURE__ */ (0,
|
|
13988
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ClButton, { size: "sm", variant: "destructive", onClick: remove, children: "Remove" }),
|
|
13989
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13663
13990
|
ClButton,
|
|
13664
13991
|
{
|
|
13665
13992
|
size: "sm",
|
|
@@ -13668,9 +13995,9 @@ function ConnectedWalletRow({
|
|
|
13668
13995
|
children: "Cancel"
|
|
13669
13996
|
}
|
|
13670
13997
|
)
|
|
13671
|
-
] }) : state === "error" ? /* @__PURE__ */ (0,
|
|
13672
|
-
/* @__PURE__ */ (0,
|
|
13673
|
-
/* @__PURE__ */ (0,
|
|
13998
|
+
] }) : state === "error" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-2", children: [
|
|
13999
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: cn(typeClasses.subhead, "clcosdk:text-error"), children: "Couldn't remove." }),
|
|
14000
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13674
14001
|
ClButton,
|
|
13675
14002
|
{
|
|
13676
14003
|
size: "sm",
|
|
@@ -13679,7 +14006,7 @@ function ConnectedWalletRow({
|
|
|
13679
14006
|
children: "Try again"
|
|
13680
14007
|
}
|
|
13681
14008
|
)
|
|
13682
|
-
] }) : /* @__PURE__ */ (0,
|
|
14009
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13683
14010
|
ClButton,
|
|
13684
14011
|
{
|
|
13685
14012
|
size: "sm",
|
|
@@ -13692,7 +14019,7 @@ function ConnectedWalletRow({
|
|
|
13692
14019
|
] });
|
|
13693
14020
|
}
|
|
13694
14021
|
function ConnectedWalletList(props) {
|
|
13695
|
-
return /* @__PURE__ */ (0,
|
|
14022
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ConnectedWalletListBody, { ...props }) });
|
|
13696
14023
|
}
|
|
13697
14024
|
function ConnectedWalletListBody({
|
|
13698
14025
|
wallets,
|
|
@@ -13702,18 +14029,18 @@ function ConnectedWalletListBody({
|
|
|
13702
14029
|
status = "ready",
|
|
13703
14030
|
className
|
|
13704
14031
|
}) {
|
|
13705
|
-
return /* @__PURE__ */ (0,
|
|
14032
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
13706
14033
|
"div",
|
|
13707
14034
|
{
|
|
13708
14035
|
className: cn("clcosdk:flex clcosdk:flex-col clcosdk:gap-2", className),
|
|
13709
14036
|
children: [
|
|
13710
|
-
status === "loading" ? /* @__PURE__ */ (0,
|
|
14037
|
+
status === "loading" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(AlertBanner, { variant: "info", content: "Loading your connected wallets\u2026" }) : status === "error" ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13711
14038
|
AlertBanner,
|
|
13712
14039
|
{
|
|
13713
14040
|
variant: "error",
|
|
13714
14041
|
content: "Couldn't load your connected wallets."
|
|
13715
14042
|
}
|
|
13716
|
-
) : wallets.length === 0 ? /* @__PURE__ */ (0,
|
|
14043
|
+
) : wallets.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(AlertBanner, { variant: "info", content: "No wallets connected yet." }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:divide-y clcosdk:divide-divider", children: wallets.map((wallet) => /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13717
14044
|
ConnectedWalletRow,
|
|
13718
14045
|
{
|
|
13719
14046
|
wallet,
|
|
@@ -13721,7 +14048,7 @@ function ConnectedWalletListBody({
|
|
|
13721
14048
|
},
|
|
13722
14049
|
wallet.id
|
|
13723
14050
|
)) }),
|
|
13724
|
-
onAdd != null && status !== "loading" && /* @__PURE__ */ (0,
|
|
14051
|
+
onAdd != null && status !== "loading" && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
13725
14052
|
ClButton,
|
|
13726
14053
|
{
|
|
13727
14054
|
size: "sm",
|
|
@@ -13738,9 +14065,9 @@ function ConnectedWalletListBody({
|
|
|
13738
14065
|
|
|
13739
14066
|
// src/client/components/requirements/identity-verification/IdentityVerificationView.tsx
|
|
13740
14067
|
var import_websdk_react = __toESM(require("@sumsub/websdk-react"), 1);
|
|
13741
|
-
var
|
|
14068
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
13742
14069
|
function IdentityVerificationView(props) {
|
|
13743
|
-
return /* @__PURE__ */ (0,
|
|
14070
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(IdentityVerificationViewBody, { ...props }) });
|
|
13744
14071
|
}
|
|
13745
14072
|
function IdentityVerificationViewBody({
|
|
13746
14073
|
state,
|
|
@@ -13749,7 +14076,7 @@ function IdentityVerificationViewBody({
|
|
|
13749
14076
|
}) {
|
|
13750
14077
|
switch (state.type) {
|
|
13751
14078
|
case "loading":
|
|
13752
|
-
return /* @__PURE__ */ (0,
|
|
14079
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
13753
14080
|
"output",
|
|
13754
14081
|
{
|
|
13755
14082
|
"aria-live": "polite",
|
|
@@ -13757,11 +14084,11 @@ function IdentityVerificationViewBody({
|
|
|
13757
14084
|
"clcosdk:flex clcosdk:min-h-40 clcosdk:items-center clcosdk:justify-center",
|
|
13758
14085
|
className
|
|
13759
14086
|
),
|
|
13760
|
-
children: /* @__PURE__ */ (0,
|
|
14087
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading identity verification..." })
|
|
13761
14088
|
}
|
|
13762
14089
|
);
|
|
13763
14090
|
case "error":
|
|
13764
|
-
return /* @__PURE__ */ (0,
|
|
14091
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
|
|
13765
14092
|
"div",
|
|
13766
14093
|
{
|
|
13767
14094
|
className: cn(
|
|
@@ -13769,13 +14096,13 @@ function IdentityVerificationViewBody({
|
|
|
13769
14096
|
className
|
|
13770
14097
|
),
|
|
13771
14098
|
children: [
|
|
13772
|
-
/* @__PURE__ */ (0,
|
|
13773
|
-
state.retryable && /* @__PURE__ */ (0,
|
|
14099
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(AlertBanner, { variant: "error", icon: true, content: state.message }),
|
|
14100
|
+
state.retryable && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(ClButton, { size: "sm", onClick: () => onEvent({ type: "ON_RETRY" }), children: "Try again" })
|
|
13774
14101
|
]
|
|
13775
14102
|
}
|
|
13776
14103
|
);
|
|
13777
14104
|
case "ready":
|
|
13778
|
-
return /* @__PURE__ */ (0,
|
|
14105
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: cn("clcosdk:w-full", className), children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
13779
14106
|
import_websdk_react.default,
|
|
13780
14107
|
{
|
|
13781
14108
|
accessToken: state.accessToken,
|
|
@@ -13815,25 +14142,25 @@ function toError(error) {
|
|
|
13815
14142
|
}
|
|
13816
14143
|
|
|
13817
14144
|
// src/client/hooks/requirements/identity-verification/useIdentityVerificationViewModel.ts
|
|
13818
|
-
var
|
|
14145
|
+
var import_react41 = require("react");
|
|
13819
14146
|
|
|
13820
14147
|
// src/client/hooks/requirements/data/useKycToken.ts
|
|
13821
|
-
var
|
|
14148
|
+
var import_react40 = require("react");
|
|
13822
14149
|
var IDLE_STATE = { type: "IDLE" };
|
|
13823
|
-
var
|
|
14150
|
+
var LOADING_STATE5 = { type: "LOADING" };
|
|
13824
14151
|
function useKycToken(levelName, reset) {
|
|
13825
14152
|
const { coinlist } = useCoinList();
|
|
13826
14153
|
const log = useLogger("useKycToken");
|
|
13827
|
-
const [kycTokenState, setKycTokenState] = (0,
|
|
13828
|
-
const resetPendingRef = (0,
|
|
13829
|
-
const tokenIssuedRef = (0,
|
|
13830
|
-
(0,
|
|
14154
|
+
const [kycTokenState, setKycTokenState] = (0, import_react40.useState)(IDLE_STATE);
|
|
14155
|
+
const resetPendingRef = (0, import_react40.useRef)(reset === true);
|
|
14156
|
+
const tokenIssuedRef = (0, import_react40.useRef)(false);
|
|
14157
|
+
(0, import_react40.useEffect)(() => {
|
|
13831
14158
|
if (!tokenIssuedRef.current) {
|
|
13832
14159
|
resetPendingRef.current = reset === true;
|
|
13833
14160
|
}
|
|
13834
14161
|
}, [reset]);
|
|
13835
|
-
const fetchToken = (0,
|
|
13836
|
-
setKycTokenState(
|
|
14162
|
+
const fetchToken = (0, import_react40.useCallback)(async () => {
|
|
14163
|
+
setKycTokenState(LOADING_STATE5);
|
|
13837
14164
|
try {
|
|
13838
14165
|
const kycToken = await coinlist.requirements.createKycToken({
|
|
13839
14166
|
levelName,
|
|
@@ -13866,8 +14193,8 @@ var GENERIC_ERROR_MESSAGE2 = "Unable to start identity verification right now. P
|
|
|
13866
14193
|
function useIdentityVerificationViewModel(options = {}) {
|
|
13867
14194
|
const { levelName, reset, locale, onSubmitted, onError } = options;
|
|
13868
14195
|
const { kycTokenState, fetchToken } = useKycToken(levelName, reset);
|
|
13869
|
-
const fetchedRef = (0,
|
|
13870
|
-
(0,
|
|
14196
|
+
const fetchedRef = (0, import_react41.useRef)(false);
|
|
14197
|
+
(0, import_react41.useEffect)(() => {
|
|
13871
14198
|
if (fetchedRef.current) {
|
|
13872
14199
|
return;
|
|
13873
14200
|
}
|
|
@@ -13875,7 +14202,7 @@ function useIdentityVerificationViewModel(options = {}) {
|
|
|
13875
14202
|
fetchToken().catch(() => {
|
|
13876
14203
|
});
|
|
13877
14204
|
}, [fetchToken]);
|
|
13878
|
-
const state = (0,
|
|
14205
|
+
const state = (0, import_react41.useMemo)(() => {
|
|
13879
14206
|
switch (kycTokenState.type) {
|
|
13880
14207
|
case "IDLE":
|
|
13881
14208
|
case "LOADING":
|
|
@@ -13901,7 +14228,7 @@ function useIdentityVerificationViewModel(options = {}) {
|
|
|
13901
14228
|
}
|
|
13902
14229
|
}
|
|
13903
14230
|
}, [kycTokenState, locale, fetchToken]);
|
|
13904
|
-
const onEvent = (0,
|
|
14231
|
+
const onEvent = (0, import_react41.useCallback)(
|
|
13905
14232
|
(event) => {
|
|
13906
14233
|
switch (event.type) {
|
|
13907
14234
|
case "ON_RETRY":
|
|
@@ -13926,7 +14253,7 @@ function useIdentityVerificationViewModel(options = {}) {
|
|
|
13926
14253
|
}
|
|
13927
14254
|
|
|
13928
14255
|
// src/client/components/requirements/identity-verification/IdentityVerificationContainer.tsx
|
|
13929
|
-
var
|
|
14256
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
13930
14257
|
function IdentityVerificationContainer({
|
|
13931
14258
|
levelName,
|
|
13932
14259
|
reset,
|
|
@@ -13942,7 +14269,7 @@ function IdentityVerificationContainer({
|
|
|
13942
14269
|
onSubmitted,
|
|
13943
14270
|
onError
|
|
13944
14271
|
});
|
|
13945
|
-
return /* @__PURE__ */ (0,
|
|
14272
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
13946
14273
|
IdentityVerificationView,
|
|
13947
14274
|
{
|
|
13948
14275
|
state,
|
|
@@ -13957,7 +14284,7 @@ var import_lucide_react15 = require("lucide-react");
|
|
|
13957
14284
|
|
|
13958
14285
|
// src/client/components/design-system/StepStatusIcon.tsx
|
|
13959
14286
|
var import_lucide_react14 = require("lucide-react");
|
|
13960
|
-
var
|
|
14287
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
13961
14288
|
var statusConfig = {
|
|
13962
14289
|
required: {
|
|
13963
14290
|
Icon: import_lucide_react14.Info,
|
|
@@ -13982,7 +14309,7 @@ var statusConfig = {
|
|
|
13982
14309
|
};
|
|
13983
14310
|
function StepStatusIcon({ status, className }) {
|
|
13984
14311
|
const { Icon, colorClass, fillClass } = statusConfig[status];
|
|
13985
|
-
return /* @__PURE__ */ (0,
|
|
14312
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
13986
14313
|
Icon,
|
|
13987
14314
|
{
|
|
13988
14315
|
className: cn(
|
|
@@ -13997,7 +14324,7 @@ function StepStatusIcon({ status, className }) {
|
|
|
13997
14324
|
}
|
|
13998
14325
|
|
|
13999
14326
|
// src/client/components/requirements/RequirementItem.tsx
|
|
14000
|
-
var
|
|
14327
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
14001
14328
|
function VerificationActionZone({
|
|
14002
14329
|
status,
|
|
14003
14330
|
onAction,
|
|
@@ -14006,9 +14333,9 @@ function VerificationActionZone({
|
|
|
14006
14333
|
switch (status) {
|
|
14007
14334
|
case "required":
|
|
14008
14335
|
if (onAction === null) return null;
|
|
14009
|
-
return /* @__PURE__ */ (0,
|
|
14336
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ClButton, { size: "sm", onClick: onAction, children: "Continue" });
|
|
14010
14337
|
case "pending":
|
|
14011
|
-
return /* @__PURE__ */ (0,
|
|
14338
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14012
14339
|
AlertBanner,
|
|
14013
14340
|
{
|
|
14014
14341
|
variant: "warning",
|
|
@@ -14016,16 +14343,16 @@ function VerificationActionZone({
|
|
|
14016
14343
|
}
|
|
14017
14344
|
);
|
|
14018
14345
|
case "completed":
|
|
14019
|
-
return /* @__PURE__ */ (0,
|
|
14346
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(AlertBanner, { variant: "success", content: "Identity verified." });
|
|
14020
14347
|
case "rejected":
|
|
14021
|
-
return /* @__PURE__ */ (0,
|
|
14348
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14022
14349
|
AlertBanner,
|
|
14023
14350
|
{
|
|
14024
14351
|
variant: "error",
|
|
14025
|
-
content: onContactSupport === null ? "Verification rejected." : /* @__PURE__ */ (0,
|
|
14352
|
+
content: onContactSupport === null ? "Verification rejected." : /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
14026
14353
|
"Verification rejected.",
|
|
14027
14354
|
" ",
|
|
14028
|
-
/* @__PURE__ */ (0,
|
|
14355
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14029
14356
|
"button",
|
|
14030
14357
|
{
|
|
14031
14358
|
type: "button",
|
|
@@ -14049,8 +14376,8 @@ function WalletActionZone({
|
|
|
14049
14376
|
onRemoveWallet
|
|
14050
14377
|
}) {
|
|
14051
14378
|
if (multiWallet) {
|
|
14052
|
-
return /* @__PURE__ */ (0,
|
|
14053
|
-
/* @__PURE__ */ (0,
|
|
14379
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
14380
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14054
14381
|
ConnectedWalletList,
|
|
14055
14382
|
{
|
|
14056
14383
|
wallets: connectedWallets,
|
|
@@ -14059,7 +14386,7 @@ function WalletActionZone({
|
|
|
14059
14386
|
status: walletsStatus
|
|
14060
14387
|
}
|
|
14061
14388
|
),
|
|
14062
|
-
status === "rejected" && /* @__PURE__ */ (0,
|
|
14389
|
+
status === "rejected" && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14063
14390
|
AlertBanner,
|
|
14064
14391
|
{
|
|
14065
14392
|
variant: "error",
|
|
@@ -14070,21 +14397,21 @@ function WalletActionZone({
|
|
|
14070
14397
|
}
|
|
14071
14398
|
if (status === "completed") {
|
|
14072
14399
|
const connected = connectedWallets[0];
|
|
14073
|
-
return /* @__PURE__ */ (0,
|
|
14074
|
-
onAction !== null && /* @__PURE__ */ (0,
|
|
14075
|
-
walletsStatus === "loading" ? /* @__PURE__ */ (0,
|
|
14400
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
14401
|
+
onAction !== null && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ClButton, { size: "sm", variant: "secondary", onClick: onAction, children: "Change wallet" }),
|
|
14402
|
+
walletsStatus === "loading" ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14076
14403
|
AlertBanner,
|
|
14077
14404
|
{
|
|
14078
14405
|
variant: "info",
|
|
14079
14406
|
content: "Loading your connected wallet\u2026"
|
|
14080
14407
|
}
|
|
14081
|
-
) : walletsStatus === "error" ? /* @__PURE__ */ (0,
|
|
14408
|
+
) : walletsStatus === "error" ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14082
14409
|
AlertBanner,
|
|
14083
14410
|
{
|
|
14084
14411
|
variant: "error",
|
|
14085
14412
|
content: "Couldn't load your connected wallet."
|
|
14086
14413
|
}
|
|
14087
|
-
) : /* @__PURE__ */ (0,
|
|
14414
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14088
14415
|
AlertBanner,
|
|
14089
14416
|
{
|
|
14090
14417
|
variant: "success",
|
|
@@ -14094,9 +14421,9 @@ function WalletActionZone({
|
|
|
14094
14421
|
] });
|
|
14095
14422
|
}
|
|
14096
14423
|
if (status === "rejected") {
|
|
14097
|
-
return /* @__PURE__ */ (0,
|
|
14098
|
-
onAction !== null && /* @__PURE__ */ (0,
|
|
14099
|
-
/* @__PURE__ */ (0,
|
|
14424
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
|
|
14425
|
+
onAction !== null && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ClButton, { size: "sm", onClick: onAction, children: "Connect wallet" }),
|
|
14426
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14100
14427
|
AlertBanner,
|
|
14101
14428
|
{
|
|
14102
14429
|
variant: "error",
|
|
@@ -14106,7 +14433,7 @@ function WalletActionZone({
|
|
|
14106
14433
|
] });
|
|
14107
14434
|
}
|
|
14108
14435
|
if (onAction === null) return null;
|
|
14109
|
-
return /* @__PURE__ */ (0,
|
|
14436
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(ClButton, { size: "sm", onClick: onAction, children: "Connect wallet" });
|
|
14110
14437
|
}
|
|
14111
14438
|
function RequirementItem({
|
|
14112
14439
|
ui,
|
|
@@ -14118,7 +14445,7 @@ function RequirementItem({
|
|
|
14118
14445
|
walletsStatus,
|
|
14119
14446
|
onContactSupport
|
|
14120
14447
|
}) {
|
|
14121
|
-
return /* @__PURE__ */ (0,
|
|
14448
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
14122
14449
|
"div",
|
|
14123
14450
|
{
|
|
14124
14451
|
className: cn(
|
|
@@ -14126,7 +14453,7 @@ function RequirementItem({
|
|
|
14126
14453
|
className
|
|
14127
14454
|
),
|
|
14128
14455
|
children: [
|
|
14129
|
-
/* @__PURE__ */ (0,
|
|
14456
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
14130
14457
|
"button",
|
|
14131
14458
|
{
|
|
14132
14459
|
type: "button",
|
|
@@ -14134,9 +14461,9 @@ function RequirementItem({
|
|
|
14134
14461
|
"aria-expanded": expanded,
|
|
14135
14462
|
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",
|
|
14136
14463
|
children: [
|
|
14137
|
-
/* @__PURE__ */ (0,
|
|
14138
|
-
/* @__PURE__ */ (0,
|
|
14139
|
-
/* @__PURE__ */ (0,
|
|
14464
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "clcosdk:flex clcosdk:items-center clcosdk:gap-3", children: [
|
|
14465
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(StepStatusIcon, { status: ui.status }),
|
|
14466
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14140
14467
|
"span",
|
|
14141
14468
|
{
|
|
14142
14469
|
className: cn(
|
|
@@ -14147,7 +14474,7 @@ function RequirementItem({
|
|
|
14147
14474
|
}
|
|
14148
14475
|
)
|
|
14149
14476
|
] }),
|
|
14150
|
-
/* @__PURE__ */ (0,
|
|
14477
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14151
14478
|
import_lucide_react15.ChevronRight,
|
|
14152
14479
|
{
|
|
14153
14480
|
className: cn(
|
|
@@ -14160,15 +14487,15 @@ function RequirementItem({
|
|
|
14160
14487
|
]
|
|
14161
14488
|
}
|
|
14162
14489
|
),
|
|
14163
|
-
/* @__PURE__ */ (0,
|
|
14490
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14164
14491
|
"div",
|
|
14165
14492
|
{
|
|
14166
14493
|
className: cn(
|
|
14167
14494
|
"clcosdk:grid clcosdk:transition-[grid-template-rows] clcosdk:duration-300 clcosdk:ease-in-out",
|
|
14168
14495
|
expanded ? "clcosdk:grid-rows-[1fr]" : "clcosdk:grid-rows-[0fr]"
|
|
14169
14496
|
),
|
|
14170
|
-
children: /* @__PURE__ */ (0,
|
|
14171
|
-
/* @__PURE__ */ (0,
|
|
14497
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "clcosdk:min-h-0 clcosdk:overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-4 clcosdk:px-2 clcosdk:pb-4", children: [
|
|
14498
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14172
14499
|
"p",
|
|
14173
14500
|
{
|
|
14174
14501
|
className: cn(
|
|
@@ -14178,14 +14505,14 @@ function RequirementItem({
|
|
|
14178
14505
|
children: ui.description
|
|
14179
14506
|
}
|
|
14180
14507
|
),
|
|
14181
|
-
ui.variant === "verification" ? /* @__PURE__ */ (0,
|
|
14508
|
+
ui.variant === "verification" ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14182
14509
|
VerificationActionZone,
|
|
14183
14510
|
{
|
|
14184
14511
|
status: ui.status,
|
|
14185
14512
|
onAction,
|
|
14186
14513
|
onContactSupport
|
|
14187
14514
|
}
|
|
14188
|
-
) : /* @__PURE__ */ (0,
|
|
14515
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
14189
14516
|
WalletActionZone,
|
|
14190
14517
|
{
|
|
14191
14518
|
status: ui.status,
|
|
@@ -14205,9 +14532,9 @@ function RequirementItem({
|
|
|
14205
14532
|
}
|
|
14206
14533
|
|
|
14207
14534
|
// src/client/components/requirements/RequirementsChecklistView.tsx
|
|
14208
|
-
var
|
|
14535
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
14209
14536
|
function RequirementsChecklistView(props) {
|
|
14210
|
-
return /* @__PURE__ */ (0,
|
|
14537
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(RequirementsChecklistViewBody, { ...props }) });
|
|
14211
14538
|
}
|
|
14212
14539
|
function RequirementsChecklistViewBody({
|
|
14213
14540
|
state,
|
|
@@ -14219,11 +14546,11 @@ function RequirementsChecklistViewBody({
|
|
|
14219
14546
|
}) {
|
|
14220
14547
|
switch (state.type) {
|
|
14221
14548
|
case "loading":
|
|
14222
|
-
return loading ?? /* @__PURE__ */ (0,
|
|
14549
|
+
return loading ?? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(LoadingState2, {});
|
|
14223
14550
|
case "not-authenticated":
|
|
14224
14551
|
return unauthenticatedState ?? null;
|
|
14225
14552
|
case "error":
|
|
14226
|
-
return error ?? /* @__PURE__ */ (0,
|
|
14553
|
+
return error ?? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14227
14554
|
AlertBanner,
|
|
14228
14555
|
{
|
|
14229
14556
|
variant: "error",
|
|
@@ -14233,7 +14560,7 @@ function RequirementsChecklistViewBody({
|
|
|
14233
14560
|
}
|
|
14234
14561
|
);
|
|
14235
14562
|
case "content":
|
|
14236
|
-
return /* @__PURE__ */ (0,
|
|
14563
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
14237
14564
|
"div",
|
|
14238
14565
|
{
|
|
14239
14566
|
className: cn(
|
|
@@ -14241,11 +14568,11 @@ function RequirementsChecklistViewBody({
|
|
|
14241
14568
|
className
|
|
14242
14569
|
),
|
|
14243
14570
|
children: [
|
|
14244
|
-
/* @__PURE__ */ (0,
|
|
14245
|
-
/* @__PURE__ */ (0,
|
|
14246
|
-
/* @__PURE__ */ (0,
|
|
14571
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
14572
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: state.title }),
|
|
14573
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: state.description })
|
|
14247
14574
|
] }),
|
|
14248
|
-
/* @__PURE__ */ (0,
|
|
14575
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:divide-y clcosdk:divide-divider", children: state.items.map((row) => /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14249
14576
|
RequirementItem,
|
|
14250
14577
|
{
|
|
14251
14578
|
ui: row.item,
|
|
@@ -14264,7 +14591,7 @@ function RequirementsChecklistViewBody({
|
|
|
14264
14591
|
},
|
|
14265
14592
|
row.id
|
|
14266
14593
|
)) }),
|
|
14267
|
-
state.ineligible && /* @__PURE__ */ (0,
|
|
14594
|
+
state.ineligible && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14268
14595
|
AlertBanner,
|
|
14269
14596
|
{
|
|
14270
14597
|
variant: "error",
|
|
@@ -14272,7 +14599,7 @@ function RequirementsChecklistViewBody({
|
|
|
14272
14599
|
content: "You are not eligible to participate."
|
|
14273
14600
|
}
|
|
14274
14601
|
),
|
|
14275
|
-
state.continueAction && /* @__PURE__ */ (0,
|
|
14602
|
+
state.continueAction && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14276
14603
|
ClButton,
|
|
14277
14604
|
{
|
|
14278
14605
|
fullWidth: true,
|
|
@@ -14291,18 +14618,18 @@ function RequirementsChecklistViewBody({
|
|
|
14291
14618
|
}
|
|
14292
14619
|
}
|
|
14293
14620
|
function LoadingState2() {
|
|
14294
|
-
return /* @__PURE__ */ (0,
|
|
14621
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
14295
14622
|
"output",
|
|
14296
14623
|
{
|
|
14297
14624
|
"aria-live": "polite",
|
|
14298
14625
|
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",
|
|
14299
|
-
children: /* @__PURE__ */ (0,
|
|
14626
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Loading requirements..." })
|
|
14300
14627
|
}
|
|
14301
14628
|
);
|
|
14302
14629
|
}
|
|
14303
14630
|
|
|
14304
14631
|
// src/client/components/requirements/tax-document/TaxDocumentModalView.tsx
|
|
14305
|
-
var
|
|
14632
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
14306
14633
|
function TaxDocumentModalView({
|
|
14307
14634
|
state,
|
|
14308
14635
|
onEvent,
|
|
@@ -14311,7 +14638,7 @@ function TaxDocumentModalView({
|
|
|
14311
14638
|
if (state.type === "hidden") {
|
|
14312
14639
|
return null;
|
|
14313
14640
|
}
|
|
14314
|
-
return /* @__PURE__ */ (0,
|
|
14641
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "clcosdk:fixed clcosdk:inset-0 clcosdk:z-50 clcosdk:flex clcosdk:items-center clcosdk:justify-center clcosdk:bg-black/50 clcosdk:p-4", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
14315
14642
|
"div",
|
|
14316
14643
|
{
|
|
14317
14644
|
className: cn(
|
|
@@ -14319,11 +14646,11 @@ function TaxDocumentModalView({
|
|
|
14319
14646
|
className
|
|
14320
14647
|
),
|
|
14321
14648
|
children: [
|
|
14322
|
-
/* @__PURE__ */ (0,
|
|
14323
|
-
/* @__PURE__ */ (0,
|
|
14324
|
-
/* @__PURE__ */ (0,
|
|
14649
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:items-start clcosdk:justify-between clcosdk:gap-4", children: [
|
|
14650
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h3", { className: cn(typeClasses.h3, "clcosdk:text-text-primary"), children: state.title }),
|
|
14651
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(CloseButton, { onClick: () => onEvent({ type: "ON_CLOSE" }) })
|
|
14325
14652
|
] }),
|
|
14326
|
-
/* @__PURE__ */ (0,
|
|
14653
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Screen, { screen: state.screen, onEvent })
|
|
14327
14654
|
]
|
|
14328
14655
|
}
|
|
14329
14656
|
) }) });
|
|
@@ -14334,11 +14661,11 @@ function Screen({
|
|
|
14334
14661
|
}) {
|
|
14335
14662
|
switch (screen.type) {
|
|
14336
14663
|
case "loading":
|
|
14337
|
-
return /* @__PURE__ */ (0,
|
|
14664
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(LoadingScreen, {});
|
|
14338
14665
|
case "error":
|
|
14339
|
-
return /* @__PURE__ */ (0,
|
|
14666
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(AlertBanner, { variant: "error", icon: true, content: screen.message });
|
|
14340
14667
|
case "review":
|
|
14341
|
-
return /* @__PURE__ */ (0,
|
|
14668
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14342
14669
|
ReviewScreen,
|
|
14343
14670
|
{
|
|
14344
14671
|
fields: screen.fields,
|
|
@@ -14349,9 +14676,9 @@ function Screen({
|
|
|
14349
14676
|
}
|
|
14350
14677
|
);
|
|
14351
14678
|
case "editing":
|
|
14352
|
-
return /* @__PURE__ */ (0,
|
|
14679
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(EditScreen, { fields: screen.fields, onEvent });
|
|
14353
14680
|
case "sign-only":
|
|
14354
|
-
return /* @__PURE__ */ (0,
|
|
14681
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14355
14682
|
SignOnlyScreen,
|
|
14356
14683
|
{
|
|
14357
14684
|
signing: screen.signing,
|
|
@@ -14366,14 +14693,14 @@ function Screen({
|
|
|
14366
14693
|
}
|
|
14367
14694
|
}
|
|
14368
14695
|
function LoadingScreen() {
|
|
14369
|
-
return /* @__PURE__ */ (0,
|
|
14696
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14370
14697
|
"output",
|
|
14371
14698
|
{
|
|
14372
14699
|
"aria-live": "polite",
|
|
14373
14700
|
className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-4",
|
|
14374
|
-
children: [0, 1, 2, 3, 4].map((row) => /* @__PURE__ */ (0,
|
|
14375
|
-
/* @__PURE__ */ (0,
|
|
14376
|
-
/* @__PURE__ */ (0,
|
|
14701
|
+
children: [0, 1, 2, 3, 4].map((row) => /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1", children: [
|
|
14702
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "clcosdk:h-3 clcosdk:w-28 clcosdk:animate-pulse clcosdk:rounded clcosdk:bg-surface" }),
|
|
14703
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "clcosdk:h-5 clcosdk:w-48 clcosdk:animate-pulse clcosdk:rounded clcosdk:bg-surface" })
|
|
14377
14704
|
] }, row))
|
|
14378
14705
|
}
|
|
14379
14706
|
);
|
|
@@ -14385,9 +14712,9 @@ function ReviewScreen({
|
|
|
14385
14712
|
signError,
|
|
14386
14713
|
onEvent
|
|
14387
14714
|
}) {
|
|
14388
|
-
return /* @__PURE__ */ (0,
|
|
14389
|
-
/* @__PURE__ */ (0,
|
|
14390
|
-
piiUnavailable && /* @__PURE__ */ (0,
|
|
14715
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
14716
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Review your information below. If anything looks incorrect, edit before signing." }),
|
|
14717
|
+
piiUnavailable && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14391
14718
|
AlertBanner,
|
|
14392
14719
|
{
|
|
14393
14720
|
variant: "info",
|
|
@@ -14395,27 +14722,27 @@ function ReviewScreen({
|
|
|
14395
14722
|
content: "We don't have this information on file yet \u2014 please fill it in below."
|
|
14396
14723
|
}
|
|
14397
14724
|
),
|
|
14398
|
-
/* @__PURE__ */ (0,
|
|
14725
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-4 clcosdk:border-t clcosdk:border-divider clcosdk:pt-4", children: fields.map(({ field, label, displayValue }) => /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
14399
14726
|
"div",
|
|
14400
14727
|
{
|
|
14401
14728
|
className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1",
|
|
14402
14729
|
children: [
|
|
14403
|
-
/* @__PURE__ */ (0,
|
|
14730
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14404
14731
|
"span",
|
|
14405
14732
|
{
|
|
14406
14733
|
className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
|
|
14407
14734
|
children: label
|
|
14408
14735
|
}
|
|
14409
14736
|
),
|
|
14410
|
-
/* @__PURE__ */ (0,
|
|
14737
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: cn(typeClasses.body, "clcosdk:text-text-primary"), children: displayValue })
|
|
14411
14738
|
]
|
|
14412
14739
|
},
|
|
14413
14740
|
field
|
|
14414
14741
|
)) }),
|
|
14415
|
-
/* @__PURE__ */ (0,
|
|
14416
|
-
signError && /* @__PURE__ */ (0,
|
|
14417
|
-
/* @__PURE__ */ (0,
|
|
14418
|
-
/* @__PURE__ */ (0,
|
|
14742
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { className: cn(typeClasses.caption, "clcosdk:text-text-secondary"), children: "By signing, you certify that the information above is accurate and that you are the beneficial owner of the income this form relates to. This document cannot be edited once signed." }),
|
|
14743
|
+
signError && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(AlertBanner, { variant: "error", icon: true, content: signError }),
|
|
14744
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
14745
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14419
14746
|
ClButton,
|
|
14420
14747
|
{
|
|
14421
14748
|
fullWidth: true,
|
|
@@ -14425,7 +14752,7 @@ function ReviewScreen({
|
|
|
14425
14752
|
children: "Sign W-8BEN"
|
|
14426
14753
|
}
|
|
14427
14754
|
),
|
|
14428
|
-
/* @__PURE__ */ (0,
|
|
14755
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14429
14756
|
ClButton,
|
|
14430
14757
|
{
|
|
14431
14758
|
fullWidth: true,
|
|
@@ -14442,20 +14769,20 @@ function EditScreen({
|
|
|
14442
14769
|
fields,
|
|
14443
14770
|
onEvent
|
|
14444
14771
|
}) {
|
|
14445
|
-
return /* @__PURE__ */ (0,
|
|
14446
|
-
/* @__PURE__ */ (0,
|
|
14772
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
14773
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-4 clcosdk:border-t clcosdk:border-divider clcosdk:pt-4", children: fields.map(({ field, label, placeholder, value }) => /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
|
|
14447
14774
|
"label",
|
|
14448
14775
|
{
|
|
14449
14776
|
className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1",
|
|
14450
14777
|
children: [
|
|
14451
|
-
/* @__PURE__ */ (0,
|
|
14778
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14452
14779
|
"span",
|
|
14453
14780
|
{
|
|
14454
14781
|
className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
|
|
14455
14782
|
children: label
|
|
14456
14783
|
}
|
|
14457
14784
|
),
|
|
14458
|
-
/* @__PURE__ */ (0,
|
|
14785
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14459
14786
|
"input",
|
|
14460
14787
|
{
|
|
14461
14788
|
type: "text",
|
|
@@ -14476,9 +14803,9 @@ function EditScreen({
|
|
|
14476
14803
|
},
|
|
14477
14804
|
field
|
|
14478
14805
|
)) }),
|
|
14479
|
-
/* @__PURE__ */ (0,
|
|
14480
|
-
/* @__PURE__ */ (0,
|
|
14481
|
-
/* @__PURE__ */ (0,
|
|
14806
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-2", children: [
|
|
14807
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(ClButton, { fullWidth: true, onClick: () => onEvent({ type: "ON_SAVE_EDIT" }), children: "Save & review" }),
|
|
14808
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14482
14809
|
ClButton,
|
|
14483
14810
|
{
|
|
14484
14811
|
fullWidth: true,
|
|
@@ -14495,10 +14822,10 @@ function SignOnlyScreen({
|
|
|
14495
14822
|
signError,
|
|
14496
14823
|
onEvent
|
|
14497
14824
|
}) {
|
|
14498
|
-
return /* @__PURE__ */ (0,
|
|
14499
|
-
/* @__PURE__ */ (0,
|
|
14500
|
-
signError && /* @__PURE__ */ (0,
|
|
14501
|
-
/* @__PURE__ */ (0,
|
|
14825
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
14826
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "As an entity investor, you must complete a W-8BEN-E to confirm your foreign tax status and claim applicable treaty benefits. You'll receive an email to complete the signing." }),
|
|
14827
|
+
signError && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(AlertBanner, { variant: "error", icon: true, content: signError }),
|
|
14828
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
14502
14829
|
ClButton,
|
|
14503
14830
|
{
|
|
14504
14831
|
fullWidth: true,
|
|
@@ -14512,12 +14839,12 @@ function SignOnlyScreen({
|
|
|
14512
14839
|
}
|
|
14513
14840
|
|
|
14514
14841
|
// src/client/hooks/requirements/tax-document/useTaxDocumentModalViewModel.ts
|
|
14515
|
-
var
|
|
14842
|
+
var import_react43 = require("react");
|
|
14516
14843
|
|
|
14517
14844
|
// src/client/hooks/requirements/data/useTaxDocument.ts
|
|
14518
|
-
var
|
|
14845
|
+
var import_react42 = require("react");
|
|
14519
14846
|
var IDLE_SIGN = { type: "idle", error: null };
|
|
14520
|
-
var
|
|
14847
|
+
var LOADING_STATE6 = { type: "LOADING" };
|
|
14521
14848
|
var SIGN_FAILED_MESSAGE = "Unable to sign document. Please try again.";
|
|
14522
14849
|
var DOB_INVALID_MESSAGE = "Enter your date of birth as MM/DD/YYYY.";
|
|
14523
14850
|
var FIELD_KEYS = {
|
|
@@ -14590,8 +14917,8 @@ function useTaxDocument({
|
|
|
14590
14917
|
}) {
|
|
14591
14918
|
const { coinlist, isReady } = useCoinList();
|
|
14592
14919
|
const log = useLogger("useTaxDocument");
|
|
14593
|
-
const [state, setState] = (0,
|
|
14594
|
-
(0,
|
|
14920
|
+
const [state, setState] = (0, import_react42.useState)(LOADING_STATE6);
|
|
14921
|
+
(0, import_react42.useEffect)(() => {
|
|
14595
14922
|
let isCancelled = false;
|
|
14596
14923
|
if (!isOpen) {
|
|
14597
14924
|
return () => {
|
|
@@ -14599,12 +14926,12 @@ function useTaxDocument({
|
|
|
14599
14926
|
};
|
|
14600
14927
|
}
|
|
14601
14928
|
if (!isReady) {
|
|
14602
|
-
setState(
|
|
14929
|
+
setState(LOADING_STATE6);
|
|
14603
14930
|
return () => {
|
|
14604
14931
|
isCancelled = true;
|
|
14605
14932
|
};
|
|
14606
14933
|
}
|
|
14607
|
-
setState(
|
|
14934
|
+
setState(LOADING_STATE6);
|
|
14608
14935
|
coinlist.requirements.getPii().then((pii) => {
|
|
14609
14936
|
if (isCancelled) return;
|
|
14610
14937
|
if (pii.kind === "company") {
|
|
@@ -14632,7 +14959,7 @@ function useTaxDocument({
|
|
|
14632
14959
|
isCancelled = true;
|
|
14633
14960
|
};
|
|
14634
14961
|
}, [coinlist, isReady, isOpen, log]);
|
|
14635
|
-
const onEditField = (0,
|
|
14962
|
+
const onEditField = (0, import_react42.useCallback)(
|
|
14636
14963
|
(field, value) => {
|
|
14637
14964
|
setState(
|
|
14638
14965
|
(prev) => prev.type === "EDITING" ? { ...prev, fields: { ...prev.fields, [field]: value } } : prev
|
|
@@ -14640,7 +14967,7 @@ function useTaxDocument({
|
|
|
14640
14967
|
},
|
|
14641
14968
|
[]
|
|
14642
14969
|
);
|
|
14643
|
-
const onStartEdit = (0,
|
|
14970
|
+
const onStartEdit = (0, import_react42.useCallback)(() => {
|
|
14644
14971
|
setState(
|
|
14645
14972
|
(prev) => prev.type === "REVIEW" ? {
|
|
14646
14973
|
type: "EDITING",
|
|
@@ -14651,7 +14978,7 @@ function useTaxDocument({
|
|
|
14651
14978
|
} : prev
|
|
14652
14979
|
);
|
|
14653
14980
|
}, []);
|
|
14654
|
-
const onSaveEdit = (0,
|
|
14981
|
+
const onSaveEdit = (0, import_react42.useCallback)(() => {
|
|
14655
14982
|
setState(
|
|
14656
14983
|
(prev) => prev.type === "EDITING" ? {
|
|
14657
14984
|
type: "REVIEW",
|
|
@@ -14662,7 +14989,7 @@ function useTaxDocument({
|
|
|
14662
14989
|
} : prev
|
|
14663
14990
|
);
|
|
14664
14991
|
}, []);
|
|
14665
|
-
const onCancelEdit = (0,
|
|
14992
|
+
const onCancelEdit = (0, import_react42.useCallback)(() => {
|
|
14666
14993
|
setState(
|
|
14667
14994
|
(prev) => prev.type === "EDITING" ? {
|
|
14668
14995
|
type: "REVIEW",
|
|
@@ -14673,7 +15000,7 @@ function useTaxDocument({
|
|
|
14673
15000
|
} : prev
|
|
14674
15001
|
);
|
|
14675
15002
|
}, []);
|
|
14676
|
-
const onSign = (0,
|
|
15003
|
+
const onSign = (0, import_react42.useCallback)(() => {
|
|
14677
15004
|
if (state.type !== "REVIEW" && state.type !== "SIGN_ONLY") return;
|
|
14678
15005
|
if (state.type === "REVIEW" && state.fields.dob.trim() !== "" && !isValidUsDate(state.fields.dob)) {
|
|
14679
15006
|
setState({
|
|
@@ -14715,19 +15042,19 @@ function useTaxDocumentModalViewModel({
|
|
|
14715
15042
|
onSubmitted
|
|
14716
15043
|
}) {
|
|
14717
15044
|
const { state, onEditField, onStartEdit, onSaveEdit, onCancelEdit, onSign } = useTaxDocument({ isOpen });
|
|
14718
|
-
(0,
|
|
15045
|
+
(0, import_react43.useEffect)(() => {
|
|
14719
15046
|
if (state.type === "SUBMITTED") {
|
|
14720
15047
|
onSubmitted?.(state.submission);
|
|
14721
15048
|
onClose();
|
|
14722
15049
|
}
|
|
14723
15050
|
}, [state]);
|
|
14724
|
-
const uiState = (0,
|
|
15051
|
+
const uiState = (0, import_react43.useMemo)(() => {
|
|
14725
15052
|
if (!isOpen || state.type === "SUBMITTED") {
|
|
14726
15053
|
return { type: "hidden" };
|
|
14727
15054
|
}
|
|
14728
15055
|
return { type: "content", title: toTitle(state), screen: toScreen(state) };
|
|
14729
15056
|
}, [isOpen, state]);
|
|
14730
|
-
const onEvent = (0,
|
|
15057
|
+
const onEvent = (0, import_react43.useCallback)(
|
|
14731
15058
|
(event) => {
|
|
14732
15059
|
switch (event.type) {
|
|
14733
15060
|
case "ON_CLOSE":
|
|
@@ -14810,7 +15137,7 @@ function toFieldsUi(fields) {
|
|
|
14810
15137
|
}
|
|
14811
15138
|
|
|
14812
15139
|
// src/client/components/requirements/tax-document/TaxDocumentModalContainer.tsx
|
|
14813
|
-
var
|
|
15140
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
14814
15141
|
function TaxDocumentModalContainer({
|
|
14815
15142
|
isOpen,
|
|
14816
15143
|
onClose,
|
|
@@ -14822,7 +15149,7 @@ function TaxDocumentModalContainer({
|
|
|
14822
15149
|
onClose,
|
|
14823
15150
|
onSubmitted
|
|
14824
15151
|
});
|
|
14825
|
-
return /* @__PURE__ */ (0,
|
|
15152
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
14826
15153
|
TaxDocumentModalView,
|
|
14827
15154
|
{
|
|
14828
15155
|
state,
|
|
@@ -14833,26 +15160,26 @@ function TaxDocumentModalContainer({
|
|
|
14833
15160
|
}
|
|
14834
15161
|
|
|
14835
15162
|
// src/client/components/requirements/VerificationOverlay.tsx
|
|
14836
|
-
var
|
|
15163
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
14837
15164
|
function VerificationOverlay({
|
|
14838
15165
|
onClose,
|
|
14839
15166
|
children
|
|
14840
15167
|
}) {
|
|
14841
|
-
return /* @__PURE__ */ (0,
|
|
15168
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(VerificationOverlayBody, { onClose, children }) });
|
|
14842
15169
|
}
|
|
14843
15170
|
function VerificationOverlayBody({
|
|
14844
15171
|
onClose,
|
|
14845
15172
|
children
|
|
14846
15173
|
}) {
|
|
14847
|
-
return /* @__PURE__ */ (0,
|
|
15174
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14848
15175
|
"div",
|
|
14849
15176
|
{
|
|
14850
15177
|
role: "dialog",
|
|
14851
15178
|
"aria-modal": "true",
|
|
14852
15179
|
"aria-label": "Identity verification",
|
|
14853
15180
|
className: "clcosdk:fixed clcosdk:inset-0 clcosdk:z-50 clcosdk:flex clcosdk:items-center clcosdk:justify-center clcosdk:bg-overlay clcosdk:p-4",
|
|
14854
|
-
children: /* @__PURE__ */ (0,
|
|
14855
|
-
/* @__PURE__ */ (0,
|
|
15181
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "clcosdk:relative clcosdk:flex clcosdk:max-h-[92vh] clcosdk:w-full clcosdk:max-w-[760px] clcosdk:flex-col clcosdk:overflow-y-auto clcosdk:rounded-2xl clcosdk:bg-background clcosdk:p-6 clcosdk:pt-14", children: [
|
|
15182
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
14856
15183
|
CloseButton,
|
|
14857
15184
|
{
|
|
14858
15185
|
onClick: onClose,
|
|
@@ -14866,18 +15193,18 @@ function VerificationOverlayBody({
|
|
|
14866
15193
|
}
|
|
14867
15194
|
|
|
14868
15195
|
// src/client/components/requirements/wallet/ConnectWalletModalView.tsx
|
|
14869
|
-
var
|
|
14870
|
-
var
|
|
15196
|
+
var import_react44 = require("react");
|
|
15197
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
14871
15198
|
function ConnectWalletModalView({
|
|
14872
15199
|
state,
|
|
14873
15200
|
onEvent,
|
|
14874
15201
|
className
|
|
14875
15202
|
}) {
|
|
14876
|
-
const titleId = (0,
|
|
15203
|
+
const titleId = (0, import_react44.useId)();
|
|
14877
15204
|
if (state.type === "hidden") {
|
|
14878
15205
|
return null;
|
|
14879
15206
|
}
|
|
14880
|
-
return /* @__PURE__ */ (0,
|
|
15207
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CoinListStyleScope, { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "clcosdk:fixed clcosdk:inset-0 clcosdk:z-50 clcosdk:flex clcosdk:items-center clcosdk:justify-center clcosdk:bg-black/50 clcosdk:p-4", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
|
|
14881
15208
|
"div",
|
|
14882
15209
|
{
|
|
14883
15210
|
role: "dialog",
|
|
@@ -14888,8 +15215,8 @@ function ConnectWalletModalView({
|
|
|
14888
15215
|
className
|
|
14889
15216
|
),
|
|
14890
15217
|
children: [
|
|
14891
|
-
/* @__PURE__ */ (0,
|
|
14892
|
-
/* @__PURE__ */ (0,
|
|
15218
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "clcosdk:flex clcosdk:items-start clcosdk:justify-between clcosdk:gap-4", children: [
|
|
15219
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14893
15220
|
"h3",
|
|
14894
15221
|
{
|
|
14895
15222
|
id: titleId,
|
|
@@ -14897,9 +15224,9 @@ function ConnectWalletModalView({
|
|
|
14897
15224
|
children: "Connect your wallet"
|
|
14898
15225
|
}
|
|
14899
15226
|
),
|
|
14900
|
-
/* @__PURE__ */ (0,
|
|
15227
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CloseButton, { onClick: () => onEvent({ type: "ON_CLOSE" }) })
|
|
14901
15228
|
] }),
|
|
14902
|
-
/* @__PURE__ */ (0,
|
|
15229
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14903
15230
|
Screen2,
|
|
14904
15231
|
{
|
|
14905
15232
|
screen: state.screen,
|
|
@@ -14918,9 +15245,9 @@ function Screen2({
|
|
|
14918
15245
|
}) {
|
|
14919
15246
|
switch (screen.type) {
|
|
14920
15247
|
case "needs-wallet":
|
|
14921
|
-
return /* @__PURE__ */ (0,
|
|
14922
|
-
/* @__PURE__ */ (0,
|
|
14923
|
-
canRequestConnect && /* @__PURE__ */ (0,
|
|
15248
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
15249
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Connect an external wallet to prove ownership and bind it to this offer." }),
|
|
15250
|
+
canRequestConnect && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14924
15251
|
ClButton,
|
|
14925
15252
|
{
|
|
14926
15253
|
fullWidth: true,
|
|
@@ -14930,23 +15257,23 @@ function Screen2({
|
|
|
14930
15257
|
)
|
|
14931
15258
|
] });
|
|
14932
15259
|
case "ready":
|
|
14933
|
-
return /* @__PURE__ */ (0,
|
|
14934
|
-
/* @__PURE__ */ (0,
|
|
14935
|
-
/* @__PURE__ */ (0,
|
|
14936
|
-
/* @__PURE__ */ (0,
|
|
15260
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-6", children: [
|
|
15261
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("p", { className: cn(typeClasses.body, "clcosdk:text-text-secondary"), children: "Sign a message with your connected wallet to prove you own it. This does not cost gas or move any funds." }),
|
|
15262
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-1 clcosdk:border-t clcosdk:border-divider clcosdk:pt-4", children: [
|
|
15263
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14937
15264
|
"span",
|
|
14938
15265
|
{
|
|
14939
15266
|
className: cn(typeClasses.label, "clcosdk:text-text-secondary"),
|
|
14940
15267
|
children: "Wallet address"
|
|
14941
15268
|
}
|
|
14942
15269
|
),
|
|
14943
|
-
/* @__PURE__ */ (0,
|
|
15270
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: cn(typeClasses.body, "clcosdk:text-text-primary"), children: screen.shortAddress })
|
|
14944
15271
|
] }),
|
|
14945
15272
|
screen.signError && // Live region: the error is inserted async after a failed attempt,
|
|
14946
15273
|
// so screen readers need it announced rather than silently
|
|
14947
15274
|
// rendered.
|
|
14948
|
-
/* @__PURE__ */ (0,
|
|
14949
|
-
/* @__PURE__ */ (0,
|
|
15275
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { role: "alert", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(AlertBanner, { variant: "error", icon: true, content: screen.signError }) }),
|
|
15276
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14950
15277
|
ClButton,
|
|
14951
15278
|
{
|
|
14952
15279
|
fullWidth: true,
|
|
@@ -14957,7 +15284,7 @@ function Screen2({
|
|
|
14957
15284
|
children: "Sign & connect"
|
|
14958
15285
|
}
|
|
14959
15286
|
),
|
|
14960
|
-
canRequestConnect && /* @__PURE__ */ (0,
|
|
15287
|
+
canRequestConnect && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
14961
15288
|
ClButton,
|
|
14962
15289
|
{
|
|
14963
15290
|
fullWidth: true,
|
|
@@ -14976,10 +15303,10 @@ function Screen2({
|
|
|
14976
15303
|
}
|
|
14977
15304
|
|
|
14978
15305
|
// src/client/hooks/requirements/wallet/useConnectWalletModalViewModel.ts
|
|
14979
|
-
var
|
|
15306
|
+
var import_react46 = require("react");
|
|
14980
15307
|
|
|
14981
15308
|
// src/client/hooks/requirements/data/useConnectWallet.ts
|
|
14982
|
-
var
|
|
15309
|
+
var import_react45 = require("react");
|
|
14983
15310
|
|
|
14984
15311
|
// src/client/core/wallets/connect-external-wallet.ts
|
|
14985
15312
|
var DEFAULT_STATEMENT = "Sign this message to prove you own this wallet. This does not cost gas or move funds.";
|
|
@@ -15110,24 +15437,24 @@ function useConnectWallet({
|
|
|
15110
15437
|
statement
|
|
15111
15438
|
}) {
|
|
15112
15439
|
const { coinlist } = useCoinList();
|
|
15113
|
-
const [state, setState] = (0,
|
|
15440
|
+
const [state, setState] = (0, import_react45.useState)(
|
|
15114
15441
|
() => wallet ? { type: "READY", address: wallet.address, sign: IDLE_SIGN2 } : { type: "NEEDS_WALLET" }
|
|
15115
15442
|
);
|
|
15116
|
-
const attempt = (0,
|
|
15117
|
-
(0,
|
|
15443
|
+
const attempt = (0, import_react45.useRef)(0);
|
|
15444
|
+
(0, import_react45.useEffect)(() => {
|
|
15118
15445
|
attempt.current += 1;
|
|
15119
15446
|
if (!isOpen) return;
|
|
15120
15447
|
setState(
|
|
15121
15448
|
wallet ? { type: "READY", address: wallet.address, sign: IDLE_SIGN2 } : { type: "NEEDS_WALLET" }
|
|
15122
15449
|
);
|
|
15123
15450
|
}, [isOpen, wallet?.address]);
|
|
15124
|
-
(0,
|
|
15451
|
+
(0, import_react45.useEffect)(
|
|
15125
15452
|
() => () => {
|
|
15126
15453
|
attempt.current += 1;
|
|
15127
15454
|
},
|
|
15128
15455
|
[]
|
|
15129
15456
|
);
|
|
15130
|
-
const onSign = (0,
|
|
15457
|
+
const onSign = (0, import_react45.useCallback)(() => {
|
|
15131
15458
|
if (!wallet || state.type !== "READY") return;
|
|
15132
15459
|
attempt.current += 1;
|
|
15133
15460
|
const gen = attempt.current;
|
|
@@ -15189,13 +15516,13 @@ function useConnectWalletModalViewModel({
|
|
|
15189
15516
|
challengeType,
|
|
15190
15517
|
statement
|
|
15191
15518
|
});
|
|
15192
|
-
(0,
|
|
15519
|
+
(0, import_react46.useEffect)(() => {
|
|
15193
15520
|
if (state.type === "CONNECTED") {
|
|
15194
15521
|
onConnected?.(state.binding);
|
|
15195
15522
|
onClose();
|
|
15196
15523
|
}
|
|
15197
15524
|
}, [state]);
|
|
15198
|
-
const uiState = (0,
|
|
15525
|
+
const uiState = (0, import_react46.useMemo)(() => {
|
|
15199
15526
|
if (!isOpen || state.type === "CONNECTED") {
|
|
15200
15527
|
return { type: "hidden" };
|
|
15201
15528
|
}
|
|
@@ -15220,7 +15547,7 @@ function useConnectWalletModalViewModel({
|
|
|
15220
15547
|
canRequestConnect
|
|
15221
15548
|
};
|
|
15222
15549
|
}, [isOpen, state, onRequestConnect]);
|
|
15223
|
-
const onEvent = (0,
|
|
15550
|
+
const onEvent = (0, import_react46.useCallback)(
|
|
15224
15551
|
(event) => {
|
|
15225
15552
|
switch (event.type) {
|
|
15226
15553
|
case "ON_CLOSE":
|
|
@@ -15244,13 +15571,13 @@ function useConnectWalletModalViewModel({
|
|
|
15244
15571
|
}
|
|
15245
15572
|
|
|
15246
15573
|
// src/client/components/requirements/wallet/ConnectWalletModalContainer.tsx
|
|
15247
|
-
var
|
|
15574
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
15248
15575
|
function ConnectWalletModalContainer({
|
|
15249
15576
|
className,
|
|
15250
15577
|
...options
|
|
15251
15578
|
}) {
|
|
15252
15579
|
const { state, onEvent } = useConnectWalletModalViewModel(options);
|
|
15253
|
-
return /* @__PURE__ */ (0,
|
|
15580
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
15254
15581
|
ConnectWalletModalView,
|
|
15255
15582
|
{
|
|
15256
15583
|
state,
|
|
@@ -15261,11 +15588,11 @@ function ConnectWalletModalContainer({
|
|
|
15261
15588
|
}
|
|
15262
15589
|
|
|
15263
15590
|
// src/client/hooks/requirements/useRequirementsChecklistViewModel.ts
|
|
15264
|
-
var
|
|
15591
|
+
var import_react49 = require("react");
|
|
15265
15592
|
|
|
15266
15593
|
// src/client/hooks/requirements/data/useOptionAddresses.ts
|
|
15267
|
-
var
|
|
15268
|
-
var
|
|
15594
|
+
var import_react47 = require("react");
|
|
15595
|
+
var LOADING_STATE7 = { type: "LOADING" };
|
|
15269
15596
|
var EMPTY_STATE = {
|
|
15270
15597
|
type: "CONTENT",
|
|
15271
15598
|
addresses: []
|
|
@@ -15274,19 +15601,19 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
15274
15601
|
const { coinlist, isReady } = useCoinList();
|
|
15275
15602
|
const log = useLogger("useOptionAddresses");
|
|
15276
15603
|
const { data, enabled = true } = options;
|
|
15277
|
-
const [addressesState, setAddressesState] = (0,
|
|
15278
|
-
data !== void 0 ? { type: "CONTENT", addresses: data } :
|
|
15604
|
+
const [addressesState, setAddressesState] = (0, import_react47.useState)(
|
|
15605
|
+
data !== void 0 ? { type: "CONTENT", addresses: data } : LOADING_STATE7
|
|
15279
15606
|
);
|
|
15280
|
-
const [fetchKey, setFetchKey] = (0,
|
|
15281
|
-
const refetch = (0,
|
|
15282
|
-
const disconnect = (0,
|
|
15607
|
+
const [fetchKey, setFetchKey] = (0, import_react47.useState)(0);
|
|
15608
|
+
const refetch = (0, import_react47.useCallback)(() => setFetchKey((k) => k + 1), []);
|
|
15609
|
+
const disconnect = (0, import_react47.useCallback)(
|
|
15283
15610
|
async (addressId) => {
|
|
15284
15611
|
await coinlist.wallets.remove({ offerId, addressId });
|
|
15285
15612
|
refetch();
|
|
15286
15613
|
},
|
|
15287
15614
|
[coinlist, offerId, refetch]
|
|
15288
15615
|
);
|
|
15289
|
-
(0,
|
|
15616
|
+
(0, import_react47.useEffect)(() => {
|
|
15290
15617
|
let isCancelled = false;
|
|
15291
15618
|
if (!enabled) {
|
|
15292
15619
|
setAddressesState(
|
|
@@ -15298,7 +15625,7 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
15298
15625
|
}
|
|
15299
15626
|
if (!isReady) {
|
|
15300
15627
|
if (data === void 0) {
|
|
15301
|
-
setAddressesState(
|
|
15628
|
+
setAddressesState(LOADING_STATE7);
|
|
15302
15629
|
}
|
|
15303
15630
|
return () => {
|
|
15304
15631
|
isCancelled = true;
|
|
@@ -15315,7 +15642,7 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
15315
15642
|
isCancelled = true;
|
|
15316
15643
|
};
|
|
15317
15644
|
}
|
|
15318
|
-
setAddressesState(
|
|
15645
|
+
setAddressesState(LOADING_STATE7);
|
|
15319
15646
|
coinlist.wallets.list({ offerId, offerOptionId }).then((addresses) => {
|
|
15320
15647
|
if (!isCancelled) {
|
|
15321
15648
|
log.debug(() => ({
|
|
@@ -15342,18 +15669,18 @@ function useOptionAddresses(offerId, offerOptionId, options = {}) {
|
|
|
15342
15669
|
}
|
|
15343
15670
|
|
|
15344
15671
|
// src/client/hooks/requirements/data/useRequirements.ts
|
|
15345
|
-
var
|
|
15346
|
-
var
|
|
15672
|
+
var import_react48 = require("react");
|
|
15673
|
+
var LOADING_STATE8 = { type: "LOADING" };
|
|
15347
15674
|
function useRequirements(offerId, options = {}) {
|
|
15348
15675
|
const { coinlist, isReady } = useCoinList();
|
|
15349
15676
|
const log = useLogger("useRequirements");
|
|
15350
15677
|
const { data, enabled = true } = options;
|
|
15351
|
-
const [requirementsState, setRequirementsState] = (0,
|
|
15352
|
-
data !== void 0 ? { type: "CONTENT", ...data } :
|
|
15678
|
+
const [requirementsState, setRequirementsState] = (0, import_react48.useState)(
|
|
15679
|
+
data !== void 0 ? { type: "CONTENT", ...data } : LOADING_STATE8
|
|
15353
15680
|
);
|
|
15354
|
-
const [fetchKey, setFetchKey] = (0,
|
|
15355
|
-
const refetch = (0,
|
|
15356
|
-
(0,
|
|
15681
|
+
const [fetchKey, setFetchKey] = (0, import_react48.useState)(0);
|
|
15682
|
+
const refetch = (0, import_react48.useCallback)(() => setFetchKey((k) => k + 1), []);
|
|
15683
|
+
(0, import_react48.useEffect)(() => {
|
|
15357
15684
|
let isCancelled = false;
|
|
15358
15685
|
if (!enabled) {
|
|
15359
15686
|
return () => {
|
|
@@ -15362,7 +15689,7 @@ function useRequirements(offerId, options = {}) {
|
|
|
15362
15689
|
}
|
|
15363
15690
|
if (!isReady) {
|
|
15364
15691
|
if (data === void 0) {
|
|
15365
|
-
setRequirementsState(
|
|
15692
|
+
setRequirementsState(LOADING_STATE8);
|
|
15366
15693
|
}
|
|
15367
15694
|
return () => {
|
|
15368
15695
|
isCancelled = true;
|
|
@@ -15379,7 +15706,7 @@ function useRequirements(offerId, options = {}) {
|
|
|
15379
15706
|
isCancelled = true;
|
|
15380
15707
|
};
|
|
15381
15708
|
}
|
|
15382
|
-
setRequirementsState(
|
|
15709
|
+
setRequirementsState(LOADING_STATE8);
|
|
15383
15710
|
Promise.all([
|
|
15384
15711
|
coinlist.requirements.forOffer(offerId),
|
|
15385
15712
|
coinlist.requirements.statuses(offerId)
|
|
@@ -15513,19 +15840,19 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15513
15840
|
data,
|
|
15514
15841
|
enabled
|
|
15515
15842
|
});
|
|
15516
|
-
const [expandedId, setExpandedId] = (0,
|
|
15517
|
-
const [taxDocumentOpen, setTaxDocumentOpen] = (0,
|
|
15518
|
-
const [connectWalletOpen, setConnectWalletOpen] = (0,
|
|
15519
|
-
const [verifyingRequirementId, setVerifyingRequirementId] = (0,
|
|
15520
|
-
const isMountedRef = (0,
|
|
15521
|
-
(0,
|
|
15843
|
+
const [expandedId, setExpandedId] = (0, import_react49.useState)(null);
|
|
15844
|
+
const [taxDocumentOpen, setTaxDocumentOpen] = (0, import_react49.useState)(false);
|
|
15845
|
+
const [connectWalletOpen, setConnectWalletOpen] = (0, import_react49.useState)(false);
|
|
15846
|
+
const [verifyingRequirementId, setVerifyingRequirementId] = (0, import_react49.useState)(null);
|
|
15847
|
+
const isMountedRef = (0, import_react49.useRef)(true);
|
|
15848
|
+
(0, import_react49.useEffect)(() => {
|
|
15522
15849
|
isMountedRef.current = true;
|
|
15523
15850
|
return () => {
|
|
15524
15851
|
isMountedRef.current = false;
|
|
15525
15852
|
};
|
|
15526
15853
|
}, []);
|
|
15527
|
-
const [hasWalletRequirement, setHasWalletRequirement] = (0,
|
|
15528
|
-
(0,
|
|
15854
|
+
const [hasWalletRequirement, setHasWalletRequirement] = (0, import_react49.useState)(false);
|
|
15855
|
+
(0, import_react49.useEffect)(() => {
|
|
15529
15856
|
if (requirementsState.type === "CONTENT") {
|
|
15530
15857
|
setHasWalletRequirement(
|
|
15531
15858
|
(requirementsState.requirements[optionId] ?? []).some(
|
|
@@ -15541,14 +15868,14 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15541
15868
|
} = useOptionAddresses(offerId, optionId, {
|
|
15542
15869
|
enabled: enabled && hasWalletRequirement
|
|
15543
15870
|
});
|
|
15544
|
-
const removeWallet = (0,
|
|
15871
|
+
const removeWallet = (0, import_react49.useCallback)(
|
|
15545
15872
|
async (addressId) => {
|
|
15546
15873
|
await disconnect(OfferOptionAddressId(addressId));
|
|
15547
15874
|
refetch();
|
|
15548
15875
|
},
|
|
15549
15876
|
[disconnect, refetch]
|
|
15550
15877
|
);
|
|
15551
|
-
const awaitVerificationResult = (0,
|
|
15878
|
+
const awaitVerificationResult = (0, import_react49.useCallback)(
|
|
15552
15879
|
(requirementId, statusBeforeSubmit) => {
|
|
15553
15880
|
void (async () => {
|
|
15554
15881
|
const deadline = Date.now() + VERIFICATION_POLL_TIMEOUT_MS;
|
|
@@ -15575,11 +15902,11 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15575
15902
|
},
|
|
15576
15903
|
[coinlist, offerId, refetch, log]
|
|
15577
15904
|
);
|
|
15578
|
-
const requirements = (0,
|
|
15905
|
+
const requirements = (0, import_react49.useMemo)(
|
|
15579
15906
|
() => requirementsState.type === "CONTENT" ? requirementsState.requirements[optionId] ?? [] : [],
|
|
15580
15907
|
[requirementsState, optionId]
|
|
15581
15908
|
);
|
|
15582
|
-
const statusById = (0,
|
|
15909
|
+
const statusById = (0, import_react49.useMemo)(() => {
|
|
15583
15910
|
if (requirementsState.type !== "CONTENT") {
|
|
15584
15911
|
return /* @__PURE__ */ new Map();
|
|
15585
15912
|
}
|
|
@@ -15588,7 +15915,7 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15588
15915
|
requirementsState.statuses.filter((s) => ids.has(s.id)).map((s) => [s.id, s])
|
|
15589
15916
|
);
|
|
15590
15917
|
}, [requirementsState, requirements]);
|
|
15591
|
-
const state = (0,
|
|
15918
|
+
const state = (0, import_react49.useMemo)(() => {
|
|
15592
15919
|
switch (requirementsState.type) {
|
|
15593
15920
|
case "LOADING":
|
|
15594
15921
|
return { type: "loading" };
|
|
@@ -15657,7 +15984,7 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15657
15984
|
identityVerificationOptions,
|
|
15658
15985
|
removeWallet
|
|
15659
15986
|
]);
|
|
15660
|
-
const handleRequirementAction = (0,
|
|
15987
|
+
const handleRequirementAction = (0, import_react49.useCallback)(
|
|
15661
15988
|
(requirement) => {
|
|
15662
15989
|
const inlineVerification = statusById.get(requirement.id)?.kycLevel !== void 0 && onRequirementActionOverride === void 0;
|
|
15663
15990
|
if (inlineVerification) {
|
|
@@ -15689,7 +16016,7 @@ function useRequirementsChecklistViewModel(options) {
|
|
|
15689
16016
|
coinlist
|
|
15690
16017
|
]
|
|
15691
16018
|
);
|
|
15692
|
-
const onEvent = (0,
|
|
16019
|
+
const onEvent = (0, import_react49.useCallback)(
|
|
15693
16020
|
(event) => {
|
|
15694
16021
|
switch (event.type) {
|
|
15695
16022
|
case "ON_TOGGLE_ITEM":
|
|
@@ -15787,7 +16114,7 @@ function toVerificationUi(verifyingRequirementId, statusById, identityVerificati
|
|
|
15787
16114
|
}
|
|
15788
16115
|
|
|
15789
16116
|
// src/client/components/requirements/RequirementsChecklistContainer.tsx
|
|
15790
|
-
var
|
|
16117
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
15791
16118
|
function RequirementsChecklistContainer({
|
|
15792
16119
|
loading,
|
|
15793
16120
|
error,
|
|
@@ -15800,8 +16127,8 @@ function RequirementsChecklistContainer({
|
|
|
15800
16127
|
...options,
|
|
15801
16128
|
enabled
|
|
15802
16129
|
});
|
|
15803
|
-
return /* @__PURE__ */ (0,
|
|
15804
|
-
/* @__PURE__ */ (0,
|
|
16130
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_jsx_runtime68.Fragment, { children: [
|
|
16131
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15805
16132
|
RequirementsChecklistView,
|
|
15806
16133
|
{
|
|
15807
16134
|
state,
|
|
@@ -15811,13 +16138,13 @@ function RequirementsChecklistContainer({
|
|
|
15811
16138
|
unauthenticatedState: (
|
|
15812
16139
|
// The sign-in default lives here, not in the View: it is a connected
|
|
15813
16140
|
// component, and a View must render from what it is handed.
|
|
15814
|
-
unauthenticatedState !== void 0 ? unauthenticatedState : /* @__PURE__ */ (0,
|
|
16141
|
+
unauthenticatedState !== void 0 ? unauthenticatedState : /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(CoinListSignInCardContainer, {})
|
|
15815
16142
|
),
|
|
15816
16143
|
className
|
|
15817
16144
|
}
|
|
15818
16145
|
),
|
|
15819
|
-
state.type === "content" && /* @__PURE__ */ (0,
|
|
15820
|
-
/* @__PURE__ */ (0,
|
|
16146
|
+
state.type === "content" && /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_jsx_runtime68.Fragment, { children: [
|
|
16147
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15821
16148
|
TaxDocumentModalContainer,
|
|
15822
16149
|
{
|
|
15823
16150
|
isOpen: state.taxDocumentOpen,
|
|
@@ -15825,11 +16152,11 @@ function RequirementsChecklistContainer({
|
|
|
15825
16152
|
onSubmitted: () => onEvent({ type: "ON_TAX_DOCUMENT_SUBMITTED" })
|
|
15826
16153
|
}
|
|
15827
16154
|
),
|
|
15828
|
-
state.verification && /* @__PURE__ */ (0,
|
|
16155
|
+
state.verification && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15829
16156
|
VerificationOverlay,
|
|
15830
16157
|
{
|
|
15831
16158
|
onClose: () => onEvent({ type: "ON_CLOSE_VERIFICATION" }),
|
|
15832
|
-
children: /* @__PURE__ */ (0,
|
|
16159
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15833
16160
|
IdentityVerificationContainer,
|
|
15834
16161
|
{
|
|
15835
16162
|
levelName: state.verification.levelName,
|
|
@@ -15840,7 +16167,7 @@ function RequirementsChecklistContainer({
|
|
|
15840
16167
|
)
|
|
15841
16168
|
}
|
|
15842
16169
|
),
|
|
15843
|
-
/* @__PURE__ */ (0,
|
|
16170
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
15844
16171
|
ConnectWalletModalContainer,
|
|
15845
16172
|
{
|
|
15846
16173
|
isOpen: state.connectWalletOpen,
|
|
@@ -16001,18 +16328,18 @@ function pinoClientLogger(options) {
|
|
|
16001
16328
|
}
|
|
16002
16329
|
|
|
16003
16330
|
// src/client/hooks/auth/useCompleteOAuth.ts
|
|
16004
|
-
var
|
|
16331
|
+
var import_react50 = require("react");
|
|
16005
16332
|
function useCompleteOAuth(options) {
|
|
16006
16333
|
const { coinlist } = useCoinList();
|
|
16007
16334
|
const log = useLogger("useCompleteOAuth");
|
|
16008
|
-
const postOAuthCompleteRef = (0,
|
|
16009
|
-
const onFailureRef = (0,
|
|
16010
|
-
const onSuccessRef = (0,
|
|
16335
|
+
const postOAuthCompleteRef = (0, import_react50.useRef)(options.postOAuthComplete);
|
|
16336
|
+
const onFailureRef = (0, import_react50.useRef)(options.onFailure);
|
|
16337
|
+
const onSuccessRef = (0, import_react50.useRef)(options.onSuccess);
|
|
16011
16338
|
postOAuthCompleteRef.current = options.postOAuthComplete;
|
|
16012
16339
|
onFailureRef.current = options.onFailure;
|
|
16013
16340
|
onSuccessRef.current = options.onSuccess;
|
|
16014
|
-
const hasStartedExchangeRef = (0,
|
|
16015
|
-
(0,
|
|
16341
|
+
const hasStartedExchangeRef = (0, import_react50.useRef)(false);
|
|
16342
|
+
(0, import_react50.useEffect)(() => {
|
|
16016
16343
|
if (typeof window === "undefined") return;
|
|
16017
16344
|
const params = new URLSearchParams(window.location.search);
|
|
16018
16345
|
if (!params.has("code") && !params.has("error")) return;
|
|
@@ -16076,16 +16403,16 @@ function useCompleteOAuth(options) {
|
|
|
16076
16403
|
}
|
|
16077
16404
|
|
|
16078
16405
|
// src/client/hooks/checkout/coin-list/token-sale/data/useParticipations.ts
|
|
16079
|
-
var
|
|
16080
|
-
var
|
|
16406
|
+
var import_react51 = require("react");
|
|
16407
|
+
var LOADING_STATE9 = { type: "LOADING" };
|
|
16081
16408
|
function useParticipations(offerId, options = {}) {
|
|
16082
16409
|
const { coinlist, isReady } = useCoinList();
|
|
16083
16410
|
const log = useLogger("useParticipations");
|
|
16084
16411
|
const { data, enabled = true } = options;
|
|
16085
|
-
const [participationsState, setParticipationsState] = (0,
|
|
16086
|
-
data !== void 0 ? { type: "CONTENT", participations: data } :
|
|
16412
|
+
const [participationsState, setParticipationsState] = (0, import_react51.useState)(
|
|
16413
|
+
data !== void 0 ? { type: "CONTENT", participations: data } : LOADING_STATE9
|
|
16087
16414
|
);
|
|
16088
|
-
(0,
|
|
16415
|
+
(0, import_react51.useEffect)(() => {
|
|
16089
16416
|
let isCancelled = false;
|
|
16090
16417
|
if (!enabled) {
|
|
16091
16418
|
return () => {
|
|
@@ -16094,7 +16421,7 @@ function useParticipations(offerId, options = {}) {
|
|
|
16094
16421
|
}
|
|
16095
16422
|
if (!isReady) {
|
|
16096
16423
|
if (data === void 0) {
|
|
16097
|
-
setParticipationsState(
|
|
16424
|
+
setParticipationsState(LOADING_STATE9);
|
|
16098
16425
|
}
|
|
16099
16426
|
return () => {
|
|
16100
16427
|
isCancelled = true;
|
|
@@ -16105,7 +16432,7 @@ function useParticipations(offerId, options = {}) {
|
|
|
16105
16432
|
isCancelled = true;
|
|
16106
16433
|
};
|
|
16107
16434
|
}
|
|
16108
|
-
setParticipationsState(
|
|
16435
|
+
setParticipationsState(LOADING_STATE9);
|
|
16109
16436
|
coinlist.tokenSale.list(offerId).then((participations) => {
|
|
16110
16437
|
if (!isCancelled) {
|
|
16111
16438
|
log.debug(() => ({
|
|
@@ -16132,16 +16459,16 @@ function useParticipations(offerId, options = {}) {
|
|
|
16132
16459
|
}
|
|
16133
16460
|
|
|
16134
16461
|
// src/client/hooks/offers/data/useOfferDetails.ts
|
|
16135
|
-
var
|
|
16136
|
-
var
|
|
16462
|
+
var import_react52 = require("react");
|
|
16463
|
+
var LOADING_STATE10 = { type: "LOADING" };
|
|
16137
16464
|
function useOfferDetails(offerId, options = {}) {
|
|
16138
16465
|
const { coinlist, isReady } = useCoinList();
|
|
16139
16466
|
const log = useLogger("useOfferDetails");
|
|
16140
16467
|
const { data, enabled = true } = options;
|
|
16141
|
-
const [offerDetailsState, setOfferDetailsState] = (0,
|
|
16142
|
-
data !== void 0 ? { type: "CONTENT", offerDetail: data } :
|
|
16468
|
+
const [offerDetailsState, setOfferDetailsState] = (0, import_react52.useState)(
|
|
16469
|
+
data !== void 0 ? { type: "CONTENT", offerDetail: data } : LOADING_STATE10
|
|
16143
16470
|
);
|
|
16144
|
-
(0,
|
|
16471
|
+
(0, import_react52.useEffect)(() => {
|
|
16145
16472
|
let isCancelled = false;
|
|
16146
16473
|
if (!enabled) {
|
|
16147
16474
|
return () => {
|
|
@@ -16150,7 +16477,7 @@ function useOfferDetails(offerId, options = {}) {
|
|
|
16150
16477
|
}
|
|
16151
16478
|
if (!isReady) {
|
|
16152
16479
|
if (data === void 0) {
|
|
16153
|
-
setOfferDetailsState(
|
|
16480
|
+
setOfferDetailsState(LOADING_STATE10);
|
|
16154
16481
|
}
|
|
16155
16482
|
return () => {
|
|
16156
16483
|
isCancelled = true;
|
|
@@ -16161,7 +16488,7 @@ function useOfferDetails(offerId, options = {}) {
|
|
|
16161
16488
|
isCancelled = true;
|
|
16162
16489
|
};
|
|
16163
16490
|
}
|
|
16164
|
-
setOfferDetailsState(
|
|
16491
|
+
setOfferDetailsState(LOADING_STATE10);
|
|
16165
16492
|
coinlist.offers.get(offerId).then((offerDetail) => {
|
|
16166
16493
|
if (!isCancelled) {
|
|
16167
16494
|
log.debug(() => ({
|
|
@@ -16189,15 +16516,23 @@ function useOfferDetails(offerId, options = {}) {
|
|
|
16189
16516
|
|
|
16190
16517
|
// src/client/hooks/offers/shared/offer-asset-card.types.ts
|
|
16191
16518
|
var OfferAssetCardUi = {
|
|
16192
|
-
|
|
16519
|
+
/**
|
|
16520
|
+
* `tokenMetadata` is the registry's entry for the token the offer is about
|
|
16521
|
+
* (`TokenRegistrySnapshot.forOffer`), or `null` when it lists none. The
|
|
16522
|
+
* registry names win over the offer's own where both exist: they are the
|
|
16523
|
+
* token's canonical name, ticker and artwork, where the offer's are
|
|
16524
|
+
* catalogue copy.
|
|
16525
|
+
*/
|
|
16526
|
+
fromOffer: (offer, tokenMetadata = null) => ({
|
|
16193
16527
|
id: offer.id,
|
|
16194
|
-
|
|
16528
|
+
...tokenMetadata ? { name: tokenMetadata.name, symbol: String(tokenMetadata.symbol) } : {},
|
|
16529
|
+
logo: OfferLogoUi.fromOffer(offer, tokenMetadata)
|
|
16195
16530
|
}),
|
|
16196
|
-
fromDetail: (detail) => ({
|
|
16531
|
+
fromDetail: (detail, tokenMetadata = null) => ({
|
|
16197
16532
|
id: detail.id,
|
|
16198
|
-
name: detail.name,
|
|
16199
|
-
symbol: detail.asset.code,
|
|
16200
|
-
|
|
16533
|
+
name: tokenMetadata?.name ?? detail.name,
|
|
16534
|
+
symbol: tokenMetadata ? String(tokenMetadata.symbol) : detail.asset.code,
|
|
16535
|
+
logo: OfferLogoUi.fromOffer(detail, tokenMetadata)
|
|
16201
16536
|
})
|
|
16202
16537
|
};
|
|
16203
16538
|
|
|
@@ -16240,6 +16575,7 @@ function formatMonthYear(date, locale) {
|
|
|
16240
16575
|
OAUTH_STATE_KEY,
|
|
16241
16576
|
OfferAssetCard,
|
|
16242
16577
|
OfferAssetCardUi,
|
|
16578
|
+
OfferLogoUi,
|
|
16243
16579
|
OfferSaleCard,
|
|
16244
16580
|
OfferSaleCardUi,
|
|
16245
16581
|
OffersAssetGrid,
|
|
@@ -16301,6 +16637,7 @@ function formatMonthYear(date, locale) {
|
|
|
16301
16637
|
quoteOverAsks,
|
|
16302
16638
|
stablecoinIconUrl,
|
|
16303
16639
|
submitErc20Approval,
|
|
16640
|
+
tokenLogoSrcSet,
|
|
16304
16641
|
tokenLogoUrl,
|
|
16305
16642
|
tokenMetadataOf,
|
|
16306
16643
|
useCheckoutOfferTokenMetadata,
|
|
@@ -16343,6 +16680,7 @@ function formatMonthYear(date, locale) {
|
|
|
16343
16680
|
useTaxDocument,
|
|
16344
16681
|
useTaxDocumentModalViewModel,
|
|
16345
16682
|
useTokenMetadata,
|
|
16683
|
+
useTokenRegistry,
|
|
16346
16684
|
validateAmount,
|
|
16347
16685
|
validateSellAmount,
|
|
16348
16686
|
validateSuperstateAmount
|