@loafmarkets/ui 0.1.254 → 0.1.256

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,52 +13265,312 @@ 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(" ");
13628
- var sideLabel = (side) => side?.toUpperCase() === "SELL" ? "Sell" : "Buy";
13629
- var getOrderStatusMeta = (statusRaw) => {
13630
- const status = statusRaw.toUpperCase();
13631
- if (status === "FILLED" || status === "CONFIRMED" || status === "ALLOCATED") {
13632
- return { color: "#0ecb81", bg: "rgba(14,203,129,0.1)" };
13633
- }
13634
- if (status === "CANCELLED" || status === "CANCELED" || status === "REJECTED") {
13635
- return { color: "#f6465d", bg: "rgba(246,70,93,0.12)" };
13636
- }
13637
- return { color: "#f0b90b", bg: "rgba(240,185,11,0.15)" };
13638
- };
13639
- function EditableField({ value, onCommit, format }) {
13640
- const [editing, setEditing] = useState(false);
13641
- const [draft, setDraft] = useState("");
13642
- const inputRef = useRef(null);
13643
- useEffect(() => {
13644
- if (editing) inputRef.current?.focus();
13645
- }, [editing]);
13646
- const commit = () => {
13647
- const parsed = parseFloat(draft);
13648
- if (!isNaN(parsed) && parsed > 0 && parsed !== value) {
13649
- onCommit(parsed);
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(" ");
13552
+ var sideLabel = (side) => side?.toUpperCase() === "SELL" ? "Sell" : "Buy";
13553
+ var getOrderStatusMeta = (statusRaw) => {
13554
+ const status = statusRaw.toUpperCase();
13555
+ if (status === "FILLED" || status === "CONFIRMED" || status === "ALLOCATED") {
13556
+ return { color: "#0ecb81", bg: "rgba(14,203,129,0.1)" };
13557
+ }
13558
+ if (status === "CANCELLED" || status === "CANCELED" || status === "REJECTED") {
13559
+ return { color: "#f6465d", bg: "rgba(246,70,93,0.12)" };
13560
+ }
13561
+ return { color: "#f0b90b", bg: "rgba(240,185,11,0.15)" };
13562
+ };
13563
+ function EditableField({ value, onCommit, format }) {
13564
+ const [editing, setEditing] = useState(false);
13565
+ const [draft, setDraft] = useState("");
13566
+ const inputRef = useRef(null);
13567
+ useEffect(() => {
13568
+ if (editing) inputRef.current?.focus();
13569
+ }, [editing]);
13570
+ const commit = () => {
13571
+ const parsed = parseFloat(draft);
13572
+ if (!isNaN(parsed) && parsed > 0 && parsed !== value) {
13573
+ onCommit(parsed);
13650
13574
  }
13651
13575
  setEditing(false);
13652
13576
  };
@@ -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) }) }),
@@ -14616,451 +14540,104 @@ var CloseAllHeaderBtn = styled9.button`
14616
14540
  border-color: rgba(230, 200, 126, 0.5);
14617
14541
  }
14618
14542
  `;
14619
- var CloseAllOverlay = styled9.div`
14620
- position: fixed;
14621
- inset: 0;
14622
- background: rgba(0, 0, 0, 0.6);
14623
- display: flex;
14624
- align-items: center;
14625
- justify-content: center;
14626
- z-index: 1000;
14627
- `;
14628
- var CloseAllModal = styled9.div`
14629
- background: #1a1a1a;
14630
- border: 1px solid rgba(255, 255, 255, 0.12);
14631
- border-radius: 12px;
14632
- padding: 1.5rem;
14633
- max-width: 380px;
14634
- width: 90%;
14635
- position: relative;
14636
- `;
14637
- var CloseAllModalX = styled9.button`
14638
- position: absolute;
14639
- top: 0.75rem;
14640
- right: 0.75rem;
14641
- background: none;
14642
- border: none;
14643
- color: rgba(255, 255, 255, 0.4);
14644
- font-size: 1.25rem;
14645
- 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);
14543
+ var CloseAllOverlay = styled9.div`
14544
+ position: fixed;
14545
+ inset: 0;
14546
+ background: rgba(0, 0, 0, 0.6);
14887
14547
  display: flex;
14888
14548
  align-items: center;
14889
14549
  justify-content: center;
14890
- z-index: 10000;
14891
- backdrop-filter: blur(4px);
14550
+ z-index: 1000;
14892
14551
  `;
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;
14552
+ var CloseAllModal = styled9.div`
14553
+ background: #1a1a1a;
14554
+ border: 1px solid rgba(255, 255, 255, 0.12);
14555
+ border-radius: 12px;
14556
+ padding: 1.5rem;
14557
+ max-width: 380px;
14899
14558
  width: 90%;
14900
- box-shadow: 0 20px 60px rgba(0,0,0,0.5);
14559
+ position: relative;
14901
14560
  `;
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
- }
14561
+ var CloseAllModalX = styled9.button`
14562
+ position: absolute;
14563
+ top: 0.75rem;
14564
+ right: 0.75rem;
14565
+ background: none;
14566
+ border: none;
14567
+ color: rgba(255, 255, 255, 0.4);
14568
+ font-size: 1.25rem;
14569
+ cursor: pointer;
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,22 +14863,33 @@ 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
+ variant: "home",
14872
+ heading: "Property News & Headlines",
14873
+ connectionStatus: newsConnectionStatus,
14874
+ highlightFirst: false,
14875
+ style: {
14876
+ maxWidth: "none",
14877
+ background: "#111111",
14878
+ borderRadius: "8px",
14879
+ padding: "1.25rem 1.5rem",
14880
+ boxShadow: "0 4px 12px rgba(0,0,0,0.1)",
14881
+ border: "none",
14882
+ height: "100%",
14883
+ overflow: "hidden"
14884
+ }
15292
14885
  }
15293
14886
  ),
15294
14887
  /* @__PURE__ */ jsx(
15295
- NewsOrdersSection,
14888
+ PropertyTour,
15296
14889
  {
15297
- newsItems,
15298
- newsConnectionStatus,
15299
- activityData: portfolioActivity
14890
+ title: propertyName,
14891
+ src: "/properties/Musgrave/musgrave.mp4",
14892
+ className: "h-full !max-w-none"
15300
14893
  }
15301
14894
  )
15302
14895
  ] }),
@@ -15389,6 +14982,41 @@ var HeroGrid = styled9.div`
15389
14982
  gap: 0.5rem;
15390
14983
  }
15391
14984
  `;
14985
+ var ActivityWrapper = styled9.div`
14986
+ background-color: var(--color-card-darker, #111);
14987
+ border-radius: 8px;
14988
+ padding: 1.5rem;
14989
+ display: flex;
14990
+ flex-direction: column;
14991
+ box-shadow: 0 4px 8px rgba(0,0,0,0.2);
14992
+ border: 1px solid var(--color-border);
14993
+ min-height: 280px;
14994
+ overflow: hidden;
14995
+ @media (max-width: 768px) {
14996
+ padding: 1rem;
14997
+ min-height: auto;
14998
+ }
14999
+ `;
15000
+ var NewsVideoRow = styled9.div`
15001
+ display: grid;
15002
+ grid-template-columns: minmax(380px, 520px) minmax(0, 1fr);
15003
+ gap: 1.5rem;
15004
+ margin-top: 1.5rem;
15005
+ max-width: 1800px;
15006
+ margin-left: auto;
15007
+ margin-right: auto;
15008
+ height: 700px;
15009
+ overflow: hidden;
15010
+ @media (max-width: 1024px) {
15011
+ grid-template-columns: 1fr;
15012
+ height: auto;
15013
+ gap: 1rem;
15014
+ }
15015
+ & > * {
15016
+ min-width: 0;
15017
+ overflow: hidden;
15018
+ }
15019
+ `;
15392
15020
  var PaymentOption = styled9.div`
15393
15021
  display: flex;
15394
15022
  align-items: center;
@@ -16378,7 +16006,7 @@ function PropertyValuation({
16378
16006
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "0.5rem" }, children: [
16379
16007
  /* @__PURE__ */ jsxs(PricingModelDetail, { children: [
16380
16008
  /* @__PURE__ */ jsx(PropertyDetailLabel, { children: "Last Price" }),
16381
- /* @__PURE__ */ jsx(PricingDetailValue, { children: formatCurrency6(lastPrice) })
16009
+ /* @__PURE__ */ jsx(PricingDetailValue, { children: formatCurrency5(lastPrice) })
16382
16010
  ] }),
16383
16011
  /* @__PURE__ */ jsxs(PricingModelDetail, { children: [
16384
16012
  /* @__PURE__ */ jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", width: "100%" }, children: [
@@ -16389,11 +16017,11 @@ function PropertyValuation({
16389
16017
  ] })
16390
16018
  ] }),
16391
16019
  /* @__PURE__ */ jsxs(PricingDetailValue, { style: { color: "var(--color-accent)", fontWeight: "bold" }, children: [
16392
- formatCurrency6(fairValue),
16020
+ formatCurrency5(fairValue),
16393
16021
  " ",
16394
16022
  /* @__PURE__ */ jsxs("span", { style: { fontSize: "0.85em", fontWeight: "normal", opacity: 0.8 }, children: [
16395
16023
  "(",
16396
- formatCurrency6(fairValue * tokensOutstanding, { maximumFractionDigits: 0 }),
16024
+ formatCurrency5(fairValue * tokensOutstanding, { maximumFractionDigits: 0 }),
16397
16025
  ")"
16398
16026
  ] })
16399
16027
  ] })
@@ -16410,7 +16038,7 @@ function PropertyValuation({
16410
16038
  /* @__PURE__ */ jsx(GaugeIndicator, { type: "fairValue", position: 50 }),
16411
16039
  /* @__PURE__ */ jsxs(GaugePriceTag, { position: gaugePosition, children: [
16412
16040
  /* @__PURE__ */ jsx("span", { children: "Last Price" }),
16413
- /* @__PURE__ */ jsx("span", { children: formatCurrency6(lastPrice) })
16041
+ /* @__PURE__ */ jsx("span", { children: formatCurrency5(lastPrice) })
16414
16042
  ] }),
16415
16043
  /* @__PURE__ */ jsx(GaugeIndicator, { type: "lastPrice", position: gaugePosition })
16416
16044
  ] }),
@@ -16418,7 +16046,7 @@ function PropertyValuation({
16418
16046
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "#4CAF50" }, children: [
16419
16047
  /* @__PURE__ */ jsxs("span", { children: [
16420
16048
  "< ",
16421
- formatCurrency6(undervaluedThreshold)
16049
+ formatCurrency5(undervaluedThreshold)
16422
16050
  ] }),
16423
16051
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16424
16052
  "(",
@@ -16427,7 +16055,7 @@ function PropertyValuation({
16427
16055
  ] })
16428
16056
  ] }) }),
16429
16057
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "var(--color-accent)" }, children: [
16430
- /* @__PURE__ */ jsx("span", { children: formatCurrency6(fairValue) }),
16058
+ /* @__PURE__ */ jsx("span", { children: formatCurrency5(fairValue) }),
16431
16059
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16432
16060
  "(",
16433
16061
  formatMillions(fairValue * tokensOutstanding),
@@ -16437,7 +16065,7 @@ function PropertyValuation({
16437
16065
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "#F44336" }, children: [
16438
16066
  /* @__PURE__ */ jsxs("span", { children: [
16439
16067
  "> ",
16440
- formatCurrency6(overvaluedThreshold)
16068
+ formatCurrency5(overvaluedThreshold)
16441
16069
  ] }),
16442
16070
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16443
16071
  "(",
@@ -16530,7 +16158,7 @@ function PropertyValuation({
16530
16158
  /* @__PURE__ */ jsx(GaugeIndicator, { type: "fairValue", position: 50 }),
16531
16159
  /* @__PURE__ */ jsxs(GaugePriceTag, { position: gaugePosition, children: [
16532
16160
  /* @__PURE__ */ jsx("span", { children: "Last Price" }),
16533
- /* @__PURE__ */ jsx("span", { children: formatCurrency6(lastPrice) })
16161
+ /* @__PURE__ */ jsx("span", { children: formatCurrency5(lastPrice) })
16534
16162
  ] }),
16535
16163
  /* @__PURE__ */ jsx(GaugeIndicator, { type: "lastPrice", position: gaugePosition })
16536
16164
  ] }),
@@ -16538,7 +16166,7 @@ function PropertyValuation({
16538
16166
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "#0ecb81" }, children: [
16539
16167
  /* @__PURE__ */ jsxs("span", { children: [
16540
16168
  "< ",
16541
- formatCurrency6(undervaluedThreshold)
16169
+ formatCurrency5(undervaluedThreshold)
16542
16170
  ] }),
16543
16171
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16544
16172
  "(",
@@ -16547,7 +16175,7 @@ function PropertyValuation({
16547
16175
  ] })
16548
16176
  ] }) }),
16549
16177
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "#f0b90b" }, children: [
16550
- /* @__PURE__ */ jsx("span", { children: formatCurrency6(fairValue) }),
16178
+ /* @__PURE__ */ jsx("span", { children: formatCurrency5(fairValue) }),
16551
16179
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16552
16180
  "(",
16553
16181
  formatMillions(fairValue * tokensOutstanding),
@@ -16557,7 +16185,7 @@ function PropertyValuation({
16557
16185
  /* @__PURE__ */ jsx(ValuationItem, { children: /* @__PURE__ */ jsxs(ValuationValue, { style: { color: "#f6465d" }, children: [
16558
16186
  /* @__PURE__ */ jsxs("span", { children: [
16559
16187
  "> ",
16560
- formatCurrency6(overvaluedThreshold)
16188
+ formatCurrency5(overvaluedThreshold)
16561
16189
  ] }),
16562
16190
  /* @__PURE__ */ jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16563
16191
  "(",
@@ -16600,7 +16228,7 @@ function PropertyValuation({
16600
16228
  /* @__PURE__ */ jsxs(SalePriceBar, { children: [
16601
16229
  /* @__PURE__ */ jsxs(SalePriceLeft, { children: [
16602
16230
  /* @__PURE__ */ jsx(SalePriceLabel, { children: "Sale Price" }),
16603
- /* @__PURE__ */ jsx(SalePriceAmount, { children: formatCurrency6(sale.price) })
16231
+ /* @__PURE__ */ jsx(SalePriceAmount, { children: formatCurrency5(sale.price) })
16604
16232
  ] }),
16605
16233
  /* @__PURE__ */ jsx(SaleDate, { children: sale.saleDate ?? "\u2014" })
16606
16234
  ] }),
@@ -16627,7 +16255,7 @@ function PropertyValuation({
16627
16255
  error ? /* @__PURE__ */ jsx(ErrorMessage, { children: error }) : null
16628
16256
  ] });
16629
16257
  }
16630
- function formatCurrency6(value, options) {
16258
+ function formatCurrency5(value, options) {
16631
16259
  if (value == null || Number.isNaN(value)) {
16632
16260
  return "\u2014";
16633
16261
  }
@@ -16701,7 +16329,7 @@ function buildAxisLabels(min, max) {
16701
16329
  for (let i = 0; i < steps; i += 1) {
16702
16330
  const ratio = i / (steps - 1);
16703
16331
  const value = max - ratio * (max - min);
16704
- labels.push(formatCurrency6(value, { maximumFractionDigits: 0, minimumFractionDigits: 0 }));
16332
+ labels.push(formatCurrency5(value, { maximumFractionDigits: 0, minimumFractionDigits: 0 }));
16705
16333
  }
16706
16334
  return labels;
16707
16335
  }