@loafmarkets/ui 0.1.253 → 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.js CHANGED
@@ -183,7 +183,7 @@ var PortfolioSummary = React5__namespace.forwardRef(
183
183
  onResetAccount,
184
184
  positionsHeading = "Current Positions",
185
185
  emptyPositionsText = "No positions yet. Start trading to build your portfolio!",
186
- formatCurrency: formatCurrency7 = defaultFormatCurrency,
186
+ formatCurrency: formatCurrency6 = defaultFormatCurrency,
187
187
  formatPercent: formatPercent2 = defaultFormatPercent,
188
188
  formatSignedCurrency = defaultFormatSignedCurrency,
189
189
  className,
@@ -221,11 +221,11 @@ var PortfolioSummary = React5__namespace.forwardRef(
221
221
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
222
222
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
223
223
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs uppercase tracking-[0.5px] text-white/50", children: "Available Cash" }),
224
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-[1.25rem] font-semibold text-white", children: formatCurrency7(availableCash) })
224
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-[1.25rem] font-semibold text-white", children: formatCurrency6(availableCash) })
225
225
  ] }),
226
226
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
227
227
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs uppercase tracking-[0.5px] text-white/50", children: "Portfolio Value" }),
228
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-[1.25rem] font-semibold text-white", children: formatCurrency7(portfolioValue) })
228
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-[1.25rem] font-semibold text-white", children: formatCurrency6(portfolioValue) })
229
229
  ] }),
230
230
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
231
231
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs uppercase tracking-[0.5px] text-white/50", children: "Total Return" }),
@@ -6010,7 +6010,7 @@ var PortfolioEyeButton = styled9__default.default.button`
6010
6010
  color: #D4AF37;
6011
6011
  }
6012
6012
 
6013
- @media (max-width: 1800px) {
6013
+ @media (max-width: 1024px) {
6014
6014
  display: none;
6015
6015
  }
6016
6016
  `;
@@ -7416,7 +7416,7 @@ var MiniLiveFeed = () => {
7416
7416
  }, 2e3 + Math.random() * 2e3);
7417
7417
  return () => clearInterval(interval);
7418
7418
  }, []);
7419
- const formatCurrency7 = (amount) => `$${amount.toLocaleString()}`;
7419
+ const formatCurrency6 = (amount) => `$${amount.toLocaleString()}`;
7420
7420
  return /* @__PURE__ */ jsxRuntime.jsxs(
7421
7421
  "div",
7422
7422
  {
@@ -7506,7 +7506,7 @@ var MiniLiveFeed = () => {
7506
7506
  ] }),
7507
7507
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.5rem", position: "relative", zIndex: 1 }, children: [
7508
7508
  /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: "0.75rem", color: "var(--color-text-secondary, #848e9c)" }, children: "bought" }),
7509
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: "0.8rem", fontWeight: 600, color: "#fff" }, children: formatCurrency7(purchase.amount) })
7509
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: "0.8rem", fontWeight: 600, color: "#fff" }, children: formatCurrency6(purchase.amount) })
7510
7510
  ] })
7511
7511
  ]
7512
7512
  },
@@ -8457,7 +8457,7 @@ function PropertyOverview({
8457
8457
  description: descriptionProp,
8458
8458
  tradeButtonLabel = "Trade",
8459
8459
  images,
8460
- galleryCategories: galleryCategories2 = [],
8460
+ galleryCategories = [],
8461
8461
  videoUrl,
8462
8462
  tokenName,
8463
8463
  landSizeSqm: landProp,
@@ -8679,7 +8679,7 @@ function PropertyOverview({
8679
8679
  GalleryMapSection,
8680
8680
  {
8681
8681
  images: galleryImages.map((img) => ({ src: img.imageUrl, title: img.title, subtitle: img.subtitle })),
8682
- categories: galleryCategories2,
8682
+ categories: galleryCategories,
8683
8683
  propertyLocation: location,
8684
8684
  videoUrl,
8685
8685
  tokenName,
@@ -8911,7 +8911,7 @@ function PropertyOverview({
8911
8911
  GalleryMapSection,
8912
8912
  {
8913
8913
  images: galleryImages.map((img) => ({ src: img.imageUrl, title: img.title, subtitle: img.subtitle })),
8914
- categories: galleryCategories2,
8914
+ categories: galleryCategories,
8915
8915
  propertyLocation: location,
8916
8916
  videoUrl,
8917
8917
  tokenName,
@@ -12245,342 +12245,6 @@ var HomeSpinner = styled9__default.default.span`
12245
12245
  to { transform: rotate(360deg); }
12246
12246
  }
12247
12247
  `;
12248
- var MAX_DISPLAY_AMOUNT = 6e4;
12249
- var formatCurrency4 = (amount) => {
12250
- if (amount >= 1e6) return `$${(amount / 1e6).toFixed(2)}M`;
12251
- return `$${Math.round(amount).toLocaleString()}`;
12252
- };
12253
- var formatTimeAgo2 = (timestamp) => {
12254
- const seconds = Math.floor(Date.now() / 1e3) - timestamp;
12255
- if (seconds < 60) return `${seconds}s ago`;
12256
- const minutes = Math.floor(seconds / 60);
12257
- if (minutes < 60) return `${minutes}m ago`;
12258
- const hours = Math.floor(minutes / 60);
12259
- if (hours < 24) return `${hours}h ago`;
12260
- return `${Math.floor(hours / 24)}d ago`;
12261
- };
12262
- function VideoActivitySection({
12263
- ipoStarted,
12264
- ipoEnded = false,
12265
- isLoading = false,
12266
- recentOrders = [],
12267
- ordersAllocated = 0,
12268
- tokenPrice = 0
12269
- }) {
12270
- const sortedOrders = React5.useMemo(
12271
- () => [...recentOrders].sort((a, b) => b.timestamp - a.timestamp).slice(0, 7),
12272
- [recentOrders]
12273
- );
12274
- 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";
12275
- const showSkeletonFeed = ipoStarted && isLoading && sortedOrders.length === 0;
12276
- const showOrderFeed = !showSkeletonFeed && (ipoStarted || ipoEnded && sortedOrders.length > 0);
12277
- return /* @__PURE__ */ jsxRuntime.jsxs(Section4, { children: [
12278
- /* @__PURE__ */ jsxRuntime.jsxs(VideoPanel, { children: [
12279
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "section-header", children: /* @__PURE__ */ jsxRuntime.jsx("h3", { children: "Musgrave" }) }),
12280
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "video-container", children: /* @__PURE__ */ jsxRuntime.jsxs("video", { controls: true, loop: true, autoPlay: true, muted: true, playsInline: true, children: [
12281
- /* @__PURE__ */ jsxRuntime.jsx("source", { src: "/properties/Musgrave/musgrave.mp4", type: "video/mp4" }),
12282
- "Your browser does not support the video tag."
12283
- ] }) })
12284
- ] }),
12285
- /* @__PURE__ */ jsxRuntime.jsxs(ActivityPanel, { children: [
12286
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "section-header", children: [
12287
- /* @__PURE__ */ jsxRuntime.jsxs("h3", { children: [
12288
- /* @__PURE__ */ jsxRuntime.jsx(LiveIndicatorDot, { $active: ipoStarted && !ipoEnded }),
12289
- "Recent Order Activity"
12290
- ] }),
12291
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: headerStatusText })
12292
- ] }),
12293
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "activity-content", children: showSkeletonFeed ? /* @__PURE__ */ jsxRuntime.jsx(FeedList, { children: Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs(SkeletonFeedRow, { children: [
12294
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "info-col", children: [
12295
- /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { width: 110, height: 14 }),
12296
- /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { width: 56, height: 10 })
12297
- ] }),
12298
- /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { width: 70, height: 14 })
12299
- ] }, `feed-skel-${i}`)) }) : showOrderFeed ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
12300
- ipoEnded && /* @__PURE__ */ jsxRuntime.jsx(EndedBanner, { children: "Sale ended \u2014 final allocations" }),
12301
- /* @__PURE__ */ jsxRuntime.jsx(FeedList, { children: sortedOrders.map((order, index) => {
12302
- const amount = tokenPrice * order.quantity;
12303
- const barPercent = Math.min(85, Math.max(15, amount / MAX_DISPLAY_AMOUNT * 100));
12304
- const isAlternate = index % 2 === 1;
12305
- return /* @__PURE__ */ jsxRuntime.jsxs(
12306
- PurchaseItem,
12307
- {
12308
- $barWidth: `${barPercent}%`,
12309
- $isAlternate: isAlternate,
12310
- children: [
12311
- /* @__PURE__ */ jsxRuntime.jsxs(PurchaseInfo, { children: [
12312
- /* @__PURE__ */ jsxRuntime.jsx(PurchaseName, { children: order.buyerHandle || `${order.buyerAddress.slice(0, 6)}...${order.buyerAddress.slice(-4)}` }),
12313
- /* @__PURE__ */ jsxRuntime.jsx(PurchaseTime, { children: formatTimeAgo2(order.timestamp) })
12314
- ] }),
12315
- /* @__PURE__ */ jsxRuntime.jsx(PurchaseAmount, { children: formatCurrency4(amount) })
12316
- ]
12317
- },
12318
- order.txHash
12319
- );
12320
- }) })
12321
- ] }) : ipoEnded ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "activity-empty", children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Sale ended \u2014 no orders were placed." }) }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "activity-empty", children: [
12322
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "spinner" }),
12323
- /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Activity will appear once the Offering opens" })
12324
- ] }) })
12325
- ] })
12326
- ] });
12327
- }
12328
- var Section4 = styled9__default.default.div`
12329
- display: flex;
12330
- gap: 1.5rem;
12331
- align-items: stretch;
12332
- @media (max-width: 1024px) {
12333
- flex-direction: column;
12334
- gap: 1rem;
12335
- }
12336
- `;
12337
- var VideoPanel = styled9__default.default.div`
12338
- flex: 1;
12339
- background-color: var(--color-card-darker, #111);
12340
- border-radius: 8px;
12341
- padding: 1.5rem;
12342
- box-shadow: 0 4px 8px rgba(0,0,0,0.2);
12343
- border: 1px solid var(--color-border);
12344
- overflow: hidden;
12345
- display: flex;
12346
- flex-direction: column;
12347
- @media (max-width: 768px) {
12348
- display: none;
12349
- }
12350
- .section-header {
12351
- display: flex;
12352
- justify-content: space-between;
12353
- align-items: center;
12354
- padding-bottom: 0.75rem;
12355
- margin-bottom: 1rem;
12356
- border-bottom: 1px solid rgba(255,255,255,0.1);
12357
- h3 {
12358
- font-size: 0.9rem;
12359
- font-weight: 600;
12360
- color: var(--color-text);
12361
- margin: 0;
12362
- }
12363
- }
12364
- .video-container {
12365
- flex: 1;
12366
- position: relative;
12367
- background: #000;
12368
- border-radius: 8px;
12369
- overflow: hidden;
12370
- min-height: 300px;
12371
- video {
12372
- position: absolute;
12373
- top: 0;
12374
- left: 0;
12375
- width: 100%;
12376
- height: 100%;
12377
- object-fit: cover;
12378
- }
12379
- }
12380
- `;
12381
- var ActivityPanel = styled9__default.default.div`
12382
- flex: 0 0 auto;
12383
- min-width: 450px;
12384
- max-width: 520px;
12385
- display: flex;
12386
- flex-direction: column;
12387
- background-color: var(--color-card-darker, #111);
12388
- border-radius: 8px;
12389
- padding: 1.5rem;
12390
- box-shadow: 0 4px 8px rgba(0,0,0,0.2);
12391
- border: 1px solid var(--color-border);
12392
- @media (max-width: 1024px) {
12393
- min-width: 0;
12394
- max-width: none;
12395
- width: 100%;
12396
- padding: 1rem;
12397
- }
12398
- @media (max-width: 768px) {
12399
- max-height: 280px;
12400
- .activity-content {
12401
- max-height: 220px;
12402
- }
12403
- }
12404
- .section-header {
12405
- display: flex;
12406
- justify-content: space-between;
12407
- align-items: center;
12408
- padding-bottom: 0.75rem;
12409
- margin-bottom: 1rem;
12410
- border-bottom: 1px solid rgba(255,255,255,0.1);
12411
- h3 {
12412
- font-size: 0.9rem;
12413
- font-weight: 600;
12414
- color: var(--color-text);
12415
- margin: 0;
12416
- display: flex;
12417
- align-items: center;
12418
- gap: 0.5rem;
12419
- }
12420
- span {
12421
- font-size: 0.75rem;
12422
- color: var(--color-text-secondary);
12423
- font-weight: 500;
12424
- }
12425
- }
12426
- .activity-content {
12427
- flex: 1;
12428
- overflow-y: auto;
12429
- scrollbar-width: none;
12430
- -ms-overflow-style: none;
12431
- }
12432
- .activity-content::-webkit-scrollbar {
12433
- display: none;
12434
- }
12435
- .activity-empty {
12436
- display: flex;
12437
- flex-direction: column;
12438
- align-items: center;
12439
- justify-content: center;
12440
- height: 200px;
12441
- color: var(--color-text-secondary);
12442
- text-align: center;
12443
- gap: 0.75rem;
12444
- .spinner {
12445
- width: 40px;
12446
- height: 40px;
12447
- border-radius: 50%;
12448
- border: 2px solid rgba(212,175,55,0.3);
12449
- border-top-color: #D4AF37;
12450
- animation: spin 1s linear infinite;
12451
- }
12452
- p {
12453
- font-size: 0.85rem;
12454
- margin: 0;
12455
- }
12456
- }
12457
- @keyframes spin {
12458
- from { transform: rotate(0deg); }
12459
- to { transform: rotate(360deg); }
12460
- }
12461
- `;
12462
- var SkeletonFeedRow = styled9__default.default.div`
12463
- padding: 0.625rem 0.75rem;
12464
- border-bottom: 1px solid rgba(255,255,255,0.04);
12465
- display: flex;
12466
- justify-content: space-between;
12467
- align-items: center;
12468
- gap: 1rem;
12469
-
12470
- &:last-child {
12471
- border-bottom: none;
12472
- }
12473
-
12474
- .info-col {
12475
- display: flex;
12476
- flex-direction: column;
12477
- gap: 0.3rem;
12478
- min-width: 0;
12479
- flex: 1;
12480
- }
12481
-
12482
- @media (max-width: 768px) {
12483
- padding: 0.4rem 0.6rem;
12484
- }
12485
- `;
12486
- var EndedBanner = styled9__default.default.div`
12487
- font-size: 0.7rem;
12488
- font-weight: 600;
12489
- letter-spacing: 0.04em;
12490
- text-transform: uppercase;
12491
- color: rgba(255, 255, 255, 0.55);
12492
- background: rgba(255, 255, 255, 0.04);
12493
- border: 1px solid rgba(255, 255, 255, 0.08);
12494
- border-radius: 6px;
12495
- padding: 0.4rem 0.6rem;
12496
- margin-bottom: 0.5rem;
12497
- text-align: center;
12498
- `;
12499
- var FeedList = styled9__default.default.div`
12500
- width: 100%;
12501
- overflow-y: auto;
12502
- scrollbar-width: none;
12503
- -ms-overflow-style: none;
12504
- &::-webkit-scrollbar {
12505
- display: none;
12506
- }
12507
- `;
12508
- var PurchaseItem = styled9__default.default.div`
12509
- padding: 0.625rem 0.75rem;
12510
- border-bottom: 1px solid rgba(255,255,255,0.05);
12511
- display: flex;
12512
- justify-content: space-between;
12513
- align-items: center;
12514
- position: relative;
12515
- overflow: hidden;
12516
- background-color: ${(p) => p.$isAlternate ? "rgba(255,255,255,0.03)" : "transparent"};
12517
-
12518
- &::before {
12519
- content: '';
12520
- position: absolute;
12521
- top: 0;
12522
- right: 0;
12523
- bottom: 0;
12524
- width: ${(p) => p.$barWidth || "20%"};
12525
- background: linear-gradient(90deg, transparent 0%, rgba(14,203,129,0.15) 100%);
12526
- pointer-events: none;
12527
- }
12528
-
12529
- &:last-child {
12530
- border-bottom: none;
12531
- }
12532
-
12533
- @media (max-width: 768px) {
12534
- padding: 0.4rem 0.6rem;
12535
- }
12536
- `;
12537
- var PurchaseInfo = styled9__default.default.div`
12538
- display: flex;
12539
- flex-direction: column;
12540
- min-width: 0;
12541
- `;
12542
- var PurchaseName = styled9__default.default.div`
12543
- font-weight: 500;
12544
- font-size: 0.875rem;
12545
- color: #fff;
12546
- white-space: nowrap;
12547
- overflow: hidden;
12548
- text-overflow: ellipsis;
12549
- `;
12550
- var PurchaseTime = styled9__default.default.div`
12551
- font-size: 0.7rem;
12552
- color: var(--color-text-secondary);
12553
- margin-top: 0.125rem;
12554
- `;
12555
- var PurchaseAmount = styled9__default.default.div`
12556
- font-weight: 600;
12557
- font-size: 0.875rem;
12558
- color: #fff;
12559
- white-space: nowrap;
12560
- margin-left: 1rem;
12561
- `;
12562
- var LiveIndicatorDot = styled9__default.default.span`
12563
- display: inline-block;
12564
- width: 8px;
12565
- height: 8px;
12566
- background-color: ${(p) => p.$active ? "#0ecb81" : "#848e9c"};
12567
- border-radius: 50%;
12568
- position: relative;
12569
- &:after {
12570
- content: '';
12571
- position: absolute;
12572
- width: 100%;
12573
- height: 100%;
12574
- border-radius: 50%;
12575
- background-color: ${(p) => p.$active ? "#0ecb81" : "transparent"};
12576
- animation: ${(p) => p.$active ? "liveGlow 2s infinite" : "none"};
12577
- }
12578
- @keyframes liveGlow {
12579
- 0% { box-shadow: 0 0 0 0 rgba(14,203,129,0.4); }
12580
- 70% { box-shadow: 0 0 0 10px rgba(14,203,129,0); }
12581
- 100% { box-shadow: 0 0 0 0 rgba(14,203,129,0); }
12582
- }
12583
- `;
12584
12248
  var slideIn = styled9.keyframes`
12585
12249
  from { transform: translateX(110%); opacity: 0; }
12586
12250
  to { transform: translateX(0); opacity: 1; }
@@ -13627,28 +13291,288 @@ var InsufficientFunds = styled9__default.default.div`
13627
13291
  font-size: 0.85rem;
13628
13292
  font-weight: 600;
13629
13293
  `;
13630
- var ACTIVITY_PAGE_SIZE_DEFAULT = 10;
13631
- var formatCurrency5 = (value, opts) => {
13632
- const min = opts?.minimumFractionDigits ?? 2;
13633
- const max = opts?.maximumFractionDigits ?? 2;
13634
- return `$${value.toLocaleString("en-US", { minimumFractionDigits: min, maximumFractionDigits: max })}`;
13635
- };
13636
- var formatNumber2 = (value, maximumFractionDigits = 2) => value.toLocaleString("en-US", { minimumFractionDigits: 0, maximumFractionDigits });
13637
- var formatTimestamp = (unix) => {
13638
- if (!unix) return "\u2014";
13639
- let sec;
13640
- if (unix > 1e18) sec = Math.floor(unix / 1e9);
13641
- else if (unix > 1e14) sec = Math.floor(unix / 1e6);
13642
- else if (unix > 1e12) sec = Math.floor(unix / 1e3);
13643
- else sec = unix;
13644
- return new Date(sec * 1e3).toLocaleString("en-AU", {
13645
- day: "2-digit",
13646
- month: "short",
13647
- hour: "2-digit",
13648
- minute: "2-digit",
13649
- hour12: false
13650
- });
13651
- };
13294
+ function OrderConfirmationModal({
13295
+ open,
13296
+ onClose,
13297
+ hasInsufficientFunds,
13298
+ tokenQuantity,
13299
+ tokenPrice,
13300
+ propertyName,
13301
+ tokenSymbol,
13302
+ estExposure,
13303
+ orderTotal,
13304
+ availableBalance,
13305
+ onConfirm,
13306
+ isPlacing = false,
13307
+ placingLabel = "Placing order\u2026"
13308
+ }) {
13309
+ if (!open) return null;
13310
+ const handleOverlayClose = () => {
13311
+ if (isPlacing) return;
13312
+ onClose();
13313
+ };
13314
+ return /* @__PURE__ */ jsxRuntime.jsx(Overlay3, { onClick: handleOverlayClose, children: /* @__PURE__ */ jsxRuntime.jsxs(Modal, { onClick: (e) => e.stopPropagation(), children: [
13315
+ /* @__PURE__ */ jsxRuntime.jsx(ModalHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs("h3", { children: [
13316
+ "Confirm Order",
13317
+ /* @__PURE__ */ jsxRuntime.jsx(Badge2, { children: "Subscribe" })
13318
+ ] }) }),
13319
+ /* @__PURE__ */ jsxRuntime.jsx(ModalBody, { children: [
13320
+ { label: "Order Type", value: "Primary Offering" },
13321
+ { label: "Property", value: propertyName },
13322
+ { label: "Units", value: `${tokenQuantity.toLocaleString()} ${tokenSymbol}`, highlight: true },
13323
+ {
13324
+ label: "Unit Price",
13325
+ value: `$${tokenPrice.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
13326
+ },
13327
+ { label: "Property Exposure", value: `${estExposure}%` },
13328
+ { label: "Total Investment", value: `$${orderTotal.toLocaleString()}`, highlight: true }
13329
+ ].map((row, index, arr) => /* @__PURE__ */ jsxRuntime.jsxs(ModalRow, { "data-divider": index < arr.length - 1, children: [
13330
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: row.label }),
13331
+ /* @__PURE__ */ jsxRuntime.jsx("strong", { "data-highlight": row.highlight, children: row.value })
13332
+ ] }, row.label)) }),
13333
+ hasInsufficientFunds ? /* @__PURE__ */ jsxRuntime.jsxs(Warning, { children: [
13334
+ /* @__PURE__ */ jsxRuntime.jsx("p", { children: "\u26A0 Insufficient Balance" }),
13335
+ /* @__PURE__ */ jsxRuntime.jsxs("small", { children: [
13336
+ "You need ",
13337
+ /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
13338
+ "$",
13339
+ orderTotal.toLocaleString()
13340
+ ] }),
13341
+ " but only have",
13342
+ " ",
13343
+ /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
13344
+ "$",
13345
+ availableBalance.toLocaleString()
13346
+ ] }),
13347
+ " available."
13348
+ ] })
13349
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(Summary, { children: [
13350
+ "Your order for ",
13351
+ /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
13352
+ tokenQuantity.toLocaleString(),
13353
+ " ",
13354
+ tokenSymbol,
13355
+ " units"
13356
+ ] }),
13357
+ " in the",
13358
+ " ",
13359
+ /* @__PURE__ */ jsxRuntime.jsx("strong", { children: propertyName }),
13360
+ " Primary Offering will be placed for ",
13361
+ /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
13362
+ "$",
13363
+ tokenPrice.toFixed(2),
13364
+ "/unit"
13365
+ ] }),
13366
+ "."
13367
+ ] }),
13368
+ /* @__PURE__ */ jsxRuntime.jsxs(ButtonRow2, { children: [
13369
+ /* @__PURE__ */ jsxRuntime.jsx(
13370
+ "button",
13371
+ {
13372
+ type: "button",
13373
+ onClick: onClose,
13374
+ className: "secondary",
13375
+ disabled: isPlacing,
13376
+ children: "Cancel"
13377
+ }
13378
+ ),
13379
+ !hasInsufficientFunds && /* @__PURE__ */ jsxRuntime.jsx(
13380
+ "button",
13381
+ {
13382
+ type: "button",
13383
+ onClick: onConfirm,
13384
+ className: "primary",
13385
+ disabled: isPlacing,
13386
+ children: isPlacing ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
13387
+ /* @__PURE__ */ jsxRuntime.jsx(Spinner, { "aria-hidden": true }),
13388
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: placingLabel })
13389
+ ] }) : "Place Order"
13390
+ }
13391
+ )
13392
+ ] })
13393
+ ] }) });
13394
+ }
13395
+ var Overlay3 = styled9__default.default.div`
13396
+ position: fixed;
13397
+ top: 0;
13398
+ left: 0;
13399
+ right: 0;
13400
+ bottom: 0;
13401
+ background-color: rgba(0,0,0,0.7);
13402
+ display: flex;
13403
+ align-items: center;
13404
+ justify-content: center;
13405
+ z-index: 10000;
13406
+ backdrop-filter: blur(4px);
13407
+ `;
13408
+ var Modal = styled9__default.default.div`
13409
+ background: linear-gradient(135deg, rgba(26,29,35,0.95) 0%, rgba(26,29,35,0.98) 100%);
13410
+ border: 1px solid rgba(255,255,255,0.1);
13411
+ border-radius: 16px;
13412
+ padding: 2rem;
13413
+ max-width: 480px;
13414
+ width: 90%;
13415
+ box-shadow: 0 20px 60px rgba(0,0,0,0.5);
13416
+ `;
13417
+ var ModalHeader = styled9__default.default.div`
13418
+ display: flex;
13419
+ align-items: center;
13420
+ margin-bottom: 1.5rem;
13421
+ padding-bottom: 1rem;
13422
+ border-bottom: 1px solid rgba(255,255,255,0.1);
13423
+ h3 {
13424
+ margin: 0;
13425
+ font-size: 1.25rem;
13426
+ font-weight: 600;
13427
+ color: #fff;
13428
+ display: flex;
13429
+ align-items: center;
13430
+ gap: 0.5rem;
13431
+ }
13432
+ `;
13433
+ var Badge2 = styled9__default.default.span`
13434
+ padding: 0.25rem 0.75rem;
13435
+ border-radius: 6px;
13436
+ font-size: 0.75rem;
13437
+ font-weight: 600;
13438
+ text-transform: uppercase;
13439
+ letter-spacing: 0.5px;
13440
+ background: linear-gradient(135deg, rgba(212,175,55,0.2) 0%, rgba(212,175,55,0.1) 100%);
13441
+ color: #D4AF37;
13442
+ border: 1px solid rgba(212,175,55,0.3);
13443
+ `;
13444
+ var ModalBody = styled9__default.default.div`
13445
+ margin-bottom: 1.5rem;
13446
+ display: flex;
13447
+ flex-direction: column;
13448
+ `;
13449
+ var ModalRow = styled9__default.default.div`
13450
+ display: flex;
13451
+ justify-content: space-between;
13452
+ align-items: center;
13453
+ padding: 0.75rem 0;
13454
+ border-bottom: 1px solid rgba(255,255,255,0.05);
13455
+ &[data-divider='false'] {
13456
+ border-bottom: none;
13457
+ }
13458
+ span {
13459
+ color: rgba(255,255,255,0.6);
13460
+ font-size: 0.9rem;
13461
+ }
13462
+ strong {
13463
+ color: #fff;
13464
+ font-weight: 500;
13465
+ font-size: 0.95rem;
13466
+ }
13467
+ strong[data-highlight='true'] {
13468
+ color: #D4AF37;
13469
+ font-weight: 600;
13470
+ }
13471
+ `;
13472
+ var Warning = styled9__default.default.div`
13473
+ background: rgba(246,70,93,0.1);
13474
+ border: 1px solid rgba(246,70,93,0.3);
13475
+ border-radius: 8px;
13476
+ padding: 1rem;
13477
+ margin-bottom: 1.5rem;
13478
+ p {
13479
+ margin: 0;
13480
+ color: #f6465d;
13481
+ font-size: 0.9rem;
13482
+ font-weight: 600;
13483
+ }
13484
+ small {
13485
+ display: block;
13486
+ margin-top: 0.5rem;
13487
+ color: rgba(255,255,255,0.7);
13488
+ font-size: 0.85rem;
13489
+ line-height: 1.5;
13490
+ }
13491
+ `;
13492
+ var Summary = styled9__default.default.div`
13493
+ background: rgba(255,255,255,0.03);
13494
+ border: 1px solid rgba(255,255,255,0.08);
13495
+ border-radius: 8px;
13496
+ padding: 1rem;
13497
+ margin-bottom: 1.5rem;
13498
+ color: rgba(255,255,255,0.8);
13499
+ font-size: 0.9rem;
13500
+ line-height: 1.5;
13501
+ `;
13502
+ var spin = styled9.keyframes`
13503
+ to { transform: rotate(360deg); }
13504
+ `;
13505
+ var Spinner = styled9__default.default.span`
13506
+ display: inline-block;
13507
+ width: 14px;
13508
+ height: 14px;
13509
+ border-radius: 50%;
13510
+ border: 2px solid rgba(255, 255, 255, 0.35);
13511
+ border-top-color: #fff;
13512
+ animation: ${spin} 0.7s linear infinite;
13513
+ margin-right: 0.5rem;
13514
+ vertical-align: -2px;
13515
+ `;
13516
+ var ButtonRow2 = styled9__default.default.div`
13517
+ display: flex;
13518
+ gap: 1rem;
13519
+ justify-content: flex-end;
13520
+ button {
13521
+ padding: 0.75rem 1.5rem;
13522
+ border-radius: 8px;
13523
+ font-weight: 600;
13524
+ font-size: 0.95rem;
13525
+ cursor: pointer;
13526
+ display: inline-flex;
13527
+ align-items: center;
13528
+ justify-content: center;
13529
+ }
13530
+ button:disabled {
13531
+ cursor: not-allowed;
13532
+ opacity: 0.75;
13533
+ }
13534
+ .secondary {
13535
+ background: rgba(255,255,255,0.1);
13536
+ color: rgba(255,255,255,0.8);
13537
+ border: 1px solid rgba(255,255,255,0.2);
13538
+ }
13539
+ .primary {
13540
+ background: linear-gradient(135deg, #0ecb81 0%, #0ba968 100%);
13541
+ color: #fff;
13542
+ border: none;
13543
+ box-shadow: 0 4px 12px rgba(14,203,129,0.3);
13544
+ }
13545
+ `;
13546
+
13547
+ // src/components/property-buy/constants.ts
13548
+ var STATUS_COLOR2 = {
13549
+ PENDING: "#D4AF37",
13550
+ LIVE: "#0ecb81",
13551
+ CLOSED: "#848e9c",
13552
+ CANCELLED: "#f6465d"
13553
+ };
13554
+ var ACTIVITY_PAGE_SIZE_DEFAULT = 10;
13555
+ var formatCurrency4 = (value, opts) => {
13556
+ const min = opts?.minimumFractionDigits ?? 2;
13557
+ const max = opts?.maximumFractionDigits ?? 2;
13558
+ return `$${value.toLocaleString("en-US", { minimumFractionDigits: min, maximumFractionDigits: max })}`;
13559
+ };
13560
+ var formatNumber2 = (value, maximumFractionDigits = 2) => value.toLocaleString("en-US", { minimumFractionDigits: 0, maximumFractionDigits });
13561
+ var formatTimestamp = (unix) => {
13562
+ if (!unix) return "\u2014";
13563
+ let sec;
13564
+ if (unix > 1e18) sec = Math.floor(unix / 1e9);
13565
+ else if (unix > 1e14) sec = Math.floor(unix / 1e6);
13566
+ else if (unix > 1e12) sec = Math.floor(unix / 1e3);
13567
+ else sec = unix;
13568
+ return new Date(sec * 1e3).toLocaleString("en-AU", {
13569
+ day: "2-digit",
13570
+ month: "short",
13571
+ hour: "2-digit",
13572
+ minute: "2-digit",
13573
+ hour12: false
13574
+ });
13575
+ };
13652
13576
  var formatAddress = (address) => `${address.slice(0, 6)}...${address.slice(-4)}`;
13653
13577
  var prettyLabel = (value) => value.split("_").map((part) => part.charAt(0) + part.slice(1).toLowerCase()).join(" ");
13654
13578
  var sideLabel = (side) => side?.toUpperCase() === "SELL" ? "Sell" : "Buy";
@@ -13887,16 +13811,16 @@ function PortfolioActivityPanel({
13887
13811
  /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "rgba(255,255,255,0.4)", fontSize: "0.7rem" }, children: pos.tokenName.toUpperCase() })
13888
13812
  ] }) }),
13889
13813
  /* @__PURE__ */ jsxRuntime.jsx(PositionsCell, { children: /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { color: "#fff", fontSize: "0.8rem" }, children: [
13890
- formatCurrency5(currentValue, { minimumFractionDigits: 0, maximumFractionDigits: 0 }),
13814
+ formatCurrency4(currentValue, { minimumFractionDigits: 0, maximumFractionDigits: 0 }),
13891
13815
  " ",
13892
13816
  /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "rgba(255,255,255,0.4)", fontSize: "0.7rem" }, children: "USD" })
13893
13817
  ] }) }),
13894
- /* @__PURE__ */ jsxRuntime.jsx(PositionsCell, { children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "rgba(255,255,255,0.7)", fontSize: "0.8rem" }, children: formatCurrency5(pos.averageEntryPrice) }) }),
13895
- /* @__PURE__ */ jsxRuntime.jsx(PositionsCell, { children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "#fff", fontSize: "0.8rem" }, children: formatCurrency5(pos.marketPrice) }) }),
13818
+ /* @__PURE__ */ jsxRuntime.jsx(PositionsCell, { children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "rgba(255,255,255,0.7)", fontSize: "0.8rem" }, children: formatCurrency4(pos.averageEntryPrice) }) }),
13819
+ /* @__PURE__ */ jsxRuntime.jsx(PositionsCell, { children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "#fff", fontSize: "0.8rem" }, children: formatCurrency4(pos.marketPrice) }) }),
13896
13820
  /* @__PURE__ */ jsxRuntime.jsxs(PositionsCell, { children: [
13897
13821
  /* @__PURE__ */ jsxRuntime.jsxs(PnLAmount, { $positive: isPositive, children: [
13898
13822
  isPositive ? "+" : "-",
13899
- formatCurrency5(Math.abs(pnl))
13823
+ formatCurrency4(Math.abs(pnl))
13900
13824
  ] }),
13901
13825
  /* @__PURE__ */ jsxRuntime.jsxs(PnLPercentage, { $positive: isPositive, children: [
13902
13826
  isPositive ? "+" : "",
@@ -13955,8 +13879,8 @@ function PortfolioActivityPanel({
13955
13879
  return /* @__PURE__ */ jsxRuntime.jsxs(GridRow, { $columns: "1.2fr 0.8fr 1fr 1fr 0.8fr 1fr", children: [
13956
13880
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $primary: true, children: order.tokenName }) }),
13957
13881
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatNumber2(order.quantity) }) }),
13958
- /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: formatCurrency5(order.price) }) }),
13959
- /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatCurrency5(order.price * order.quantity) }) }),
13882
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: formatCurrency4(order.price) }) }),
13883
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatCurrency4(order.price * order.quantity) }) }),
13960
13884
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(ActivityTag, { $color: meta.color, $bg: meta.bg, children: prettyLabel(order.status) }) }),
13961
13885
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: formatTimestamp(order.createdAt) }) })
13962
13886
  ] }, `${order.tokenName}-${order.txHash}-${order.createdAt}`);
@@ -13987,7 +13911,7 @@ function PortfolioActivityPanel({
13987
13911
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(SideBadge, { $side: sideLabel(order.side), children: sideLabel(order.side) }) }),
13988
13912
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: prettyLabel(order.type) }) }),
13989
13913
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: onAmendOrder ? /* @__PURE__ */ jsxRuntime.jsx(EditableField, { value: order.quantity, format: formatNumber2, onCommit: (v) => onAmendOrder(order.id, { quantity: v }) }) : /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatNumber2(order.quantity) }) }),
13990
- /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: !isMarket && order.price && onAmendOrder ? /* @__PURE__ */ jsxRuntime.jsx(EditableField, { value: order.price, format: (v) => formatCurrency5(v), onCommit: (v) => onAmendOrder(order.id, { price: v }) }) : /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: isMarket || !order.price ? "Market" : formatCurrency5(order.price) }) }),
13914
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: !isMarket && order.price && onAmendOrder ? /* @__PURE__ */ jsxRuntime.jsx(EditableField, { value: order.price, format: (v) => formatCurrency4(v), onCommit: (v) => onAmendOrder(order.id, { price: v }) }) : /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: isMarket || !order.price ? "Market" : formatCurrency4(order.price) }) }),
13991
13915
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsxs(CellText, { $muted: true, children: [
13992
13916
  filledPercent,
13993
13917
  "%"
@@ -14031,7 +13955,7 @@ function PortfolioActivityPanel({
14031
13955
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(SideBadge, { $side: sideLabel(order.side), children: sideLabel(order.side) }) }),
14032
13956
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: prettyLabel(order.type) }) }),
14033
13957
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatNumber2(order.quantity) }) }),
14034
- /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: isMarket || !order.price ? "Market" : formatCurrency5(order.price) }) }),
13958
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: isMarket || !order.price ? "Market" : formatCurrency4(order.price) }) }),
14035
13959
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsxs(CellText, { $muted: true, children: [
14036
13960
  filledPercent,
14037
13961
  "%"
@@ -14058,9 +13982,9 @@ function PortfolioActivityPanel({
14058
13982
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $primary: true, children: trade.tokenName }) }),
14059
13983
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(SideBadge, { $side: sideLabel(trade.side), children: sideLabel(trade.side) }) }),
14060
13984
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatNumber2(trade.quantity) }) }),
14061
- /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatCurrency5(trade.price) }) }),
14062
- /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatCurrency5(trade.price * trade.quantity) }) }),
14063
- /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: formatCurrency5(trade.fee) }) }),
13985
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatCurrency4(trade.price) }) }),
13986
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { children: formatCurrency4(trade.price * trade.quantity) }) }),
13987
+ /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: formatCurrency4(trade.fee) }) }),
14064
13988
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: formatTimestamp(trade.executedAt) }) })
14065
13989
  ] }, trade.tradeId))
14066
13990
  ] })
@@ -14082,7 +14006,7 @@ function PortfolioActivityPanel({
14082
14006
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(SideBadge, { $side: isDeposit ? "Buy" : "Sell", children: isDeposit ? "Deposit" : "Withdraw" }) }),
14083
14007
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsxs(CellText, { $color: isDeposit ? "#0ecb81" : "#f6465d", children: [
14084
14008
  isDeposit ? "+" : "-",
14085
- formatCurrency5(t.amount)
14009
+ formatCurrency4(t.amount)
14086
14010
  ] }) }),
14087
14011
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(CellText, { $muted: true, children: formatAddress(t.address) }) }),
14088
14012
  /* @__PURE__ */ jsxRuntime.jsx(GridCell, { children: /* @__PURE__ */ jsxRuntime.jsx(ActivityTag, { $color: statusMeta.color, $bg: statusMeta.bg, children: prettyLabel(t.status) }) }),
@@ -14669,424 +14593,77 @@ var CloseAllModalX = styled9__default.default.button`
14669
14593
  color: rgba(255, 255, 255, 0.4);
14670
14594
  font-size: 1.25rem;
14671
14595
  cursor: pointer;
14672
- padding: 0.25rem;
14673
- line-height: 1;
14674
- transition: color 0.15s;
14675
-
14676
- &:hover { color: #fff; }
14677
- `;
14678
- var CloseAllTitle = styled9__default.default.div`
14679
- font-size: 1rem;
14680
- font-weight: 600;
14681
- color: #fff;
14682
- margin-bottom: 0.5rem;
14683
- `;
14684
- var CloseAllDesc = styled9__default.default.div`
14685
- font-size: 0.8rem;
14686
- color: rgba(255, 255, 255, 0.5);
14687
- line-height: 1.45;
14688
- margin-bottom: 1rem;
14689
- `;
14690
- var CloseAllOption = styled9__default.default.div`
14691
- display: flex;
14692
- align-items: center;
14693
- gap: 0.6rem;
14694
- padding: 0.6rem 0.75rem;
14695
- border-radius: 8px;
14696
- cursor: pointer;
14697
- font-size: 0.85rem;
14698
- color: rgba(255, 255, 255, 0.85);
14699
- transition: background 0.15s;
14700
- margin-bottom: 0.35rem;
14701
-
14702
- &:hover { background: rgba(255, 255, 255, 0.04); }
14703
- `;
14704
- var CloseAllRadio = styled9__default.default.div`
14705
- width: 16px;
14706
- height: 16px;
14707
- border-radius: 50%;
14708
- border: 2px solid ${(p) => p.$selected ? "#f6465d" : "rgba(255, 255, 255, 0.2)"};
14709
- position: relative;
14710
- flex-shrink: 0;
14711
- transition: border-color 0.15s;
14712
-
14713
- &::after {
14714
- content: '';
14715
- position: absolute;
14716
- top: 50%;
14717
- left: 50%;
14718
- transform: translate(-50%, -50%);
14719
- width: 8px;
14720
- height: 8px;
14721
- border-radius: 50%;
14722
- background: ${(p) => p.$selected ? "#f6465d" : "transparent"};
14723
- transition: background 0.15s;
14724
- }
14725
- `;
14726
- var CloseAllConfirmBtn = styled9__default.default.button`
14727
- width: 100%;
14728
- margin-top: 0.75rem;
14729
- background: rgba(246, 70, 93, 0.15);
14730
- border: 1px solid rgba(246, 70, 93, 0.4);
14731
- border-radius: 8px;
14732
- padding: 0.7rem 1rem;
14733
- font-size: 0.85rem;
14734
- font-weight: 600;
14735
- color: #f6465d;
14736
- cursor: pointer;
14737
- transition: all 0.15s ease;
14738
-
14739
- &:hover {
14740
- background: rgba(246, 70, 93, 0.25);
14741
- }
14742
- `;
14743
- function NewsOrdersSection({ newsItems, newsConnectionStatus, activityData }) {
14744
- return /* @__PURE__ */ jsxRuntime.jsxs(Row2, { children: [
14745
- /* @__PURE__ */ jsxRuntime.jsx(
14746
- PropertyNewsUpdates,
14747
- {
14748
- items: newsItems,
14749
- heading: "Property News & Updates",
14750
- connectionStatus: newsConnectionStatus
14751
- }
14752
- ),
14753
- /* @__PURE__ */ jsxRuntime.jsx(ActivityWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(
14754
- PortfolioActivityPanel,
14755
- {
14756
- positions: activityData?.positions,
14757
- showPositionsTab: true,
14758
- onPositionClick: activityData?.onPositionClick,
14759
- offeringOrders: activityData?.offeringOrders,
14760
- openOrders: activityData?.openOrders,
14761
- orderHistory: activityData?.orderHistory,
14762
- tradeHistory: activityData?.tradeHistory,
14763
- transfers: activityData?.transfers,
14764
- onCancelOrder: activityData?.onCancelOrder,
14765
- cancellingOrderId: activityData?.cancellingOrderId,
14766
- defaultTab: activityData?.defaultTab ?? "positions",
14767
- pageSize: activityData?.pageSize ?? 6
14768
- }
14769
- ) })
14770
- ] });
14771
- }
14772
- var Row2 = styled9__default.default.div`
14773
- display: grid;
14774
- grid-template-columns: 1fr 2fr;
14775
- gap: 1.5rem;
14776
- margin-top: 1.5rem;
14777
- max-width: 1800px;
14778
- margin-left: auto;
14779
- margin-right: auto;
14780
- overflow: hidden;
14781
- @media (max-width: 768px) {
14782
- grid-template-columns: 1fr;
14783
- gap: 1rem;
14784
- }
14785
- & > * {
14786
- min-width: 0;
14787
- overflow: hidden;
14788
- }
14789
- `;
14790
- var ActivityWrapper = styled9__default.default.div`
14791
- background-color: var(--color-card-darker, #111);
14792
- border-radius: 8px;
14793
- padding: 1.5rem;
14794
- display: flex;
14795
- flex-direction: column;
14796
- box-shadow: 0 4px 8px rgba(0,0,0,0.2);
14797
- border: 1px solid var(--color-border);
14798
- min-height: 280px;
14799
- overflow: hidden;
14800
- @media (max-width: 768px) {
14801
- padding: 1rem;
14802
- min-height: auto;
14803
- }
14804
- `;
14805
- function OrderConfirmationModal({
14806
- open,
14807
- onClose,
14808
- hasInsufficientFunds,
14809
- tokenQuantity,
14810
- tokenPrice,
14811
- propertyName,
14812
- tokenSymbol,
14813
- estExposure,
14814
- orderTotal,
14815
- availableBalance,
14816
- onConfirm,
14817
- isPlacing = false,
14818
- placingLabel = "Placing order\u2026"
14819
- }) {
14820
- if (!open) return null;
14821
- const handleOverlayClose = () => {
14822
- if (isPlacing) return;
14823
- onClose();
14824
- };
14825
- return /* @__PURE__ */ jsxRuntime.jsx(Overlay3, { onClick: handleOverlayClose, children: /* @__PURE__ */ jsxRuntime.jsxs(Modal, { onClick: (e) => e.stopPropagation(), children: [
14826
- /* @__PURE__ */ jsxRuntime.jsx(ModalHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs("h3", { children: [
14827
- "Confirm Order",
14828
- /* @__PURE__ */ jsxRuntime.jsx(Badge2, { children: "Subscribe" })
14829
- ] }) }),
14830
- /* @__PURE__ */ jsxRuntime.jsx(ModalBody, { children: [
14831
- { label: "Order Type", value: "Primary Offering" },
14832
- { label: "Property", value: propertyName },
14833
- { label: "Units", value: `${tokenQuantity.toLocaleString()} ${tokenSymbol}`, highlight: true },
14834
- {
14835
- label: "Unit Price",
14836
- value: `$${tokenPrice.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
14837
- },
14838
- { label: "Property Exposure", value: `${estExposure}%` },
14839
- { label: "Total Investment", value: `$${orderTotal.toLocaleString()}`, highlight: true }
14840
- ].map((row, index, arr) => /* @__PURE__ */ jsxRuntime.jsxs(ModalRow, { "data-divider": index < arr.length - 1, children: [
14841
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: row.label }),
14842
- /* @__PURE__ */ jsxRuntime.jsx("strong", { "data-highlight": row.highlight, children: row.value })
14843
- ] }, row.label)) }),
14844
- hasInsufficientFunds ? /* @__PURE__ */ jsxRuntime.jsxs(Warning, { children: [
14845
- /* @__PURE__ */ jsxRuntime.jsx("p", { children: "\u26A0 Insufficient Balance" }),
14846
- /* @__PURE__ */ jsxRuntime.jsxs("small", { children: [
14847
- "You need ",
14848
- /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
14849
- "$",
14850
- orderTotal.toLocaleString()
14851
- ] }),
14852
- " but only have",
14853
- " ",
14854
- /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
14855
- "$",
14856
- availableBalance.toLocaleString()
14857
- ] }),
14858
- " available."
14859
- ] })
14860
- ] }) : /* @__PURE__ */ jsxRuntime.jsxs(Summary, { children: [
14861
- "Your order for ",
14862
- /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
14863
- tokenQuantity.toLocaleString(),
14864
- " ",
14865
- tokenSymbol,
14866
- " units"
14867
- ] }),
14868
- " in the",
14869
- " ",
14870
- /* @__PURE__ */ jsxRuntime.jsx("strong", { children: propertyName }),
14871
- " Primary Offering will be placed for ",
14872
- /* @__PURE__ */ jsxRuntime.jsxs("strong", { children: [
14873
- "$",
14874
- tokenPrice.toFixed(2),
14875
- "/unit"
14876
- ] }),
14877
- "."
14878
- ] }),
14879
- /* @__PURE__ */ jsxRuntime.jsxs(ButtonRow2, { children: [
14880
- /* @__PURE__ */ jsxRuntime.jsx(
14881
- "button",
14882
- {
14883
- type: "button",
14884
- onClick: onClose,
14885
- className: "secondary",
14886
- disabled: isPlacing,
14887
- children: "Cancel"
14888
- }
14889
- ),
14890
- !hasInsufficientFunds && /* @__PURE__ */ jsxRuntime.jsx(
14891
- "button",
14892
- {
14893
- type: "button",
14894
- onClick: onConfirm,
14895
- className: "primary",
14896
- disabled: isPlacing,
14897
- children: isPlacing ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
14898
- /* @__PURE__ */ jsxRuntime.jsx(Spinner, { "aria-hidden": true }),
14899
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: placingLabel })
14900
- ] }) : "Place Order"
14901
- }
14902
- )
14903
- ] })
14904
- ] }) });
14905
- }
14906
- var Overlay3 = styled9__default.default.div`
14907
- position: fixed;
14908
- top: 0;
14909
- left: 0;
14910
- right: 0;
14911
- bottom: 0;
14912
- background-color: rgba(0,0,0,0.7);
14913
- display: flex;
14914
- align-items: center;
14915
- justify-content: center;
14916
- z-index: 10000;
14917
- backdrop-filter: blur(4px);
14918
- `;
14919
- var Modal = styled9__default.default.div`
14920
- background: linear-gradient(135deg, rgba(26,29,35,0.95) 0%, rgba(26,29,35,0.98) 100%);
14921
- border: 1px solid rgba(255,255,255,0.1);
14922
- border-radius: 16px;
14923
- padding: 2rem;
14924
- max-width: 480px;
14925
- width: 90%;
14926
- box-shadow: 0 20px 60px rgba(0,0,0,0.5);
14927
- `;
14928
- var ModalHeader = styled9__default.default.div`
14929
- display: flex;
14930
- align-items: center;
14931
- margin-bottom: 1.5rem;
14932
- padding-bottom: 1rem;
14933
- border-bottom: 1px solid rgba(255,255,255,0.1);
14934
- h3 {
14935
- margin: 0;
14936
- font-size: 1.25rem;
14937
- font-weight: 600;
14938
- color: #fff;
14939
- display: flex;
14940
- align-items: center;
14941
- gap: 0.5rem;
14942
- }
14596
+ padding: 0.25rem;
14597
+ line-height: 1;
14598
+ transition: color 0.15s;
14599
+
14600
+ &:hover { color: #fff; }
14943
14601
  `;
14944
- var Badge2 = styled9__default.default.span`
14945
- padding: 0.25rem 0.75rem;
14946
- border-radius: 6px;
14947
- font-size: 0.75rem;
14602
+ var CloseAllTitle = styled9__default.default.div`
14603
+ font-size: 1rem;
14948
14604
  font-weight: 600;
14949
- text-transform: uppercase;
14950
- letter-spacing: 0.5px;
14951
- background: linear-gradient(135deg, rgba(212,175,55,0.2) 0%, rgba(212,175,55,0.1) 100%);
14952
- color: #D4AF37;
14953
- border: 1px solid rgba(212,175,55,0.3);
14605
+ color: #fff;
14606
+ margin-bottom: 0.5rem;
14954
14607
  `;
14955
- var ModalBody = styled9__default.default.div`
14956
- margin-bottom: 1.5rem;
14957
- display: flex;
14958
- flex-direction: column;
14608
+ var CloseAllDesc = styled9__default.default.div`
14609
+ font-size: 0.8rem;
14610
+ color: rgba(255, 255, 255, 0.5);
14611
+ line-height: 1.45;
14612
+ margin-bottom: 1rem;
14959
14613
  `;
14960
- var ModalRow = styled9__default.default.div`
14614
+ var CloseAllOption = styled9__default.default.div`
14961
14615
  display: flex;
14962
- justify-content: space-between;
14963
14616
  align-items: center;
14964
- padding: 0.75rem 0;
14965
- border-bottom: 1px solid rgba(255,255,255,0.05);
14966
- &[data-divider='false'] {
14967
- border-bottom: none;
14968
- }
14969
- span {
14970
- color: rgba(255,255,255,0.6);
14971
- font-size: 0.9rem;
14972
- }
14973
- strong {
14974
- color: #fff;
14975
- font-weight: 500;
14976
- font-size: 0.95rem;
14977
- }
14978
- strong[data-highlight='true'] {
14979
- color: #D4AF37;
14980
- font-weight: 600;
14981
- }
14982
- `;
14983
- var Warning = styled9__default.default.div`
14984
- background: rgba(246,70,93,0.1);
14985
- border: 1px solid rgba(246,70,93,0.3);
14986
- border-radius: 8px;
14987
- padding: 1rem;
14988
- margin-bottom: 1.5rem;
14989
- p {
14990
- margin: 0;
14991
- color: #f6465d;
14992
- font-size: 0.9rem;
14993
- font-weight: 600;
14994
- }
14995
- small {
14996
- display: block;
14997
- margin-top: 0.5rem;
14998
- color: rgba(255,255,255,0.7);
14999
- font-size: 0.85rem;
15000
- line-height: 1.5;
15001
- }
15002
- `;
15003
- var Summary = styled9__default.default.div`
15004
- background: rgba(255,255,255,0.03);
15005
- border: 1px solid rgba(255,255,255,0.08);
14617
+ gap: 0.6rem;
14618
+ padding: 0.6rem 0.75rem;
15006
14619
  border-radius: 8px;
15007
- padding: 1rem;
15008
- margin-bottom: 1.5rem;
15009
- color: rgba(255,255,255,0.8);
15010
- font-size: 0.9rem;
15011
- line-height: 1.5;
15012
- `;
15013
- var spin = styled9.keyframes`
15014
- to { transform: rotate(360deg); }
14620
+ cursor: pointer;
14621
+ font-size: 0.85rem;
14622
+ color: rgba(255, 255, 255, 0.85);
14623
+ transition: background 0.15s;
14624
+ margin-bottom: 0.35rem;
14625
+
14626
+ &:hover { background: rgba(255, 255, 255, 0.04); }
15015
14627
  `;
15016
- var Spinner = styled9__default.default.span`
15017
- display: inline-block;
15018
- width: 14px;
15019
- height: 14px;
14628
+ var CloseAllRadio = styled9__default.default.div`
14629
+ width: 16px;
14630
+ height: 16px;
15020
14631
  border-radius: 50%;
15021
- border: 2px solid rgba(255, 255, 255, 0.35);
15022
- border-top-color: #fff;
15023
- animation: ${spin} 0.7s linear infinite;
15024
- margin-right: 0.5rem;
15025
- vertical-align: -2px;
15026
- `;
15027
- var ButtonRow2 = styled9__default.default.div`
15028
- display: flex;
15029
- gap: 1rem;
15030
- justify-content: flex-end;
15031
- button {
15032
- padding: 0.75rem 1.5rem;
15033
- border-radius: 8px;
15034
- font-weight: 600;
15035
- font-size: 0.95rem;
15036
- cursor: pointer;
15037
- display: inline-flex;
15038
- align-items: center;
15039
- justify-content: center;
15040
- }
15041
- button:disabled {
15042
- cursor: not-allowed;
15043
- opacity: 0.75;
15044
- }
15045
- .secondary {
15046
- background: rgba(255,255,255,0.1);
15047
- color: rgba(255,255,255,0.8);
15048
- border: 1px solid rgba(255,255,255,0.2);
15049
- }
15050
- .primary {
15051
- background: linear-gradient(135deg, #0ecb81 0%, #0ba968 100%);
15052
- color: #fff;
15053
- border: none;
15054
- box-shadow: 0 4px 12px rgba(14,203,129,0.3);
14632
+ border: 2px solid ${(p) => p.$selected ? "#f6465d" : "rgba(255, 255, 255, 0.2)"};
14633
+ position: relative;
14634
+ flex-shrink: 0;
14635
+ transition: border-color 0.15s;
14636
+
14637
+ &::after {
14638
+ content: '';
14639
+ position: absolute;
14640
+ top: 50%;
14641
+ left: 50%;
14642
+ transform: translate(-50%, -50%);
14643
+ width: 8px;
14644
+ height: 8px;
14645
+ border-radius: 50%;
14646
+ background: ${(p) => p.$selected ? "#f6465d" : "transparent"};
14647
+ transition: background 0.15s;
15055
14648
  }
15056
14649
  `;
14650
+ var CloseAllConfirmBtn = styled9__default.default.button`
14651
+ width: 100%;
14652
+ margin-top: 0.75rem;
14653
+ background: rgba(246, 70, 93, 0.15);
14654
+ border: 1px solid rgba(246, 70, 93, 0.4);
14655
+ border-radius: 8px;
14656
+ padding: 0.7rem 1rem;
14657
+ font-size: 0.85rem;
14658
+ font-weight: 600;
14659
+ color: #f6465d;
14660
+ cursor: pointer;
14661
+ transition: all 0.15s ease;
15057
14662
 
15058
- // src/components/property-buy/constants.ts
15059
- var musgraveGalleryImages = [
15060
- { src: "/properties/Musgrave/ExteriorFront_Musgrave_Loafmarkets.jpg", title: "Exterior Front", subtitle: "Grand entrance" },
15061
- { src: "/properties/Musgrave/ExteriorDusk_Musgrave_Loafmarkets.jpg", title: "Exterior Dusk", subtitle: "Evening ambiance" },
15062
- { src: "/properties/Musgrave/LivingRoom_Musgrave_Loafmarkets.jpg", title: "Living Room", subtitle: "Spacious living" },
15063
- { src: "/properties/Musgrave/Kitchen_Musgrave_Loafmarkets.jpg", title: "Kitchen", subtitle: "Modern design" },
15064
- { src: "/properties/Musgrave/DiningRoom_Musgrave_Loafmarkets.jpg", title: "Dining Room", subtitle: "Elegant dining" },
15065
- { src: "/properties/Musgrave/BreakfastRoom_Musgrave_Loafmarkets.jpg", title: "Breakfast Room", subtitle: "Morning light" },
15066
- { src: "/properties/Musgrave/MainBedroom_Musgrave_Loafmarkets.jpg", title: "Main Bedroom", subtitle: "Master suite" },
15067
- { src: "/properties/Musgrave/GuestBedroom_Musgrave_Loafmarkets.jpg", title: "Guest Bedroom", subtitle: "Comfortable stay" },
15068
- { src: "/properties/Musgrave/Bathroom_Musgrave_Loafmarkets.jpg", title: "Bathroom", subtitle: "Luxury finishes" },
15069
- { src: "/properties/Musgrave/PoolArea_Musgrave_Loafmarkets.jpg", title: "Pool Area", subtitle: "Resort living" },
15070
- { src: "/properties/Musgrave/GardenView_Musgrave_Loafmarkets.jpg", title: "Garden View", subtitle: "Lush gardens" },
15071
- { src: "/properties/Musgrave/SideGarden_Musgrave_Loafmarkets.jpg", title: "Side Garden", subtitle: "Private retreat" },
15072
- { src: "/properties/Musgrave/AerialView_Musgrave_Loafmarkets.jpg", title: "Aerial View", subtitle: "Property overview" },
15073
- { src: "/properties/Musgrave/AerialLocation_Musgrave_Loafmarkets.jpg", title: "Aerial Location", subtitle: "Neighborhood" },
15074
- { src: "/properties/Musgrave/Floorplan_Musgrave_Loafmarkets.jpg", title: "Floorplan", subtitle: "Layout" }
15075
- ];
15076
- var galleryCategories = [
15077
- { name: "Exterior", startIndex: 0 },
15078
- { name: "Living", startIndex: 2 },
15079
- { name: "Bedrooms", startIndex: 6 },
15080
- { name: "Outdoor", startIndex: 9 },
15081
- { name: "Aerial", startIndex: 12 },
15082
- { name: "Floorplan", startIndex: 14 }
15083
- ];
15084
- var STATUS_COLOR2 = {
15085
- PENDING: "#D4AF37",
15086
- LIVE: "#0ecb81",
15087
- CLOSED: "#848e9c",
15088
- CANCELLED: "#f6465d"
15089
- };
14663
+ &:hover {
14664
+ background: rgba(246, 70, 93, 0.25);
14665
+ }
14666
+ `;
15090
14667
  function PropertyBuy({
15091
14668
  propertyName = "Loaf Property",
15092
14669
  propertyLocation: propertyLocationLabel = "Sydney, NSW",
@@ -15133,7 +14710,6 @@ function PropertyBuy({
15133
14710
  const offeringValuation = saleData?.offeringValuation ?? tokenPrice * supplyToSell;
15134
14711
  const ipoStatus = saleData?.status ?? "PENDING";
15135
14712
  const ipoStarted = ipoStatus === "LIVE" || isPrivateClient && ipoStatus === "PENDING";
15136
- const ipoEnded = ipoStatus === "CLOSED" || ipoStatus === "CANCELLED";
15137
14713
  const statusLabel = ipoStatus;
15138
14714
  const statusColor = STATUS_COLOR2[ipoStatus] ?? "#D4AF37";
15139
14715
  const displayStatusLabel = isPrivateClient && ipoStatus !== "LIVE" ? "Private Client Access" : statusLabel;
@@ -15257,17 +14833,23 @@ function PropertyBuy({
15257
14833
  isPrivateClient
15258
14834
  }
15259
14835
  ),
15260
- /* @__PURE__ */ jsxRuntime.jsx(
15261
- VideoActivitySection,
14836
+ /* @__PURE__ */ jsxRuntime.jsx(ActivityWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(
14837
+ PortfolioActivityPanel,
15262
14838
  {
15263
- ipoStarted,
15264
- ipoEnded,
15265
- isLoading: isLoadingActivity,
15266
- recentOrders,
15267
- ordersAllocated,
15268
- tokenPrice
14839
+ positions: portfolioActivity?.positions,
14840
+ showPositionsTab: true,
14841
+ onPositionClick: portfolioActivity?.onPositionClick,
14842
+ offeringOrders: portfolioActivity?.offeringOrders,
14843
+ openOrders: portfolioActivity?.openOrders,
14844
+ orderHistory: portfolioActivity?.orderHistory,
14845
+ tradeHistory: portfolioActivity?.tradeHistory,
14846
+ transfers: portfolioActivity?.transfers,
14847
+ onCancelOrder: portfolioActivity?.onCancelOrder,
14848
+ cancellingOrderId: portfolioActivity?.cancellingOrderId,
14849
+ defaultTab: "subscriptions",
14850
+ pageSize: 6
15269
14851
  }
15270
- ),
14852
+ ) }),
15271
14853
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column" }, children: [
15272
14854
  /* @__PURE__ */ jsxRuntime.jsx(
15273
14855
  OrderPanel,
@@ -15307,24 +14889,22 @@ function PropertyBuy({
15307
14889
  purchaseError && /* @__PURE__ */ jsxRuntime.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 })
15308
14890
  ] })
15309
14891
  ] }),
15310
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-6", children: [
14892
+ /* @__PURE__ */ jsxRuntime.jsxs(NewsVideoRow, { children: [
15311
14893
  /* @__PURE__ */ jsxRuntime.jsx(
15312
- GalleryMapSection,
14894
+ PropertyNewsUpdates,
15313
14895
  {
15314
- images: musgraveGalleryImages,
15315
- categories: galleryCategories,
15316
- propertyLocation: propertyLocationLabel,
15317
- tokenName
14896
+ items: newsItems,
14897
+ heading: "Property News & Updates",
14898
+ connectionStatus: newsConnectionStatus
15318
14899
  }
15319
14900
  ),
15320
- /* @__PURE__ */ jsxRuntime.jsx(
15321
- NewsOrdersSection,
15322
- {
15323
- newsItems,
15324
- newsConnectionStatus,
15325
- activityData: portfolioActivity
15326
- }
15327
- )
14901
+ /* @__PURE__ */ jsxRuntime.jsxs(VideoWrapper, { children: [
14902
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "section-header", children: /* @__PURE__ */ jsxRuntime.jsx("h3", { children: propertyName }) }),
14903
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "video-container", children: /* @__PURE__ */ jsxRuntime.jsxs("video", { controls: true, loop: true, autoPlay: true, muted: true, playsInline: true, children: [
14904
+ /* @__PURE__ */ jsxRuntime.jsx("source", { src: "/properties/Musgrave/musgrave.mp4", type: "video/mp4" }),
14905
+ "Your browser does not support the video tag."
14906
+ ] }) })
14907
+ ] })
15328
14908
  ] }),
15329
14909
  /* @__PURE__ */ jsxRuntime.jsx(
15330
14910
  OrderConfirmationModal,
@@ -15415,6 +14995,85 @@ var HeroGrid = styled9__default.default.div`
15415
14995
  gap: 0.5rem;
15416
14996
  }
15417
14997
  `;
14998
+ var ActivityWrapper = styled9__default.default.div`
14999
+ background-color: var(--color-card-darker, #111);
15000
+ border-radius: 8px;
15001
+ padding: 1.5rem;
15002
+ display: flex;
15003
+ flex-direction: column;
15004
+ box-shadow: 0 4px 8px rgba(0,0,0,0.2);
15005
+ border: 1px solid var(--color-border);
15006
+ min-height: 280px;
15007
+ overflow: hidden;
15008
+ @media (max-width: 768px) {
15009
+ padding: 1rem;
15010
+ min-height: auto;
15011
+ }
15012
+ `;
15013
+ var NewsVideoRow = styled9__default.default.div`
15014
+ display: grid;
15015
+ grid-template-columns: 1fr 2fr;
15016
+ gap: 1.5rem;
15017
+ margin-top: 1.5rem;
15018
+ max-width: 1800px;
15019
+ margin-left: auto;
15020
+ margin-right: auto;
15021
+ overflow: hidden;
15022
+ @media (max-width: 768px) {
15023
+ grid-template-columns: 1fr;
15024
+ gap: 1rem;
15025
+ }
15026
+ & > * {
15027
+ min-width: 0;
15028
+ overflow: hidden;
15029
+ }
15030
+ `;
15031
+ var VideoWrapper = styled9__default.default.div`
15032
+ background-color: var(--color-card-darker, #111);
15033
+ border-radius: 8px;
15034
+ padding: 1.5rem;
15035
+ box-shadow: 0 4px 8px rgba(0,0,0,0.2);
15036
+ border: 1px solid var(--color-border);
15037
+ display: flex;
15038
+ flex-direction: column;
15039
+ overflow: hidden;
15040
+ .section-header {
15041
+ display: flex;
15042
+ justify-content: space-between;
15043
+ align-items: center;
15044
+ padding-bottom: 0.75rem;
15045
+ margin-bottom: 1rem;
15046
+ border-bottom: 1px solid rgba(255,255,255,0.1);
15047
+ h3 {
15048
+ font-size: 0.9rem;
15049
+ font-weight: 600;
15050
+ color: var(--color-text);
15051
+ margin: 0;
15052
+ }
15053
+ }
15054
+ .video-container {
15055
+ flex: 1;
15056
+ position: relative;
15057
+ background: #000;
15058
+ border-radius: 8px;
15059
+ overflow: hidden;
15060
+ min-height: 300px;
15061
+ video {
15062
+ position: absolute;
15063
+ top: 0;
15064
+ left: 0;
15065
+ width: 100%;
15066
+ height: 100%;
15067
+ object-fit: cover;
15068
+ }
15069
+ }
15070
+ @media (max-width: 768px) {
15071
+ padding: 1rem;
15072
+ .video-container {
15073
+ min-height: 200px;
15074
+ }
15075
+ }
15076
+ `;
15418
15077
  var PaymentOption = styled9__default.default.div`
15419
15078
  display: flex;
15420
15079
  align-items: center;
@@ -16404,7 +16063,7 @@ function PropertyValuation({
16404
16063
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "0.5rem" }, children: [
16405
16064
  /* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetail, { children: [
16406
16065
  /* @__PURE__ */ jsxRuntime.jsx(PropertyDetailLabel, { children: "Last Price" }),
16407
- /* @__PURE__ */ jsxRuntime.jsx(PricingDetailValue, { children: formatCurrency6(lastPrice) })
16066
+ /* @__PURE__ */ jsxRuntime.jsx(PricingDetailValue, { children: formatCurrency5(lastPrice) })
16408
16067
  ] }),
16409
16068
  /* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetail, { children: [
16410
16069
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", width: "100%" }, children: [
@@ -16415,11 +16074,11 @@ function PropertyValuation({
16415
16074
  ] })
16416
16075
  ] }),
16417
16076
  /* @__PURE__ */ jsxRuntime.jsxs(PricingDetailValue, { style: { color: "var(--color-accent)", fontWeight: "bold" }, children: [
16418
- formatCurrency6(fairValue),
16077
+ formatCurrency5(fairValue),
16419
16078
  " ",
16420
16079
  /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "0.85em", fontWeight: "normal", opacity: 0.8 }, children: [
16421
16080
  "(",
16422
- formatCurrency6(fairValue * tokensOutstanding, { maximumFractionDigits: 0 }),
16081
+ formatCurrency5(fairValue * tokensOutstanding, { maximumFractionDigits: 0 }),
16423
16082
  ")"
16424
16083
  ] })
16425
16084
  ] })
@@ -16436,7 +16095,7 @@ function PropertyValuation({
16436
16095
  /* @__PURE__ */ jsxRuntime.jsx(GaugeIndicator, { type: "fairValue", position: 50 }),
16437
16096
  /* @__PURE__ */ jsxRuntime.jsxs(GaugePriceTag, { position: gaugePosition, children: [
16438
16097
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Last Price" }),
16439
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: formatCurrency6(lastPrice) })
16098
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: formatCurrency5(lastPrice) })
16440
16099
  ] }),
16441
16100
  /* @__PURE__ */ jsxRuntime.jsx(GaugeIndicator, { type: "lastPrice", position: gaugePosition })
16442
16101
  ] }),
@@ -16444,7 +16103,7 @@ function PropertyValuation({
16444
16103
  /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationValue, { style: { color: "#4CAF50" }, children: [
16445
16104
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
16446
16105
  "< ",
16447
- formatCurrency6(undervaluedThreshold)
16106
+ formatCurrency5(undervaluedThreshold)
16448
16107
  ] }),
16449
16108
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16450
16109
  "(",
@@ -16453,7 +16112,7 @@ function PropertyValuation({
16453
16112
  ] })
16454
16113
  ] }) }),
16455
16114
  /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationValue, { style: { color: "var(--color-accent)" }, children: [
16456
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: formatCurrency6(fairValue) }),
16115
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: formatCurrency5(fairValue) }),
16457
16116
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16458
16117
  "(",
16459
16118
  formatMillions(fairValue * tokensOutstanding),
@@ -16463,7 +16122,7 @@ function PropertyValuation({
16463
16122
  /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationValue, { style: { color: "#F44336" }, children: [
16464
16123
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
16465
16124
  "> ",
16466
- formatCurrency6(overvaluedThreshold)
16125
+ formatCurrency5(overvaluedThreshold)
16467
16126
  ] }),
16468
16127
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16469
16128
  "(",
@@ -16556,7 +16215,7 @@ function PropertyValuation({
16556
16215
  /* @__PURE__ */ jsxRuntime.jsx(GaugeIndicator, { type: "fairValue", position: 50 }),
16557
16216
  /* @__PURE__ */ jsxRuntime.jsxs(GaugePriceTag, { position: gaugePosition, children: [
16558
16217
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Last Price" }),
16559
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: formatCurrency6(lastPrice) })
16218
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: formatCurrency5(lastPrice) })
16560
16219
  ] }),
16561
16220
  /* @__PURE__ */ jsxRuntime.jsx(GaugeIndicator, { type: "lastPrice", position: gaugePosition })
16562
16221
  ] }),
@@ -16564,7 +16223,7 @@ function PropertyValuation({
16564
16223
  /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationValue, { style: { color: "#0ecb81" }, children: [
16565
16224
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
16566
16225
  "< ",
16567
- formatCurrency6(undervaluedThreshold)
16226
+ formatCurrency5(undervaluedThreshold)
16568
16227
  ] }),
16569
16228
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16570
16229
  "(",
@@ -16573,7 +16232,7 @@ function PropertyValuation({
16573
16232
  ] })
16574
16233
  ] }) }),
16575
16234
  /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationValue, { style: { color: "#f0b90b" }, children: [
16576
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: formatCurrency6(fairValue) }),
16235
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: formatCurrency5(fairValue) }),
16577
16236
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16578
16237
  "(",
16579
16238
  formatMillions(fairValue * tokensOutstanding),
@@ -16583,7 +16242,7 @@ function PropertyValuation({
16583
16242
  /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationValue, { style: { color: "#f6465d" }, children: [
16584
16243
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
16585
16244
  "> ",
16586
- formatCurrency6(overvaluedThreshold)
16245
+ formatCurrency5(overvaluedThreshold)
16587
16246
  ] }),
16588
16247
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16589
16248
  "(",
@@ -16626,7 +16285,7 @@ function PropertyValuation({
16626
16285
  /* @__PURE__ */ jsxRuntime.jsxs(SalePriceBar, { children: [
16627
16286
  /* @__PURE__ */ jsxRuntime.jsxs(SalePriceLeft, { children: [
16628
16287
  /* @__PURE__ */ jsxRuntime.jsx(SalePriceLabel, { children: "Sale Price" }),
16629
- /* @__PURE__ */ jsxRuntime.jsx(SalePriceAmount, { children: formatCurrency6(sale.price) })
16288
+ /* @__PURE__ */ jsxRuntime.jsx(SalePriceAmount, { children: formatCurrency5(sale.price) })
16630
16289
  ] }),
16631
16290
  /* @__PURE__ */ jsxRuntime.jsx(SaleDate, { children: sale.saleDate ?? "\u2014" })
16632
16291
  ] }),
@@ -16653,7 +16312,7 @@ function PropertyValuation({
16653
16312
  error ? /* @__PURE__ */ jsxRuntime.jsx(ErrorMessage, { children: error }) : null
16654
16313
  ] });
16655
16314
  }
16656
- function formatCurrency6(value, options) {
16315
+ function formatCurrency5(value, options) {
16657
16316
  if (value == null || Number.isNaN(value)) {
16658
16317
  return "\u2014";
16659
16318
  }
@@ -16727,7 +16386,7 @@ function buildAxisLabels(min, max) {
16727
16386
  for (let i = 0; i < steps; i += 1) {
16728
16387
  const ratio = i / (steps - 1);
16729
16388
  const value = max - ratio * (max - min);
16730
- labels.push(formatCurrency6(value, { maximumFractionDigits: 0, minimumFractionDigits: 0 }));
16389
+ labels.push(formatCurrency5(value, { maximumFractionDigits: 0, minimumFractionDigits: 0 }));
16731
16390
  }
16732
16391
  return labels;
16733
16392
  }