@loafmarkets/ui 0.1.137 → 0.1.139

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
@@ -8048,7 +8048,7 @@ function GalleryMapSection({
8048
8048
  src: resolvedMapUrl,
8049
8049
  width: "100%",
8050
8050
  height: "100%",
8051
- style: { border: 0, minHeight: 280, pointerEvents: "auto" },
8051
+ style: { border: 0, minHeight: 500, pointerEvents: "auto" },
8052
8052
  allow: "autoplay; fullscreen; web-share; xr-spatial-tracking;",
8053
8053
  title: "Property Location",
8054
8054
  referrerPolicy: "unsafe-url",
@@ -8107,8 +8107,8 @@ var Track = styled19.div`
8107
8107
  `;
8108
8108
  var Slide = styled19.div`
8109
8109
  min-width: 100%; position: relative; cursor: pointer;
8110
- img { width: 100%; height: 315px; object-fit: cover; border-radius: 8px; }
8111
- @media (max-width: 768px) { img { height: 155px; } }
8110
+ img { width: 100%; height: 500px; object-fit: cover; border-radius: 8px; }
8111
+ @media (max-width: 768px) { img { height: 280px; } }
8112
8112
  `;
8113
8113
  var SlideCaption = styled19.div`
8114
8114
  position: absolute; bottom: 0; left: 0; right: 0; padding: 1rem;
@@ -8173,11 +8173,11 @@ var CategoryRow = styled19.div`
8173
8173
  button[data-active='true'] { background: rgba(212,175,55,0.2); border-color: #D4AF37; color: #D4AF37; }
8174
8174
  `;
8175
8175
  var MapPanel = styled19(PanelBase)`
8176
- min-height: 280px; padding: 1.5rem;
8176
+ min-height: 500px; padding: 1.5rem;
8177
8177
  min-width: 0; overflow: hidden;
8178
8178
  `;
8179
8179
  var MapFrame = styled19.div`
8180
- flex: 1; border-radius: 6px; overflow: hidden; min-height: 280px; position: relative;
8180
+ flex: 1; border-radius: 6px; overflow: hidden; min-height: 500px; position: relative;
8181
8181
  `;
8182
8182
  var IframeShield = styled19.div`
8183
8183
  position: absolute; inset: 0; z-index: 1; cursor: pointer;
@@ -8222,6 +8222,29 @@ var GymIcon = /* @__PURE__ */ jsxs("svg", { width: "16", height: "16", viewBox:
8222
8222
  /* @__PURE__ */ jsx("path", { d: "M10 6h4" }),
8223
8223
  /* @__PURE__ */ jsx("path", { d: "M10 18h4" })
8224
8224
  ] });
8225
+ var ShieldIcon = /* @__PURE__ */ jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" }) });
8226
+ var LockIcon = /* @__PURE__ */ jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
8227
+ /* @__PURE__ */ jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2", ry: "2" }),
8228
+ /* @__PURE__ */ jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
8229
+ ] });
8230
+ var FileCheckIcon = /* @__PURE__ */ jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
8231
+ /* @__PURE__ */ jsx("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }),
8232
+ /* @__PURE__ */ jsx("polyline", { points: "14 2 14 8 20 8" }),
8233
+ /* @__PURE__ */ jsx("path", { d: "M9 15l2 2 4-4" })
8234
+ ] });
8235
+ var BuildingIcon = /* @__PURE__ */ jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "#D4AF37", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
8236
+ /* @__PURE__ */ jsx("rect", { x: "4", y: "2", width: "16", height: "20", rx: "2", ry: "2" }),
8237
+ /* @__PURE__ */ jsx("path", { d: "M9 22v-4h6v4" }),
8238
+ /* @__PURE__ */ jsx("path", { d: "M8 6h.01" }),
8239
+ /* @__PURE__ */ jsx("path", { d: "M16 6h.01" }),
8240
+ /* @__PURE__ */ jsx("path", { d: "M12 6h.01" }),
8241
+ /* @__PURE__ */ jsx("path", { d: "M12 10h.01" }),
8242
+ /* @__PURE__ */ jsx("path", { d: "M12 14h.01" }),
8243
+ /* @__PURE__ */ jsx("path", { d: "M16 10h.01" }),
8244
+ /* @__PURE__ */ jsx("path", { d: "M16 14h.01" }),
8245
+ /* @__PURE__ */ jsx("path", { d: "M8 10h.01" }),
8246
+ /* @__PURE__ */ jsx("path", { d: "M8 14h.01" })
8247
+ ] });
8225
8248
  var DEFAULT_FEATURES = [
8226
8249
  { icon: BedIcon, value: "\u2014", label: "Beds" },
8227
8250
  { icon: BathIcon, value: "\u2014", label: "Baths" },
@@ -8239,6 +8262,16 @@ var DEFAULT_PROPERTY_INFO = [
8239
8262
  { label: "Status", value: "N/A" }
8240
8263
  ];
8241
8264
  var DEFAULT_DESCRIPTION = "Property description not available.";
8265
+ var TOKENHOLDER_PROTECTIONS = [
8266
+ { icon: ShieldIcon, title: "SPV Structure", desc: "Each property is held in a dedicated Special Purpose Vehicle, isolating investor assets from platform risk." },
8267
+ { icon: LockIcon, title: "Smart Contract Audit", desc: "All token contracts are audited by independent security firms before deployment." },
8268
+ { icon: FileCheckIcon, title: "Title Insurance", desc: "Full title insurance coverage protects token holders against title defects and encumbrances." },
8269
+ { icon: BuildingIcon, title: "Regulated Exchange", desc: "Trading occurs on a regulated marketplace with KYC/AML compliance and investor protections." }
8270
+ ];
8271
+ function truncateAddress(addr) {
8272
+ if (addr.length <= 12) return addr;
8273
+ return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
8274
+ }
8242
8275
  function PropertyOverview({
8243
8276
  propertyName,
8244
8277
  location,
@@ -8247,8 +8280,6 @@ function PropertyOverview({
8247
8280
  onPhotosClick,
8248
8281
  description: descriptionProp,
8249
8282
  tradeButtonLabel = "Trade",
8250
- rightPanelTitle = "Financial Overview",
8251
- financialItems: financialItemsProp,
8252
8283
  images,
8253
8284
  galleryCategories: galleryCategories2 = [],
8254
8285
  videoUrl,
@@ -8263,7 +8294,10 @@ function PropertyOverview({
8263
8294
  carSpaces,
8264
8295
  propertyTypeLabel,
8265
8296
  tokensIssued: tokensIssuedProp,
8266
- isLoading = false
8297
+ isLoading = false,
8298
+ ticker,
8299
+ contractAddress,
8300
+ chain = "Base (Ethereum L2)"
8267
8301
  }) {
8268
8302
  const [isDescExpanded, setDescExpanded] = useState(false);
8269
8303
  const description = descriptionProp ?? overviewData?.description ?? DEFAULT_DESCRIPTION;
@@ -8301,42 +8335,76 @@ function PropertyOverview({
8301
8335
  const weeklyRent = overviewData?.weeklyRent ?? 0;
8302
8336
  const annualRent = weeklyRent * 52;
8303
8337
  const dividendYield = resolvedValuation && annualRent > 0 ? (annualRent / resolvedValuation * 100).toFixed(2) : null;
8338
+ const marketCap = tokenPriceValue && resolvedTokensIssued ? tokenPriceValue * resolvedTokensIssued : null;
8304
8339
  const loadingSkeleton = /* @__PURE__ */ jsx(Skeleton, { width: 90, height: 18 });
8305
- const financialItems = financialItemsProp ?? [
8306
- { label: "Token Price", value: isLoading && tokenPriceValue == null ? loadingSkeleton : tokenPriceValue ? `$${tokenPriceValue.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` : "N/A", gold: true },
8307
- { label: "Property Value", value: isLoading && resolvedValuation == null ? loadingSkeleton : resolvedValuation ? resolvedValuation >= 1e6 ? `$${(resolvedValuation / 1e6).toFixed(2)}M` : `$${resolvedValuation.toLocaleString()}` : "N/A" },
8308
- { label: "Weekly Rent", value: isLoading && !overviewData ? loadingSkeleton : weeklyRent > 0 ? `$${weeklyRent.toLocaleString()}/wk` : "N/A", badge: weeklyRent > 0 ? "Rented" : void 0 },
8309
- { label: "Dividend Yield", value: isLoading && dividendYield == null && resolvedValuation == null ? loadingSkeleton : dividendYield ? `${dividendYield}%` : "N/A" },
8310
- { label: "Total Tokens", value: isLoading && resolvedTokensIssued == null ? loadingSkeleton : resolvedTokensIssued ? resolvedTokensIssued.toLocaleString() : "N/A" },
8311
- { label: "Indicative Listing", value: isLoading && !overviewData ? loadingSkeleton : overviewData?.indicativeListing ?? "N/A" }
8312
- ];
8340
+ const resolvedPropertyType = overviewData?.propertyType ?? propertyTypeLabel ?? null;
8313
8341
  const galleryImages = images ?? [];
8314
- return /* @__PURE__ */ jsxs("div", { children: [
8315
- /* @__PURE__ */ jsxs(TopGrid, { children: [
8316
- /* @__PURE__ */ jsxs(Panel, { children: [
8317
- /* @__PURE__ */ jsxs(PanelHeading, { children: [
8318
- "About ",
8319
- propertyName || "This Property"
8342
+ const tokenDetailsItems = [
8343
+ { label: "Chain", value: chain },
8344
+ { label: "Contract Address", value: contractAddress ? truncateAddress(contractAddress) : "\u2014", mono: true },
8345
+ { label: "Token Ticker", value: ticker ?? "\u2014" },
8346
+ { label: "Total Tokens", value: isLoading && resolvedTokensIssued == null ? loadingSkeleton : resolvedTokensIssued?.toLocaleString() ?? "\u2014" },
8347
+ { label: "Property Type", value: resolvedPropertyType ?? "\u2014" },
8348
+ { label: "Location", value: location || "\u2014" }
8349
+ ];
8350
+ const tokenStats = [
8351
+ { label: "Token Price", value: isLoading && tokenPriceValue == null ? loadingSkeleton : tokenPriceValue ? `$${tokenPriceValue.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` : "\u2014", gold: true },
8352
+ { label: "Market Cap", value: isLoading && marketCap == null ? loadingSkeleton : marketCap ? marketCap >= 1e6 ? `$${(marketCap / 1e6).toFixed(1)}M` : `$${marketCap.toLocaleString()}` : "\u2014" },
8353
+ { label: "Dividend Yield", value: isLoading && dividendYield == null ? loadingSkeleton : dividendYield ? `${dividendYield}%` : "\u2014" },
8354
+ { label: "Total Tokens", value: isLoading && resolvedTokensIssued == null ? loadingSkeleton : resolvedTokensIssued?.toLocaleString() ?? "\u2014" }
8355
+ ];
8356
+ const propertyStats = [
8357
+ { label: "Property Value", value: isLoading && resolvedValuation == null ? loadingSkeleton : resolvedValuation ? resolvedValuation >= 1e6 ? `$${(resolvedValuation / 1e6).toFixed(2)}M` : `$${resolvedValuation.toLocaleString()}` : "\u2014" },
8358
+ { label: "Weekly Rent", value: isLoading && !overviewData ? loadingSkeleton : weeklyRent > 0 ? `$${weeklyRent.toLocaleString()}/wk` : "\u2014", badge: weeklyRent > 0 ? "Rented" : void 0 },
8359
+ { label: "Annual Rent", value: isLoading && !overviewData ? loadingSkeleton : annualRent > 0 ? `$${annualRent.toLocaleString()}/yr` : "\u2014" },
8360
+ { label: "Year Built", value: isLoading && !overviewData ? loadingSkeleton : overviewData?.yearBuilt ? String(overviewData.yearBuilt) : "\u2014" }
8361
+ ];
8362
+ return /* @__PURE__ */ jsxs(Wrapper, { children: [
8363
+ /* @__PURE__ */ jsxs(Section, { children: [
8364
+ /* @__PURE__ */ jsx(SectionHeader, { children: "About" }),
8365
+ /* @__PURE__ */ jsxs(AboutGrid, { children: [
8366
+ /* @__PURE__ */ jsxs(AboutLeft, { children: [
8367
+ /* @__PURE__ */ jsxs(DescriptionWrap, { $expanded: isDescExpanded, children: [
8368
+ description.split("\n\n").map((p, i) => /* @__PURE__ */ jsx(DescParagraph, { $first: i === 0, children: p }, i)),
8369
+ !isDescExpanded && /* @__PURE__ */ jsx(DescFade, {})
8370
+ ] }),
8371
+ /* @__PURE__ */ jsxs(ButtonRow, { children: [
8372
+ /* @__PURE__ */ jsx(OutlineBtn, { onClick: () => setDescExpanded((p) => !p), children: isDescExpanded ? "Read less" : "Read more" }),
8373
+ /* @__PURE__ */ jsx(PrimaryBtn, { onClick: onTradeClick, children: tradeButtonLabel })
8374
+ ] })
8320
8375
  ] }),
8321
- /* @__PURE__ */ jsxs(DescriptionWrap, { $expanded: isDescExpanded, children: [
8322
- description.split("\n\n").map((p, i) => /* @__PURE__ */ jsx("p", { style: { color: "rgba(255,255,255,0.7)", lineHeight: 1.7, fontSize: "0.95rem", marginTop: i > 0 ? "1rem" : 0 }, children: p }, i)),
8323
- !isDescExpanded && /* @__PURE__ */ jsx(DescFade, {})
8376
+ /* @__PURE__ */ jsxs(TokenDetailsCard, { children: [
8377
+ /* @__PURE__ */ jsx(TokenDetailsTitle, { children: "Token Details" }),
8378
+ tokenDetailsItems.map((item) => /* @__PURE__ */ jsxs(TokenDetailRow, { children: [
8379
+ /* @__PURE__ */ jsx(TokenDetailLabel, { children: item.label }),
8380
+ /* @__PURE__ */ jsx(TokenDetailValue, { $mono: !!item.mono, children: item.value })
8381
+ ] }, item.label))
8382
+ ] })
8383
+ ] })
8384
+ ] }),
8385
+ /* @__PURE__ */ jsxs(Section, { children: [
8386
+ /* @__PURE__ */ jsx(SectionHeader, { children: "Statistics" }),
8387
+ /* @__PURE__ */ jsxs(StatsGrid, { children: [
8388
+ /* @__PURE__ */ jsxs(StatsColumn, { children: [
8389
+ /* @__PURE__ */ jsx(StatsColumnHeader, { children: "Token Performance" }),
8390
+ tokenStats.map((item) => /* @__PURE__ */ jsxs(StatRow, { $gold: !!item.gold, children: [
8391
+ /* @__PURE__ */ jsx(StatLabel, { children: item.label }),
8392
+ /* @__PURE__ */ jsx(StatValue, { $gold: !!item.gold, children: item.value })
8393
+ ] }, item.label))
8324
8394
  ] }),
8325
- /* @__PURE__ */ jsxs(ButtonRow, { children: [
8326
- /* @__PURE__ */ jsx(OutlineBtn, { onClick: () => setDescExpanded((p) => !p), children: isDescExpanded ? "Read less" : "Read more" }),
8327
- /* @__PURE__ */ jsx(PrimaryBtn, { onClick: onTradeClick, children: tradeButtonLabel })
8395
+ /* @__PURE__ */ jsxs(StatsColumn, { children: [
8396
+ /* @__PURE__ */ jsx(StatsColumnHeader, { children: "Property Fundamentals" }),
8397
+ propertyStats.map((item) => /* @__PURE__ */ jsxs(StatRow, { children: [
8398
+ /* @__PURE__ */ jsxs(StatLabel, { children: [
8399
+ item.label,
8400
+ item.badge && /* @__PURE__ */ jsxs(StatBadge, { children: [
8401
+ /* @__PURE__ */ jsx("span", { style: { width: 5, height: 5, borderRadius: "50%", backgroundColor: "#4CAF50", display: "inline-block" } }),
8402
+ item.badge
8403
+ ] })
8404
+ ] }),
8405
+ /* @__PURE__ */ jsx(StatValue, { children: item.value })
8406
+ ] }, item.label))
8328
8407
  ] })
8329
- ] }),
8330
- /* @__PURE__ */ jsxs(Panel, { children: [
8331
- /* @__PURE__ */ jsx(PanelHeading, { children: rightPanelTitle }),
8332
- /* @__PURE__ */ jsx(FinancialGrid, { children: financialItems.map((item) => /* @__PURE__ */ jsxs(FinancialCard, { $gold: !!item.gold, children: [
8333
- item.badge && /* @__PURE__ */ jsxs(BadgeSpan, { children: [
8334
- /* @__PURE__ */ jsx("span", { style: { width: 5, height: 5, borderRadius: "50%", backgroundColor: "#4CAF50", display: "inline-block" } }),
8335
- item.badge
8336
- ] }),
8337
- /* @__PURE__ */ jsx(FinancialLabel, { $gold: !!item.gold, children: item.label }),
8338
- /* @__PURE__ */ jsx(FinancialValue, { $gold: !!item.gold, children: item.value })
8339
- ] }, item.label)) })
8340
8408
  ] })
8341
8409
  ] }),
8342
8410
  galleryImages.length > 0 && /* @__PURE__ */ jsx(
@@ -8350,8 +8418,8 @@ function PropertyOverview({
8350
8418
  onPhotoClick: onPhotosClick
8351
8419
  }
8352
8420
  ),
8353
- /* @__PURE__ */ jsxs(AssetDetailsPanel, { children: [
8354
- /* @__PURE__ */ jsx("h2", { style: { margin: 0, fontSize: "1.5rem", fontWeight: 600, color: "#fff", marginBottom: "2rem" }, children: "Asset Details" }),
8421
+ /* @__PURE__ */ jsxs(Section, { children: [
8422
+ /* @__PURE__ */ jsx(SectionHeader, { children: "Asset Details" }),
8355
8423
  /* @__PURE__ */ jsxs(AssetPanelsGrid, { children: [
8356
8424
  /* @__PURE__ */ jsxs(MetricsPanel, { children: [
8357
8425
  /* @__PURE__ */ jsx(MetricsPanelTitle, { children: "Key Metrics" }),
@@ -8359,7 +8427,7 @@ function PropertyOverview({
8359
8427
  /* @__PURE__ */ jsxs("div", { style: { flex: 1 }, children: [
8360
8428
  /* @__PURE__ */ jsx(MetricLabel, { children: "Land" }),
8361
8429
  /* @__PURE__ */ jsxs(MetricValueRow, { children: [
8362
- /* @__PURE__ */ jsx(MetricBig, { children: landSize?.toLocaleString() ?? "-" }),
8430
+ /* @__PURE__ */ jsx(MetricBig, { children: landSize?.toLocaleString() ?? "\u2014" }),
8363
8431
  /* @__PURE__ */ jsx(MetricUnit, { children: "sqm" })
8364
8432
  ] })
8365
8433
  ] }),
@@ -8367,7 +8435,7 @@ function PropertyOverview({
8367
8435
  /* @__PURE__ */ jsxs("div", { style: { flex: 1 }, children: [
8368
8436
  /* @__PURE__ */ jsx(MetricLabel, { children: "Floor" }),
8369
8437
  /* @__PURE__ */ jsxs(MetricValueRow, { children: [
8370
- /* @__PURE__ */ jsx(MetricBig, { children: buildingSize?.toLocaleString() ?? "-" }),
8438
+ /* @__PURE__ */ jsx(MetricBig, { children: buildingSize?.toLocaleString() ?? "\u2014" }),
8371
8439
  /* @__PURE__ */ jsx(MetricUnit, { children: "sqm" })
8372
8440
  ] })
8373
8441
  ] })
@@ -8389,26 +8457,68 @@ function PropertyOverview({
8389
8457
  ] }, i)) })
8390
8458
  ] })
8391
8459
  ] })
8460
+ ] }),
8461
+ /* @__PURE__ */ jsxs(Section, { children: [
8462
+ /* @__PURE__ */ jsx(SectionHeader, { children: "Trading Hours" }),
8463
+ /* @__PURE__ */ jsxs(TradingHoursCard, { children: [
8464
+ /* @__PURE__ */ jsxs(TradingHoursRow, { children: [
8465
+ /* @__PURE__ */ jsx(THLabel, { children: "Session" }),
8466
+ /* @__PURE__ */ jsx(THLabel, { children: "Hours (AEST)" }),
8467
+ /* @__PURE__ */ jsx(THLabel, { children: "Days" })
8468
+ ] }),
8469
+ /* @__PURE__ */ jsxs(TradingHoursRow, { children: [
8470
+ /* @__PURE__ */ jsx(THValue, { children: "Continuous Trading" }),
8471
+ /* @__PURE__ */ jsx(THValue, { children: "10:00 \u2014 16:00" }),
8472
+ /* @__PURE__ */ jsx(THValue, { children: "Mon \u2014 Fri" })
8473
+ ] }),
8474
+ /* @__PURE__ */ jsxs(TradingHoursRow, { children: [
8475
+ /* @__PURE__ */ jsx(THValue, { children: "After Hours" }),
8476
+ /* @__PURE__ */ jsx(THValue, { children: "16:00 \u2014 20:00" }),
8477
+ /* @__PURE__ */ jsx(THValue, { children: "Mon \u2014 Fri" })
8478
+ ] }),
8479
+ /* @__PURE__ */ jsxs(TradingHoursRow, { $last: true, children: [
8480
+ /* @__PURE__ */ jsx(THValue, { children: "Pre-Market" }),
8481
+ /* @__PURE__ */ jsx(THValue, { children: "07:00 \u2014 10:00" }),
8482
+ /* @__PURE__ */ jsx(THValue, { children: "Mon \u2014 Fri" })
8483
+ ] }),
8484
+ /* @__PURE__ */ jsx(TradingHoursNote, { children: "All times are Australian Eastern Standard Time (AEST/AEDT). Markets are closed on Australian public holidays." })
8485
+ ] })
8486
+ ] }),
8487
+ /* @__PURE__ */ jsxs(Section, { children: [
8488
+ /* @__PURE__ */ jsx(SectionHeader, { children: "Tokenholder Protections" }),
8489
+ /* @__PURE__ */ jsx(ProtectionsGrid, { children: TOKENHOLDER_PROTECTIONS.map((p) => /* @__PURE__ */ jsxs(ProtectionCard, { children: [
8490
+ /* @__PURE__ */ jsx(ProtectionIconWrap, { children: p.icon }),
8491
+ /* @__PURE__ */ jsx(ProtectionTitle, { children: p.title }),
8492
+ /* @__PURE__ */ jsx(ProtectionDesc, { children: p.desc })
8493
+ ] }, p.title)) })
8392
8494
  ] })
8393
8495
  ] });
8394
8496
  }
8395
- var TopGrid = styled19.div`
8396
- display: grid;
8397
- grid-template-columns: 1fr 1fr;
8398
- gap: 2rem;
8399
- margin-bottom: 2rem;
8400
- @media (max-width: 768px) { grid-template-columns: 1fr; }
8497
+ var Wrapper = styled19.div`
8498
+ display: flex;
8499
+ flex-direction: column;
8500
+ gap: 1.5rem;
8401
8501
  `;
8402
- var Panel = styled19.div`
8502
+ var Section = styled19.div`
8403
8503
  background: #111;
8404
8504
  border-radius: 12px;
8405
- padding: 1.5rem;
8505
+ padding: 1.75rem;
8406
8506
  `;
8407
- var PanelHeading = styled19.h2`
8408
- font-size: 1.25rem;
8409
- margin-bottom: 1rem;
8410
- color: #fff;
8507
+ var SectionHeader = styled19.h2`
8508
+ font-size: 1.2rem;
8411
8509
  font-weight: 600;
8510
+ color: #fff;
8511
+ margin: 0 0 1.25rem 0;
8512
+ letter-spacing: -0.01em;
8513
+ `;
8514
+ var AboutGrid = styled19.div`
8515
+ display: grid;
8516
+ grid-template-columns: 1fr 340px;
8517
+ gap: 2rem;
8518
+ @media (max-width: 900px) { grid-template-columns: 1fr; }
8519
+ `;
8520
+ var AboutLeft = styled19.div`
8521
+ min-width: 0;
8412
8522
  `;
8413
8523
  var DescriptionWrap = styled19.div`
8414
8524
  position: relative;
@@ -8416,6 +8526,13 @@ var DescriptionWrap = styled19.div`
8416
8526
  overflow: hidden;
8417
8527
  transition: max-height 0.3s ease;
8418
8528
  `;
8529
+ var DescParagraph = styled19.p`
8530
+ color: rgba(255,255,255,0.65);
8531
+ line-height: 1.7;
8532
+ font-size: 0.92rem;
8533
+ margin: 0;
8534
+ margin-top: ${(p) => p.$first ? 0 : "0.85rem"};
8535
+ `;
8419
8536
  var DescFade = styled19.div`
8420
8537
  position: absolute;
8421
8538
  bottom: 0; left: 0; right: 0;
@@ -8424,103 +8541,250 @@ var DescFade = styled19.div`
8424
8541
  pointer-events: none;
8425
8542
  `;
8426
8543
  var ButtonRow = styled19.div`
8427
- margin-top: 1.5rem;
8544
+ margin-top: 1.25rem;
8428
8545
  display: flex;
8429
8546
  gap: 0.75rem;
8430
8547
  `;
8431
8548
  var OutlineBtn = styled19.button`
8432
- padding: 0.55rem 1.35rem;
8433
- border-radius: 10px;
8434
- border: 1px solid rgba(255,255,255,0.28);
8435
- background: rgba(5,6,8,0.85);
8436
- color: rgba(255,255,255,0.95);
8437
- font-size: 0.94rem;
8438
- font-weight: 600;
8549
+ padding: 0.5rem 1.25rem;
8550
+ border-radius: 8px;
8551
+ border: 1px solid rgba(255,255,255,0.2);
8552
+ background: transparent;
8553
+ color: rgba(255,255,255,0.85);
8554
+ font-size: 0.88rem;
8555
+ font-weight: 500;
8439
8556
  cursor: pointer;
8557
+ transition: border-color 0.15s;
8558
+ &:hover { border-color: rgba(255,255,255,0.4); }
8440
8559
  `;
8441
8560
  var PrimaryBtn = styled19.button`
8442
- padding: 0.75rem 1.5rem;
8443
- border-radius: 4px;
8561
+ padding: 0.5rem 1.5rem;
8562
+ border-radius: 8px;
8444
8563
  border: none;
8445
8564
  background: #e6c87e;
8446
- color: black;
8447
- font-size: 0.95rem;
8565
+ color: #111;
8566
+ font-size: 0.88rem;
8448
8567
  font-weight: 600;
8449
8568
  cursor: pointer;
8569
+ transition: background 0.15s;
8570
+ &:hover { background: #d4b86a; }
8450
8571
  `;
8451
- var FinancialGrid = styled19.div`
8572
+ var TokenDetailsCard = styled19.div`
8573
+ background: rgba(255,255,255,0.025);
8574
+ border: 1px solid rgba(255,255,255,0.06);
8575
+ border-radius: 10px;
8576
+ padding: 1.25rem;
8577
+ `;
8578
+ var TokenDetailsTitle = styled19.div`
8579
+ font-size: 0.65rem;
8580
+ color: #D4AF37;
8581
+ text-transform: uppercase;
8582
+ letter-spacing: 0.12em;
8583
+ font-weight: 600;
8584
+ margin-bottom: 1rem;
8585
+ padding-bottom: 0.75rem;
8586
+ border-bottom: 1px solid rgba(255,255,255,0.06);
8587
+ `;
8588
+ var TokenDetailRow = styled19.div`
8589
+ display: flex;
8590
+ justify-content: space-between;
8591
+ align-items: center;
8592
+ padding: 0.55rem 0;
8593
+ border-bottom: 1px solid rgba(255,255,255,0.04);
8594
+ &:last-child { border-bottom: none; padding-bottom: 0; }
8595
+ &:first-of-type { padding-top: 0; }
8596
+ `;
8597
+ var TokenDetailLabel = styled19.span`
8598
+ font-size: 0.82rem;
8599
+ color: rgba(255,255,255,0.5);
8600
+ font-weight: 400;
8601
+ `;
8602
+ var TokenDetailValue = styled19.span`
8603
+ font-size: 0.88rem;
8604
+ color: #fff;
8605
+ font-weight: 500;
8606
+ font-family: ${(p) => p.$mono ? "'SF Mono', 'Fira Code', monospace" : "inherit"};
8607
+ `;
8608
+ var StatsGrid = styled19.div`
8452
8609
  display: grid;
8453
8610
  grid-template-columns: 1fr 1fr;
8454
- gap: 0.75rem;
8611
+ gap: 1rem;
8612
+ @media (max-width: 768px) { grid-template-columns: 1fr; }
8455
8613
  `;
8456
- var FinancialCard = styled19.div`
8457
- background: rgba(255,255,255,0.03);
8614
+ var StatsColumn = styled19.div`
8615
+ background: rgba(255,255,255,0.025);
8616
+ border: 1px solid rgba(255,255,255,0.06);
8458
8617
  border-radius: 10px;
8459
- padding: 1rem 1.25rem;
8460
- border: 1px solid ${(p) => p.$gold ? "rgba(212,175,55,0.3)" : "rgba(255,255,255,0.06)"};
8461
- position: relative;
8462
- `;
8463
- var BadgeSpan = styled19.span`
8464
- position: absolute;
8465
- top: 0.5rem; right: 0.75rem;
8466
- font-size: 0.65rem;
8467
- color: #4CAF50;
8468
- display: flex; align-items: center; gap: 4px;
8618
+ padding: 1.25rem;
8469
8619
  `;
8470
- var FinancialLabel = styled19.div`
8620
+ var StatsColumnHeader = styled19.div`
8471
8621
  font-size: 0.65rem;
8472
- color: ${(p) => p.$gold ? "#D4AF37" : "rgba(255,255,255,0.6)"};
8622
+ color: #D4AF37;
8473
8623
  text-transform: uppercase;
8474
- letter-spacing: 0.1em;
8475
- margin-bottom: 0.4rem;
8476
- font-weight: 500;
8624
+ letter-spacing: 0.12em;
8625
+ font-weight: 600;
8626
+ margin-bottom: 1rem;
8627
+ padding-bottom: 0.75rem;
8628
+ border-bottom: 1px solid rgba(255,255,255,0.06);
8477
8629
  `;
8478
- var FinancialValue = styled19.div`
8479
- font-size: 1.25rem;
8480
- font-weight: 700;
8481
- color: ${(p) => p.$gold ? "#D4AF37" : "#fff"};
8482
- line-height: 1;
8630
+ var StatRow = styled19.div`
8631
+ display: flex;
8632
+ justify-content: space-between;
8633
+ align-items: center;
8634
+ padding: 0.65rem 0;
8635
+ border-bottom: 1px solid rgba(255,255,255,0.04);
8636
+ &:last-child { border-bottom: none; padding-bottom: 0; }
8483
8637
  `;
8484
- var AssetDetailsPanel = styled19.div`
8485
- margin-bottom: 2rem; background: #111; border-radius: 12px; padding: 1.5rem;
8638
+ var StatLabel = styled19.span`
8639
+ font-size: 0.82rem;
8640
+ color: rgba(255,255,255,0.5);
8641
+ font-weight: 400;
8642
+ display: flex;
8643
+ align-items: center;
8644
+ gap: 0.5rem;
8645
+ `;
8646
+ var StatBadge = styled19.span`
8647
+ font-size: 0.6rem;
8648
+ color: #4CAF50;
8649
+ display: inline-flex;
8650
+ align-items: center;
8651
+ gap: 3px;
8652
+ `;
8653
+ var StatValue = styled19.span`
8654
+ font-size: 1rem;
8655
+ font-weight: 600;
8656
+ color: ${(p) => p.$gold ? "#D4AF37" : "#fff"};
8657
+ font-variant-numeric: tabular-nums;
8486
8658
  `;
8487
8659
  var AssetPanelsGrid = styled19.div`
8488
- display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem;
8660
+ display: grid;
8661
+ grid-template-columns: 1fr 1fr;
8662
+ gap: 1rem;
8489
8663
  @media (max-width: 768px) { grid-template-columns: 1fr; }
8490
8664
  `;
8491
8665
  var MetricsPanel = styled19.div`
8492
- background: rgba(255,255,255,0.03); border-radius: 12px;
8493
- border: 1px solid rgba(255,255,255,0.06); padding: 1.25rem 1.5rem; overflow: hidden;
8666
+ background: rgba(255,255,255,0.025);
8667
+ border-radius: 10px;
8668
+ border: 1px solid rgba(255,255,255,0.06);
8669
+ padding: 1.25rem 1.5rem;
8670
+ overflow: hidden;
8494
8671
  `;
8495
8672
  var InfoPanel = styled19(MetricsPanel)``;
8496
8673
  var MetricsPanelTitle = styled19.div`
8497
- font-size: 0.65rem; color: #D4AF37; text-transform: uppercase;
8498
- letter-spacing: 0.12em; font-weight: 600; margin-bottom: 1rem;
8499
- padding-bottom: 0.75rem; border-bottom: 1px solid rgba(255,255,255,0.06);
8674
+ font-size: 0.65rem;
8675
+ color: #D4AF37;
8676
+ text-transform: uppercase;
8677
+ letter-spacing: 0.12em;
8678
+ font-weight: 600;
8679
+ margin-bottom: 1rem;
8680
+ padding-bottom: 0.75rem;
8681
+ border-bottom: 1px solid rgba(255,255,255,0.06);
8500
8682
  `;
8501
8683
  var LandFloorCard = styled19.div`
8502
8684
  background: linear-gradient(135deg, rgba(212,175,55,0.12), rgba(184,134,11,0.06));
8503
- border-radius: 10px; padding: 0.85rem 1rem;
8685
+ border-radius: 10px;
8686
+ padding: 0.85rem 1rem;
8504
8687
  border: 1px solid rgba(212,175,55,0.25);
8505
- display: flex; gap: 1rem; margin-bottom: 0.75rem;
8688
+ display: flex;
8689
+ gap: 1rem;
8690
+ margin-bottom: 0.75rem;
8506
8691
  `;
8507
8692
  var MetricLabel = styled19.div`
8508
- font-size: 0.65rem; color: #D4AF37; text-transform: uppercase;
8509
- letter-spacing: 0.1em; margin-bottom: 0.4rem; font-weight: 500;
8693
+ font-size: 0.65rem;
8694
+ color: #D4AF37;
8695
+ text-transform: uppercase;
8696
+ letter-spacing: 0.1em;
8697
+ margin-bottom: 0.4rem;
8698
+ font-weight: 500;
8510
8699
  `;
8511
8700
  var MetricValueRow = styled19.div`
8512
- display: flex; align-items: baseline; gap: 0.25rem;
8701
+ display: flex;
8702
+ align-items: baseline;
8703
+ gap: 0.25rem;
8513
8704
  `;
8514
8705
  var MetricBig = styled19.span`
8515
- font-size: 1.5rem; font-weight: 700; color: #D4AF37; line-height: 1;
8706
+ font-size: 1.5rem;
8707
+ font-weight: 700;
8708
+ color: #D4AF37;
8709
+ line-height: 1;
8516
8710
  `;
8517
8711
  var MetricUnit = styled19.span`
8518
- font-size: 0.7rem; color: rgba(212,175,55,0.7); font-weight: 500;
8712
+ font-size: 0.7rem;
8713
+ color: rgba(212,175,55,0.7);
8714
+ font-weight: 500;
8519
8715
  `;
8520
8716
  var FeaturesGrid = styled19.div`
8521
- display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.75rem;
8717
+ display: grid;
8718
+ grid-template-columns: repeat(3, 1fr);
8719
+ gap: 0.75rem;
8522
8720
  @media (max-width: 768px) { grid-template-columns: repeat(2, 1fr); }
8523
8721
  `;
8722
+ var TradingHoursCard = styled19.div`
8723
+ background: rgba(255,255,255,0.025);
8724
+ border: 1px solid rgba(255,255,255,0.06);
8725
+ border-radius: 10px;
8726
+ overflow: hidden;
8727
+ `;
8728
+ var TradingHoursRow = styled19.div`
8729
+ display: grid;
8730
+ grid-template-columns: 1fr 1fr 1fr;
8731
+ padding: 0.75rem 1.25rem;
8732
+ border-bottom: ${(p) => p.$last ? "none" : "1px solid rgba(255,255,255,0.04)"};
8733
+ &:first-child {
8734
+ border-bottom: 1px solid rgba(255,255,255,0.08);
8735
+ }
8736
+ `;
8737
+ var THLabel = styled19.span`
8738
+ font-size: 0.7rem;
8739
+ color: rgba(255,255,255,0.4);
8740
+ text-transform: uppercase;
8741
+ letter-spacing: 0.08em;
8742
+ font-weight: 500;
8743
+ `;
8744
+ var THValue = styled19.span`
8745
+ font-size: 0.85rem;
8746
+ color: rgba(255,255,255,0.8);
8747
+ font-weight: 400;
8748
+ `;
8749
+ var TradingHoursNote = styled19.div`
8750
+ padding: 0.75rem 1.25rem;
8751
+ font-size: 0.75rem;
8752
+ color: rgba(255,255,255,0.35);
8753
+ border-top: 1px solid rgba(255,255,255,0.04);
8754
+ `;
8755
+ var ProtectionsGrid = styled19.div`
8756
+ display: grid;
8757
+ grid-template-columns: 1fr 1fr;
8758
+ gap: 1rem;
8759
+ @media (max-width: 768px) { grid-template-columns: 1fr; }
8760
+ `;
8761
+ var ProtectionCard = styled19.div`
8762
+ background: rgba(255,255,255,0.025);
8763
+ border: 1px solid rgba(255,255,255,0.06);
8764
+ border-radius: 10px;
8765
+ padding: 1.25rem;
8766
+ `;
8767
+ var ProtectionIconWrap = styled19.div`
8768
+ width: 36px;
8769
+ height: 36px;
8770
+ border-radius: 8px;
8771
+ background: rgba(212,175,55,0.1);
8772
+ display: flex;
8773
+ align-items: center;
8774
+ justify-content: center;
8775
+ margin-bottom: 0.75rem;
8776
+ `;
8777
+ var ProtectionTitle = styled19.div`
8778
+ font-size: 0.92rem;
8779
+ font-weight: 600;
8780
+ color: #fff;
8781
+ margin-bottom: 0.4rem;
8782
+ `;
8783
+ var ProtectionDesc = styled19.div`
8784
+ font-size: 0.8rem;
8785
+ color: rgba(255,255,255,0.5);
8786
+ line-height: 1.5;
8787
+ `;
8524
8788
  var STATUS_BG = {
8525
8789
  active: "rgba(14,203,129,0.18)",
8526
8790
  rejected: "rgba(246,70,93,0.18)",
@@ -9258,7 +9522,7 @@ function PropertyDocuments({ documentsData }) {
9258
9522
  title: doc.label,
9259
9523
  documentUrl: doc.href
9260
9524
  }));
9261
- return /* @__PURE__ */ jsxs(Section, { children: [
9525
+ return /* @__PURE__ */ jsxs(Section2, { children: [
9262
9526
  /* @__PURE__ */ jsx(SectionHeading, { children: "Investment Documents" }),
9263
9527
  /* @__PURE__ */ jsx(DocList, { children: documents.map(({ documentUrl, title }) => {
9264
9528
  const isAvailable = Boolean(documentUrl);
@@ -9273,7 +9537,7 @@ function PropertyDocuments({ documentsData }) {
9273
9537
  }) })
9274
9538
  ] });
9275
9539
  }
9276
- var Section = styled19.section`
9540
+ var Section2 = styled19.section`
9277
9541
  background: var(--color-card, rgba(30, 35, 41, 0.8));
9278
9542
  border-radius: 12px;
9279
9543
  padding: 1.5rem;
@@ -9359,7 +9623,7 @@ function PropertyInspectionTimes({
9359
9623
  onRetry,
9360
9624
  onSignIn
9361
9625
  }) {
9362
- return /* @__PURE__ */ jsxs(Section2, { children: [
9626
+ return /* @__PURE__ */ jsxs(Section3, { children: [
9363
9627
  /* @__PURE__ */ jsx(SectionHeading2, { children: "Inspection Times" }),
9364
9628
  /* @__PURE__ */ jsx(Intro, { children: "Book a private inspection of the property. Walk through the home in person before investing." }),
9365
9629
  isAuthenticated ? /* @__PURE__ */ jsxs(SlotList, { children: [
@@ -9408,7 +9672,7 @@ function PropertyInspectionTimes({
9408
9672
  ] })
9409
9673
  ] });
9410
9674
  }
9411
- var Section2 = styled19.section`
9675
+ var Section3 = styled19.section`
9412
9676
  background: var(--color-card, rgba(30, 35, 41, 0.8));
9413
9677
  border-radius: 12px;
9414
9678
  padding: 1.5rem;
@@ -10366,7 +10630,7 @@ function VideoActivitySection({
10366
10630
  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";
10367
10631
  const showSkeletonFeed = ipoStarted && isLoading && sortedOrders.length === 0;
10368
10632
  const showOrderFeed = !showSkeletonFeed && (ipoStarted || ipoEnded && sortedOrders.length > 0);
10369
- return /* @__PURE__ */ jsxs(Section3, { children: [
10633
+ return /* @__PURE__ */ jsxs(Section4, { children: [
10370
10634
  /* @__PURE__ */ jsxs(VideoPanel, { children: [
10371
10635
  /* @__PURE__ */ jsx("div", { className: "section-header", children: /* @__PURE__ */ jsx("h3", { children: "Musgrave" }) }),
10372
10636
  /* @__PURE__ */ jsx("div", { className: "video-container", children: /* @__PURE__ */ jsxs("video", { controls: true, loop: true, autoPlay: true, muted: true, playsInline: true, children: [
@@ -10417,7 +10681,7 @@ function VideoActivitySection({
10417
10681
  ] })
10418
10682
  ] });
10419
10683
  }
10420
- var Section3 = styled19.div`
10684
+ var Section4 = styled19.div`
10421
10685
  display: flex;
10422
10686
  gap: 1.5rem;
10423
10687
  align-items: stretch;
@@ -10691,7 +10955,7 @@ var VARIANT_COLORS = {
10691
10955
  info: { accent: "#E6C656", icon: "\u2139" },
10692
10956
  pending: { accent: "#7EB3E6", icon: "\u25CC" }
10693
10957
  };
10694
- var Wrapper = styled19.div`
10958
+ var Wrapper2 = styled19.div`
10695
10959
  position: relative;
10696
10960
  display: flex;
10697
10961
  flex-direction: column;
@@ -10821,7 +11085,7 @@ function ToastItem({ toast, onDismiss }) {
10821
11085
  const duration = toast.duration ?? 6e3;
10822
11086
  const explorerBase = toast.explorerUrl ?? DEFAULT_EXPLORER;
10823
11087
  const txUrl = toast.txHash ? `${explorerBase}${toast.txHash}` : void 0;
10824
- return /* @__PURE__ */ jsxs(Wrapper, { $exiting: exiting, children: [
11088
+ return /* @__PURE__ */ jsxs(Wrapper2, { $exiting: exiting, children: [
10825
11089
  /* @__PURE__ */ jsxs(Body, { children: [
10826
11090
  /* @__PURE__ */ jsx(IconDot, { $color: accent, children: icon }),
10827
11091
  /* @__PURE__ */ jsxs(Content, { children: [
@@ -10934,7 +11198,7 @@ function OrderPanel({
10934
11198
  setSliderValue(ratio);
10935
11199
  }
10936
11200
  };
10937
- return /* @__PURE__ */ jsxs(Panel2, { children: [
11201
+ return /* @__PURE__ */ jsxs(Panel, { children: [
10938
11202
  /* @__PURE__ */ jsxs(PanelHeader2, { children: [
10939
11203
  /* @__PURE__ */ jsx("span", { children: "Place Order" }),
10940
11204
  /* @__PURE__ */ jsxs(StatusBadge2, { style: { color: statusColor }, children: [
@@ -11237,7 +11501,7 @@ function OrderPanel({
11237
11501
  ] })
11238
11502
  ] });
11239
11503
  }
11240
- var Panel2 = styled19.div`
11504
+ var Panel = styled19.div`
11241
11505
  background-color: var(--color-card-darker, #111);
11242
11506
  border-radius: 8px;
11243
11507
  padding: 1.5rem;