@coinlist-co/react 0.12.2-rc.7b430dd → 0.12.2-rc.abd9d38
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-DCW7NQXH.js → chunk-45LAPB7U.js} +52 -19
- package/dist/chunk-45LAPB7U.js.map +1 -0
- package/dist/{chunk-MOE5S6CE.js → chunk-HDJEDOS4.js} +114 -4
- package/dist/chunk-HDJEDOS4.js.map +1 -0
- package/dist/{chunk-VH34YC3Q.js → chunk-M7WDZZPX.js} +11 -2
- package/dist/chunk-M7WDZZPX.js.map +1 -0
- package/dist/client/index.cjs +396 -107
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +102 -34
- package/dist/client/index.d.ts +102 -34
- package/dist/client/index.js +292 -113
- package/dist/client/index.js.map +1 -1
- package/dist/server/index.cjs +442 -80
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +65 -41
- package/dist/server/index.d.ts +65 -41
- package/dist/server/index.js +321 -65
- package/dist/server/index.js.map +1 -1
- package/dist/time-BOCS1TbH.d.cts +50 -0
- package/dist/time-C7mhO5_a.d.ts +50 -0
- package/dist/{token-registry-snapshot-BNBNuDu1.d.ts → token-registry-snapshot-C-Qs3Lgs.d.ts} +1 -1
- package/dist/{token-registry-snapshot-CqI6dXM_.d.cts → token-registry-snapshot-CpzLmsc2.d.cts} +1 -1
- package/dist/{tokens-namespace-CIWBtgt2.d.cts → tokens-namespace-DrwRi0AQ.d.cts} +64 -1
- package/dist/{tokens-namespace-CIWBtgt2.d.ts → tokens-namespace-DrwRi0AQ.d.ts} +64 -1
- package/dist/universal/index.cjs +110 -3
- package/dist/universal/index.cjs.map +1 -1
- package/dist/universal/index.d.cts +43 -5
- package/dist/universal/index.d.ts +43 -5
- package/dist/universal/index.js +16 -2
- package/package.json +1 -1
- package/dist/chunk-DCW7NQXH.js.map +0 -1
- package/dist/chunk-MOE5S6CE.js.map +0 -1
- package/dist/chunk-VH34YC3Q.js.map +0 -1
package/dist/client/index.js
CHANGED
|
@@ -4,8 +4,10 @@ import {
|
|
|
4
4
|
PINO_LEVEL,
|
|
5
5
|
SDK_LOGGER_NAME,
|
|
6
6
|
loggerOverPino,
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
notifySessionExpired,
|
|
8
|
+
publicClients,
|
|
9
|
+
systemDelay
|
|
10
|
+
} from "../chunk-45LAPB7U.js";
|
|
9
11
|
import {
|
|
10
12
|
AuthorizationCode,
|
|
11
13
|
CodeVerifier,
|
|
@@ -34,12 +36,13 @@ import {
|
|
|
34
36
|
decodeSwappedOutputAmount,
|
|
35
37
|
formattedPricePerShare,
|
|
36
38
|
generatePKCEParams,
|
|
39
|
+
isOndoNotTradableError,
|
|
37
40
|
isSwapAvailable,
|
|
38
41
|
offerDisplayTokens,
|
|
39
42
|
ondoQuoteOfferDeadline,
|
|
40
43
|
superstateSwapContractAddress,
|
|
41
44
|
swapSpender
|
|
42
|
-
} from "../chunk-
|
|
45
|
+
} from "../chunk-M7WDZZPX.js";
|
|
43
46
|
import {
|
|
44
47
|
API_VERSION,
|
|
45
48
|
AssetDecimals,
|
|
@@ -58,6 +61,7 @@ import {
|
|
|
58
61
|
HEADER_USER_AGENT,
|
|
59
62
|
HttpError,
|
|
60
63
|
KycToken,
|
|
64
|
+
Millis,
|
|
61
65
|
NA_AMOUNT_ASSET_UI,
|
|
62
66
|
NotAuthenticatedError,
|
|
63
67
|
OAUTH_PAGE_PATH,
|
|
@@ -67,6 +71,7 @@ import {
|
|
|
67
71
|
RequirementsNamespaceImpl,
|
|
68
72
|
SUPERSTATE_SWAP_ABI,
|
|
69
73
|
SUPPORT_NEW_TICKET_URL,
|
|
74
|
+
SentWith,
|
|
70
75
|
SuperstateSwapNamespaceImpl,
|
|
71
76
|
TokensNamespaceImpl,
|
|
72
77
|
VERIFY_IDENTITY_ACCREDITATION_PATH,
|
|
@@ -80,15 +85,17 @@ import {
|
|
|
80
85
|
formatAmount,
|
|
81
86
|
formatBpsAsPercent,
|
|
82
87
|
formatRawAmount,
|
|
88
|
+
formatShareAmount,
|
|
83
89
|
formattedUsdPrice,
|
|
84
90
|
getNetworkName,
|
|
85
91
|
getUUIDv4,
|
|
86
92
|
internalLogger,
|
|
93
|
+
isRejectedToken,
|
|
87
94
|
parseBlockchainAmount,
|
|
88
95
|
shortenAddress,
|
|
89
96
|
txExplorerUrl,
|
|
90
97
|
usdAmount
|
|
91
|
-
} from "../chunk-
|
|
98
|
+
} from "../chunk-HDJEDOS4.js";
|
|
92
99
|
|
|
93
100
|
// src/client/CoinListProvider.tsx
|
|
94
101
|
import {
|
|
@@ -148,6 +155,159 @@ var ApiClient = class {
|
|
|
148
155
|
}
|
|
149
156
|
};
|
|
150
157
|
|
|
158
|
+
// src/client/core/auth/client-access-token.ts
|
|
159
|
+
var CONFIRM_DELAY = Millis.of(1e3);
|
|
160
|
+
var Generation = {
|
|
161
|
+
initial: 0,
|
|
162
|
+
next: (generation) => generation + 1
|
|
163
|
+
};
|
|
164
|
+
var ClientAccessToken = class {
|
|
165
|
+
constructor(env) {
|
|
166
|
+
this.env = env;
|
|
167
|
+
this.state = { type: "unknown" };
|
|
168
|
+
this.hostCall = null;
|
|
169
|
+
/**
|
|
170
|
+
* Bumped by {@link clear}. A host call that started before a logout must not
|
|
171
|
+
* log the user back in when it lands, so every write checks it first. A 401
|
|
172
|
+
* that arrives after the logout never starts one: `'logged-out'` refuses it.
|
|
173
|
+
*/
|
|
174
|
+
this.generation = Generation.initial;
|
|
175
|
+
this.log = internalLogger(env.logger, "AUTH").child({
|
|
176
|
+
op: "getAccessToken"
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
authState() {
|
|
180
|
+
return this.state.type;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Asks the host for the current token, whatever is cached.
|
|
184
|
+
*
|
|
185
|
+
* Never answers from a host call already in flight: one started before a
|
|
186
|
+
* login (the mount's `init()`, racing the OAuth callback's) would hand back
|
|
187
|
+
* the answer from before the session cookie existed. It waits for that call
|
|
188
|
+
* to settle instead, so that call's verdict still lands, then asks afresh.
|
|
189
|
+
* A logout while it waits still wins.
|
|
190
|
+
*
|
|
191
|
+
* @throws whatever the host's `getAccessToken` throws.
|
|
192
|
+
*/
|
|
193
|
+
async load() {
|
|
194
|
+
const generation = this.generation;
|
|
195
|
+
if (this.hostCall !== null) {
|
|
196
|
+
await this.hostCall.catch(() => null);
|
|
197
|
+
}
|
|
198
|
+
await this.ask(SentWith.noUserToken, generation);
|
|
199
|
+
return this.authState();
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* The HTTP pipeline's token source: see {@link TokenTrigger}.
|
|
203
|
+
*
|
|
204
|
+
* @throws whatever the host's `getAccessToken` throws.
|
|
205
|
+
*/
|
|
206
|
+
async get(trigger) {
|
|
207
|
+
const decision = decideToken(this.state, trigger);
|
|
208
|
+
switch (decision.type) {
|
|
209
|
+
case "serve":
|
|
210
|
+
return decision.token;
|
|
211
|
+
case "ask":
|
|
212
|
+
return this.ask(decision.rejected, this.generation);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/** Forgets the token: `auth.logout()`. Never an expiry, so never notifies. */
|
|
216
|
+
clear() {
|
|
217
|
+
this.generation = Generation.next(this.generation);
|
|
218
|
+
this.hostCall = null;
|
|
219
|
+
this.state = { type: "logged-out" };
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* A request that carried no user token was not refused for a token, so the
|
|
223
|
+
* host's first answer stands. One that was is confirmed before it is
|
|
224
|
+
* believed.
|
|
225
|
+
*/
|
|
226
|
+
async ask(rejected, generation) {
|
|
227
|
+
if (generation !== this.generation) {
|
|
228
|
+
return currentToken(this.state);
|
|
229
|
+
}
|
|
230
|
+
const first = await this.callHost();
|
|
231
|
+
switch (rejected.type) {
|
|
232
|
+
case "no-user-token":
|
|
233
|
+
return this.commit(first, generation);
|
|
234
|
+
case "user-token":
|
|
235
|
+
return isFresh(first, rejected) ? this.commit(first, generation) : this.confirm(rejected, generation);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
async confirm(rejected, generation) {
|
|
239
|
+
this.log.warn(() => ({
|
|
240
|
+
msg: "host returned no fresh token; asking again before signing out"
|
|
241
|
+
}));
|
|
242
|
+
await this.env.delay(CONFIRM_DELAY);
|
|
243
|
+
const second = await this.callHost();
|
|
244
|
+
return isFresh(second, rejected) ? this.commit(second, generation) : this.expire(generation);
|
|
245
|
+
}
|
|
246
|
+
/** The host's `getAccessToken`, joining a call already in flight. */
|
|
247
|
+
callHost() {
|
|
248
|
+
if (this.hostCall !== null) {
|
|
249
|
+
this.log.debug(() => ({ msg: "joined a host call already in flight" }));
|
|
250
|
+
return this.hostCall;
|
|
251
|
+
}
|
|
252
|
+
const call = (async () => this.env.getAccessToken())().finally(() => {
|
|
253
|
+
if (this.hostCall === call) {
|
|
254
|
+
this.hostCall = null;
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
this.hostCall = call;
|
|
258
|
+
return call;
|
|
259
|
+
}
|
|
260
|
+
commit(token, generation) {
|
|
261
|
+
if (generation !== this.generation) {
|
|
262
|
+
return currentToken(this.state);
|
|
263
|
+
}
|
|
264
|
+
this.state = token === null ? { type: "logged-out" } : { type: "logged-in", token };
|
|
265
|
+
return token;
|
|
266
|
+
}
|
|
267
|
+
expire(generation) {
|
|
268
|
+
if (generation !== this.generation) {
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
const wasLoggedIn = this.state.type === "logged-in";
|
|
272
|
+
this.state = { type: "logged-out" };
|
|
273
|
+
if (wasLoggedIn) {
|
|
274
|
+
this.log.info(() => ({ msg: "session expired" }));
|
|
275
|
+
notifySessionExpired(this.env.onSessionExpired, this.log);
|
|
276
|
+
}
|
|
277
|
+
return null;
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
function decideToken(state, trigger) {
|
|
281
|
+
switch (trigger.type) {
|
|
282
|
+
case "before-request":
|
|
283
|
+
return state.type === "unknown" ? { type: "ask", rejected: SentWith.noUserToken } : { type: "serve", token: currentToken(state) };
|
|
284
|
+
case "after-401":
|
|
285
|
+
switch (state.type) {
|
|
286
|
+
// A logout or an expiry verdict: only `load()` may log back in, so a
|
|
287
|
+
// 401 to a request sent before it must not ask the host again.
|
|
288
|
+
case "logged-out":
|
|
289
|
+
return { type: "serve", token: null };
|
|
290
|
+
// Another request may already have renewed since this one was sent.
|
|
291
|
+
case "logged-in":
|
|
292
|
+
return isRejectedToken(state.token, trigger.rejected) ? { type: "ask", rejected: trigger.rejected } : { type: "serve", token: state.token };
|
|
293
|
+
case "unknown":
|
|
294
|
+
return { type: "ask", rejected: trigger.rejected };
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
function currentToken(state) {
|
|
299
|
+
switch (state.type) {
|
|
300
|
+
case "logged-in":
|
|
301
|
+
return state.token;
|
|
302
|
+
case "unknown":
|
|
303
|
+
case "logged-out":
|
|
304
|
+
return null;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
function isFresh(token, rejected) {
|
|
308
|
+
return token !== null && !isRejectedToken(token, rejected);
|
|
309
|
+
}
|
|
310
|
+
|
|
151
311
|
// src/client/core/auth/client-auth-namespace.ts
|
|
152
312
|
var OAUTH_STATE_KEY = "coinlist.oauth_state";
|
|
153
313
|
var OAUTH_CODE_VERIFIER_KEY = "coinlist.oauth_code_verifier";
|
|
@@ -962,35 +1122,38 @@ var ClientSupportNamespaceImpl = class {
|
|
|
962
1122
|
|
|
963
1123
|
// src/client/core/coinlist-client.ts
|
|
964
1124
|
var CoinListClientImpl = class {
|
|
965
|
-
constructor(
|
|
966
|
-
this.
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
1125
|
+
constructor(config) {
|
|
1126
|
+
this.config = config;
|
|
1127
|
+
const logger = config.logger ?? null;
|
|
1128
|
+
const accessToken = new ClientAccessToken({
|
|
1129
|
+
getAccessToken: () => config.getAccessToken(),
|
|
1130
|
+
onSessionExpired: config.onSessionExpired,
|
|
1131
|
+
logger,
|
|
1132
|
+
...systemDelay
|
|
1133
|
+
});
|
|
1134
|
+
this.accessToken = accessToken;
|
|
970
1135
|
this.api = new ApiClient(
|
|
971
1136
|
{
|
|
972
|
-
baseUrl:
|
|
1137
|
+
baseUrl: config.baseUrl || PUBLIC_API_BASE_URL,
|
|
973
1138
|
xApiVersion: API_VERSION
|
|
974
1139
|
},
|
|
975
|
-
|
|
1140
|
+
(trigger) => accessToken.get(trigger),
|
|
976
1141
|
logger
|
|
977
1142
|
);
|
|
978
1143
|
const ctx = {
|
|
979
1144
|
api: this.api,
|
|
980
|
-
rpc: publicClients(this.api,
|
|
1145
|
+
rpc: publicClients(this.api, config.rpc, config.logger ?? null),
|
|
981
1146
|
logger,
|
|
982
1147
|
ensureUserAuthenticated: async () => this.ensureAuthenticated()
|
|
983
1148
|
};
|
|
984
|
-
this.auth = new ClientAuthNamespaceImpl(
|
|
985
|
-
getState: () =>
|
|
986
|
-
clearAccessToken: () =>
|
|
987
|
-
this._accessToken = null;
|
|
988
|
-
}
|
|
1149
|
+
this.auth = new ClientAuthNamespaceImpl(config, {
|
|
1150
|
+
getState: () => accessToken.authState(),
|
|
1151
|
+
clearAccessToken: () => accessToken.clear()
|
|
989
1152
|
});
|
|
990
1153
|
this.offers = new OffersNamespaceImpl(ctx);
|
|
991
1154
|
this.requirements = new ClientRequirementsNamespaceImpl(
|
|
992
1155
|
ctx,
|
|
993
|
-
|
|
1156
|
+
config.coinlistBaseUrl
|
|
994
1157
|
);
|
|
995
1158
|
this.wallets = new WalletsNamespaceImpl(ctx);
|
|
996
1159
|
this.erc20 = new Erc20NamespaceImpl(ctx);
|
|
@@ -1002,34 +1165,16 @@ var CoinListClientImpl = class {
|
|
|
1002
1165
|
);
|
|
1003
1166
|
this.ondo = new ClientOndoNamespaceImpl(ctx, this.erc20);
|
|
1004
1167
|
this.tokens = new TokensNamespaceImpl(
|
|
1005
|
-
|
|
1168
|
+
config.tokensBaseUrl ?? NABU_BASE_URL,
|
|
1006
1169
|
logger
|
|
1007
1170
|
);
|
|
1008
1171
|
this.support = new ClientSupportNamespaceImpl(logger);
|
|
1009
1172
|
}
|
|
1010
1173
|
async init() {
|
|
1011
|
-
|
|
1012
|
-
return this.getAuthState();
|
|
1013
|
-
}
|
|
1014
|
-
async fetchAccessToken(refresh) {
|
|
1015
|
-
if (!refresh && this._accessToken !== void 0) return this._accessToken;
|
|
1016
|
-
try {
|
|
1017
|
-
const accessToken = await this._config.getAccessToken();
|
|
1018
|
-
this._accessToken = accessToken;
|
|
1019
|
-
return accessToken;
|
|
1020
|
-
} catch (_) {
|
|
1021
|
-
this._accessToken = null;
|
|
1022
|
-
return null;
|
|
1023
|
-
}
|
|
1024
|
-
}
|
|
1025
|
-
getAuthState() {
|
|
1026
|
-
if (this._accessToken === void 0) {
|
|
1027
|
-
return "unknown";
|
|
1028
|
-
}
|
|
1029
|
-
return this._accessToken !== null ? "logged-in" : "logged-out";
|
|
1174
|
+
return this.accessToken.load();
|
|
1030
1175
|
}
|
|
1031
1176
|
ensureAuthenticated() {
|
|
1032
|
-
if (this.
|
|
1177
|
+
if (this.accessToken.authState() !== "logged-in") {
|
|
1033
1178
|
throw new NotAuthenticatedError();
|
|
1034
1179
|
}
|
|
1035
1180
|
}
|
|
@@ -2282,7 +2427,7 @@ function Modal({ label, onClose, children, className }) {
|
|
|
2282
2427
|
}
|
|
2283
2428
|
|
|
2284
2429
|
// src/client/components/checkout/shared/confirmation/CheckoutConfirmationDialog.tsx
|
|
2285
|
-
import {
|
|
2430
|
+
import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
2286
2431
|
function CheckoutConfirmationDialog({
|
|
2287
2432
|
icon,
|
|
2288
2433
|
title: title2,
|
|
@@ -2308,10 +2453,7 @@ function CheckoutConfirmationDialog({
|
|
|
2308
2453
|
}
|
|
2309
2454
|
)
|
|
2310
2455
|
] }),
|
|
2311
|
-
header
|
|
2312
|
-
/* @__PURE__ */ jsx20(Divider, {}),
|
|
2313
|
-
header
|
|
2314
|
-
] }),
|
|
2456
|
+
header,
|
|
2315
2457
|
/* @__PURE__ */ jsx20(Divider, {}),
|
|
2316
2458
|
/* @__PURE__ */ jsx20(CheckoutDetailList, { rows }),
|
|
2317
2459
|
/* @__PURE__ */ jsx20("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:gap-3", children: actions })
|
|
@@ -2328,6 +2470,7 @@ function AssetSummaryRow({
|
|
|
2328
2470
|
iconSize = 48,
|
|
2329
2471
|
value,
|
|
2330
2472
|
caption,
|
|
2473
|
+
wrapIdentity = false,
|
|
2331
2474
|
className
|
|
2332
2475
|
}) {
|
|
2333
2476
|
return /* @__PURE__ */ jsx21(CoinListStyleScope, { children: /* @__PURE__ */ jsxs15(
|
|
@@ -2346,7 +2489,8 @@ function AssetSummaryRow({
|
|
|
2346
2489
|
{
|
|
2347
2490
|
className: cn(
|
|
2348
2491
|
typeClasses.h4,
|
|
2349
|
-
"clcosdk:
|
|
2492
|
+
"clcosdk:text-text-primary",
|
|
2493
|
+
wrapIdentity ? "clcosdk:break-words" : "clcosdk:truncate"
|
|
2350
2494
|
),
|
|
2351
2495
|
children: asset.name
|
|
2352
2496
|
}
|
|
@@ -2356,7 +2500,8 @@ function AssetSummaryRow({
|
|
|
2356
2500
|
{
|
|
2357
2501
|
className: cn(
|
|
2358
2502
|
typeClasses.subhead,
|
|
2359
|
-
"clcosdk:
|
|
2503
|
+
"clcosdk:text-text-secondary",
|
|
2504
|
+
wrapIdentity ? "clcosdk:break-words" : "clcosdk:truncate"
|
|
2360
2505
|
),
|
|
2361
2506
|
children: asset.symbol
|
|
2362
2507
|
}
|
|
@@ -2399,9 +2544,9 @@ function AssetSummaryRow({
|
|
|
2399
2544
|
}
|
|
2400
2545
|
|
|
2401
2546
|
// src/client/components/checkout/ondo/buy/confirmation/OndoBuyOrderConfirmed.tsx
|
|
2402
|
-
import { Fragment as
|
|
2547
|
+
import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
2403
2548
|
var TITLE2 = "Order confirmed";
|
|
2404
|
-
var
|
|
2549
|
+
var SHARES_RECEIVED_LABEL = "Shares received";
|
|
2405
2550
|
var TOTAL_COST_LABEL = "Total cost";
|
|
2406
2551
|
var PRICE_PER_SHARE_LABEL = "Price per share";
|
|
2407
2552
|
var DELIVERED_TO_LABEL = "Delivered to";
|
|
@@ -2423,16 +2568,9 @@ function OndoBuyOrderConfirmed({
|
|
|
2423
2568
|
icon: /* @__PURE__ */ jsx22(SuccessGlyph, {}),
|
|
2424
2569
|
title: TITLE2,
|
|
2425
2570
|
subtitle: subtitle(state.outputAsset.symbol),
|
|
2426
|
-
header: /* @__PURE__ */ jsx22(
|
|
2427
|
-
AssetSummaryRow,
|
|
2428
|
-
{
|
|
2429
|
-
asset: state.outputAsset,
|
|
2430
|
-
value: state.outputAmount,
|
|
2431
|
-
caption: SHARES_RECEIVED_CAPTION
|
|
2432
|
-
}
|
|
2433
|
-
),
|
|
2571
|
+
header: /* @__PURE__ */ jsx22(AssetSummaryRow, { asset: state.outputAsset, wrapIdentity: true }),
|
|
2434
2572
|
rows: detailRows(state),
|
|
2435
|
-
actions: /* @__PURE__ */ jsxs16(
|
|
2573
|
+
actions: /* @__PURE__ */ jsxs16(Fragment4, { children: [
|
|
2436
2574
|
/* @__PURE__ */ jsx22(ClButton, { variant: "gradient", fullWidth: true, onClick: onClose, children: DONE_LABEL }),
|
|
2437
2575
|
/* @__PURE__ */ jsx22(ExplorerLink, { url: state.txExplorerUrl })
|
|
2438
2576
|
] }),
|
|
@@ -2443,6 +2581,7 @@ function OndoBuyOrderConfirmed({
|
|
|
2443
2581
|
}
|
|
2444
2582
|
function detailRows(state) {
|
|
2445
2583
|
return [
|
|
2584
|
+
{ label: SHARES_RECEIVED_LABEL, value: state.outputAmount },
|
|
2446
2585
|
{ label: TOTAL_COST_LABEL, value: state.totalCost },
|
|
2447
2586
|
{ label: PRICE_PER_SHARE_LABEL, value: state.pricePerShare },
|
|
2448
2587
|
{ label: DELIVERED_TO_LABEL, value: state.recipientAddress }
|
|
@@ -2883,6 +3022,8 @@ function InfoIcon() {
|
|
|
2883
3022
|
import { jsx as jsx26, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
2884
3023
|
var UNSUPPORTED_CHAIN_TITLE = "Not available on this network";
|
|
2885
3024
|
var UNSUPPORTED_CHAIN_DESCRIPTION = "Ondo orders cannot be placed on the selected network.";
|
|
3025
|
+
var NOT_TRADABLE_TITLE = "Trading is closed right now";
|
|
3026
|
+
var NOT_TRADABLE_DESCRIPTION = "This asset cannot be traded at the moment. Come back when the market opens.";
|
|
2886
3027
|
function OndoCheckoutError({
|
|
2887
3028
|
reason,
|
|
2888
3029
|
className
|
|
@@ -2924,6 +3065,8 @@ function title(reason) {
|
|
|
2924
3065
|
switch (reason) {
|
|
2925
3066
|
case "unsupported-chain":
|
|
2926
3067
|
return UNSUPPORTED_CHAIN_TITLE;
|
|
3068
|
+
case "not-tradable":
|
|
3069
|
+
return NOT_TRADABLE_TITLE;
|
|
2927
3070
|
default: {
|
|
2928
3071
|
const exhaustive = reason;
|
|
2929
3072
|
return exhaustive;
|
|
@@ -2934,6 +3077,8 @@ function description(reason) {
|
|
|
2934
3077
|
switch (reason) {
|
|
2935
3078
|
case "unsupported-chain":
|
|
2936
3079
|
return UNSUPPORTED_CHAIN_DESCRIPTION;
|
|
3080
|
+
case "not-tradable":
|
|
3081
|
+
return NOT_TRADABLE_DESCRIPTION;
|
|
2937
3082
|
default: {
|
|
2938
3083
|
const exhaustive = reason;
|
|
2939
3084
|
return exhaustive;
|
|
@@ -3139,7 +3284,7 @@ function PriceCaption({ price }) {
|
|
|
3139
3284
|
import { Wallet } from "lucide-react";
|
|
3140
3285
|
|
|
3141
3286
|
// src/client/components/checkout/shared/selection/SelectableOptionRow.tsx
|
|
3142
|
-
import { Children, Fragment as
|
|
3287
|
+
import { Children, Fragment as Fragment5 } from "react";
|
|
3143
3288
|
import { jsx as jsx31, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
3144
3289
|
function SelectableOptionRow({
|
|
3145
3290
|
selected,
|
|
@@ -3226,7 +3371,7 @@ function OptionMetaRow({ children }) {
|
|
|
3226
3371
|
const items = Children.toArray(children).filter(Boolean);
|
|
3227
3372
|
return /* @__PURE__ */ jsx31("div", { className: "clcosdk:flex clcosdk:min-w-0 clcosdk:items-center clcosdk:gap-1.5", children: items.map((item, index) => (
|
|
3228
3373
|
// biome-ignore lint/suspicious/noArrayIndexKey: positional separators, and the list is caller-authored JSX.
|
|
3229
|
-
/* @__PURE__ */ jsxs21(
|
|
3374
|
+
/* @__PURE__ */ jsxs21(Fragment5, { children: [
|
|
3230
3375
|
index > 0 && /* @__PURE__ */ jsx31(MetaDot, {}),
|
|
3231
3376
|
item
|
|
3232
3377
|
] }, index)
|
|
@@ -4062,7 +4207,9 @@ import { useCallback as useCallback2, useEffect as useEffect5, useRef as useRef4
|
|
|
4062
4207
|
|
|
4063
4208
|
// src/client/hooks/checkout/ondo/shared/data/ondo-load-error.ts
|
|
4064
4209
|
function ondoLoadErrorReason(error) {
|
|
4065
|
-
|
|
4210
|
+
if (error instanceof NotAuthenticatedError) return "not-authenticated";
|
|
4211
|
+
if (isOndoNotTradableError(error)) return "not-tradable";
|
|
4212
|
+
return "generic-error";
|
|
4066
4213
|
}
|
|
4067
4214
|
|
|
4068
4215
|
// src/client/hooks/checkout/ondo/buy/data/useOndoBuyTransaction.ts
|
|
@@ -4247,7 +4394,7 @@ function useOndoBuyReviewViewModel({
|
|
|
4247
4394
|
tokenMetadata: outputTokenMetadata
|
|
4248
4395
|
}),
|
|
4249
4396
|
outputAmount: assetAmount(
|
|
4250
|
-
|
|
4397
|
+
formatShareAmount(built.receiveOutputAmount, locale),
|
|
4251
4398
|
ondoSymbol
|
|
4252
4399
|
),
|
|
4253
4400
|
recipientAddress: shortenAddress(active.wallet.address),
|
|
@@ -4367,6 +4514,8 @@ function refreshErrorMessage(reason) {
|
|
|
4367
4514
|
switch (reason) {
|
|
4368
4515
|
case "not-authenticated":
|
|
4369
4516
|
return "Sign in to refresh this quote.";
|
|
4517
|
+
case "not-tradable":
|
|
4518
|
+
return "Trading is paused for this asset. Try again when the market opens.";
|
|
4370
4519
|
case "generic-error":
|
|
4371
4520
|
return "Could not refresh the quote.";
|
|
4372
4521
|
default: {
|
|
@@ -4494,6 +4643,9 @@ function quoteSizeFromKey(key) {
|
|
|
4494
4643
|
|
|
4495
4644
|
// src/client/hooks/checkout/ondo/shared/data/useOndoTradingStatus.ts
|
|
4496
4645
|
import { useEffect as useEffect9, useRef as useRef7, useState as useState8 } from "react";
|
|
4646
|
+
function isNotTradable(state) {
|
|
4647
|
+
return state.type === "CONTENT" && state.status.type === "not-tradable";
|
|
4648
|
+
}
|
|
4497
4649
|
var LOADING2 = { type: "LOADING" };
|
|
4498
4650
|
function useOndoTradingStatus(options) {
|
|
4499
4651
|
const {
|
|
@@ -4563,6 +4715,30 @@ function useOndoTradingStatus(options) {
|
|
|
4563
4715
|
return { state };
|
|
4564
4716
|
}
|
|
4565
4717
|
|
|
4718
|
+
// src/client/hooks/checkout/ondo/shared/ondo-checkout-error.types.ts
|
|
4719
|
+
var OndoCheckoutErrorReason = {
|
|
4720
|
+
/**
|
|
4721
|
+
* Which reason, if any, replaces the whole checkout. `null` means the steps
|
|
4722
|
+
* render.
|
|
4723
|
+
*
|
|
4724
|
+
* `unsupported-chain` wins because it is settled at mount: no market state
|
|
4725
|
+
* can make a chain with no contract tradable. `not-tradable` needs both a
|
|
4726
|
+
* market *known* to be closed and a user still at the start of the flow,
|
|
4727
|
+
* with no order confirmation on screen. Past the first step a pause belongs
|
|
4728
|
+
* to the step it interrupts, and a just-placed order's dialog must not be
|
|
4729
|
+
* hidden by a market that closed after it filled.
|
|
4730
|
+
*/
|
|
4731
|
+
of: ({
|
|
4732
|
+
swappableHere,
|
|
4733
|
+
notTradable,
|
|
4734
|
+
atEntry
|
|
4735
|
+
}) => {
|
|
4736
|
+
if (!swappableHere) return "unsupported-chain";
|
|
4737
|
+
if (notTradable && atEntry) return "not-tradable";
|
|
4738
|
+
return null;
|
|
4739
|
+
}
|
|
4740
|
+
};
|
|
4741
|
+
|
|
4566
4742
|
// src/client/hooks/checkout/ondo/shared/sidebar/useOndoSidebarViewModel.ts
|
|
4567
4743
|
var MARKET_OPEN = "Market open";
|
|
4568
4744
|
var MARKET_CLOSED2 = "Market closed";
|
|
@@ -4881,18 +5057,19 @@ function useOndoBuyCheckoutViewModel({
|
|
|
4881
5057
|
const [orderConfirmed, setOrderConfirmed] = useState11(null);
|
|
4882
5058
|
const swappableHere = swapSpender(offer.swapContracts, chain) !== null;
|
|
4883
5059
|
const live = enabled && swappableHere;
|
|
4884
|
-
const { state:
|
|
5060
|
+
const { state: tradingStatusState } = useOndoTradingStatus({
|
|
4885
5061
|
symbol: ondoSymbol,
|
|
4886
5062
|
side: "buy",
|
|
4887
|
-
size: priceSize(step),
|
|
4888
5063
|
pollIntervalMs: ONDO_POLL_INTERVAL_MS,
|
|
4889
5064
|
enabled: live
|
|
4890
5065
|
});
|
|
4891
|
-
const
|
|
5066
|
+
const notTradable = isNotTradable(tradingStatusState);
|
|
5067
|
+
const { state: priceState } = useOndoPrice({
|
|
4892
5068
|
symbol: ondoSymbol,
|
|
4893
5069
|
side: "buy",
|
|
5070
|
+
size: priceSize(step),
|
|
4894
5071
|
pollIntervalMs: ONDO_POLL_INTERVAL_MS,
|
|
4895
|
-
enabled: live
|
|
5072
|
+
enabled: live && !notTradable
|
|
4896
5073
|
});
|
|
4897
5074
|
const { state: outputTokenMetadataState } = useCheckoutOfferTokenMetadata({
|
|
4898
5075
|
offer,
|
|
@@ -4970,7 +5147,12 @@ function useOndoBuyCheckoutViewModel({
|
|
|
4970
5147
|
priceState,
|
|
4971
5148
|
tradingStatusState
|
|
4972
5149
|
});
|
|
4973
|
-
const
|
|
5150
|
+
const errorReason = OndoCheckoutErrorReason.of({
|
|
5151
|
+
swappableHere,
|
|
5152
|
+
notTradable,
|
|
5153
|
+
atEntry: step.type === "wallet" && orderConfirmed === null
|
|
5154
|
+
});
|
|
5155
|
+
const state = errorReason !== null ? { type: "error", reason: errorReason } : {
|
|
4974
5156
|
type: "content",
|
|
4975
5157
|
wallet: walletState,
|
|
4976
5158
|
amount: amountState,
|
|
@@ -5066,7 +5248,7 @@ function toOrderConfirmedUi({
|
|
|
5066
5248
|
tokenMetadata: outputTokenMetadata
|
|
5067
5249
|
}),
|
|
5068
5250
|
outputAmount: assetAmount(
|
|
5069
|
-
|
|
5251
|
+
formatShareAmount(order.transaction.receiveOutputAmount, locale),
|
|
5070
5252
|
ondoSymbol
|
|
5071
5253
|
),
|
|
5072
5254
|
totalCost: assetAmount(
|
|
@@ -5316,9 +5498,9 @@ function MaxButton2({
|
|
|
5316
5498
|
|
|
5317
5499
|
// src/client/components/checkout/ondo/sell/confirmation/OndoSellOrderConfirmed.tsx
|
|
5318
5500
|
import { Check as Check2, ExternalLink as ExternalLink2 } from "lucide-react";
|
|
5319
|
-
import { Fragment as
|
|
5501
|
+
import { Fragment as Fragment6, jsx as jsx36, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
5320
5502
|
var TITLE7 = "Order confirmed";
|
|
5321
|
-
var
|
|
5503
|
+
var SHARES_SOLD_LABEL = "Shares sold";
|
|
5322
5504
|
var RECEIVED_LABEL = "Received";
|
|
5323
5505
|
var PRICE_PER_SHARE_LABEL3 = "Price per share";
|
|
5324
5506
|
var DELIVERED_TO_LABEL2 = "Delivered to";
|
|
@@ -5341,21 +5523,12 @@ function OndoSellOrderConfirmed({
|
|
|
5341
5523
|
title: TITLE7,
|
|
5342
5524
|
subtitle: subtitle2(state.soldAsset.symbol, state.proceedsSymbol),
|
|
5343
5525
|
header: (
|
|
5344
|
-
// The
|
|
5345
|
-
//
|
|
5346
|
-
|
|
5347
|
-
// for.
|
|
5348
|
-
/* @__PURE__ */ jsx36(
|
|
5349
|
-
AssetSummaryRow,
|
|
5350
|
-
{
|
|
5351
|
-
asset: state.soldAsset,
|
|
5352
|
-
value: state.soldAmount,
|
|
5353
|
-
caption: SHARES_SOLD_CAPTION
|
|
5354
|
-
}
|
|
5355
|
-
)
|
|
5526
|
+
// The header names what was sold. The quantity is a detail row, so a
|
|
5527
|
+
// long fund name and a long share count each get the full width.
|
|
5528
|
+
/* @__PURE__ */ jsx36(AssetSummaryRow, { asset: state.soldAsset, wrapIdentity: true })
|
|
5356
5529
|
),
|
|
5357
5530
|
rows: detailRows3(state),
|
|
5358
|
-
actions: /* @__PURE__ */ jsxs25(
|
|
5531
|
+
actions: /* @__PURE__ */ jsxs25(Fragment6, { children: [
|
|
5359
5532
|
/* @__PURE__ */ jsx36(ClButton, { variant: "gradient", fullWidth: true, onClick: onClose, children: DONE_LABEL2 }),
|
|
5360
5533
|
/* @__PURE__ */ jsx36(ExplorerLink2, { url: state.txExplorerUrl })
|
|
5361
5534
|
] }),
|
|
@@ -5366,6 +5539,7 @@ function OndoSellOrderConfirmed({
|
|
|
5366
5539
|
}
|
|
5367
5540
|
function detailRows3(state) {
|
|
5368
5541
|
return [
|
|
5542
|
+
{ label: SHARES_SOLD_LABEL, value: state.soldAmount },
|
|
5369
5543
|
{ label: RECEIVED_LABEL, value: state.proceeds },
|
|
5370
5544
|
{ label: PRICE_PER_SHARE_LABEL3, value: state.pricePerShare },
|
|
5371
5545
|
{ label: DELIVERED_TO_LABEL2, value: state.recipientAddress }
|
|
@@ -6435,6 +6609,8 @@ function refreshErrorMessage2(reason) {
|
|
|
6435
6609
|
switch (reason) {
|
|
6436
6610
|
case "not-authenticated":
|
|
6437
6611
|
return "Sign in to refresh this quote.";
|
|
6612
|
+
case "not-tradable":
|
|
6613
|
+
return "Trading is paused for this asset. Try again when the market opens.";
|
|
6438
6614
|
case "generic-error":
|
|
6439
6615
|
return "Could not refresh the quote.";
|
|
6440
6616
|
default: {
|
|
@@ -6488,18 +6664,19 @@ function useOndoSellCheckoutViewModel({
|
|
|
6488
6664
|
const [orderConfirmed, setOrderConfirmed] = useState16(null);
|
|
6489
6665
|
const swappableHere = swapSpender(offer.swapContracts, chain) !== null;
|
|
6490
6666
|
const live = enabled && swappableHere;
|
|
6491
|
-
const { state:
|
|
6667
|
+
const { state: tradingStatusState } = useOndoTradingStatus({
|
|
6492
6668
|
symbol: ondoSymbol,
|
|
6493
6669
|
side: "sell",
|
|
6494
|
-
size: priceSize2(step),
|
|
6495
6670
|
pollIntervalMs: ONDO_POLL_INTERVAL_MS,
|
|
6496
6671
|
enabled: live
|
|
6497
6672
|
});
|
|
6498
|
-
const
|
|
6673
|
+
const notTradable = isNotTradable(tradingStatusState);
|
|
6674
|
+
const { state: priceState } = useOndoPrice({
|
|
6499
6675
|
symbol: ondoSymbol,
|
|
6500
6676
|
side: "sell",
|
|
6677
|
+
size: priceSize2(step),
|
|
6501
6678
|
pollIntervalMs: ONDO_POLL_INTERVAL_MS,
|
|
6502
|
-
enabled: live
|
|
6679
|
+
enabled: live && !notTradable
|
|
6503
6680
|
});
|
|
6504
6681
|
const { state: inputTokenMetadataState } = useCheckoutOfferTokenMetadata({
|
|
6505
6682
|
offer,
|
|
@@ -6577,7 +6754,14 @@ function useOndoSellCheckoutViewModel({
|
|
|
6577
6754
|
priceState,
|
|
6578
6755
|
tradingStatusState
|
|
6579
6756
|
});
|
|
6580
|
-
const
|
|
6757
|
+
const errorReason = OndoCheckoutErrorReason.of({
|
|
6758
|
+
swappableHere,
|
|
6759
|
+
notTradable,
|
|
6760
|
+
// The step the flow opened on, which for a preselected wallet is the
|
|
6761
|
+
// amount rather than a wallet step it never had.
|
|
6762
|
+
atEntry: step.type === initialStep.type && orderConfirmed === null
|
|
6763
|
+
});
|
|
6764
|
+
const state = errorReason !== null ? { type: "error", reason: errorReason } : {
|
|
6581
6765
|
type: "content",
|
|
6582
6766
|
wallet: hasWalletStep ? walletState : null,
|
|
6583
6767
|
amount: amountState,
|
|
@@ -6687,7 +6871,7 @@ function toOrderConfirmedUi2({
|
|
|
6687
6871
|
tokenMetadata: inputTokenMetadata
|
|
6688
6872
|
}),
|
|
6689
6873
|
soldAmount: assetAmount(
|
|
6690
|
-
|
|
6874
|
+
formatShareAmount(order.transaction.spendInputAmount, locale),
|
|
6691
6875
|
ondoSymbol
|
|
6692
6876
|
),
|
|
6693
6877
|
// The expected proceeds rather than the floor: this dialog reports a sale
|
|
@@ -6923,10 +7107,10 @@ function MaxButton3({ onClick }) {
|
|
|
6923
7107
|
|
|
6924
7108
|
// src/client/components/checkout/superstate/swap/confirmation/SuperstateOrderConfirmed.tsx
|
|
6925
7109
|
import { Check as Check3, ExternalLink as ExternalLink3 } from "lucide-react";
|
|
6926
|
-
import { Fragment as
|
|
7110
|
+
import { Fragment as Fragment7, jsx as jsx41, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
6927
7111
|
var TITLE10 = "Order confirmed";
|
|
6928
7112
|
var TOTAL_COST_LABEL2 = "Total cost";
|
|
6929
|
-
var
|
|
7113
|
+
var SHARES_RECEIVED_LABEL2 = "Shares received";
|
|
6930
7114
|
var SHARES_RECEIVED_ESTIMATED_LABEL = "Shares received (estimated)";
|
|
6931
7115
|
var PRICE_PER_SHARE_LABEL5 = "Price per share";
|
|
6932
7116
|
var PRICE_PER_SHARE_ESTIMATED_LABEL = "Price per share (estimated)";
|
|
@@ -6949,15 +7133,9 @@ function SuperstateOrderConfirmed({
|
|
|
6949
7133
|
icon: /* @__PURE__ */ jsx41(SuccessGlyph3, {}),
|
|
6950
7134
|
title: TITLE10,
|
|
6951
7135
|
subtitle: subtitle3(state.asset.symbol),
|
|
6952
|
-
header: /* @__PURE__ */ jsx41(
|
|
6953
|
-
AssetSummaryRow,
|
|
6954
|
-
{
|
|
6955
|
-
asset: state.asset,
|
|
6956
|
-
caption: `Issued by ${state.issuer}`
|
|
6957
|
-
}
|
|
6958
|
-
),
|
|
7136
|
+
header: /* @__PURE__ */ jsx41(AssetSummaryRow, { asset: state.asset, wrapIdentity: true }),
|
|
6959
7137
|
rows: detailRows4(state),
|
|
6960
|
-
actions: /* @__PURE__ */ jsxs29(
|
|
7138
|
+
actions: /* @__PURE__ */ jsxs29(Fragment7, { children: [
|
|
6961
7139
|
/* @__PURE__ */ jsx41(ClButton, { variant: "gradient", fullWidth: true, onClick: onClose, children: DONE_LABEL3 }),
|
|
6962
7140
|
/* @__PURE__ */ jsx41(ExplorerLink3, { url: state.txExplorerUrl })
|
|
6963
7141
|
] }),
|
|
@@ -6971,7 +7149,7 @@ function detailRows4(state) {
|
|
|
6971
7149
|
return [
|
|
6972
7150
|
{ label: TOTAL_COST_LABEL2, value: state.totalCost },
|
|
6973
7151
|
{
|
|
6974
|
-
label: confirmed ?
|
|
7152
|
+
label: confirmed ? SHARES_RECEIVED_LABEL2 : SHARES_RECEIVED_ESTIMATED_LABEL,
|
|
6975
7153
|
value: state.outputAmount
|
|
6976
7154
|
},
|
|
6977
7155
|
{
|
|
@@ -9043,7 +9221,6 @@ function toOrderConfirmedUi3({
|
|
|
9043
9221
|
networkName: getNetworkName(chain),
|
|
9044
9222
|
iconUrl: assetIconUrl
|
|
9045
9223
|
}),
|
|
9046
|
-
issuer: SUPERSTATE_ISSUER_NAME,
|
|
9047
9224
|
outputAmount: assetAmount(
|
|
9048
9225
|
formatAmount(order.outputAmount, locale),
|
|
9049
9226
|
order.outputAsset.symbol
|
|
@@ -9189,7 +9366,7 @@ function renderOndoSide(side, branches) {
|
|
|
9189
9366
|
}
|
|
9190
9367
|
|
|
9191
9368
|
// src/client/components/design-system/ThemedImage.tsx
|
|
9192
|
-
import { Fragment as
|
|
9369
|
+
import { Fragment as Fragment8, jsx as jsx49, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
9193
9370
|
function ThemedImage({
|
|
9194
9371
|
light,
|
|
9195
9372
|
dark,
|
|
@@ -9214,7 +9391,7 @@ function ThemedImage({
|
|
|
9214
9391
|
}
|
|
9215
9392
|
);
|
|
9216
9393
|
}
|
|
9217
|
-
return /* @__PURE__ */ jsxs35(
|
|
9394
|
+
return /* @__PURE__ */ jsxs35(Fragment8, { children: [
|
|
9218
9395
|
/* @__PURE__ */ jsx49(
|
|
9219
9396
|
"img",
|
|
9220
9397
|
{
|
|
@@ -10302,7 +10479,7 @@ function StepStatusIcon({ status, className }) {
|
|
|
10302
10479
|
}
|
|
10303
10480
|
|
|
10304
10481
|
// src/client/components/requirements/RequirementItem.tsx
|
|
10305
|
-
import { Fragment as
|
|
10482
|
+
import { Fragment as Fragment9, jsx as jsx59, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
10306
10483
|
var DEFAULT_PENDING = "Under review. We'll notify you when complete.";
|
|
10307
10484
|
var DEFAULT_REJECTED = "Verification rejected.";
|
|
10308
10485
|
var SUPPORT_LINK = "Contact support";
|
|
@@ -10357,7 +10534,7 @@ function RejectedMessage({
|
|
|
10357
10534
|
return message;
|
|
10358
10535
|
}
|
|
10359
10536
|
if (linkAt === -1) {
|
|
10360
|
-
return /* @__PURE__ */ jsxs41(
|
|
10537
|
+
return /* @__PURE__ */ jsxs41(Fragment9, { children: [
|
|
10361
10538
|
message,
|
|
10362
10539
|
" ",
|
|
10363
10540
|
/* @__PURE__ */ jsx59(
|
|
@@ -10372,7 +10549,7 @@ function RejectedMessage({
|
|
|
10372
10549
|
"."
|
|
10373
10550
|
] });
|
|
10374
10551
|
}
|
|
10375
|
-
return /* @__PURE__ */ jsxs41(
|
|
10552
|
+
return /* @__PURE__ */ jsxs41(Fragment9, { children: [
|
|
10376
10553
|
message.slice(0, linkAt),
|
|
10377
10554
|
/* @__PURE__ */ jsx59(
|
|
10378
10555
|
"button",
|
|
@@ -10395,7 +10572,7 @@ function WalletActionZone({
|
|
|
10395
10572
|
onRemoveWallet
|
|
10396
10573
|
}) {
|
|
10397
10574
|
if (multiWallet) {
|
|
10398
|
-
return /* @__PURE__ */ jsxs41(
|
|
10575
|
+
return /* @__PURE__ */ jsxs41(Fragment9, { children: [
|
|
10399
10576
|
/* @__PURE__ */ jsx59(
|
|
10400
10577
|
ConnectedWalletList,
|
|
10401
10578
|
{
|
|
@@ -10416,7 +10593,7 @@ function WalletActionZone({
|
|
|
10416
10593
|
}
|
|
10417
10594
|
if (status === "completed") {
|
|
10418
10595
|
const connected = connectedWallets[0];
|
|
10419
|
-
return /* @__PURE__ */ jsxs41(
|
|
10596
|
+
return /* @__PURE__ */ jsxs41(Fragment9, { children: [
|
|
10420
10597
|
onAction !== null && /* @__PURE__ */ jsx59(
|
|
10421
10598
|
ClButton,
|
|
10422
10599
|
{
|
|
@@ -10449,7 +10626,7 @@ function WalletActionZone({
|
|
|
10449
10626
|
] });
|
|
10450
10627
|
}
|
|
10451
10628
|
if (status === "rejected") {
|
|
10452
|
-
return /* @__PURE__ */ jsxs41(
|
|
10629
|
+
return /* @__PURE__ */ jsxs41(Fragment9, { children: [
|
|
10453
10630
|
onAction !== null && /* @__PURE__ */ jsx59(ClButton, { size: "sm", className: "clcosdk:self-start", onClick: onAction, children: "Connect wallet" }),
|
|
10454
10631
|
/* @__PURE__ */ jsx59(
|
|
10455
10632
|
AlertBanner,
|
|
@@ -10571,7 +10748,7 @@ function RequirementItem({
|
|
|
10571
10748
|
}
|
|
10572
10749
|
|
|
10573
10750
|
// src/client/components/requirements/RequirementsChecklistView.tsx
|
|
10574
|
-
import { Fragment as
|
|
10751
|
+
import { Fragment as Fragment10, jsx as jsx60, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
10575
10752
|
function RequirementsChecklistView(props) {
|
|
10576
10753
|
return /* @__PURE__ */ jsx60(CoinListStyleScope, { children: /* @__PURE__ */ jsx60(RequirementsChecklistViewBody, { ...props }) });
|
|
10577
10754
|
}
|
|
@@ -10641,7 +10818,7 @@ function RequirementsChecklistViewBody({
|
|
|
10641
10818
|
onClick: () => onEvent({ type: "ON_CONTINUE" }),
|
|
10642
10819
|
children: "Continue"
|
|
10643
10820
|
}
|
|
10644
|
-
) : /* @__PURE__ */ jsxs42(
|
|
10821
|
+
) : /* @__PURE__ */ jsxs42(Fragment10, { children: [
|
|
10645
10822
|
/* @__PURE__ */ jsx60("div", { className: "clcosdk:flex clcosdk:flex-col clcosdk:divide-y clcosdk:divide-divider", children: state.items.map((row, index) => /* @__PURE__ */ jsx60(
|
|
10646
10823
|
RequirementItem,
|
|
10647
10824
|
{
|
|
@@ -12250,7 +12427,7 @@ function toVerificationUi(verifyingRequirementId, statusById, identityVerificati
|
|
|
12250
12427
|
}
|
|
12251
12428
|
|
|
12252
12429
|
// src/client/components/requirements/RequirementsChecklistContainer.tsx
|
|
12253
|
-
import { Fragment as
|
|
12430
|
+
import { Fragment as Fragment11, jsx as jsx66, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
12254
12431
|
function RequirementsChecklistContainer({
|
|
12255
12432
|
loading,
|
|
12256
12433
|
error,
|
|
@@ -12262,7 +12439,7 @@ function RequirementsChecklistContainer({
|
|
|
12262
12439
|
...options,
|
|
12263
12440
|
enabled
|
|
12264
12441
|
});
|
|
12265
|
-
return /* @__PURE__ */ jsxs46(
|
|
12442
|
+
return /* @__PURE__ */ jsxs46(Fragment11, { children: [
|
|
12266
12443
|
/* @__PURE__ */ jsx66(
|
|
12267
12444
|
RequirementsChecklistView,
|
|
12268
12445
|
{
|
|
@@ -12273,7 +12450,7 @@ function RequirementsChecklistContainer({
|
|
|
12273
12450
|
className
|
|
12274
12451
|
}
|
|
12275
12452
|
),
|
|
12276
|
-
state.type === "content" && /* @__PURE__ */ jsxs46(
|
|
12453
|
+
state.type === "content" && /* @__PURE__ */ jsxs46(Fragment11, { children: [
|
|
12277
12454
|
/* @__PURE__ */ jsx66(
|
|
12278
12455
|
TaxDocumentModalContainer,
|
|
12279
12456
|
{
|
|
@@ -12588,6 +12765,7 @@ export {
|
|
|
12588
12765
|
OndoBuyOrderConfirmed,
|
|
12589
12766
|
OndoBuyReviewView,
|
|
12590
12767
|
OndoCheckoutError,
|
|
12768
|
+
OndoCheckoutErrorReason,
|
|
12591
12769
|
OndoSellAmountView,
|
|
12592
12770
|
OndoSellCheckoutContainer,
|
|
12593
12771
|
OndoSellCheckoutView,
|
|
@@ -12627,6 +12805,7 @@ export {
|
|
|
12627
12805
|
formatCountdown,
|
|
12628
12806
|
formatMonthYear,
|
|
12629
12807
|
formatSaleCardCountdown,
|
|
12808
|
+
isNotTradable,
|
|
12630
12809
|
offerAssetIconUrl,
|
|
12631
12810
|
offerIconUrl,
|
|
12632
12811
|
offerTokenIdentifier,
|