@agg-build/ui 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/{chunk-5ES2VJHO.mjs → chunk-7JEJIGG4.mjs} +162 -253
  2. package/dist/{chunk-BYMLPLEZ.mjs → chunk-F3SU7BRE.mjs} +10 -10
  3. package/dist/{chunk-WLXYCBZV.mjs → chunk-IT2Y62MG.mjs} +31 -35
  4. package/dist/{chunk-43K4PFBC.mjs → chunk-JDYZJKTE.mjs} +2 -2
  5. package/dist/{chunk-HD6HBTK2.mjs → chunk-KDMNFHPL.mjs} +369 -19
  6. package/dist/{chunk-LPNZOX3E.mjs → chunk-OHEZGKFM.mjs} +443 -884
  7. package/dist/{chunk-YZNO6IUD.mjs → chunk-R6DETAZ6.mjs} +1343 -1173
  8. package/dist/events.js +1886 -1545
  9. package/dist/events.mjs +3 -3
  10. package/dist/index.js +3748 -3707
  11. package/dist/index.mjs +191 -118
  12. package/dist/modals.js +1042 -943
  13. package/dist/modals.mjs +3 -3
  14. package/dist/pages.js +2822 -2864
  15. package/dist/pages.mjs +6 -6
  16. package/dist/primitives.js +1322 -1166
  17. package/dist/primitives.mjs +9 -1
  18. package/dist/styles.css +1 -1
  19. package/dist/tailwind.css +1 -1
  20. package/dist/trading.js +3770 -3718
  21. package/dist/trading.mjs +10 -12
  22. package/dist/types/events/item-details/settlement-summary.d.mts +6 -2
  23. package/dist/types/events/item-details/settlement-summary.d.ts +6 -2
  24. package/dist/types/events/list/event-list.types.d.mts +1 -1
  25. package/dist/types/events/list/event-list.types.d.ts +1 -1
  26. package/dist/types/events/list/event-list.utils.d.mts +1 -1
  27. package/dist/types/events/list/event-list.utils.d.ts +1 -1
  28. package/dist/types/pages/event-market/event-market.types.d.mts +1 -3
  29. package/dist/types/pages/event-market/event-market.types.d.ts +1 -3
  30. package/dist/types/pages/user-profile/components/available-balance-card.d.mts +0 -1
  31. package/dist/types/pages/user-profile/components/available-balance-card.d.ts +0 -1
  32. package/dist/types/primitives/icon/icon.types.d.mts +1 -2
  33. package/dist/types/primitives/icon/icon.types.d.ts +1 -2
  34. package/dist/types/primitives/icon/index.d.mts +4 -1
  35. package/dist/types/primitives/icon/index.d.ts +4 -1
  36. package/dist/types/primitives/icon/registry.d.mts +12 -0
  37. package/dist/types/primitives/icon/registry.d.ts +12 -0
  38. package/dist/types/primitives/icon/svg/apps.d.mts +5 -0
  39. package/dist/types/primitives/icon/svg/apps.d.ts +5 -0
  40. package/dist/types/primitives/icon/svg/circle-overlap.d.mts +5 -0
  41. package/dist/types/primitives/icon/svg/circle-overlap.d.ts +5 -0
  42. package/dist/types/primitives/icon/svg/lock.d.mts +5 -0
  43. package/dist/types/primitives/icon/svg/lock.d.ts +5 -0
  44. package/dist/types/primitives/select/index.d.mts +1 -1
  45. package/dist/types/primitives/select/index.d.ts +1 -1
  46. package/dist/types/primitives/select/select.types.d.mts +1 -1
  47. package/dist/types/primitives/select/select.types.d.ts +1 -1
  48. package/dist/types/primitives/select/select.utils.d.mts +0 -1
  49. package/dist/types/primitives/select/select.utils.d.ts +0 -1
  50. package/dist/types/primitives/skeleton/index.d.mts +2 -1
  51. package/dist/types/primitives/skeleton/index.d.ts +2 -1
  52. package/dist/types/primitives/skeleton/views/place-order-skeleton-view.d.mts +4 -0
  53. package/dist/types/primitives/skeleton/views/place-order-skeleton-view.d.ts +4 -0
  54. package/dist/types/primitives/typography/index.d.mts +1 -1
  55. package/dist/types/primitives/typography/index.d.ts +1 -1
  56. package/dist/types/primitives/typography/typography.types.d.mts +3 -1
  57. package/dist/types/primitives/typography/typography.types.d.ts +3 -1
  58. package/dist/types/shared/utils.d.mts +3 -1
  59. package/dist/types/shared/utils.d.ts +3 -1
  60. package/dist/types/trading/index.d.mts +0 -1
  61. package/dist/types/trading/index.d.ts +0 -1
  62. package/dist/types/trading/place-order/index.place-order.types.d.mts +0 -1
  63. package/dist/types/trading/place-order/index.place-order.types.d.ts +0 -1
  64. package/dist/types/trading/place-order/index.place-order.utils.d.mts +0 -4
  65. package/dist/types/trading/place-order/index.place-order.utils.d.ts +0 -4
  66. package/dist/types/trading/settlement/index.d.mts +9 -6
  67. package/dist/types/trading/settlement/index.d.ts +9 -6
  68. package/dist/types/trading/settlement/settlement-text-renderer.d.mts +8 -0
  69. package/dist/types/trading/settlement/settlement-text-renderer.d.ts +8 -0
  70. package/dist/types/trading/settlement/settlement-text.utils.d.mts +36 -0
  71. package/dist/types/trading/settlement/settlement-text.utils.d.ts +36 -0
  72. package/dist/types/trading/types.d.mts +0 -19
  73. package/dist/types/trading/types.d.ts +0 -19
  74. package/dist/types/trading/utils.d.mts +0 -1
  75. package/dist/types/trading/utils.d.ts +0 -1
  76. package/package.json +3 -3
  77. package/dist/types/primitives/card/card.constants.d.mts +0 -4
  78. package/dist/types/primitives/card/card.constants.d.ts +0 -4
  79. package/dist/types/trading/settlement/settlement-details.utils.d.mts +0 -7
  80. package/dist/types/trading/settlement/settlement-details.utils.d.ts +0 -7
@@ -1,18 +1,23 @@
1
1
  "use client";
2
2
  import {
3
+ Card,
3
4
  DEFAULT_VENUE_COLOR,
5
+ Skeleton,
4
6
  __spreadProps,
5
7
  __spreadValues,
8
+ cn,
6
9
  fallbackLineColors,
7
10
  formatMarketProbabilityPercent,
11
+ formatUsd,
8
12
  getVenueSummary,
9
13
  normalizeProbability,
10
14
  normalizeVenueMarketCluster,
11
15
  resolveOutcomeTitle,
12
16
  resolveVenueLineColor,
13
17
  selectPrimaryVenueMarket,
18
+ skeletonViews,
14
19
  sortOutcomes
15
- } from "./chunk-YZNO6IUD.mjs";
20
+ } from "./chunk-R6DETAZ6.mjs";
16
21
 
17
22
  // src/trading/trading-context/index.tsx
18
23
  import { useEventTradingContext } from "@agg-build/hooks";
@@ -112,8 +117,340 @@ var resolveUnifiedOrderBookEntries = ({
112
117
  return [...askEntries, spreadEntry, ...bidEntries];
113
118
  };
114
119
 
115
- // src/events/item-details/event-list-item-details.utils.ts
120
+ // src/trading/utils.ts
121
+ import { resolveAggUiLabels } from "@agg-build/hooks";
116
122
  import dayjs from "dayjs";
123
+ var defaultLabels = resolveAggUiLabels("en-US");
124
+ var defaultSettlementSectionLabel = defaultLabels.trading.settlementSection;
125
+ var defaultTradingDisclaimer = defaultLabels.trading.disclaimer;
126
+ var getTradingDateLabel = (value) => {
127
+ const parsedValue = dayjs(value);
128
+ if (!parsedValue.isValid()) {
129
+ return typeof value === "string" ? value : "";
130
+ }
131
+ return parsedValue.format("MMM D, YYYY");
132
+ };
133
+ var getTradingVenueLabel = (venue, label) => {
134
+ var _a;
135
+ if (label) return label;
136
+ if (!venue) return "Unknown";
137
+ return (_a = defaultLabels.venues[venue]) != null ? _a : venue;
138
+ };
139
+ var getTradingValueLabel = ({
140
+ amount,
141
+ minimumFractionDigits = 0,
142
+ maximumFractionDigits = 2
143
+ }) => {
144
+ return amount.toLocaleString("en-US", {
145
+ style: "currency",
146
+ currency: "USD",
147
+ minimumFractionDigits,
148
+ maximumFractionDigits
149
+ });
150
+ };
151
+ var getTradingPriceLabel = (value) => {
152
+ return `${Math.round(value * 100)}\xA2`;
153
+ };
154
+ var getTradingAveragePriceLabel = (value) => {
155
+ return defaultLabels.trading.averagePrice(value);
156
+ };
157
+ var getTradingBalanceLabel = (value) => {
158
+ return defaultLabels.trading.balance(formatUsd(value));
159
+ };
160
+ var getTradingSharesLabel = (value) => {
161
+ return defaultLabels.trading.shares(value);
162
+ };
163
+ var getTradingSlippageLabel = (value) => {
164
+ return defaultLabels.trading.slippage(value);
165
+ };
166
+
167
+ // src/trading/settlement/index.tsx
168
+ import { useLabels } from "@agg-build/hooks";
169
+ import { useMemo } from "react";
170
+
171
+ // src/trading/settlement/settlement-text-renderer.tsx
172
+ import { Fragment } from "react";
173
+
174
+ // src/trading/settlement/settlement-text.utils.ts
175
+ var stripHtmlFragments = (text) => {
176
+ return text.replace(/<\s*p\s*>/gi, "").replace(/<\s*\/\s*p\s*>/gi, "\n\n").replace(/<\s*br\s*\/?\s*>/gi, "\n").replace(/\r\n/g, "\n");
177
+ };
178
+ var isListLine = (line) => /^\s*[-*]\s+/.test(line);
179
+ var stripBullet = (line) => line.replace(/^\s*[-*]\s+/, "").trim();
180
+ var parseSettlementBlocks = (input) => {
181
+ const normalized = stripHtmlFragments(input).trim();
182
+ if (!normalized) return [];
183
+ const paragraphs = normalized.split(/\n{2,}/);
184
+ const blocks = [];
185
+ for (const rawParagraph of paragraphs) {
186
+ const lines = rawParagraph.split("\n").map((line) => line.replace(/\s+$/, "")).filter((line) => line.trim().length > 0);
187
+ if (lines.length === 0) continue;
188
+ if (lines.every(isListLine)) {
189
+ blocks.push({ kind: "list", items: lines.map(stripBullet) });
190
+ continue;
191
+ }
192
+ blocks.push({ kind: "paragraph", lines: lines.map((line) => line.trim()) });
193
+ }
194
+ return blocks;
195
+ };
196
+ var getFirstSettlementParagraph = (input) => {
197
+ if (!input) return "";
198
+ const blocks = parseSettlementBlocks(input);
199
+ const firstParagraph = blocks.find((block) => block.kind === "paragraph");
200
+ if (!firstParagraph || firstParagraph.kind !== "paragraph") return "";
201
+ return firstParagraph.lines.join(" ").trim();
202
+ };
203
+ var normalizeSettlementForCompare = (input) => {
204
+ return stripHtmlFragments(input).replace(/\s+/g, " ").trim().toLowerCase();
205
+ };
206
+ var dedupeSettlementSources = (sources) => {
207
+ const order = ["eventDescription", "marketDescription", "primaryRules"];
208
+ const seen = /* @__PURE__ */ new Set();
209
+ const result = [];
210
+ for (const key of order) {
211
+ const value = sources[key];
212
+ if (typeof value !== "string") continue;
213
+ const trimmed = value.trim();
214
+ if (!trimmed) continue;
215
+ const fingerprint = normalizeSettlementForCompare(trimmed);
216
+ if (!fingerprint) continue;
217
+ if (seen.has(fingerprint)) continue;
218
+ seen.add(fingerprint);
219
+ result.push({ key, content: trimmed });
220
+ }
221
+ return result;
222
+ };
223
+
224
+ // src/trading/settlement/settlement-text-renderer.tsx
225
+ import { jsx, jsxs } from "react/jsx-runtime";
226
+ var inlineTokenRegex = new RegExp(
227
+ [
228
+ /\[([^\]\n]+)\]\(([^)\s]+)\)/.source,
229
+ // 1=link text, 2=link href
230
+ /\*\*([^*\n]+?)\*\*/.source,
231
+ // 3=bold inner
232
+ /`([^`\n]+?)`/.source,
233
+ // 4=code inner
234
+ /(https?:\/\/[^\s<>"'`]+)/.source
235
+ // 5=bare url
236
+ ].join("|"),
237
+ "g"
238
+ );
239
+ var trailingUrlPunctuationRegex = /[.,;:!?)\]]+$/;
240
+ var isLinkMatch = (match) => match[1] !== void 0 && match[2] !== void 0;
241
+ var linkClassName = "agg-settlement-text-link text-agg-primary underline hover:opacity-80";
242
+ var renderInlineSegment = (text, baseKey) => {
243
+ const nodes = [];
244
+ let lastIndex = 0;
245
+ let segmentIndex = 0;
246
+ inlineTokenRegex.lastIndex = 0;
247
+ let match;
248
+ while ((match = inlineTokenRegex.exec(text)) !== null) {
249
+ let matchEnd = match.index + match[0].length;
250
+ let bareUrl = match[5];
251
+ if (bareUrl !== void 0) {
252
+ const trailing = trailingUrlPunctuationRegex.exec(bareUrl);
253
+ if (trailing) {
254
+ const trimmed = bareUrl.slice(0, bareUrl.length - trailing[0].length);
255
+ if (trimmed.length > "https://".length) {
256
+ bareUrl = trimmed;
257
+ matchEnd -= trailing[0].length;
258
+ inlineTokenRegex.lastIndex = matchEnd;
259
+ }
260
+ }
261
+ }
262
+ if (match.index > lastIndex) {
263
+ nodes.push(
264
+ /* @__PURE__ */ jsx(Fragment, { children: text.slice(lastIndex, match.index) }, `${baseKey}-text-${segmentIndex++}`)
265
+ );
266
+ }
267
+ if (isLinkMatch(match)) {
268
+ nodes.push(
269
+ /* @__PURE__ */ jsx(
270
+ "a",
271
+ {
272
+ href: match[2],
273
+ target: "_blank",
274
+ rel: "noopener noreferrer",
275
+ className: linkClassName,
276
+ children: match[1]
277
+ },
278
+ `${baseKey}-link-${segmentIndex++}`
279
+ )
280
+ );
281
+ } else if (match[3] !== void 0) {
282
+ nodes.push(
283
+ /* @__PURE__ */ jsx(
284
+ "strong",
285
+ {
286
+ className: "agg-settlement-text-bold font-agg-bold",
287
+ children: match[3]
288
+ },
289
+ `${baseKey}-bold-${segmentIndex++}`
290
+ )
291
+ );
292
+ } else if (match[4] !== void 0) {
293
+ nodes.push(
294
+ /* @__PURE__ */ jsx(
295
+ "code",
296
+ {
297
+ className: "agg-settlement-text-code rounded-agg-sm bg-agg-secondary-hover px-1 py-0.5 font-mono text-[0.875em]",
298
+ children: match[4]
299
+ },
300
+ `${baseKey}-code-${segmentIndex++}`
301
+ )
302
+ );
303
+ } else if (bareUrl !== void 0) {
304
+ nodes.push(
305
+ /* @__PURE__ */ jsx(
306
+ "a",
307
+ {
308
+ href: bareUrl,
309
+ target: "_blank",
310
+ rel: "noopener noreferrer",
311
+ className: linkClassName,
312
+ children: bareUrl
313
+ },
314
+ `${baseKey}-url-${segmentIndex++}`
315
+ )
316
+ );
317
+ }
318
+ lastIndex = matchEnd;
319
+ }
320
+ if (lastIndex < text.length) {
321
+ nodes.push(
322
+ /* @__PURE__ */ jsx(Fragment, { children: text.slice(lastIndex) }, `${baseKey}-text-${segmentIndex++}`)
323
+ );
324
+ }
325
+ return nodes;
326
+ };
327
+ var renderBlock = (block, blockIndex) => {
328
+ if (block.kind === "list") {
329
+ return /* @__PURE__ */ jsx(
330
+ "ul",
331
+ {
332
+ className: "agg-settlement-text-list list-disc pl-5 text-agg-sm leading-agg-5 text-agg-foreground",
333
+ children: block.items.map((item, itemIndex) => /* @__PURE__ */ jsx(
334
+ "li",
335
+ {
336
+ className: "agg-settlement-text-list-item",
337
+ children: renderInlineSegment(item, `block-${blockIndex}-item-${itemIndex}`)
338
+ },
339
+ `block-${blockIndex}-item-${itemIndex}`
340
+ ))
341
+ },
342
+ `block-${blockIndex}`
343
+ );
344
+ }
345
+ return /* @__PURE__ */ jsx(
346
+ "p",
347
+ {
348
+ className: "agg-settlement-text-paragraph text-agg-sm leading-agg-5 text-agg-foreground break-words [overflow-wrap:anywhere]",
349
+ children: block.lines.map((line, lineIndex) => /* @__PURE__ */ jsxs(Fragment, { children: [
350
+ lineIndex > 0 ? /* @__PURE__ */ jsx("br", {}) : null,
351
+ renderInlineSegment(line, `block-${blockIndex}-line-${lineIndex}`)
352
+ ] }, `block-${blockIndex}-line-${lineIndex}`))
353
+ },
354
+ `block-${blockIndex}`
355
+ );
356
+ };
357
+ var SettlementTextRenderer = ({
358
+ content,
359
+ className
360
+ }) => {
361
+ const blocks = parseSettlementBlocks(content);
362
+ if (blocks.length === 0) return null;
363
+ return /* @__PURE__ */ jsx("div", { className: cn("agg-settlement-text flex flex-col gap-2", className), children: blocks.map((block, blockIndex) => renderBlock(block, blockIndex)) });
364
+ };
365
+ SettlementTextRenderer.displayName = "SettlementTextRenderer";
366
+
367
+ // src/trading/settlement/index.tsx
368
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
369
+ var SETTLEMENT_SECTION_ID = "agg-settlement-section";
370
+ var getSettlementHeaderClassName = () => {
371
+ return "flex items-center justify-between gap-4";
372
+ };
373
+ var Settlement = ({
374
+ className,
375
+ id = SETTLEMENT_SECTION_ID,
376
+ sectionLabel = defaultSettlementSectionLabel,
377
+ question,
378
+ eventDescription,
379
+ marketDescription,
380
+ primaryRules,
381
+ isLoading = false
382
+ }) => {
383
+ var _a, _b, _c;
384
+ const labels = useLabels();
385
+ const blocks = useMemo(
386
+ () => dedupeSettlementSources({
387
+ eventDescription,
388
+ marketDescription,
389
+ primaryRules
390
+ }),
391
+ [eventDescription, marketDescription, primaryRules]
392
+ );
393
+ const eventBlock = (_a = blocks.find((block) => block.key === "eventDescription")) != null ? _a : null;
394
+ const marketBlock = (_b = blocks.find((block) => block.key === "marketDescription")) != null ? _b : null;
395
+ const primaryRulesBlock = (_c = blocks.find((block) => block.key === "primaryRules")) != null ? _c : null;
396
+ if (isLoading) {
397
+ return /* @__PURE__ */ jsx2(
398
+ Skeleton,
399
+ {
400
+ ariaLabel: labels.trading.settlementLoading,
401
+ className,
402
+ view: skeletonViews.settlement
403
+ }
404
+ );
405
+ }
406
+ const resolvedSectionLabel = sectionLabel === defaultSettlementSectionLabel ? labels.trading.settlementSection : sectionLabel;
407
+ return /* @__PURE__ */ jsxs2(
408
+ Card,
409
+ {
410
+ id,
411
+ className: cn(
412
+ "group/agg-settlement-card",
413
+ "flex flex-col w-full gap-5 rounded-agg-xl border border-agg-separator bg-agg-secondary p-5 shadow-none hover:shadow-none",
414
+ className
415
+ ),
416
+ children: [
417
+ /* @__PURE__ */ jsxs2("div", { className: cn("agg-settlement-header", getSettlementHeaderClassName()), children: [
418
+ /* @__PURE__ */ jsx2("p", { className: "text-agg-xs font-agg-bold leading-agg-4 uppercase text-agg-muted-foreground", children: resolvedSectionLabel }),
419
+ question ? /* @__PURE__ */ jsx2("p", { className: "agg-settlement-question text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: question }) : null
420
+ ] }),
421
+ blocks.length === 0 ? /* @__PURE__ */ jsx2("p", { className: "agg-settlement-empty text-agg-sm leading-agg-5 text-agg-muted-foreground", children: labels.trading.settlementEmpty }) : /* @__PURE__ */ jsxs2("div", { className: "agg-settlement-sections flex flex-col gap-4", children: [
422
+ eventBlock || marketBlock ? /* @__PURE__ */ jsxs2(
423
+ "div",
424
+ {
425
+ className: "agg-settlement-section agg-settlement-section-description",
426
+ "data-source": "description",
427
+ children: [
428
+ eventBlock ? /* @__PURE__ */ jsx2("div", { "data-source": "eventDescription", children: /* @__PURE__ */ jsx2(SettlementTextRenderer, { content: eventBlock.content }) }) : null,
429
+ eventBlock && marketBlock ? /* @__PURE__ */ jsx2("hr", { className: "agg-settlement-divider my-4 border-0 border-t border-agg-separator" }) : null,
430
+ marketBlock ? /* @__PURE__ */ jsx2("div", { "data-source": "marketDescription", children: /* @__PURE__ */ jsx2(SettlementTextRenderer, { content: marketBlock.content }) }) : null
431
+ ]
432
+ }
433
+ ) : null,
434
+ primaryRulesBlock ? /* @__PURE__ */ jsxs2(
435
+ "div",
436
+ {
437
+ className: "agg-settlement-section agg-settlement-section-primaryRules",
438
+ "data-source": "primaryRules",
439
+ children: [
440
+ /* @__PURE__ */ jsx2("p", { className: "agg-settlement-section-label text-agg-xs font-agg-bold leading-agg-4 uppercase text-agg-muted-foreground mb-2", children: labels.trading.settlementPrimaryRulesLabel }),
441
+ /* @__PURE__ */ jsx2(SettlementTextRenderer, { content: primaryRulesBlock.content })
442
+ ]
443
+ }
444
+ ) : null
445
+ ] })
446
+ ]
447
+ }
448
+ );
449
+ };
450
+ Settlement.displayName = "Settlement";
451
+
452
+ // src/events/item-details/event-list-item-details.utils.ts
453
+ import dayjs2 from "dayjs";
117
454
  var compareOutcomeSelectorLabels = (leftLabel, rightLabel) => {
118
455
  const leftSemanticLabel = toSemanticLabel(leftLabel);
119
456
  const rightSemanticLabel = toSemanticLabel(rightLabel);
@@ -126,8 +463,8 @@ var compareOutcomeSelectorLabels = (leftLabel, rightLabel) => {
126
463
  if (leftBinaryOrder != null && rightBinaryOrder != null) {
127
464
  return leftBinaryOrder - rightBinaryOrder;
128
465
  }
129
- const leftDate = isDateLikeLabel(leftLabel) ? dayjs(leftLabel).valueOf() : null;
130
- const rightDate = isDateLikeLabel(rightLabel) ? dayjs(rightLabel).valueOf() : null;
466
+ const leftDate = isDateLikeLabel(leftLabel) ? dayjs2(leftLabel).valueOf() : null;
467
+ const rightDate = isDateLikeLabel(rightLabel) ? dayjs2(rightLabel).valueOf() : null;
131
468
  if (leftDate != null && rightDate != null && leftDate !== rightDate) {
132
469
  return leftDate - rightDate;
133
470
  }
@@ -168,47 +505,47 @@ var toSemanticLabel = (value) => {
168
505
  };
169
506
  var isDateLikeLabel = (value) => {
170
507
  if (!value.trim()) return false;
171
- return dayjs(value).isValid();
508
+ return dayjs2(value).isValid();
172
509
  };
173
510
  var getTimeWindowByRange = (range) => {
174
- const endTs = dayjs().unix();
511
+ const endTs = dayjs2().unix();
175
512
  if (range === "1H") {
176
513
  return {
177
- startTs: dayjs.unix(endTs).subtract(1, "hour").unix(),
514
+ startTs: dayjs2.unix(endTs).subtract(1, "hour").unix(),
178
515
  endTs,
179
516
  intervalMinutes: 5
180
517
  };
181
518
  }
182
519
  if (range === "6H") {
183
520
  return {
184
- startTs: dayjs.unix(endTs).subtract(6, "hour").unix(),
521
+ startTs: dayjs2.unix(endTs).subtract(6, "hour").unix(),
185
522
  endTs,
186
523
  intervalMinutes: 15
187
524
  };
188
525
  }
189
526
  if (range === "1D") {
190
527
  return {
191
- startTs: dayjs.unix(endTs).subtract(1, "day").unix(),
528
+ startTs: dayjs2.unix(endTs).subtract(1, "day").unix(),
192
529
  endTs,
193
530
  intervalMinutes: 30
194
531
  };
195
532
  }
196
533
  if (range === "1W") {
197
534
  return {
198
- startTs: dayjs.unix(endTs).subtract(7, "day").unix(),
535
+ startTs: dayjs2.unix(endTs).subtract(7, "day").unix(),
199
536
  endTs,
200
537
  intervalMinutes: 60
201
538
  };
202
539
  }
203
540
  if (range === "1M") {
204
541
  return {
205
- startTs: dayjs.unix(endTs).subtract(1, "month").unix(),
542
+ startTs: dayjs2.unix(endTs).subtract(1, "month").unix(),
206
543
  endTs,
207
544
  intervalMinutes: 240
208
545
  };
209
546
  }
210
547
  return {
211
- startTs: dayjs.unix(endTs).subtract(6, "month").unix(),
548
+ startTs: dayjs2.unix(endTs).subtract(6, "month").unix(),
212
549
  endTs,
213
550
  intervalMinutes: 720
214
551
  };
@@ -405,7 +742,7 @@ var resolveMarketChartLiveState = ({
405
742
 
406
743
  // src/events/market-details/market-details.utils.ts
407
744
  import { safeParse as safeParse2 } from "@agg-build/sdk";
408
- import dayjs2 from "dayjs";
745
+ import dayjs3 from "dayjs";
409
746
  var VALID_TABS = /* @__PURE__ */ new Set(["order-book", "graph", "other"]);
410
747
  var isMarketDetailsTab = (v) => typeof v === "string" && VALID_TABS.has(v);
411
748
  var normalizeLabel2 = (value) => {
@@ -558,19 +895,19 @@ var resolveOtherTabRows = (market, labels) => {
558
895
  if (market.creationDate) {
559
896
  rows.push({
560
897
  label: labels.marketDetails.meta.created,
561
- value: dayjs2(market.creationDate).format("MMM D, YYYY")
898
+ value: dayjs3(market.creationDate).format("MMM D, YYYY")
562
899
  });
563
900
  }
564
901
  if (market.startDate) {
565
902
  rows.push({
566
903
  label: labels.marketDetails.meta.opens,
567
- value: dayjs2(market.startDate).format("MMM D, YYYY")
904
+ value: dayjs3(market.startDate).format("MMM D, YYYY")
568
905
  });
569
906
  }
570
907
  if (market.endDate) {
571
908
  rows.push({
572
909
  label: labels.marketDetails.meta.closes,
573
- value: dayjs2(market.endDate).format("MMM D, YYYY")
910
+ value: dayjs3(market.endDate).format("MMM D, YYYY")
574
911
  });
575
912
  }
576
913
  if (rows.length === 1) {
@@ -619,10 +956,10 @@ var buildMarketDetailsModel = ({
619
956
  };
620
957
 
621
958
  // src/events/shared/event-trading-state.utils.ts
622
- import dayjs3 from "dayjs";
959
+ import dayjs4 from "dayjs";
623
960
  var formatTradingStateDate = (value) => {
624
- if (!dayjs3(value).isValid()) return value;
625
- return dayjs3(value).format("MMM D, YYYY");
961
+ if (!dayjs4(value).isValid()) return value;
962
+ return dayjs4(value).format("MMM D, YYYY");
626
963
  };
627
964
  var resolveTradingStateTimestampLabel = (labels, state) => {
628
965
  if (state.kind === "resolved" && state.resolvesAt) {
@@ -742,6 +1079,19 @@ export {
742
1079
  resolveHeaderOutcomeItems,
743
1080
  resolveOtherTabRows,
744
1081
  buildMarketDetailsModel,
1082
+ defaultSettlementSectionLabel,
1083
+ defaultTradingDisclaimer,
1084
+ getTradingDateLabel,
1085
+ getTradingVenueLabel,
1086
+ getTradingValueLabel,
1087
+ getTradingPriceLabel,
1088
+ getTradingAveragePriceLabel,
1089
+ getTradingBalanceLabel,
1090
+ getTradingSharesLabel,
1091
+ getTradingSlippageLabel,
1092
+ getFirstSettlementParagraph,
1093
+ SETTLEMENT_SECTION_ID,
1094
+ Settlement,
745
1095
  resolveTradingStatePresentation,
746
1096
  resolveTradingStateBadgeClassName,
747
1097
  resolveOrderEligibilityMessage