@loafmarkets/ui 0.1.254 → 0.1.255

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/index.mjs CHANGED
@@ -157,7 +157,7 @@ var PortfolioSummary = React5.forwardRef(
157
157
  onResetAccount,
158
158
  positionsHeading = "Current Positions",
159
159
  emptyPositionsText = "No positions yet. Start trading to build your portfolio!",
160
- formatCurrency: formatCurrency7 = defaultFormatCurrency,
160
+ formatCurrency: formatCurrency6 = defaultFormatCurrency,
161
161
  formatPercent: formatPercent2 = defaultFormatPercent,
162
162
  formatSignedCurrency = defaultFormatSignedCurrency,
163
163
  className,
@@ -195,11 +195,11 @@ var PortfolioSummary = React5.forwardRef(
195
195
  /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
196
196
  /* @__PURE__ */ jsxs("div", { children: [
197
197
  /* @__PURE__ */ jsx("p", { className: "text-xs uppercase tracking-[0.5px] text-white/50", children: "Available Cash" }),
198
- /* @__PURE__ */ jsx("p", { className: "mt-1 text-[1.25rem] font-semibold text-white", children: formatCurrency7(availableCash) })
198
+ /* @__PURE__ */ jsx("p", { className: "mt-1 text-[1.25rem] font-semibold text-white", children: formatCurrency6(availableCash) })
199
199
  ] }),
200
200
  /* @__PURE__ */ jsxs("div", { children: [
201
201
  /* @__PURE__ */ jsx("p", { className: "text-xs uppercase tracking-[0.5px] text-white/50", children: "Portfolio Value" }),
202
- /* @__PURE__ */ jsx("p", { className: "mt-1 text-[1.25rem] font-semibold text-white", children: formatCurrency7(portfolioValue) })
202
+ /* @__PURE__ */ jsx("p", { className: "mt-1 text-[1.25rem] font-semibold text-white", children: formatCurrency6(portfolioValue) })
203
203
  ] }),
204
204
  /* @__PURE__ */ jsxs("div", { children: [
205
205
  /* @__PURE__ */ jsx("p", { className: "text-xs uppercase tracking-[0.5px] text-white/50", children: "Total Return" }),
@@ -7390,7 +7390,7 @@ var MiniLiveFeed = () => {
7390
7390
  }, 2e3 + Math.random() * 2e3);
7391
7391
  return () => clearInterval(interval);
7392
7392
  }, []);
7393
- const formatCurrency7 = (amount) => `$${amount.toLocaleString()}`;
7393
+ const formatCurrency6 = (amount) => `$${amount.toLocaleString()}`;
7394
7394
  return /* @__PURE__ */ jsxs(
7395
7395
  "div",
7396
7396
  {
@@ -7480,7 +7480,7 @@ var MiniLiveFeed = () => {
7480
7480
  ] }),
7481
7481
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.5rem", position: "relative", zIndex: 1 }, children: [
7482
7482
  /* @__PURE__ */ jsx("span", { style: { fontSize: "0.75rem", color: "var(--color-text-secondary, #848e9c)" }, children: "bought" }),
7483
- /* @__PURE__ */ jsx("span", { style: { fontSize: "0.8rem", fontWeight: 600, color: "#fff" }, children: formatCurrency7(purchase.amount) })
7483
+ /* @__PURE__ */ jsx("span", { style: { fontSize: "0.8rem", fontWeight: 600, color: "#fff" }, children: formatCurrency6(purchase.amount) })
7484
7484
  ] })
7485
7485
  ]
7486
7486
  },
@@ -8431,7 +8431,7 @@ function PropertyOverview({
8431
8431
  description: descriptionProp,
8432
8432
  tradeButtonLabel = "Trade",
8433
8433
  images,
8434
- galleryCategories: galleryCategories2 = [],
8434
+ galleryCategories = [],
8435
8435
  videoUrl,
8436
8436
  tokenName,
8437
8437
  landSizeSqm: landProp,
@@ -8653,7 +8653,7 @@ function PropertyOverview({
8653
8653
  GalleryMapSection,
8654
8654
  {
8655
8655
  images: galleryImages.map((img) => ({ src: img.imageUrl, title: img.title, subtitle: img.subtitle })),
8656
- categories: galleryCategories2,
8656
+ categories: galleryCategories,
8657
8657
  propertyLocation: location,
8658
8658
  videoUrl,
8659
8659
  tokenName,
@@ -8885,7 +8885,7 @@ function PropertyOverview({
8885
8885
  GalleryMapSection,
8886
8886
  {
8887
8887
  images: galleryImages.map((img) => ({ src: img.imageUrl, title: img.title, subtitle: img.subtitle })),
8888
- categories: galleryCategories2,
8888
+ categories: galleryCategories,
8889
8889
  propertyLocation: location,
8890
8890
  videoUrl,
8891
8891
  tokenName,
@@ -12219,342 +12219,6 @@ var HomeSpinner = styled9.span`
12219
12219
  to { transform: rotate(360deg); }
12220
12220
  }
12221
12221
  `;
12222
- var MAX_DISPLAY_AMOUNT = 6e4;
12223
- var formatCurrency4 = (amount) => {
12224
- if (amount >= 1e6) return `$${(amount / 1e6).toFixed(2)}M`;
12225
- return `$${Math.round(amount).toLocaleString()}`;
12226
- };
12227
- var formatTimeAgo2 = (timestamp) => {
12228
- const seconds = Math.floor(Date.now() / 1e3) - timestamp;
12229
- if (seconds < 60) return `${seconds}s ago`;
12230
- const minutes = Math.floor(seconds / 60);
12231
- if (minutes < 60) return `${minutes}m ago`;
12232
- const hours = Math.floor(minutes / 60);
12233
- if (hours < 24) return `${hours}h ago`;
12234
- return `${Math.floor(hours / 24)}d ago`;
12235
- };
12236
- function VideoActivitySection({
12237
- ipoStarted,
12238
- ipoEnded = false,
12239
- isLoading = false,
12240
- recentOrders = [],
12241
- ordersAllocated = 0,
12242
- tokenPrice = 0
12243
- }) {
12244
- const sortedOrders = useMemo(
12245
- () => [...recentOrders].sort((a, b) => b.timestamp - a.timestamp).slice(0, 7),
12246
- [recentOrders]
12247
- );
12248
- const headerStatusText = ipoEnded ? `Sale ended${ordersAllocated > 0 ? ` \xB7 ${ordersAllocated.toLocaleString()} orders` : ""}` : ipoStarted ? isLoading && sortedOrders.length === 0 ? "Loading orders\u2026" : `Active orders: ${ordersAllocated.toLocaleString()}` : "Waiting for Offer to Open";
12249
- const showSkeletonFeed = ipoStarted && isLoading && sortedOrders.length === 0;
12250
- const showOrderFeed = !showSkeletonFeed && (ipoStarted || ipoEnded && sortedOrders.length > 0);
12251
- return /* @__PURE__ */ jsxs(Section4, { children: [
12252
- /* @__PURE__ */ jsxs(VideoPanel, { children: [
12253
- /* @__PURE__ */ jsx("div", { className: "section-header", children: /* @__PURE__ */ jsx("h3", { children: "Musgrave" }) }),
12254
- /* @__PURE__ */ jsx("div", { className: "video-container", children: /* @__PURE__ */ jsxs("video", { controls: true, loop: true, autoPlay: true, muted: true, playsInline: true, children: [
12255
- /* @__PURE__ */ jsx("source", { src: "/properties/Musgrave/musgrave.mp4", type: "video/mp4" }),
12256
- "Your browser does not support the video tag."
12257
- ] }) })
12258
- ] }),
12259
- /* @__PURE__ */ jsxs(ActivityPanel, { children: [
12260
- /* @__PURE__ */ jsxs("div", { className: "section-header", children: [
12261
- /* @__PURE__ */ jsxs("h3", { children: [
12262
- /* @__PURE__ */ jsx(LiveIndicatorDot, { $active: ipoStarted && !ipoEnded }),
12263
- "Recent Order Activity"
12264
- ] }),
12265
- /* @__PURE__ */ jsx("span", { children: headerStatusText })
12266
- ] }),
12267
- /* @__PURE__ */ jsx("div", { className: "activity-content", children: showSkeletonFeed ? /* @__PURE__ */ jsx(FeedList, { children: Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */ jsxs(SkeletonFeedRow, { children: [
12268
- /* @__PURE__ */ jsxs("div", { className: "info-col", children: [
12269
- /* @__PURE__ */ jsx(Skeleton, { width: 110, height: 14 }),
12270
- /* @__PURE__ */ jsx(Skeleton, { width: 56, height: 10 })
12271
- ] }),
12272
- /* @__PURE__ */ jsx(Skeleton, { width: 70, height: 14 })
12273
- ] }, `feed-skel-${i}`)) }) : showOrderFeed ? /* @__PURE__ */ jsxs(Fragment, { children: [
12274
- ipoEnded && /* @__PURE__ */ jsx(EndedBanner, { children: "Sale ended \u2014 final allocations" }),
12275
- /* @__PURE__ */ jsx(FeedList, { children: sortedOrders.map((order, index) => {
12276
- const amount = tokenPrice * order.quantity;
12277
- const barPercent = Math.min(85, Math.max(15, amount / MAX_DISPLAY_AMOUNT * 100));
12278
- const isAlternate = index % 2 === 1;
12279
- return /* @__PURE__ */ jsxs(
12280
- PurchaseItem,
12281
- {
12282
- $barWidth: `${barPercent}%`,
12283
- $isAlternate: isAlternate,
12284
- children: [
12285
- /* @__PURE__ */ jsxs(PurchaseInfo, { children: [
12286
- /* @__PURE__ */ jsx(PurchaseName, { children: order.buyerHandle || `${order.buyerAddress.slice(0, 6)}...${order.buyerAddress.slice(-4)}` }),
12287
- /* @__PURE__ */ jsx(PurchaseTime, { children: formatTimeAgo2(order.timestamp) })
12288
- ] }),
12289
- /* @__PURE__ */ jsx(PurchaseAmount, { children: formatCurrency4(amount) })
12290
- ]
12291
- },
12292
- order.txHash
12293
- );
12294
- }) })
12295
- ] }) : ipoEnded ? /* @__PURE__ */ jsx("div", { className: "activity-empty", children: /* @__PURE__ */ jsx("p", { children: "Sale ended \u2014 no orders were placed." }) }) : /* @__PURE__ */ jsxs("div", { className: "activity-empty", children: [
12296
- /* @__PURE__ */ jsx("div", { className: "spinner" }),
12297
- /* @__PURE__ */ jsx("p", { children: "Activity will appear once the Offering opens" })
12298
- ] }) })
12299
- ] })
12300
- ] });
12301
- }
12302
- var Section4 = styled9.div`
12303
- display: flex;
12304
- gap: 1.5rem;
12305
- align-items: stretch;
12306
- @media (max-width: 1024px) {
12307
- flex-direction: column;
12308
- gap: 1rem;
12309
- }
12310
- `;
12311
- var VideoPanel = styled9.div`
12312
- flex: 1;
12313
- background-color: var(--color-card-darker, #111);
12314
- border-radius: 8px;
12315
- padding: 1.5rem;
12316
- box-shadow: 0 4px 8px rgba(0,0,0,0.2);
12317
- border: 1px solid var(--color-border);
12318
- overflow: hidden;
12319
- display: flex;
12320
- flex-direction: column;
12321
- @media (max-width: 768px) {
12322
- display: none;
12323
- }
12324
- .section-header {
12325
- display: flex;
12326
- justify-content: space-between;
12327
- align-items: center;
12328
- padding-bottom: 0.75rem;
12329
- margin-bottom: 1rem;
12330
- border-bottom: 1px solid rgba(255,255,255,0.1);
12331
- h3 {
12332
- font-size: 0.9rem;
12333
- font-weight: 600;
12334
- color: var(--color-text);
12335
- margin: 0;
12336
- }
12337
- }
12338
- .video-container {
12339
- flex: 1;
12340
- position: relative;
12341
- background: #000;
12342
- border-radius: 8px;
12343
- overflow: hidden;
12344
- min-height: 300px;
12345
- video {
12346
- position: absolute;
12347
- top: 0;
12348
- left: 0;
12349
- width: 100%;
12350
- height: 100%;
12351
- object-fit: cover;
12352
- }
12353
- }
12354
- `;
12355
- var ActivityPanel = styled9.div`
12356
- flex: 0 0 auto;
12357
- min-width: 450px;
12358
- max-width: 520px;
12359
- display: flex;
12360
- flex-direction: column;
12361
- background-color: var(--color-card-darker, #111);
12362
- border-radius: 8px;
12363
- padding: 1.5rem;
12364
- box-shadow: 0 4px 8px rgba(0,0,0,0.2);
12365
- border: 1px solid var(--color-border);
12366
- @media (max-width: 1024px) {
12367
- min-width: 0;
12368
- max-width: none;
12369
- width: 100%;
12370
- padding: 1rem;
12371
- }
12372
- @media (max-width: 768px) {
12373
- max-height: 280px;
12374
- .activity-content {
12375
- max-height: 220px;
12376
- }
12377
- }
12378
- .section-header {
12379
- display: flex;
12380
- justify-content: space-between;
12381
- align-items: center;
12382
- padding-bottom: 0.75rem;
12383
- margin-bottom: 1rem;
12384
- border-bottom: 1px solid rgba(255,255,255,0.1);
12385
- h3 {
12386
- font-size: 0.9rem;
12387
- font-weight: 600;
12388
- color: var(--color-text);
12389
- margin: 0;
12390
- display: flex;
12391
- align-items: center;
12392
- gap: 0.5rem;
12393
- }
12394
- span {
12395
- font-size: 0.75rem;
12396
- color: var(--color-text-secondary);
12397
- font-weight: 500;
12398
- }
12399
- }
12400
- .activity-content {
12401
- flex: 1;
12402
- overflow-y: auto;
12403
- scrollbar-width: none;
12404
- -ms-overflow-style: none;
12405
- }
12406
- .activity-content::-webkit-scrollbar {
12407
- display: none;
12408
- }
12409
- .activity-empty {
12410
- display: flex;
12411
- flex-direction: column;
12412
- align-items: center;
12413
- justify-content: center;
12414
- height: 200px;
12415
- color: var(--color-text-secondary);
12416
- text-align: center;
12417
- gap: 0.75rem;
12418
- .spinner {
12419
- width: 40px;
12420
- height: 40px;
12421
- border-radius: 50%;
12422
- border: 2px solid rgba(212,175,55,0.3);
12423
- border-top-color: #D4AF37;
12424
- animation: spin 1s linear infinite;
12425
- }
12426
- p {
12427
- font-size: 0.85rem;
12428
- margin: 0;
12429
- }
12430
- }
12431
- @keyframes spin {
12432
- from { transform: rotate(0deg); }
12433
- to { transform: rotate(360deg); }
12434
- }
12435
- `;
12436
- var SkeletonFeedRow = styled9.div`
12437
- padding: 0.625rem 0.75rem;
12438
- border-bottom: 1px solid rgba(255,255,255,0.04);
12439
- display: flex;
12440
- justify-content: space-between;
12441
- align-items: center;
12442
- gap: 1rem;
12443
-
12444
- &:last-child {
12445
- border-bottom: none;
12446
- }
12447
-
12448
- .info-col {
12449
- display: flex;
12450
- flex-direction: column;
12451
- gap: 0.3rem;
12452
- min-width: 0;
12453
- flex: 1;
12454
- }
12455
-
12456
- @media (max-width: 768px) {
12457
- padding: 0.4rem 0.6rem;
12458
- }
12459
- `;
12460
- var EndedBanner = styled9.div`
12461
- font-size: 0.7rem;
12462
- font-weight: 600;
12463
- letter-spacing: 0.04em;
12464
- text-transform: uppercase;
12465
- color: rgba(255, 255, 255, 0.55);
12466
- background: rgba(255, 255, 255, 0.04);
12467
- border: 1px solid rgba(255, 255, 255, 0.08);
12468
- border-radius: 6px;
12469
- padding: 0.4rem 0.6rem;
12470
- margin-bottom: 0.5rem;
12471
- text-align: center;
12472
- `;
12473
- var FeedList = styled9.div`
12474
- width: 100%;
12475
- overflow-y: auto;
12476
- scrollbar-width: none;
12477
- -ms-overflow-style: none;
12478
- &::-webkit-scrollbar {
12479
- display: none;
12480
- }
12481
- `;
12482
- var PurchaseItem = styled9.div`
12483
- padding: 0.625rem 0.75rem;
12484
- border-bottom: 1px solid rgba(255,255,255,0.05);
12485
- display: flex;
12486
- justify-content: space-between;
12487
- align-items: center;
12488
- position: relative;
12489
- overflow: hidden;
12490
- background-color: ${(p) => p.$isAlternate ? "rgba(255,255,255,0.03)" : "transparent"};
12491
-
12492
- &::before {
12493
- content: '';
12494
- position: absolute;
12495
- top: 0;
12496
- right: 0;
12497
- bottom: 0;
12498
- width: ${(p) => p.$barWidth || "20%"};
12499
- background: linear-gradient(90deg, transparent 0%, rgba(14,203,129,0.15) 100%);
12500
- pointer-events: none;
12501
- }
12502
-
12503
- &:last-child {
12504
- border-bottom: none;
12505
- }
12506
-
12507
- @media (max-width: 768px) {
12508
- padding: 0.4rem 0.6rem;
12509
- }
12510
- `;
12511
- var PurchaseInfo = styled9.div`
12512
- display: flex;
12513
- flex-direction: column;
12514
- min-width: 0;
12515
- `;
12516
- var PurchaseName = styled9.div`
12517
- font-weight: 500;
12518
- font-size: 0.875rem;
12519
- color: #fff;
12520
- white-space: nowrap;
12521
- overflow: hidden;
12522
- text-overflow: ellipsis;
12523
- `;
12524
- var PurchaseTime = styled9.div`
12525
- font-size: 0.7rem;
12526
- color: var(--color-text-secondary);
12527
- margin-top: 0.125rem;
12528
- `;
12529
- var PurchaseAmount = styled9.div`
12530
- font-weight: 600;
12531
- font-size: 0.875rem;
12532
- color: #fff;
12533
- white-space: nowrap;
12534
- margin-left: 1rem;
12535
- `;
12536
- var LiveIndicatorDot = styled9.span`
12537
- display: inline-block;
12538
- width: 8px;
12539
- height: 8px;
12540
- background-color: ${(p) => p.$active ? "#0ecb81" : "#848e9c"};
12541
- border-radius: 50%;
12542
- position: relative;
12543
- &:after {
12544
- content: '';
12545
- position: absolute;
12546
- width: 100%;
12547
- height: 100%;
12548
- border-radius: 50%;
12549
- background-color: ${(p) => p.$active ? "#0ecb81" : "transparent"};
12550
- animation: ${(p) => p.$active ? "liveGlow 2s infinite" : "none"};
12551
- }
12552
- @keyframes liveGlow {
12553
- 0% { box-shadow: 0 0 0 0 rgba(14,203,129,0.4); }
12554
- 70% { box-shadow: 0 0 0 10px rgba(14,203,129,0); }
12555
- 100% { box-shadow: 0 0 0 0 rgba(14,203,129,0); }
12556
- }
12557
- `;
12558
12222
  var slideIn = keyframes`
12559
12223
  from { transform: translateX(110%); opacity: 0; }
12560
12224
  to { transform: translateX(0); opacity: 1; }
@@ -13601,30 +13265,290 @@ var InsufficientFunds = styled9.div`
13601
13265
  font-size: 0.85rem;
13602
13266
  font-weight: 600;
13603
13267
  `;
13604
- var ACTIVITY_PAGE_SIZE_DEFAULT = 10;
13605
- var formatCurrency5 = (value, opts) => {
13606
- const min = opts?.minimumFractionDigits ?? 2;
13607
- const max = opts?.maximumFractionDigits ?? 2;
13608
- return `$${value.toLocaleString("en-US", { minimumFractionDigits: min, maximumFractionDigits: max })}`;
13609
- };
13610
- var formatNumber2 = (value, maximumFractionDigits = 2) => value.toLocaleString("en-US", { minimumFractionDigits: 0, maximumFractionDigits });
13611
- var formatTimestamp = (unix) => {
13612
- if (!unix) return "\u2014";
13613
- let sec;
13614
- if (unix > 1e18) sec = Math.floor(unix / 1e9);
13615
- else if (unix > 1e14) sec = Math.floor(unix / 1e6);
13616
- else if (unix > 1e12) sec = Math.floor(unix / 1e3);
13617
- else sec = unix;
13618
- return new Date(sec * 1e3).toLocaleString("en-AU", {
13619
- day: "2-digit",
13620
- month: "short",
13621
- hour: "2-digit",
13622
- minute: "2-digit",
13623
- hour12: false
13624
- });
13625
- };
13626
- var formatAddress = (address) => `${address.slice(0, 6)}...${address.slice(-4)}`;
13627
- var prettyLabel = (value) => value.split("_").map((part) => part.charAt(0) + part.slice(1).toLowerCase()).join(" ");
13268
+ function OrderConfirmationModal({
13269
+ open,
13270
+ onClose,
13271
+ hasInsufficientFunds,
13272
+ tokenQuantity,
13273
+ tokenPrice,
13274
+ propertyName,
13275
+ tokenSymbol,
13276
+ estExposure,
13277
+ orderTotal,
13278
+ availableBalance,
13279
+ onConfirm,
13280
+ isPlacing = false,
13281
+ placingLabel = "Placing order\u2026"
13282
+ }) {
13283
+ if (!open) return null;
13284
+ const handleOverlayClose = () => {
13285
+ if (isPlacing) return;
13286
+ onClose();
13287
+ };
13288
+ return /* @__PURE__ */ jsx(Overlay3, { onClick: handleOverlayClose, children: /* @__PURE__ */ jsxs(Modal, { onClick: (e) => e.stopPropagation(), children: [
13289
+ /* @__PURE__ */ jsx(ModalHeader, { children: /* @__PURE__ */ jsxs("h3", { children: [
13290
+ "Confirm Order",
13291
+ /* @__PURE__ */ jsx(Badge2, { children: "Subscribe" })
13292
+ ] }) }),
13293
+ /* @__PURE__ */ jsx(ModalBody, { children: [
13294
+ { label: "Order Type", value: "Primary Offering" },
13295
+ { label: "Property", value: propertyName },
13296
+ { label: "Units", value: `${tokenQuantity.toLocaleString()} ${tokenSymbol}`, highlight: true },
13297
+ {
13298
+ label: "Unit Price",
13299
+ value: `$${tokenPrice.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
13300
+ },
13301
+ { label: "Property Exposure", value: `${estExposure}%` },
13302
+ { label: "Total Investment", value: `$${orderTotal.toLocaleString()}`, highlight: true }
13303
+ ].map((row, index, arr) => /* @__PURE__ */ jsxs(ModalRow, { "data-divider": index < arr.length - 1, children: [
13304
+ /* @__PURE__ */ jsx("span", { children: row.label }),
13305
+ /* @__PURE__ */ jsx("strong", { "data-highlight": row.highlight, children: row.value })
13306
+ ] }, row.label)) }),
13307
+ hasInsufficientFunds ? /* @__PURE__ */ jsxs(Warning, { children: [
13308
+ /* @__PURE__ */ jsx("p", { children: "\u26A0 Insufficient Balance" }),
13309
+ /* @__PURE__ */ jsxs("small", { children: [
13310
+ "You need ",
13311
+ /* @__PURE__ */ jsxs("strong", { children: [
13312
+ "$",
13313
+ orderTotal.toLocaleString()
13314
+ ] }),
13315
+ " but only have",
13316
+ " ",
13317
+ /* @__PURE__ */ jsxs("strong", { children: [
13318
+ "$",
13319
+ availableBalance.toLocaleString()
13320
+ ] }),
13321
+ " available."
13322
+ ] })
13323
+ ] }) : /* @__PURE__ */ jsxs(Summary, { children: [
13324
+ "Your order for ",
13325
+ /* @__PURE__ */ jsxs("strong", { children: [
13326
+ tokenQuantity.toLocaleString(),
13327
+ " ",
13328
+ tokenSymbol,
13329
+ " units"
13330
+ ] }),
13331
+ " in the",
13332
+ " ",
13333
+ /* @__PURE__ */ jsx("strong", { children: propertyName }),
13334
+ " Primary Offering will be placed for ",
13335
+ /* @__PURE__ */ jsxs("strong", { children: [
13336
+ "$",
13337
+ tokenPrice.toFixed(2),
13338
+ "/unit"
13339
+ ] }),
13340
+ "."
13341
+ ] }),
13342
+ /* @__PURE__ */ jsxs(ButtonRow2, { children: [
13343
+ /* @__PURE__ */ jsx(
13344
+ "button",
13345
+ {
13346
+ type: "button",
13347
+ onClick: onClose,
13348
+ className: "secondary",
13349
+ disabled: isPlacing,
13350
+ children: "Cancel"
13351
+ }
13352
+ ),
13353
+ !hasInsufficientFunds && /* @__PURE__ */ jsx(
13354
+ "button",
13355
+ {
13356
+ type: "button",
13357
+ onClick: onConfirm,
13358
+ className: "primary",
13359
+ disabled: isPlacing,
13360
+ children: isPlacing ? /* @__PURE__ */ jsxs(Fragment, { children: [
13361
+ /* @__PURE__ */ jsx(Spinner, { "aria-hidden": true }),
13362
+ /* @__PURE__ */ jsx("span", { children: placingLabel })
13363
+ ] }) : "Place Order"
13364
+ }
13365
+ )
13366
+ ] })
13367
+ ] }) });
13368
+ }
13369
+ var Overlay3 = styled9.div`
13370
+ position: fixed;
13371
+ top: 0;
13372
+ left: 0;
13373
+ right: 0;
13374
+ bottom: 0;
13375
+ background-color: rgba(0,0,0,0.7);
13376
+ display: flex;
13377
+ align-items: center;
13378
+ justify-content: center;
13379
+ z-index: 10000;
13380
+ backdrop-filter: blur(4px);
13381
+ `;
13382
+ var Modal = styled9.div`
13383
+ background: linear-gradient(135deg, rgba(26,29,35,0.95) 0%, rgba(26,29,35,0.98) 100%);
13384
+ border: 1px solid rgba(255,255,255,0.1);
13385
+ border-radius: 16px;
13386
+ padding: 2rem;
13387
+ max-width: 480px;
13388
+ width: 90%;
13389
+ box-shadow: 0 20px 60px rgba(0,0,0,0.5);
13390
+ `;
13391
+ var ModalHeader = styled9.div`
13392
+ display: flex;
13393
+ align-items: center;
13394
+ margin-bottom: 1.5rem;
13395
+ padding-bottom: 1rem;
13396
+ border-bottom: 1px solid rgba(255,255,255,0.1);
13397
+ h3 {
13398
+ margin: 0;
13399
+ font-size: 1.25rem;
13400
+ font-weight: 600;
13401
+ color: #fff;
13402
+ display: flex;
13403
+ align-items: center;
13404
+ gap: 0.5rem;
13405
+ }
13406
+ `;
13407
+ var Badge2 = styled9.span`
13408
+ padding: 0.25rem 0.75rem;
13409
+ border-radius: 6px;
13410
+ font-size: 0.75rem;
13411
+ font-weight: 600;
13412
+ text-transform: uppercase;
13413
+ letter-spacing: 0.5px;
13414
+ background: linear-gradient(135deg, rgba(212,175,55,0.2) 0%, rgba(212,175,55,0.1) 100%);
13415
+ color: #D4AF37;
13416
+ border: 1px solid rgba(212,175,55,0.3);
13417
+ `;
13418
+ var ModalBody = styled9.div`
13419
+ margin-bottom: 1.5rem;
13420
+ display: flex;
13421
+ flex-direction: column;
13422
+ `;
13423
+ var ModalRow = styled9.div`
13424
+ display: flex;
13425
+ justify-content: space-between;
13426
+ align-items: center;
13427
+ padding: 0.75rem 0;
13428
+ border-bottom: 1px solid rgba(255,255,255,0.05);
13429
+ &[data-divider='false'] {
13430
+ border-bottom: none;
13431
+ }
13432
+ span {
13433
+ color: rgba(255,255,255,0.6);
13434
+ font-size: 0.9rem;
13435
+ }
13436
+ strong {
13437
+ color: #fff;
13438
+ font-weight: 500;
13439
+ font-size: 0.95rem;
13440
+ }
13441
+ strong[data-highlight='true'] {
13442
+ color: #D4AF37;
13443
+ font-weight: 600;
13444
+ }
13445
+ `;
13446
+ var Warning = styled9.div`
13447
+ background: rgba(246,70,93,0.1);
13448
+ border: 1px solid rgba(246,70,93,0.3);
13449
+ border-radius: 8px;
13450
+ padding: 1rem;
13451
+ margin-bottom: 1.5rem;
13452
+ p {
13453
+ margin: 0;
13454
+ color: #f6465d;
13455
+ font-size: 0.9rem;
13456
+ font-weight: 600;
13457
+ }
13458
+ small {
13459
+ display: block;
13460
+ margin-top: 0.5rem;
13461
+ color: rgba(255,255,255,0.7);
13462
+ font-size: 0.85rem;
13463
+ line-height: 1.5;
13464
+ }
13465
+ `;
13466
+ var Summary = styled9.div`
13467
+ background: rgba(255,255,255,0.03);
13468
+ border: 1px solid rgba(255,255,255,0.08);
13469
+ border-radius: 8px;
13470
+ padding: 1rem;
13471
+ margin-bottom: 1.5rem;
13472
+ color: rgba(255,255,255,0.8);
13473
+ font-size: 0.9rem;
13474
+ line-height: 1.5;
13475
+ `;
13476
+ var spin = keyframes`
13477
+ to { transform: rotate(360deg); }
13478
+ `;
13479
+ var Spinner = styled9.span`
13480
+ display: inline-block;
13481
+ width: 14px;
13482
+ height: 14px;
13483
+ border-radius: 50%;
13484
+ border: 2px solid rgba(255, 255, 255, 0.35);
13485
+ border-top-color: #fff;
13486
+ animation: ${spin} 0.7s linear infinite;
13487
+ margin-right: 0.5rem;
13488
+ vertical-align: -2px;
13489
+ `;
13490
+ var ButtonRow2 = styled9.div`
13491
+ display: flex;
13492
+ gap: 1rem;
13493
+ justify-content: flex-end;
13494
+ button {
13495
+ padding: 0.75rem 1.5rem;
13496
+ border-radius: 8px;
13497
+ font-weight: 600;
13498
+ font-size: 0.95rem;
13499
+ cursor: pointer;
13500
+ display: inline-flex;
13501
+ align-items: center;
13502
+ justify-content: center;
13503
+ }
13504
+ button:disabled {
13505
+ cursor: not-allowed;
13506
+ opacity: 0.75;
13507
+ }
13508
+ .secondary {
13509
+ background: rgba(255,255,255,0.1);
13510
+ color: rgba(255,255,255,0.8);
13511
+ border: 1px solid rgba(255,255,255,0.2);
13512
+ }
13513
+ .primary {
13514
+ background: linear-gradient(135deg, #0ecb81 0%, #0ba968 100%);
13515
+ color: #fff;
13516
+ border: none;
13517
+ box-shadow: 0 4px 12px rgba(14,203,129,0.3);
13518
+ }
13519
+ `;
13520
+
13521
+ // src/components/property-buy/constants.ts
13522
+ var STATUS_COLOR2 = {
13523
+ PENDING: "#D4AF37",
13524
+ LIVE: "#0ecb81",
13525
+ CLOSED: "#848e9c",
13526
+ CANCELLED: "#f6465d"
13527
+ };
13528
+ var ACTIVITY_PAGE_SIZE_DEFAULT = 10;
13529
+ var formatCurrency4 = (value, opts) => {
13530
+ const min = opts?.minimumFractionDigits ?? 2;
13531
+ const max = opts?.maximumFractionDigits ?? 2;
13532
+ return `$${value.toLocaleString("en-US", { minimumFractionDigits: min, maximumFractionDigits: max })}`;
13533
+ };
13534
+ var formatNumber2 = (value, maximumFractionDigits = 2) => value.toLocaleString("en-US", { minimumFractionDigits: 0, maximumFractionDigits });
13535
+ var formatTimestamp = (unix) => {
13536
+ if (!unix) return "\u2014";
13537
+ let sec;
13538
+ if (unix > 1e18) sec = Math.floor(unix / 1e9);
13539
+ else if (unix > 1e14) sec = Math.floor(unix / 1e6);
13540
+ else if (unix > 1e12) sec = Math.floor(unix / 1e3);
13541
+ else sec = unix;
13542
+ return new Date(sec * 1e3).toLocaleString("en-AU", {
13543
+ day: "2-digit",
13544
+ month: "short",
13545
+ hour: "2-digit",
13546
+ minute: "2-digit",
13547
+ hour12: false
13548
+ });
13549
+ };
13550
+ var formatAddress = (address) => `${address.slice(0, 6)}...${address.slice(-4)}`;
13551
+ var prettyLabel = (value) => value.split("_").map((part) => part.charAt(0) + part.slice(1).toLowerCase()).join(" ");
13628
13552
  var sideLabel = (side) => side?.toUpperCase() === "SELL" ? "Sell" : "Buy";
13629
13553
  var getOrderStatusMeta = (statusRaw) => {
13630
13554
  const status = statusRaw.toUpperCase();
@@ -13861,16 +13785,16 @@ function PortfolioActivityPanel({
13861
13785
  /* @__PURE__ */ jsx("span", { style: { color: "rgba(255,255,255,0.4)", fontSize: "0.7rem" }, children: pos.tokenName.toUpperCase() })
13862
13786
  ] }) }),
13863
13787
  /* @__PURE__ */ jsx(PositionsCell, { children: /* @__PURE__ */ jsxs("span", { style: { color: "#fff", fontSize: "0.8rem" }, children: [
13864
- formatCurrency5(currentValue, { minimumFractionDigits: 0, maximumFractionDigits: 0 }),
13788
+ formatCurrency4(currentValue, { minimumFractionDigits: 0, maximumFractionDigits: 0 }),
13865
13789
  " ",
13866
13790
  /* @__PURE__ */ jsx("span", { style: { color: "rgba(255,255,255,0.4)", fontSize: "0.7rem" }, children: "USD" })
13867
13791
  ] }) }),
13868
- /* @__PURE__ */ jsx(PositionsCell, { children: /* @__PURE__ */ jsx("span", { style: { color: "rgba(255,255,255,0.7)", fontSize: "0.8rem" }, children: formatCurrency5(pos.averageEntryPrice) }) }),
13869
- /* @__PURE__ */ jsx(PositionsCell, { children: /* @__PURE__ */ jsx("span", { style: { color: "#fff", fontSize: "0.8rem" }, children: formatCurrency5(pos.marketPrice) }) }),
13792
+ /* @__PURE__ */ jsx(PositionsCell, { children: /* @__PURE__ */ jsx("span", { style: { color: "rgba(255,255,255,0.7)", fontSize: "0.8rem" }, children: formatCurrency4(pos.averageEntryPrice) }) }),
13793
+ /* @__PURE__ */ jsx(PositionsCell, { children: /* @__PURE__ */ jsx("span", { style: { color: "#fff", fontSize: "0.8rem" }, children: formatCurrency4(pos.marketPrice) }) }),
13870
13794
  /* @__PURE__ */ jsxs(PositionsCell, { children: [
13871
13795
  /* @__PURE__ */ jsxs(PnLAmount, { $positive: isPositive, children: [
13872
13796
  isPositive ? "+" : "-",
13873
- formatCurrency5(Math.abs(pnl))
13797
+ formatCurrency4(Math.abs(pnl))
13874
13798
  ] }),
13875
13799
  /* @__PURE__ */ jsxs(PnLPercentage, { $positive: isPositive, children: [
13876
13800
  isPositive ? "+" : "",
@@ -13929,8 +13853,8 @@ function PortfolioActivityPanel({
13929
13853
  return /* @__PURE__ */ jsxs(GridRow, { $columns: "1.2fr 0.8fr 1fr 1fr 0.8fr 1fr", children: [
13930
13854
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $primary: true, children: order.tokenName }) }),
13931
13855
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { children: formatNumber2(order.quantity) }) }),
13932
- /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $muted: true, children: formatCurrency5(order.price) }) }),
13933
- /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { children: formatCurrency5(order.price * order.quantity) }) }),
13856
+ /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $muted: true, children: formatCurrency4(order.price) }) }),
13857
+ /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { children: formatCurrency4(order.price * order.quantity) }) }),
13934
13858
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(ActivityTag, { $color: meta.color, $bg: meta.bg, children: prettyLabel(order.status) }) }),
13935
13859
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $muted: true, children: formatTimestamp(order.createdAt) }) })
13936
13860
  ] }, `${order.tokenName}-${order.txHash}-${order.createdAt}`);
@@ -13961,7 +13885,7 @@ function PortfolioActivityPanel({
13961
13885
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(SideBadge, { $side: sideLabel(order.side), children: sideLabel(order.side) }) }),
13962
13886
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $muted: true, children: prettyLabel(order.type) }) }),
13963
13887
  /* @__PURE__ */ jsx(GridCell, { children: onAmendOrder ? /* @__PURE__ */ jsx(EditableField, { value: order.quantity, format: formatNumber2, onCommit: (v) => onAmendOrder(order.id, { quantity: v }) }) : /* @__PURE__ */ jsx(CellText, { children: formatNumber2(order.quantity) }) }),
13964
- /* @__PURE__ */ jsx(GridCell, { children: !isMarket && order.price && onAmendOrder ? /* @__PURE__ */ jsx(EditableField, { value: order.price, format: (v) => formatCurrency5(v), onCommit: (v) => onAmendOrder(order.id, { price: v }) }) : /* @__PURE__ */ jsx(CellText, { children: isMarket || !order.price ? "Market" : formatCurrency5(order.price) }) }),
13888
+ /* @__PURE__ */ jsx(GridCell, { children: !isMarket && order.price && onAmendOrder ? /* @__PURE__ */ jsx(EditableField, { value: order.price, format: (v) => formatCurrency4(v), onCommit: (v) => onAmendOrder(order.id, { price: v }) }) : /* @__PURE__ */ jsx(CellText, { children: isMarket || !order.price ? "Market" : formatCurrency4(order.price) }) }),
13965
13889
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsxs(CellText, { $muted: true, children: [
13966
13890
  filledPercent,
13967
13891
  "%"
@@ -14005,7 +13929,7 @@ function PortfolioActivityPanel({
14005
13929
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(SideBadge, { $side: sideLabel(order.side), children: sideLabel(order.side) }) }),
14006
13930
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $muted: true, children: prettyLabel(order.type) }) }),
14007
13931
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { children: formatNumber2(order.quantity) }) }),
14008
- /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { children: isMarket || !order.price ? "Market" : formatCurrency5(order.price) }) }),
13932
+ /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { children: isMarket || !order.price ? "Market" : formatCurrency4(order.price) }) }),
14009
13933
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsxs(CellText, { $muted: true, children: [
14010
13934
  filledPercent,
14011
13935
  "%"
@@ -14032,9 +13956,9 @@ function PortfolioActivityPanel({
14032
13956
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $primary: true, children: trade.tokenName }) }),
14033
13957
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(SideBadge, { $side: sideLabel(trade.side), children: sideLabel(trade.side) }) }),
14034
13958
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { children: formatNumber2(trade.quantity) }) }),
14035
- /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { children: formatCurrency5(trade.price) }) }),
14036
- /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { children: formatCurrency5(trade.price * trade.quantity) }) }),
14037
- /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $muted: true, children: formatCurrency5(trade.fee) }) }),
13959
+ /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { children: formatCurrency4(trade.price) }) }),
13960
+ /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { children: formatCurrency4(trade.price * trade.quantity) }) }),
13961
+ /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $muted: true, children: formatCurrency4(trade.fee) }) }),
14038
13962
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $muted: true, children: formatTimestamp(trade.executedAt) }) })
14039
13963
  ] }, trade.tradeId))
14040
13964
  ] })
@@ -14056,7 +13980,7 @@ function PortfolioActivityPanel({
14056
13980
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(SideBadge, { $side: isDeposit ? "Buy" : "Sell", children: isDeposit ? "Deposit" : "Withdraw" }) }),
14057
13981
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsxs(CellText, { $color: isDeposit ? "#0ecb81" : "#f6465d", children: [
14058
13982
  isDeposit ? "+" : "-",
14059
- formatCurrency5(t.amount)
13983
+ formatCurrency4(t.amount)
14060
13984
  ] }) }),
14061
13985
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(CellText, { $muted: true, children: formatAddress(t.address) }) }),
14062
13986
  /* @__PURE__ */ jsx(GridCell, { children: /* @__PURE__ */ jsx(ActivityTag, { $color: statusMeta.color, $bg: statusMeta.bg, children: prettyLabel(t.status) }) }),
@@ -14643,424 +14567,77 @@ var CloseAllModalX = styled9.button`
14643
14567
  color: rgba(255, 255, 255, 0.4);
14644
14568
  font-size: 1.25rem;
14645
14569
  cursor: pointer;
14646
- padding: 0.25rem;
14647
- line-height: 1;
14648
- transition: color 0.15s;
14649
-
14650
- &:hover { color: #fff; }
14651
- `;
14652
- var CloseAllTitle = styled9.div`
14653
- font-size: 1rem;
14654
- font-weight: 600;
14655
- color: #fff;
14656
- margin-bottom: 0.5rem;
14657
- `;
14658
- var CloseAllDesc = styled9.div`
14659
- font-size: 0.8rem;
14660
- color: rgba(255, 255, 255, 0.5);
14661
- line-height: 1.45;
14662
- margin-bottom: 1rem;
14663
- `;
14664
- var CloseAllOption = styled9.div`
14665
- display: flex;
14666
- align-items: center;
14667
- gap: 0.6rem;
14668
- padding: 0.6rem 0.75rem;
14669
- border-radius: 8px;
14670
- cursor: pointer;
14671
- font-size: 0.85rem;
14672
- color: rgba(255, 255, 255, 0.85);
14673
- transition: background 0.15s;
14674
- margin-bottom: 0.35rem;
14675
-
14676
- &:hover { background: rgba(255, 255, 255, 0.04); }
14677
- `;
14678
- var CloseAllRadio = styled9.div`
14679
- width: 16px;
14680
- height: 16px;
14681
- border-radius: 50%;
14682
- border: 2px solid ${(p) => p.$selected ? "#f6465d" : "rgba(255, 255, 255, 0.2)"};
14683
- position: relative;
14684
- flex-shrink: 0;
14685
- transition: border-color 0.15s;
14686
-
14687
- &::after {
14688
- content: '';
14689
- position: absolute;
14690
- top: 50%;
14691
- left: 50%;
14692
- transform: translate(-50%, -50%);
14693
- width: 8px;
14694
- height: 8px;
14695
- border-radius: 50%;
14696
- background: ${(p) => p.$selected ? "#f6465d" : "transparent"};
14697
- transition: background 0.15s;
14698
- }
14699
- `;
14700
- var CloseAllConfirmBtn = styled9.button`
14701
- width: 100%;
14702
- margin-top: 0.75rem;
14703
- background: rgba(246, 70, 93, 0.15);
14704
- border: 1px solid rgba(246, 70, 93, 0.4);
14705
- border-radius: 8px;
14706
- padding: 0.7rem 1rem;
14707
- font-size: 0.85rem;
14708
- font-weight: 600;
14709
- color: #f6465d;
14710
- cursor: pointer;
14711
- transition: all 0.15s ease;
14712
-
14713
- &:hover {
14714
- background: rgba(246, 70, 93, 0.25);
14715
- }
14716
- `;
14717
- function NewsOrdersSection({ newsItems, newsConnectionStatus, activityData }) {
14718
- return /* @__PURE__ */ jsxs(Row2, { children: [
14719
- /* @__PURE__ */ jsx(
14720
- PropertyNewsUpdates,
14721
- {
14722
- items: newsItems,
14723
- heading: "Property News & Updates",
14724
- connectionStatus: newsConnectionStatus
14725
- }
14726
- ),
14727
- /* @__PURE__ */ jsx(ActivityWrapper, { children: /* @__PURE__ */ jsx(
14728
- PortfolioActivityPanel,
14729
- {
14730
- positions: activityData?.positions,
14731
- showPositionsTab: true,
14732
- onPositionClick: activityData?.onPositionClick,
14733
- offeringOrders: activityData?.offeringOrders,
14734
- openOrders: activityData?.openOrders,
14735
- orderHistory: activityData?.orderHistory,
14736
- tradeHistory: activityData?.tradeHistory,
14737
- transfers: activityData?.transfers,
14738
- onCancelOrder: activityData?.onCancelOrder,
14739
- cancellingOrderId: activityData?.cancellingOrderId,
14740
- defaultTab: activityData?.defaultTab ?? "positions",
14741
- pageSize: activityData?.pageSize ?? 6
14742
- }
14743
- ) })
14744
- ] });
14745
- }
14746
- var Row2 = styled9.div`
14747
- display: grid;
14748
- grid-template-columns: 1fr 2fr;
14749
- gap: 1.5rem;
14750
- margin-top: 1.5rem;
14751
- max-width: 1800px;
14752
- margin-left: auto;
14753
- margin-right: auto;
14754
- overflow: hidden;
14755
- @media (max-width: 768px) {
14756
- grid-template-columns: 1fr;
14757
- gap: 1rem;
14758
- }
14759
- & > * {
14760
- min-width: 0;
14761
- overflow: hidden;
14762
- }
14763
- `;
14764
- var ActivityWrapper = styled9.div`
14765
- background-color: var(--color-card-darker, #111);
14766
- border-radius: 8px;
14767
- padding: 1.5rem;
14768
- display: flex;
14769
- flex-direction: column;
14770
- box-shadow: 0 4px 8px rgba(0,0,0,0.2);
14771
- border: 1px solid var(--color-border);
14772
- min-height: 280px;
14773
- overflow: hidden;
14774
- @media (max-width: 768px) {
14775
- padding: 1rem;
14776
- min-height: auto;
14777
- }
14778
- `;
14779
- function OrderConfirmationModal({
14780
- open,
14781
- onClose,
14782
- hasInsufficientFunds,
14783
- tokenQuantity,
14784
- tokenPrice,
14785
- propertyName,
14786
- tokenSymbol,
14787
- estExposure,
14788
- orderTotal,
14789
- availableBalance,
14790
- onConfirm,
14791
- isPlacing = false,
14792
- placingLabel = "Placing order\u2026"
14793
- }) {
14794
- if (!open) return null;
14795
- const handleOverlayClose = () => {
14796
- if (isPlacing) return;
14797
- onClose();
14798
- };
14799
- return /* @__PURE__ */ jsx(Overlay3, { onClick: handleOverlayClose, children: /* @__PURE__ */ jsxs(Modal, { onClick: (e) => e.stopPropagation(), children: [
14800
- /* @__PURE__ */ jsx(ModalHeader, { children: /* @__PURE__ */ jsxs("h3", { children: [
14801
- "Confirm Order",
14802
- /* @__PURE__ */ jsx(Badge2, { children: "Subscribe" })
14803
- ] }) }),
14804
- /* @__PURE__ */ jsx(ModalBody, { children: [
14805
- { label: "Order Type", value: "Primary Offering" },
14806
- { label: "Property", value: propertyName },
14807
- { label: "Units", value: `${tokenQuantity.toLocaleString()} ${tokenSymbol}`, highlight: true },
14808
- {
14809
- label: "Unit Price",
14810
- value: `$${tokenPrice.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
14811
- },
14812
- { label: "Property Exposure", value: `${estExposure}%` },
14813
- { label: "Total Investment", value: `$${orderTotal.toLocaleString()}`, highlight: true }
14814
- ].map((row, index, arr) => /* @__PURE__ */ jsxs(ModalRow, { "data-divider": index < arr.length - 1, children: [
14815
- /* @__PURE__ */ jsx("span", { children: row.label }),
14816
- /* @__PURE__ */ jsx("strong", { "data-highlight": row.highlight, children: row.value })
14817
- ] }, row.label)) }),
14818
- hasInsufficientFunds ? /* @__PURE__ */ jsxs(Warning, { children: [
14819
- /* @__PURE__ */ jsx("p", { children: "\u26A0 Insufficient Balance" }),
14820
- /* @__PURE__ */ jsxs("small", { children: [
14821
- "You need ",
14822
- /* @__PURE__ */ jsxs("strong", { children: [
14823
- "$",
14824
- orderTotal.toLocaleString()
14825
- ] }),
14826
- " but only have",
14827
- " ",
14828
- /* @__PURE__ */ jsxs("strong", { children: [
14829
- "$",
14830
- availableBalance.toLocaleString()
14831
- ] }),
14832
- " available."
14833
- ] })
14834
- ] }) : /* @__PURE__ */ jsxs(Summary, { children: [
14835
- "Your order for ",
14836
- /* @__PURE__ */ jsxs("strong", { children: [
14837
- tokenQuantity.toLocaleString(),
14838
- " ",
14839
- tokenSymbol,
14840
- " units"
14841
- ] }),
14842
- " in the",
14843
- " ",
14844
- /* @__PURE__ */ jsx("strong", { children: propertyName }),
14845
- " Primary Offering will be placed for ",
14846
- /* @__PURE__ */ jsxs("strong", { children: [
14847
- "$",
14848
- tokenPrice.toFixed(2),
14849
- "/unit"
14850
- ] }),
14851
- "."
14852
- ] }),
14853
- /* @__PURE__ */ jsxs(ButtonRow2, { children: [
14854
- /* @__PURE__ */ jsx(
14855
- "button",
14856
- {
14857
- type: "button",
14858
- onClick: onClose,
14859
- className: "secondary",
14860
- disabled: isPlacing,
14861
- children: "Cancel"
14862
- }
14863
- ),
14864
- !hasInsufficientFunds && /* @__PURE__ */ jsx(
14865
- "button",
14866
- {
14867
- type: "button",
14868
- onClick: onConfirm,
14869
- className: "primary",
14870
- disabled: isPlacing,
14871
- children: isPlacing ? /* @__PURE__ */ jsxs(Fragment, { children: [
14872
- /* @__PURE__ */ jsx(Spinner, { "aria-hidden": true }),
14873
- /* @__PURE__ */ jsx("span", { children: placingLabel })
14874
- ] }) : "Place Order"
14875
- }
14876
- )
14877
- ] })
14878
- ] }) });
14879
- }
14880
- var Overlay3 = styled9.div`
14881
- position: fixed;
14882
- top: 0;
14883
- left: 0;
14884
- right: 0;
14885
- bottom: 0;
14886
- background-color: rgba(0,0,0,0.7);
14887
- display: flex;
14888
- align-items: center;
14889
- justify-content: center;
14890
- z-index: 10000;
14891
- backdrop-filter: blur(4px);
14892
- `;
14893
- var Modal = styled9.div`
14894
- background: linear-gradient(135deg, rgba(26,29,35,0.95) 0%, rgba(26,29,35,0.98) 100%);
14895
- border: 1px solid rgba(255,255,255,0.1);
14896
- border-radius: 16px;
14897
- padding: 2rem;
14898
- max-width: 480px;
14899
- width: 90%;
14900
- box-shadow: 0 20px 60px rgba(0,0,0,0.5);
14901
- `;
14902
- var ModalHeader = styled9.div`
14903
- display: flex;
14904
- align-items: center;
14905
- margin-bottom: 1.5rem;
14906
- padding-bottom: 1rem;
14907
- border-bottom: 1px solid rgba(255,255,255,0.1);
14908
- h3 {
14909
- margin: 0;
14910
- font-size: 1.25rem;
14911
- font-weight: 600;
14912
- color: #fff;
14913
- display: flex;
14914
- align-items: center;
14915
- gap: 0.5rem;
14916
- }
14570
+ padding: 0.25rem;
14571
+ line-height: 1;
14572
+ transition: color 0.15s;
14573
+
14574
+ &:hover { color: #fff; }
14917
14575
  `;
14918
- var Badge2 = styled9.span`
14919
- padding: 0.25rem 0.75rem;
14920
- border-radius: 6px;
14921
- font-size: 0.75rem;
14576
+ var CloseAllTitle = styled9.div`
14577
+ font-size: 1rem;
14922
14578
  font-weight: 600;
14923
- text-transform: uppercase;
14924
- letter-spacing: 0.5px;
14925
- background: linear-gradient(135deg, rgba(212,175,55,0.2) 0%, rgba(212,175,55,0.1) 100%);
14926
- color: #D4AF37;
14927
- border: 1px solid rgba(212,175,55,0.3);
14579
+ color: #fff;
14580
+ margin-bottom: 0.5rem;
14928
14581
  `;
14929
- var ModalBody = styled9.div`
14930
- margin-bottom: 1.5rem;
14931
- display: flex;
14932
- flex-direction: column;
14582
+ var CloseAllDesc = styled9.div`
14583
+ font-size: 0.8rem;
14584
+ color: rgba(255, 255, 255, 0.5);
14585
+ line-height: 1.45;
14586
+ margin-bottom: 1rem;
14933
14587
  `;
14934
- var ModalRow = styled9.div`
14588
+ var CloseAllOption = styled9.div`
14935
14589
  display: flex;
14936
- justify-content: space-between;
14937
14590
  align-items: center;
14938
- padding: 0.75rem 0;
14939
- border-bottom: 1px solid rgba(255,255,255,0.05);
14940
- &[data-divider='false'] {
14941
- border-bottom: none;
14942
- }
14943
- span {
14944
- color: rgba(255,255,255,0.6);
14945
- font-size: 0.9rem;
14946
- }
14947
- strong {
14948
- color: #fff;
14949
- font-weight: 500;
14950
- font-size: 0.95rem;
14951
- }
14952
- strong[data-highlight='true'] {
14953
- color: #D4AF37;
14954
- font-weight: 600;
14955
- }
14956
- `;
14957
- var Warning = styled9.div`
14958
- background: rgba(246,70,93,0.1);
14959
- border: 1px solid rgba(246,70,93,0.3);
14960
- border-radius: 8px;
14961
- padding: 1rem;
14962
- margin-bottom: 1.5rem;
14963
- p {
14964
- margin: 0;
14965
- color: #f6465d;
14966
- font-size: 0.9rem;
14967
- font-weight: 600;
14968
- }
14969
- small {
14970
- display: block;
14971
- margin-top: 0.5rem;
14972
- color: rgba(255,255,255,0.7);
14973
- font-size: 0.85rem;
14974
- line-height: 1.5;
14975
- }
14976
- `;
14977
- var Summary = styled9.div`
14978
- background: rgba(255,255,255,0.03);
14979
- border: 1px solid rgba(255,255,255,0.08);
14591
+ gap: 0.6rem;
14592
+ padding: 0.6rem 0.75rem;
14980
14593
  border-radius: 8px;
14981
- padding: 1rem;
14982
- margin-bottom: 1.5rem;
14983
- color: rgba(255,255,255,0.8);
14984
- font-size: 0.9rem;
14985
- line-height: 1.5;
14986
- `;
14987
- var spin = keyframes`
14988
- to { transform: rotate(360deg); }
14594
+ cursor: pointer;
14595
+ font-size: 0.85rem;
14596
+ color: rgba(255, 255, 255, 0.85);
14597
+ transition: background 0.15s;
14598
+ margin-bottom: 0.35rem;
14599
+
14600
+ &:hover { background: rgba(255, 255, 255, 0.04); }
14989
14601
  `;
14990
- var Spinner = styled9.span`
14991
- display: inline-block;
14992
- width: 14px;
14993
- height: 14px;
14602
+ var CloseAllRadio = styled9.div`
14603
+ width: 16px;
14604
+ height: 16px;
14994
14605
  border-radius: 50%;
14995
- border: 2px solid rgba(255, 255, 255, 0.35);
14996
- border-top-color: #fff;
14997
- animation: ${spin} 0.7s linear infinite;
14998
- margin-right: 0.5rem;
14999
- vertical-align: -2px;
15000
- `;
15001
- var ButtonRow2 = styled9.div`
15002
- display: flex;
15003
- gap: 1rem;
15004
- justify-content: flex-end;
15005
- button {
15006
- padding: 0.75rem 1.5rem;
15007
- border-radius: 8px;
15008
- font-weight: 600;
15009
- font-size: 0.95rem;
15010
- cursor: pointer;
15011
- display: inline-flex;
15012
- align-items: center;
15013
- justify-content: center;
15014
- }
15015
- button:disabled {
15016
- cursor: not-allowed;
15017
- opacity: 0.75;
15018
- }
15019
- .secondary {
15020
- background: rgba(255,255,255,0.1);
15021
- color: rgba(255,255,255,0.8);
15022
- border: 1px solid rgba(255,255,255,0.2);
15023
- }
15024
- .primary {
15025
- background: linear-gradient(135deg, #0ecb81 0%, #0ba968 100%);
15026
- color: #fff;
15027
- border: none;
15028
- box-shadow: 0 4px 12px rgba(14,203,129,0.3);
14606
+ border: 2px solid ${(p) => p.$selected ? "#f6465d" : "rgba(255, 255, 255, 0.2)"};
14607
+ position: relative;
14608
+ flex-shrink: 0;
14609
+ transition: border-color 0.15s;
14610
+
14611
+ &::after {
14612
+ content: '';
14613
+ position: absolute;
14614
+ top: 50%;
14615
+ left: 50%;
14616
+ transform: translate(-50%, -50%);
14617
+ width: 8px;
14618
+ height: 8px;
14619
+ border-radius: 50%;
14620
+ background: ${(p) => p.$selected ? "#f6465d" : "transparent"};
14621
+ transition: background 0.15s;
15029
14622
  }
15030
14623
  `;
14624
+ var CloseAllConfirmBtn = styled9.button`
14625
+ width: 100%;
14626
+ margin-top: 0.75rem;
14627
+ background: rgba(246, 70, 93, 0.15);
14628
+ border: 1px solid rgba(246, 70, 93, 0.4);
14629
+ border-radius: 8px;
14630
+ padding: 0.7rem 1rem;
14631
+ font-size: 0.85rem;
14632
+ font-weight: 600;
14633
+ color: #f6465d;
14634
+ cursor: pointer;
14635
+ transition: all 0.15s ease;
15031
14636
 
15032
- // src/components/property-buy/constants.ts
15033
- var musgraveGalleryImages = [
15034
- { src: "/properties/Musgrave/ExteriorFront_Musgrave_Loafmarkets.jpg", title: "Exterior Front", subtitle: "Grand entrance" },
15035
- { src: "/properties/Musgrave/ExteriorDusk_Musgrave_Loafmarkets.jpg", title: "Exterior Dusk", subtitle: "Evening ambiance" },
15036
- { src: "/properties/Musgrave/LivingRoom_Musgrave_Loafmarkets.jpg", title: "Living Room", subtitle: "Spacious living" },
15037
- { src: "/properties/Musgrave/Kitchen_Musgrave_Loafmarkets.jpg", title: "Kitchen", subtitle: "Modern design" },
15038
- { src: "/properties/Musgrave/DiningRoom_Musgrave_Loafmarkets.jpg", title: "Dining Room", subtitle: "Elegant dining" },
15039
- { src: "/properties/Musgrave/BreakfastRoom_Musgrave_Loafmarkets.jpg", title: "Breakfast Room", subtitle: "Morning light" },
15040
- { src: "/properties/Musgrave/MainBedroom_Musgrave_Loafmarkets.jpg", title: "Main Bedroom", subtitle: "Master suite" },
15041
- { src: "/properties/Musgrave/GuestBedroom_Musgrave_Loafmarkets.jpg", title: "Guest Bedroom", subtitle: "Comfortable stay" },
15042
- { src: "/properties/Musgrave/Bathroom_Musgrave_Loafmarkets.jpg", title: "Bathroom", subtitle: "Luxury finishes" },
15043
- { src: "/properties/Musgrave/PoolArea_Musgrave_Loafmarkets.jpg", title: "Pool Area", subtitle: "Resort living" },
15044
- { src: "/properties/Musgrave/GardenView_Musgrave_Loafmarkets.jpg", title: "Garden View", subtitle: "Lush gardens" },
15045
- { src: "/properties/Musgrave/SideGarden_Musgrave_Loafmarkets.jpg", title: "Side Garden", subtitle: "Private retreat" },
15046
- { src: "/properties/Musgrave/AerialView_Musgrave_Loafmarkets.jpg", title: "Aerial View", subtitle: "Property overview" },
15047
- { src: "/properties/Musgrave/AerialLocation_Musgrave_Loafmarkets.jpg", title: "Aerial Location", subtitle: "Neighborhood" },
15048
- { src: "/properties/Musgrave/Floorplan_Musgrave_Loafmarkets.jpg", title: "Floorplan", subtitle: "Layout" }
15049
- ];
15050
- var galleryCategories = [
15051
- { name: "Exterior", startIndex: 0 },
15052
- { name: "Living", startIndex: 2 },
15053
- { name: "Bedrooms", startIndex: 6 },
15054
- { name: "Outdoor", startIndex: 9 },
15055
- { name: "Aerial", startIndex: 12 },
15056
- { name: "Floorplan", startIndex: 14 }
15057
- ];
15058
- var STATUS_COLOR2 = {
15059
- PENDING: "#D4AF37",
15060
- LIVE: "#0ecb81",
15061
- CLOSED: "#848e9c",
15062
- CANCELLED: "#f6465d"
15063
- };
14637
+ &:hover {
14638
+ background: rgba(246, 70, 93, 0.25);
14639
+ }
14640
+ `;
15064
14641
  function PropertyBuy({
15065
14642
  propertyName = "Loaf Property",
15066
14643
  propertyLocation: propertyLocationLabel = "Sydney, NSW",
@@ -15107,7 +14684,6 @@ function PropertyBuy({
15107
14684
  const offeringValuation = saleData?.offeringValuation ?? tokenPrice * supplyToSell;
15108
14685
  const ipoStatus = saleData?.status ?? "PENDING";
15109
14686
  const ipoStarted = ipoStatus === "LIVE" || isPrivateClient && ipoStatus === "PENDING";
15110
- const ipoEnded = ipoStatus === "CLOSED" || ipoStatus === "CANCELLED";
15111
14687
  const statusLabel = ipoStatus;
15112
14688
  const statusColor = STATUS_COLOR2[ipoStatus] ?? "#D4AF37";
15113
14689
  const displayStatusLabel = isPrivateClient && ipoStatus !== "LIVE" ? "Private Client Access" : statusLabel;
@@ -15231,17 +14807,23 @@ function PropertyBuy({
15231
14807
  isPrivateClient
15232
14808
  }
15233
14809
  ),
15234
- /* @__PURE__ */ jsx(
15235
- VideoActivitySection,
14810
+ /* @__PURE__ */ jsx(ActivityWrapper, { children: /* @__PURE__ */ jsx(
14811
+ PortfolioActivityPanel,
15236
14812
  {
15237
- ipoStarted,
15238
- ipoEnded,
15239
- isLoading: isLoadingActivity,
15240
- recentOrders,
15241
- ordersAllocated,
15242
- tokenPrice
14813
+ positions: portfolioActivity?.positions,
14814
+ showPositionsTab: true,
14815
+ onPositionClick: portfolioActivity?.onPositionClick,
14816
+ offeringOrders: portfolioActivity?.offeringOrders,
14817
+ openOrders: portfolioActivity?.openOrders,
14818
+ orderHistory: portfolioActivity?.orderHistory,
14819
+ tradeHistory: portfolioActivity?.tradeHistory,
14820
+ transfers: portfolioActivity?.transfers,
14821
+ onCancelOrder: portfolioActivity?.onCancelOrder,
14822
+ cancellingOrderId: portfolioActivity?.cancellingOrderId,
14823
+ defaultTab: "subscriptions",
14824
+ pageSize: 6
15243
14825
  }
15244
- ),
14826
+ ) }),
15245
14827
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column" }, children: [
15246
14828
  /* @__PURE__ */ jsx(
15247
14829
  OrderPanel,
@@ -15281,24 +14863,22 @@ function PropertyBuy({
15281
14863
  purchaseError && /* @__PURE__ */ jsx("div", { style: { marginTop: "0.75rem", padding: "0.75rem 1rem", borderRadius: "8px", background: "rgba(246,70,93,0.1)", border: "1px solid rgba(246,70,93,0.3)", color: "#f6465d", fontSize: "0.8rem", fontWeight: 500 }, children: purchaseError })
15282
14864
  ] })
15283
14865
  ] }),
15284
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6", children: [
14866
+ /* @__PURE__ */ jsxs(NewsVideoRow, { children: [
15285
14867
  /* @__PURE__ */ jsx(
15286
- GalleryMapSection,
14868
+ PropertyNewsUpdates,
15287
14869
  {
15288
- images: musgraveGalleryImages,
15289
- categories: galleryCategories,
15290
- propertyLocation: propertyLocationLabel,
15291
- tokenName
14870
+ items: newsItems,
14871
+ heading: "Property News & Updates",
14872
+ connectionStatus: newsConnectionStatus
15292
14873
  }
15293
14874
  ),
15294
- /* @__PURE__ */ jsx(
15295
- NewsOrdersSection,
15296
- {
15297
- newsItems,
15298
- newsConnectionStatus,
15299
- activityData: portfolioActivity
15300
- }
15301
- )
14875
+ /* @__PURE__ */ jsxs(VideoWrapper, { children: [
14876
+ /* @__PURE__ */ jsx("div", { className: "section-header", children: /* @__PURE__ */ jsx("h3", { children: propertyName }) }),
14877
+ /* @__PURE__ */ jsx("div", { className: "video-container", children: /* @__PURE__ */ jsxs("video", { controls: true, loop: true, autoPlay: true, muted: true, playsInline: true, children: [
14878
+ /* @__PURE__ */ jsx("source", { src: "/properties/Musgrave/musgrave.mp4", type: "video/mp4" }),
14879
+ "Your browser does not support the video tag."
14880
+ ] }) })
14881
+ ] })
15302
14882
  ] }),
15303
14883
  /* @__PURE__ */ jsx(
15304
14884
  OrderConfirmationModal,
@@ -15389,6 +14969,85 @@ var HeroGrid = styled9.div`
15389
14969
  gap: 0.5rem;
15390
14970
  }
15391
14971
  `;
14972
+ var ActivityWrapper = styled9.div`
14973
+ background-color: var(--color-card-darker, #111);
14974
+ border-radius: 8px;
14975
+ padding: 1.5rem;
14976
+ display: flex;
14977
+ flex-direction: column;
14978
+ box-shadow: 0 4px 8px rgba(0,0,0,0.2);
14979
+ border: 1px solid var(--color-border);
14980
+ min-height: 280px;
14981
+ overflow: hidden;
14982
+ @media (max-width: 768px) {
14983
+ padding: 1rem;
14984
+ min-height: auto;
14985
+ }
14986
+ `;
14987
+ var NewsVideoRow = styled9.div`
14988
+ display: grid;
14989
+ grid-template-columns: 1fr 2fr;
14990
+ gap: 1.5rem;
14991
+ margin-top: 1.5rem;
14992
+ max-width: 1800px;
14993
+ margin-left: auto;
14994
+ margin-right: auto;
14995
+ overflow: hidden;
14996
+ @media (max-width: 768px) {
14997
+ grid-template-columns: 1fr;
14998
+ gap: 1rem;
14999
+ }
15000
+ & > * {
15001
+ min-width: 0;
15002
+ overflow: hidden;
15003
+ }
15004
+ `;
15005
+ var VideoWrapper = styled9.div`
15006
+ background-color: var(--color-card-darker, #111);
15007
+ border-radius: 8px;
15008
+ padding: 1.5rem;
15009
+ box-shadow: 0 4px 8px rgba(0,0,0,0.2);
15010
+ border: 1px solid var(--color-border);
15011
+ display: flex;
15012
+ flex-direction: column;
15013
+ overflow: hidden;
15014
+ .section-header {
15015
+ display: flex;
15016
+ justify-content: space-between;
15017
+ align-items: center;
15018
+ padding-bottom: 0.75rem;
15019
+ margin-bottom: 1rem;
15020
+ border-bottom: 1px solid rgba(255,255,255,0.1);
15021
+ h3 {
15022
+ font-size: 0.9rem;
15023
+ font-weight: 600;
15024
+ color: var(--color-text);
15025
+ margin: 0;
15026
+ }
15027
+ }
15028
+ .video-container {
15029
+ flex: 1;
15030
+ position: relative;
15031
+ background: #000;
15032
+ border-radius: 8px;
15033
+ overflow: hidden;
15034
+ min-height: 300px;
15035
+ video {
15036
+ position: absolute;
15037
+ top: 0;
15038
+ left: 0;
15039
+ width: 100%;
15040
+ height: 100%;
15041
+ object-fit: cover;
15042
+ }
15043
+ }
15044
+ @media (max-width: 768px) {
15045
+ padding: 1rem;
15046
+ .video-container {
15047
+ min-height: 200px;
15048
+ }
15049
+ }
15050
+ `;
15392
15051
  var PaymentOption = styled9.div`
15393
15052
  display: flex;
15394
15053
  align-items: center;
@@ -16378,7 +16037,7 @@ function PropertyValuation({
16378
16037
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "0.5rem" }, children: [
16379
16038
  /* @__PURE__ */ jsxs(PricingModelDetail, { children: [
16380
16039
  /* @__PURE__ */ jsx(PropertyDetailLabel, { children: "Last Price" }),
16381
- /* @__PURE__ */ jsx(PricingDetailValue, { children: formatCurrency6(lastPrice) })
16040
+ /* @__PURE__ */ jsx(PricingDetailValue, { children: formatCurrency5(lastPrice) })
16382
16041
  ] }),
16383
16042
  /* @__PURE__ */ jsxs(PricingModelDetail, { children: [
16384
16043
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", width: "100%" }, children: [
@@ -16389,11 +16048,11 @@ function PropertyValuation({
16389
16048
  ] })
16390
16049
  ] }),
16391
16050
  /* @__PURE__ */ jsxs(PricingDetailValue, { style: { color: "var(--color-accent)", fontWeight: "bold" }, children: [
16392
- formatCurrency6(fairValue),
16051
+ formatCurrency5(fairValue),
16393
16052
  " ",
16394
16053
  /* @__PURE__ */ jsxs("span", { style: { fontSize: "0.85em", fontWeight: "normal", opacity: 0.8 }, children: [
16395
16054
  "(",
16396
- formatCurrency6(fairValue * tokensOutstanding, { maximumFractionDigits: 0 }),
16055
+ formatCurrency5(fairValue * tokensOutstanding, { maximumFractionDigits: 0 }),
16397
16056
  ")"
16398
16057
  ] })
16399
16058
  ] })
@@ -16410,7 +16069,7 @@ function PropertyValuation({
16410
16069
  /* @__PURE__ */ jsx(GaugeIndicator, { type: "fairValue", position: 50 }),
16411
16070
  /* @__PURE__ */ jsxs(GaugePriceTag, { position: gaugePosition, children: [
16412
16071
  /* @__PURE__ */ jsx("span", { children: "Last Price" }),
16413
- /* @__PURE__ */ jsx("span", { children: formatCurrency6(lastPrice) })
16072
+ /* @__PURE__ */ jsx("span", { children: formatCurrency5(lastPrice) })
16414
16073
  ] }),
16415
16074
  /* @__PURE__ */ jsx(GaugeIndicator, { type: "lastPrice", position: gaugePosition })
16416
16075
  ] }),
@@ -16418,7 +16077,7 @@ function PropertyValuation({
16418
16077
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "#4CAF50" }, children: [
16419
16078
  /* @__PURE__ */ jsxs("span", { children: [
16420
16079
  "< ",
16421
- formatCurrency6(undervaluedThreshold)
16080
+ formatCurrency5(undervaluedThreshold)
16422
16081
  ] }),
16423
16082
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16424
16083
  "(",
@@ -16427,7 +16086,7 @@ function PropertyValuation({
16427
16086
  ] })
16428
16087
  ] }) }),
16429
16088
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "var(--color-accent)" }, children: [
16430
- /* @__PURE__ */ jsx("span", { children: formatCurrency6(fairValue) }),
16089
+ /* @__PURE__ */ jsx("span", { children: formatCurrency5(fairValue) }),
16431
16090
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16432
16091
  "(",
16433
16092
  formatMillions(fairValue * tokensOutstanding),
@@ -16437,7 +16096,7 @@ function PropertyValuation({
16437
16096
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "#F44336" }, children: [
16438
16097
  /* @__PURE__ */ jsxs("span", { children: [
16439
16098
  "> ",
16440
- formatCurrency6(overvaluedThreshold)
16099
+ formatCurrency5(overvaluedThreshold)
16441
16100
  ] }),
16442
16101
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16443
16102
  "(",
@@ -16530,7 +16189,7 @@ function PropertyValuation({
16530
16189
  /* @__PURE__ */ jsx(GaugeIndicator, { type: "fairValue", position: 50 }),
16531
16190
  /* @__PURE__ */ jsxs(GaugePriceTag, { position: gaugePosition, children: [
16532
16191
  /* @__PURE__ */ jsx("span", { children: "Last Price" }),
16533
- /* @__PURE__ */ jsx("span", { children: formatCurrency6(lastPrice) })
16192
+ /* @__PURE__ */ jsx("span", { children: formatCurrency5(lastPrice) })
16534
16193
  ] }),
16535
16194
  /* @__PURE__ */ jsx(GaugeIndicator, { type: "lastPrice", position: gaugePosition })
16536
16195
  ] }),
@@ -16538,7 +16197,7 @@ function PropertyValuation({
16538
16197
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "#0ecb81" }, children: [
16539
16198
  /* @__PURE__ */ jsxs("span", { children: [
16540
16199
  "< ",
16541
- formatCurrency6(undervaluedThreshold)
16200
+ formatCurrency5(undervaluedThreshold)
16542
16201
  ] }),
16543
16202
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16544
16203
  "(",
@@ -16547,7 +16206,7 @@ function PropertyValuation({
16547
16206
  ] })
16548
16207
  ] }) }),
16549
16208
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "#f0b90b" }, children: [
16550
- /* @__PURE__ */ jsx("span", { children: formatCurrency6(fairValue) }),
16209
+ /* @__PURE__ */ jsx("span", { children: formatCurrency5(fairValue) }),
16551
16210
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16552
16211
  "(",
16553
16212
  formatMillions(fairValue * tokensOutstanding),
@@ -16557,7 +16216,7 @@ function PropertyValuation({
16557
16216
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "#f6465d" }, children: [
16558
16217
  /* @__PURE__ */ jsxs("span", { children: [
16559
16218
  "> ",
16560
- formatCurrency6(overvaluedThreshold)
16219
+ formatCurrency5(overvaluedThreshold)
16561
16220
  ] }),
16562
16221
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16563
16222
  "(",
@@ -16600,7 +16259,7 @@ function PropertyValuation({
16600
16259
  /* @__PURE__ */ jsxs(SalePriceBar, { children: [
16601
16260
  /* @__PURE__ */ jsxs(SalePriceLeft, { children: [
16602
16261
  /* @__PURE__ */ jsx(SalePriceLabel, { children: "Sale Price" }),
16603
- /* @__PURE__ */ jsx(SalePriceAmount, { children: formatCurrency6(sale.price) })
16262
+ /* @__PURE__ */ jsx(SalePriceAmount, { children: formatCurrency5(sale.price) })
16604
16263
  ] }),
16605
16264
  /* @__PURE__ */ jsx(SaleDate, { children: sale.saleDate ?? "\u2014" })
16606
16265
  ] }),
@@ -16627,7 +16286,7 @@ function PropertyValuation({
16627
16286
  error ? /* @__PURE__ */ jsx(ErrorMessage, { children: error }) : null
16628
16287
  ] });
16629
16288
  }
16630
- function formatCurrency6(value, options) {
16289
+ function formatCurrency5(value, options) {
16631
16290
  if (value == null || Number.isNaN(value)) {
16632
16291
  return "\u2014";
16633
16292
  }
@@ -16701,7 +16360,7 @@ function buildAxisLabels(min, max) {
16701
16360
  for (let i = 0; i < steps; i += 1) {
16702
16361
  const ratio = i / (steps - 1);
16703
16362
  const value = max - ratio * (max - min);
16704
- labels.push(formatCurrency6(value, { maximumFractionDigits: 0, minimumFractionDigits: 0 }));
16363
+ labels.push(formatCurrency5(value, { maximumFractionDigits: 0, minimumFractionDigits: 0 }));
16705
16364
  }
16706
16365
  return labels;
16707
16366
  }