@loafmarkets/ui 0.1.359 → 0.1.361

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -14,6 +14,8 @@ var md = require('react-icons/md');
14
14
  var bi = require('react-icons/bi');
15
15
  var fa = require('react-icons/fa');
16
16
  var fi = require('react-icons/fi');
17
+ var chart_js = require('chart.js');
18
+ var reactChartjs2 = require('react-chartjs-2');
17
19
 
18
20
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
19
21
 
@@ -183,7 +185,7 @@ var PortfolioSummary = React5__namespace.forwardRef(
183
185
  onResetAccount,
184
186
  positionsHeading = "Current Positions",
185
187
  emptyPositionsText = "No positions yet. Start trading to build your portfolio!",
186
- formatCurrency: formatCurrency6 = defaultFormatCurrency,
188
+ formatCurrency: formatCurrency5 = defaultFormatCurrency,
187
189
  formatPercent: formatPercent2 = defaultFormatPercent,
188
190
  formatSignedCurrency = defaultFormatSignedCurrency,
189
191
  className,
@@ -221,11 +223,11 @@ var PortfolioSummary = React5__namespace.forwardRef(
221
223
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
222
224
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
223
225
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs uppercase tracking-[0.5px] text-white/50", children: "Available Cash" }),
224
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-[1.25rem] font-semibold text-white", children: formatCurrency6(availableCash) })
226
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-[1.25rem] font-semibold text-white", children: formatCurrency5(availableCash) })
225
227
  ] }),
226
228
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
227
229
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs uppercase tracking-[0.5px] text-white/50", children: "Portfolio Value" }),
228
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-[1.25rem] font-semibold text-white", children: formatCurrency6(portfolioValue) })
230
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-[1.25rem] font-semibold text-white", children: formatCurrency5(portfolioValue) })
229
231
  ] }),
230
232
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
231
233
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs uppercase tracking-[0.5px] text-white/50", children: "Total Return" }),
@@ -7869,7 +7871,7 @@ var MiniLiveFeed = () => {
7869
7871
  }, 2e3 + Math.random() * 2e3);
7870
7872
  return () => clearInterval(interval);
7871
7873
  }, []);
7872
- const formatCurrency6 = (amount) => `$${amount.toLocaleString()}`;
7874
+ const formatCurrency5 = (amount) => `$${amount.toLocaleString()}`;
7873
7875
  return /* @__PURE__ */ jsxRuntime.jsxs(
7874
7876
  "div",
7875
7877
  {
@@ -7959,7 +7961,7 @@ var MiniLiveFeed = () => {
7959
7961
  ] }),
7960
7962
  /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.5rem", position: "relative", zIndex: 1 }, children: [
7961
7963
  /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: "0.75rem", color: "var(--color-text-secondary, #848e9c)" }, children: "bought" }),
7962
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: "0.8rem", fontWeight: 600, color: "#fff" }, children: formatCurrency6(purchase.amount) })
7964
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: "0.8rem", fontWeight: 600, color: "#fff" }, children: formatCurrency5(purchase.amount) })
7963
7965
  ] })
7964
7966
  ]
7965
7967
  },
@@ -8505,7 +8507,8 @@ function GalleryMapSection({
8505
8507
  autoPlayInterval = 4e3,
8506
8508
  hideMap = false,
8507
8509
  hideGallery = false,
8508
- hideSuburb = false
8510
+ hideSuburb = false,
8511
+ featuresSlot
8509
8512
  }) {
8510
8513
  const [carouselIndex, setCarouselIndex] = React5.useState(0);
8511
8514
  const [showVideo, setShowVideo] = React5.useState(false);
@@ -8598,6 +8601,7 @@ function GalleryMapSection({
8598
8601
  }, children: cat.name }, cat.name);
8599
8602
  }) })
8600
8603
  ] }),
8604
+ featuresSlot,
8601
8605
  !hideMap && /* @__PURE__ */ jsxRuntime.jsxs(MapPanel, { children: [
8602
8606
  /* @__PURE__ */ jsxRuntime.jsxs(PanelHeader, { children: [
8603
8607
  /* @__PURE__ */ jsxRuntime.jsxs("h3", { children: [
@@ -9176,24 +9180,23 @@ function PropertyOverview({
9176
9180
  /* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { children: "The Asset" }),
9177
9181
  galleryImages.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9178
9182
  /* @__PURE__ */ jsxRuntime.jsxs(GallerySpecRow, { children: [
9179
- /* @__PURE__ */ jsxRuntime.jsxs(GallerySpecLeft, { children: [
9180
- /* @__PURE__ */ jsxRuntime.jsx(
9181
- GalleryMapSection,
9182
- {
9183
- images: galleryImages.map((img) => ({ src: img.imageUrl, title: img.title, subtitle: img.subtitle })),
9184
- categories: galleryCategories,
9185
- propertyLocation: location,
9186
- videoUrl,
9187
- tokenName,
9188
- onPhotoClick: onPhotosClick
9189
- }
9190
- ),
9191
- /* @__PURE__ */ jsxRuntime.jsx(FeaturesPanel, { children: features.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(AssetFeatureItem, { children: [
9192
- item.icon && /* @__PURE__ */ jsxRuntime.jsx(AssetFeatureIcon, { children: item.icon }),
9193
- item.value && /* @__PURE__ */ jsxRuntime.jsx(AssetFeatureValue, { children: item.value }),
9194
- /* @__PURE__ */ jsxRuntime.jsx(AssetFeatureLabel, { children: item.label })
9195
- ] }, i)) })
9196
- ] }),
9183
+ /* @__PURE__ */ jsxRuntime.jsx(GallerySpecLeft, { children: /* @__PURE__ */ jsxRuntime.jsx(
9184
+ GalleryMapSection,
9185
+ {
9186
+ images: galleryImages.map((img) => ({ src: img.imageUrl, title: img.title, subtitle: img.subtitle })),
9187
+ categories: galleryCategories,
9188
+ propertyLocation: location,
9189
+ videoUrl,
9190
+ tokenName,
9191
+ onPhotoClick: onPhotosClick,
9192
+ hideSuburb: true,
9193
+ featuresSlot: /* @__PURE__ */ jsxRuntime.jsx(FeaturesPanel, { children: features.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(AssetFeatureItem, { children: [
9194
+ item.icon && /* @__PURE__ */ jsxRuntime.jsx(AssetFeatureIcon, { children: item.icon }),
9195
+ item.value && /* @__PURE__ */ jsxRuntime.jsx(AssetFeatureValue, { children: item.value }),
9196
+ /* @__PURE__ */ jsxRuntime.jsx(AssetFeatureLabel, { children: item.label })
9197
+ ] }, i)) })
9198
+ }
9199
+ ) }),
9197
9200
  /* @__PURE__ */ jsxRuntime.jsxs(StatsColumn, { children: [
9198
9201
  /* @__PURE__ */ jsxRuntime.jsx(StatsColumnHeader, { children: "Asset Specification" }),
9199
9202
  /* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
@@ -16325,568 +16328,413 @@ var ActionButton = styled9__default.default.button`
16325
16328
  color: ${({ $variant }) => $variant === "danger" ? "#ff8f8f" : "#f4d07f"};
16326
16329
  }
16327
16330
  `;
16328
- var CHART_WIDTH = 1200;
16329
- var CHART_HEIGHT = 200;
16330
- var CHART_PADDING = 10;
16331
- var FALLBACK_RECENT_SALES = [
16332
- {
16333
- imageUrl: "https://images.unsplash.com/photo-1464146072230-91cabc968266?auto=format&fit=crop&w=1200&q=80",
16334
- price: 165e5,
16335
- saleDate: "Nov 2024",
16336
- address: "15 Wentworth Road",
16337
- suburb: "Vaucluse",
16338
- bedrooms: 5,
16339
- bathrooms: 5,
16340
- landSize: "1,420 sqm"
16341
- },
16342
- {
16343
- imageUrl: "https://images.unsplash.com/photo-1505691938895-1758d7feb511?auto=format&fit=crop&w=1200&q=80",
16344
- price: 149e5,
16345
- saleDate: "Sep 2024",
16346
- address: "42 Vaucluse Road",
16347
- suburb: "Vaucluse",
16348
- bedrooms: 4,
16349
- bathrooms: 4,
16350
- landSize: "980 sqm"
16351
- },
16352
- {
16353
- imageUrl: "https://images.unsplash.com/photo-1505693314120-0d443867891c?auto=format&fit=crop&w=1200&q=80",
16354
- price: 1325e4,
16355
- saleDate: "Jun 2024",
16356
- address: "18 Olola Avenue",
16357
- suburb: "Vaucluse",
16358
- bedrooms: 4,
16359
- bathrooms: 3,
16360
- landSize: "860 sqm"
16361
- }
16362
- ];
16331
+ chart_js.Chart.register(chart_js.CategoryScale, chart_js.LinearScale, chart_js.PointElement, chart_js.LineElement, chart_js.Title, chart_js.Tooltip, chart_js.Legend);
16332
+ var musgraveComparisonData = {
16333
+ labels: ["2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026"],
16334
+ datasets: [
16335
+ {
16336
+ name: "Musgrave",
16337
+ color: "#D4AF37",
16338
+ data: [100, 115, 125, 118, 130, 145, 155, 165, 180, 195, 210, 225, 240, 225, 235, 231, 265, 285, 300, 310, 320]
16339
+ },
16340
+ {
16341
+ name: "ASX 200",
16342
+ color: "#2196f3",
16343
+ data: [100, 113, 110, 69, 89, 93, 83, 95, 101, 109, 98, 110, 118, 114, 137, 129, 136, 146, 150, 166, 170]
16344
+ },
16345
+ {
16346
+ name: "Bank Deposits",
16347
+ color: "#e91e63",
16348
+ data: [100, 107, 114, 119, 124, 131, 137, 142, 146, 150, 154, 157, 160, 163, 164, 165, 167, 174, 182, 190, 198]
16349
+ }
16350
+ ],
16351
+ saleMarkers: [
16352
+ { year: "2006", label: "Purchase", price: "$11.25M", description: "" },
16353
+ { year: "2021", label: "Covid Flash Sale", price: "$13M", description: "Sold at ~50% discount due to Covid uncertainty" },
16354
+ { year: "2026", label: "Offering", price: "$36M", description: "Current offering valuation" }
16355
+ ]
16356
+ };
16363
16357
  function PropertyValuation({
16364
- propertyName,
16365
- tokenPrice,
16366
- totalTokens,
16367
- summary = null,
16368
- history = [],
16369
- loading = false,
16370
- error = null
16358
+ propertyTitle,
16359
+ tokenPriceValue,
16360
+ valSummary,
16361
+ offeringValuationValue,
16362
+ totalUnits
16371
16363
  }) {
16372
- const now = React5.useMemo(() => /* @__PURE__ */ new Date(), []);
16373
- const lastPrice = React5.useMemo(() => {
16374
- const fallback = Number.isFinite(tokenPrice) && tokenPrice > 0 ? tokenPrice : 0;
16375
- if (!summary?.lastPrice || summary.lastPrice <= 0) {
16376
- return fallback;
16377
- }
16378
- return summary.lastPrice;
16379
- }, [summary, tokenPrice]);
16380
- const fairValue = React5.useMemo(() => {
16381
- if (summary?.fairValue && summary.fairValue > 0) {
16382
- return summary.fairValue;
16383
- }
16384
- return lastPrice || 1;
16385
- }, [summary, lastPrice]);
16386
- const tokensOutstanding = React5.useMemo(() => {
16387
- if (summary?.totalTokens && summary.totalTokens > 0) {
16388
- return summary.totalTokens;
16389
- }
16390
- if (totalTokens && totalTokens > 0) {
16391
- return totalTokens;
16364
+ const [hoveredSaleYear, setHoveredSaleYear] = React5.useState(null);
16365
+ const gaugePosition = React5.useMemo(() => {
16366
+ const under = valSummary?.undervaluedThreshold;
16367
+ const over = valSummary?.overvaluedThreshold;
16368
+ const price = tokenPriceValue;
16369
+ if (under != null && over != null && price != null && over > under) {
16370
+ const pct = (price - under) / (over - under) * 100;
16371
+ return Math.max(5, Math.min(95, pct));
16392
16372
  }
16393
- return 5e4;
16394
- }, [summary, totalTokens]);
16395
- const undervaluedThreshold = summary?.undervaluedThreshold ?? fairValue * 0.9;
16396
- const overvaluedThreshold = summary?.overvaluedThreshold ?? fairValue * 1.1;
16397
- const gaugePosition = calculatePositionFromPrice(lastPrice, undervaluedThreshold, fairValue, overvaluedThreshold);
16398
- const valuationStatus = summary?.valuationStatus ?? (lastPrice < fairValue ? "Undervalued" : lastPrice > fairValue ? "Overvalued" : "Fair Value");
16399
- const valuationDelta = summary?.valuationDeltaPercent ?? (lastPrice - fairValue) / fairValue * 100;
16400
- const valuationDeltaFormatted = `${valuationDelta >= 0 ? "+" : ""}${valuationDelta.toFixed(1)}%`;
16401
- const { valuationPath, fairValuePath, axisLabels } = React5.useMemo(() => buildChartPaths(history, fairValue), [history, fairValue]);
16402
- const recentSales = React5.useMemo(() => {
16403
- if (summary?.recentSales?.length) {
16404
- return summary.recentSales;
16373
+ return 50;
16374
+ }, [valSummary?.undervaluedThreshold, valSummary?.overvaluedThreshold, tokenPriceValue]);
16375
+ const chartOptions = React5.useMemo(() => ({
16376
+ responsive: true,
16377
+ maintainAspectRatio: false,
16378
+ onHover: (_event, elements) => {
16379
+ if (elements.length > 0) {
16380
+ const dataIndex = elements[0].index;
16381
+ const year = musgraveComparisonData.labels[dataIndex];
16382
+ if (["2006", "2021", "2026"].includes(year)) {
16383
+ setHoveredSaleYear(year);
16384
+ return;
16385
+ }
16386
+ }
16387
+ setHoveredSaleYear(null);
16388
+ },
16389
+ plugins: {
16390
+ legend: { display: false },
16391
+ tooltip: {
16392
+ mode: "index",
16393
+ intersect: false,
16394
+ backgroundColor: "rgba(30, 32, 38, 0.9)",
16395
+ titleColor: "#f8f9fa",
16396
+ bodyColor: "#f8f9fa",
16397
+ borderColor: "rgba(255, 255, 255, 0.1)",
16398
+ borderWidth: 1,
16399
+ callbacks: {
16400
+ label(context) {
16401
+ return `${context.dataset.label}: ${(context.parsed.y ?? 0).toFixed(0)}`;
16402
+ }
16403
+ }
16404
+ }
16405
+ },
16406
+ scales: {
16407
+ x: {
16408
+ grid: { color: "rgba(255, 255, 255, 0.05)" },
16409
+ ticks: { color: "#848e9c", font: { size: 9 }, maxRotation: 45, minRotation: 45 }
16410
+ },
16411
+ y: {
16412
+ grid: { color: "rgba(255, 255, 255, 0.05)" },
16413
+ ticks: { color: "#848e9c", font: { size: 10 } },
16414
+ min: 50
16415
+ }
16405
16416
  }
16406
- return FALLBACK_RECENT_SALES;
16407
- }, [summary]);
16408
- const areaDemandLabel = summary?.areaDemand ?? "Hot";
16409
- const propertyMoatLabel = summary?.propertyMoat ?? "Wide";
16410
- return /* @__PURE__ */ jsxRuntime.jsxs(ValuationWrapper, { children: [
16411
- /* @__PURE__ */ jsxRuntime.jsx(SectionTitle, { children: "Valuation Model" }),
16417
+ }), []);
16418
+ const chartData = React5.useMemo(() => ({
16419
+ labels: musgraveComparisonData.labels,
16420
+ datasets: musgraveComparisonData.datasets.map((dataset, index) => ({
16421
+ label: dataset.name,
16422
+ data: dataset.data,
16423
+ borderColor: dataset.color,
16424
+ backgroundColor: `${dataset.color}20`,
16425
+ borderWidth: index === 0 ? 3 : 2,
16426
+ pointRadius: (ctx) => {
16427
+ if (index === 0) {
16428
+ const year = musgraveComparisonData.labels[ctx.dataIndex];
16429
+ if (["2006", "2021", "2026"].includes(year)) {
16430
+ return hoveredSaleYear === year ? 14 : 8;
16431
+ }
16432
+ }
16433
+ return 1;
16434
+ },
16435
+ pointBackgroundColor: (ctx) => {
16436
+ if (index === 0) {
16437
+ const year = musgraveComparisonData.labels[ctx.dataIndex];
16438
+ if (year === "2006") return "#4CAF50";
16439
+ if (year === "2021") return "#FF5722";
16440
+ if (year === "2026") return "#D4AF37";
16441
+ }
16442
+ return dataset.color;
16443
+ },
16444
+ pointBorderColor: (ctx) => {
16445
+ if (index === 0 && ["2006", "2021", "2026"].includes(musgraveComparisonData.labels[ctx.dataIndex])) return "#fff";
16446
+ return dataset.color;
16447
+ },
16448
+ pointBorderWidth: (ctx) => {
16449
+ if (index === 0 && ["2006", "2021", "2026"].includes(musgraveComparisonData.labels[ctx.dataIndex])) {
16450
+ return hoveredSaleYear === musgraveComparisonData.labels[ctx.dataIndex] ? 4 : 2;
16451
+ }
16452
+ return 0;
16453
+ },
16454
+ pointHoverRadius: 6,
16455
+ tension: 0.3,
16456
+ fill: false
16457
+ }))
16458
+ }), [hoveredSaleYear]);
16459
+ const handleMarkerEnter = React5.useCallback((year) => setHoveredSaleYear(year), []);
16460
+ const handleMarkerLeave = React5.useCallback(() => setHoveredSaleYear(null), []);
16461
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
16462
+ /* @__PURE__ */ jsxRuntime.jsx(ValuationHeading, { children: "Valuation Model" }),
16412
16463
  /* @__PURE__ */ jsxRuntime.jsxs(LoafPricingSection, { children: [
16413
- /* @__PURE__ */ jsxRuntime.jsx(SectionSubheading, { children: "Loaf Pricing Model" }),
16414
- /* @__PURE__ */ jsxRuntime.jsxs(PricingModelCard, { children: [
16464
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { style: { color: "#D4AF37", marginBottom: "0" }, children: "Loaf Pricing Model" }),
16465
+ /* @__PURE__ */ jsxRuntime.jsx(BlurredContent, { children: /* @__PURE__ */ jsxRuntime.jsxs(PricingModelCard, { children: [
16415
16466
  /* @__PURE__ */ jsxRuntime.jsxs(PricingModelHeader, { children: [
16416
- /* @__PURE__ */ jsxRuntime.jsx(PricingModelTitle, { children: propertyName }),
16417
- /* @__PURE__ */ jsxRuntime.jsx(PricingModelValue, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "valuation-info", children: [
16418
- /* @__PURE__ */ jsxRuntime.jsx("div", { children: "Valuation as of" }),
16419
- /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "var(--color-accent)" }, children: now.toLocaleDateString("en-US", { day: "2-digit", month: "short", year: "numeric" }) }) }),
16420
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
16421
- now.toLocaleTimeString("en-AU", { hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false, timeZone: "Australia/Sydney" }),
16467
+ /* @__PURE__ */ jsxRuntime.jsx(PricingModelTitle, { children: propertyTitle }),
16468
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { textAlign: "right" }, children: [
16469
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { fontSize: "0.75rem", color: "rgba(255,255,255,0.7)" }, children: "Valuation as of" }),
16470
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { color: "#D4AF37", fontWeight: "600" }, children: (valSummary?.valuationAsOf ? new Date(valSummary.valuationAsOf) : /* @__PURE__ */ new Date()).toLocaleDateString("en-US", { day: "2-digit", month: "short", year: "numeric" }) }),
16471
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { fontSize: "0.75rem", color: "rgba(255,255,255,0.7)" }, children: [
16472
+ (valSummary?.valuationAsOf ? new Date(valSummary.valuationAsOf) : /* @__PURE__ */ new Date()).toLocaleTimeString("en-AU", { hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false, timeZone: "Australia/Sydney" }),
16422
16473
  " AEST"
16423
16474
  ] })
16424
- ] }) })
16475
+ ] })
16425
16476
  ] }),
16426
16477
  /* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetails, { children: [
16427
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "0.5rem" }, children: [
16428
- /* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetail, { children: [
16429
- /* @__PURE__ */ jsxRuntime.jsx(PropertyDetailLabel, { children: "Last Price" }),
16430
- /* @__PURE__ */ jsxRuntime.jsx(PricingDetailValue, { children: formatCurrency5(lastPrice) })
16431
- ] }),
16432
- /* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetail, { children: [
16433
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", width: "100%" }, children: [
16434
- /* @__PURE__ */ jsxRuntime.jsx(PropertyDetailLabel, { children: "Fair Value" }),
16435
- /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "0.75rem", color: "#4CAF50", fontWeight: "bold" }, children: [
16436
- "Confidence: ",
16437
- summary?.confidence ?? "High"
16438
- ] })
16439
- ] }),
16440
- /* @__PURE__ */ jsxRuntime.jsxs(PricingDetailValue, { style: { color: "var(--color-accent)", fontWeight: "bold" }, children: [
16441
- formatCurrency5(fairValue),
16442
- " ",
16443
- /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "0.85em", fontWeight: "normal", opacity: 0.8 }, children: [
16444
- "(",
16445
- formatCurrency5(fairValue * tokensOutstanding, { maximumFractionDigits: 0 }),
16446
- ")"
16447
- ] })
16448
- ] })
16449
- ] })
16478
+ /* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetail, { children: [
16479
+ /* @__PURE__ */ jsxRuntime.jsx(PricingDetailLabel, { children: "IPO Price" }),
16480
+ /* @__PURE__ */ jsxRuntime.jsx(PricingDetailValue, { children: tokenPriceValue != null ? `$${tokenPriceValue.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` : /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { width: 90, height: 18 }) })
16450
16481
  ] }),
16451
- /* @__PURE__ */ jsxRuntime.jsxs(ValuationIndicator, { className: "mobile-only-valuation", children: [
16452
- /* @__PURE__ */ jsxRuntime.jsxs(ValuationHeader, { children: [
16453
- /* @__PURE__ */ jsxRuntime.jsx(ValuationTitle, { style: { color: "#4CAF50" }, children: "Undervalued" }),
16454
- /* @__PURE__ */ jsxRuntime.jsx(ValuationTitle, { style: { color: "var(--color-accent)" }, children: "Fair Value" }),
16455
- /* @__PURE__ */ jsxRuntime.jsx(ValuationTitle, { style: { color: "#F44336" }, children: "Overvalued" })
16456
- ] }),
16457
- /* @__PURE__ */ jsxRuntime.jsxs(ValuationGauge, { children: [
16458
- /* @__PURE__ */ jsxRuntime.jsx(GaugeBackground, {}),
16459
- /* @__PURE__ */ jsxRuntime.jsx(GaugeIndicator, { type: "fairValue", position: 50 }),
16460
- /* @__PURE__ */ jsxRuntime.jsxs(GaugePriceTag, { position: gaugePosition, children: [
16461
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Last Price" }),
16462
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: formatCurrency5(lastPrice) })
16463
- ] }),
16464
- /* @__PURE__ */ jsxRuntime.jsx(GaugeIndicator, { type: "lastPrice", position: gaugePosition })
16482
+ /* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetail, { children: [
16483
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", width: "100%" }, children: [
16484
+ /* @__PURE__ */ jsxRuntime.jsx(PricingDetailLabel, { style: { marginBottom: 0 }, children: "Fair Value" }),
16485
+ valSummary?.confidence && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "0.75rem", color: "#4CAF50", fontWeight: "bold" }, children: [
16486
+ "Confidence: ",
16487
+ valSummary.confidence
16488
+ ] })
16465
16489
  ] }),
16466
- /* @__PURE__ */ jsxRuntime.jsxs(ValuationDetails, { children: [
16467
- /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationValue, { style: { color: "#4CAF50" }, children: [
16468
- /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
16469
- "< ",
16470
- formatCurrency5(undervaluedThreshold)
16471
- ] }),
16472
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16473
- "(",
16474
- formatMillions(undervaluedThreshold * tokensOutstanding),
16475
- ")"
16476
- ] })
16477
- ] }) }),
16478
- /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationValue, { style: { color: "var(--color-accent)" }, children: [
16479
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: formatCurrency5(fairValue) }),
16480
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16481
- "(",
16482
- formatMillions(fairValue * tokensOutstanding),
16483
- ")"
16484
- ] })
16485
- ] }) }),
16486
- /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationValue, { style: { color: "#F44336" }, children: [
16487
- /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
16488
- "> ",
16489
- formatCurrency5(overvaluedThreshold)
16490
- ] }),
16491
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16492
- "(",
16493
- formatMillions(overvaluedThreshold * tokensOutstanding),
16494
- ")"
16495
- ] })
16496
- ] }) })
16497
- ] })
16498
- ] }),
16499
- /* @__PURE__ */ jsxRuntime.jsxs(HiddenMobileChart, { children: [
16500
- /* @__PURE__ */ jsxRuntime.jsx("h3", { style: { marginBottom: "1rem", fontSize: "1.1rem", color: "#fff" }, children: "Historical Valuation" }),
16501
- /* @__PURE__ */ jsxRuntime.jsx(ChartContainer, { children: /* @__PURE__ */ jsxRuntime.jsxs(ChartBackground, { children: [
16502
- axisLabels.map((label, index) => /* @__PURE__ */ jsxRuntime.jsx(YAxisLabel, { style: { top: `${10 + index * 22}%` }, children: label }, `${label}-${index}`)),
16503
- /* @__PURE__ */ jsxRuntime.jsxs(ValuationSvg, { viewBox: `0 0 ${CHART_WIDTH} ${CHART_HEIGHT}`, preserveAspectRatio: "none", children: [
16504
- valuationPath ? /* @__PURE__ */ jsxRuntime.jsx("path", { d: valuationPath, fill: "none", stroke: "#D4AF37", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) : null,
16505
- fairValuePath ? /* @__PURE__ */ jsxRuntime.jsx("path", { d: fairValuePath, fill: "none", stroke: "#FFFFFF", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) : null
16490
+ /* @__PURE__ */ jsxRuntime.jsx(PricingDetailValue, { style: { color: "#D4AF37", fontWeight: "bold" }, children: valSummary?.fairValue != null ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
16491
+ `$${valSummary.fairValue.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`,
16492
+ totalUnits > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "0.85em", fontWeight: "normal", opacity: 0.8 }, children: [
16493
+ " ($",
16494
+ (valSummary.fairValue * totalUnits).toLocaleString(),
16495
+ ")"
16506
16496
  ] })
16507
- ] }) })
16497
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { width: 140, height: 18 }) })
16508
16498
  ] }),
16509
16499
  /* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetail, { children: [
16510
- /* @__PURE__ */ jsxRuntime.jsx(PropertyDetailLabel, { children: "Valuation" }),
16511
- /* @__PURE__ */ jsxRuntime.jsxs(ValuationCallout, { children: [
16512
- /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "#4CAF50", fontWeight: 600, fontSize: "16px", letterSpacing: "0.3px" }, children: valuationStatus }),
16513
- /* @__PURE__ */ jsxRuntime.jsx(ValuationBadge, { children: valuationDeltaFormatted })
16500
+ /* @__PURE__ */ jsxRuntime.jsx(PricingDetailLabel, { children: "Valuation" }),
16501
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: {
16502
+ display: "flex",
16503
+ alignItems: "center",
16504
+ justifyContent: "space-between",
16505
+ background: "linear-gradient(90deg, rgba(212, 175, 55, 0.05) 0%, rgba(212, 175, 55, 0.1) 100%)",
16506
+ borderRadius: "8px",
16507
+ padding: "10px 16px",
16508
+ border: "1px solid rgba(212, 175, 55, 0.2)"
16509
+ }, children: [
16510
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "#D4AF37", fontWeight: "600" }, children: valSummary?.valuationStatus ?? "Fair Value" }),
16511
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: {
16512
+ background: "linear-gradient(135deg, #D4AF37 0%, #B8960C 100%)",
16513
+ color: "white",
16514
+ padding: "5px 12px",
16515
+ borderRadius: "20px",
16516
+ fontSize: "14px",
16517
+ fontWeight: "600"
16518
+ }, children: valSummary?.valuationDeltaPercent != null ? `${valSummary.valuationDeltaPercent.toFixed(1)}%` : valSummary ? "0.0%" : /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { width: 44, height: 14 }) })
16514
16519
  ] })
16515
16520
  ] }),
16516
16521
  /* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetail, { children: [
16517
- /* @__PURE__ */ jsxRuntime.jsx(PropertyDetailLabel, { children: "Area Demand" }),
16518
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: [
16519
- /* @__PURE__ */ jsxRuntime.jsx(PricingDetailValue, { children: areaDemandLabel }),
16520
- /* @__PURE__ */ jsxRuntime.jsxs(AreaDemandChart, { children: [
16521
- /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "100%", height: "60", viewBox: "0 0 180 60", preserveAspectRatio: "none", children: [
16522
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: "180", height: "20", fill: "rgba(244, 67, 54, 0.2)" }),
16523
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "20", width: "180", height: "20", fill: "rgba(255, 152, 0, 0.15)" }),
16524
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "40", width: "180", height: "20", fill: "rgba(158, 158, 158, 0.15)" }),
16525
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "0", y1: "20", x2: "180", y2: "20", stroke: "rgba(255,255,255,0.1)", strokeWidth: "1" }),
16526
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "0", y1: "40", x2: "180", y2: "40", stroke: "rgba(255,255,255,0.1)", strokeWidth: "1" }),
16527
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "45", y1: "0", x2: "45", y2: "60", stroke: "rgba(255,255,255,0.05)", strokeWidth: "1" }),
16528
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "90", y1: "0", x2: "90", y2: "60", stroke: "rgba(255,255,255,0.05)", strokeWidth: "1" }),
16529
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "135", y1: "0", x2: "135", y2: "60", stroke: "rgba(255,255,255,0.05)", strokeWidth: "1" }),
16530
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M0,35 C10,30 20,25 30,20 C40,15 50,25 60,15 C70,30 80,10 90,25 C100,15 110,5 120,15 C130,10 140,20 150,5 C160,10 170,5 180,5", fill: "none", stroke: "#F44336", strokeWidth: "2" })
16531
- ] }),
16532
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { top: "3px" }, children: "Hot" }),
16533
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { top: "23px" }, children: "Warm" }),
16534
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { top: "43px" }, children: "Cold" }),
16535
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", left: 0 }, children: "2020" }),
16536
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", left: "45px" }, children: "2021" }),
16537
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", left: "90px" }, children: "2022" }),
16538
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", left: "135px" }, children: "2023" }),
16539
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", right: 0 }, children: "2025" })
16540
- ] })
16522
+ /* @__PURE__ */ jsxRuntime.jsx(PricingDetailLabel, { children: "Area Demand" }),
16523
+ /* @__PURE__ */ jsxRuntime.jsx(PricingDetailValue, { style: { color: "#F44336", marginBottom: "0.5rem" }, children: valSummary?.areaDemand ?? (valSummary ? "Hot" : /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { width: 60, height: 16 })) }),
16524
+ /* @__PURE__ */ jsxRuntime.jsxs(MiniChartContainer, { children: [
16525
+ /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "100%", height: "60", viewBox: "0 0 180 60", preserveAspectRatio: "none", children: [
16526
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: "180", height: "20", fill: "rgba(244, 67, 54, 0.2)" }),
16527
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "20", width: "180", height: "20", fill: "rgba(255, 152, 0, 0.15)" }),
16528
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "40", width: "180", height: "20", fill: "rgba(158, 158, 158, 0.15)" }),
16529
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "0", y1: "20", x2: "180", y2: "20", stroke: "rgba(255,255,255,0.1)", strokeWidth: "1" }),
16530
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "0", y1: "40", x2: "180", y2: "40", stroke: "rgba(255,255,255,0.1)", strokeWidth: "1" }),
16531
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M0,35 C10,30 20,25 30,20 C40,15 50,25 60,15 C70,30 80,10 90,25 C100,15 110,5 120,15 C130,10 140,20 150,5 C160,10 170,5 180,5", fill: "none", stroke: "#F44336", strokeWidth: "2" })
16532
+ ] }),
16533
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartLabel, { style: { top: "3px" }, children: "Hot" }),
16534
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartLabel, { style: { top: "23px" }, children: "Warm" }),
16535
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartLabel, { style: { top: "43px" }, children: "Cold" }),
16536
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartYearLabel, { style: { left: "0" }, children: "2020" }),
16537
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartYearLabel, { style: { left: "25%" }, children: "2021" }),
16538
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartYearLabel, { style: { left: "50%" }, children: "2022" }),
16539
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartYearLabel, { style: { left: "75%" }, children: "2023" }),
16540
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartYearLabel, { style: { right: "0", left: "auto" }, children: "2025" })
16541
16541
  ] })
16542
16542
  ] }),
16543
16543
  /* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetail, { children: [
16544
- /* @__PURE__ */ jsxRuntime.jsx(PropertyDetailLabel, { children: "Property Moat" }),
16545
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: [
16546
- /* @__PURE__ */ jsxRuntime.jsx(PricingDetailValue, { children: propertyMoatLabel }),
16547
- /* @__PURE__ */ jsxRuntime.jsxs(AreaDemandChart, { children: [
16548
- /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "100%", height: "60", viewBox: "0 0 180 60", preserveAspectRatio: "none", children: [
16549
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: "180", height: "20", fill: "rgba(0, 137, 123, 0.2)" }),
16550
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "20", width: "180", height: "20", fill: "rgba(102, 187, 106, 0.15)" }),
16551
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "40", width: "180", height: "20", fill: "rgba(200, 230, 201, 0.15)" }),
16552
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "0", y1: "20", x2: "180", y2: "20", stroke: "rgba(255,255,255,0.1)", strokeWidth: "1" }),
16553
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "0", y1: "40", x2: "180", y2: "40", stroke: "rgba(255,255,255,0.1)", strokeWidth: "1" }),
16554
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "45", y1: "0", x2: "45", y2: "60", stroke: "rgba(255,255,255,0.05)", strokeWidth: "1" }),
16555
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "90", y1: "0", x2: "90", y2: "60", stroke: "rgba(255,255,255,0.05)", strokeWidth: "1" }),
16556
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "135", y1: "0", x2: "135", y2: "60", stroke: "rgba(255,255,255,0.05)", strokeWidth: "1" }),
16557
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M0,15 C10,12 20,8 30,10 C40,5 50,12 60,8 C70,15 80,10 90,5 C100,12 110,8 120,15 C130,10 140,5 150,12 C160,8 170,10 180,5", fill: "none", stroke: "#00897B", strokeWidth: "2" })
16558
- ] }),
16559
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { top: "3px" }, children: "Wide Moat" }),
16560
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { top: "23px" }, children: "Narrow Moat" }),
16561
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { top: "43px" }, children: "No Moat" }),
16562
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", left: 0 }, children: "2020" }),
16563
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", left: "45px" }, children: "2021" }),
16564
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", left: "90px" }, children: "2022" }),
16565
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", left: "135px" }, children: "2023" }),
16566
- /* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", right: 0 }, children: "2025" })
16567
- ] })
16544
+ /* @__PURE__ */ jsxRuntime.jsx(PricingDetailLabel, { children: "Property Moat" }),
16545
+ /* @__PURE__ */ jsxRuntime.jsx(PricingDetailValue, { style: { color: "#00897B", marginBottom: "0.5rem" }, children: valSummary?.propertyMoat ?? (valSummary ? "Wide" : /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { width: 60, height: 16 })) }),
16546
+ /* @__PURE__ */ jsxRuntime.jsxs(MiniChartContainer, { children: [
16547
+ /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "100%", height: "60", viewBox: "0 0 180 60", preserveAspectRatio: "none", children: [
16548
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: "180", height: "20", fill: "rgba(0, 137, 123, 0.2)" }),
16549
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "20", width: "180", height: "20", fill: "rgba(102, 187, 106, 0.15)" }),
16550
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "40", width: "180", height: "20", fill: "rgba(200, 230, 201, 0.15)" }),
16551
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "0", y1: "20", x2: "180", y2: "20", stroke: "rgba(255,255,255,0.1)", strokeWidth: "1" }),
16552
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "0", y1: "40", x2: "180", y2: "40", stroke: "rgba(255,255,255,0.1)", strokeWidth: "1" }),
16553
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M0,15 C10,12 20,8 30,10 C40,5 50,12 60,8 C70,15 80,10 90,5 C100,12 110,8 120,15 C130,10 140,5 150,12 C160,8 170,10 180,5", fill: "none", stroke: "#00897B", strokeWidth: "2" })
16554
+ ] }),
16555
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartLabel, { style: { top: "3px" }, children: "Wide Moat" }),
16556
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartLabel, { style: { top: "23px" }, children: "Narrow Moat" }),
16557
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartLabel, { style: { top: "43px" }, children: "No Moat" }),
16558
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartYearLabel, { style: { left: "0" }, children: "2020" }),
16559
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartYearLabel, { style: { left: "25%" }, children: "2021" }),
16560
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartYearLabel, { style: { left: "50%" }, children: "2022" }),
16561
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartYearLabel, { style: { left: "75%" }, children: "2023" }),
16562
+ /* @__PURE__ */ jsxRuntime.jsx(MiniChartYearLabel, { style: { right: "0", left: "auto" }, children: "2025" })
16568
16563
  ] })
16569
16564
  ] })
16570
16565
  ] }),
16571
- /* @__PURE__ */ jsxRuntime.jsxs(ValuationIndicator, { className: "desktop-only-valuation", children: [
16566
+ /* @__PURE__ */ jsxRuntime.jsxs(ValuationIndicator, { children: [
16572
16567
  /* @__PURE__ */ jsxRuntime.jsxs(ValuationHeader, { children: [
16573
16568
  /* @__PURE__ */ jsxRuntime.jsx(ValuationTitle, { style: { color: "#4CAF50" }, children: "Undervalued" }),
16574
- /* @__PURE__ */ jsxRuntime.jsx(ValuationTitle, { style: { color: "var(--color-accent)" }, children: "Fair Value" }),
16569
+ /* @__PURE__ */ jsxRuntime.jsx(ValuationTitle, { style: { color: "#D4AF37" }, children: "Fair Value" }),
16575
16570
  /* @__PURE__ */ jsxRuntime.jsx(ValuationTitle, { style: { color: "#F44336" }, children: "Overvalued" })
16576
16571
  ] }),
16577
16572
  /* @__PURE__ */ jsxRuntime.jsxs(ValuationGauge, { children: [
16578
16573
  /* @__PURE__ */ jsxRuntime.jsx(GaugeBackground, {}),
16579
- /* @__PURE__ */ jsxRuntime.jsx(GaugeIndicator, { type: "fairValue", position: 50 }),
16580
- /* @__PURE__ */ jsxRuntime.jsxs(GaugePriceTag, { position: gaugePosition, children: [
16581
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Last Price" }),
16582
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: formatCurrency5(lastPrice) })
16583
- ] }),
16584
- /* @__PURE__ */ jsxRuntime.jsx(GaugeIndicator, { type: "lastPrice", position: gaugePosition })
16574
+ /* @__PURE__ */ jsxRuntime.jsx(GaugeIndicator, { $position: gaugePosition }),
16575
+ /* @__PURE__ */ jsxRuntime.jsxs(GaugePriceTag, { $position: gaugePosition, children: [
16576
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "IPO Price" }),
16577
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: "#D4AF37" }, children: tokenPriceValue != null ? `$${tokenPriceValue.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` : /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { width: 60, height: 12 }) })
16578
+ ] })
16585
16579
  ] }),
16586
16580
  /* @__PURE__ */ jsxRuntime.jsxs(ValuationDetails, { children: [
16587
- /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationValue, { style: { color: "#0ecb81" }, children: [
16581
+ /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsx(ValuationValue, { style: { color: "#4CAF50" }, children: valSummary?.undervaluedThreshold != null ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
16588
16582
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
16589
16583
  "< ",
16590
- formatCurrency5(undervaluedThreshold)
16584
+ `$${valSummary.undervaluedThreshold.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
16591
16585
  ] }),
16592
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16593
- "(",
16594
- formatMillions(undervaluedThreshold * tokensOutstanding),
16595
- ")"
16586
+ totalUnits > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "0.8rem", fontWeight: "normal", color: "rgba(255,255,255,0.6)" }, children: [
16587
+ "($",
16588
+ (valSummary.undervaluedThreshold * totalUnits / 1e6).toFixed(1),
16589
+ "m)"
16596
16590
  ] })
16597
- ] }) }),
16598
- /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationValue, { style: { color: "#f0b90b" }, children: [
16599
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: formatCurrency5(fairValue) }),
16600
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16601
- "(",
16602
- formatMillions(fairValue * tokensOutstanding),
16603
- ")"
16591
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { width: 90, height: 16 }) }) }),
16592
+ /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsx(ValuationValue, { style: { color: "#D4AF37" }, children: tokenPriceValue != null ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
16593
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: `$${tokenPriceValue.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` }),
16594
+ totalUnits > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "0.8rem", fontWeight: "normal", color: "rgba(255,255,255,0.6)" }, children: [
16595
+ "($",
16596
+ (tokenPriceValue * totalUnits / 1e6).toFixed(1),
16597
+ "m)"
16604
16598
  ] })
16605
- ] }) }),
16606
- /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationValue, { style: { color: "#f6465d" }, children: [
16599
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { width: 90, height: 16 }) }) }),
16600
+ /* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsx(ValuationValue, { style: { color: "#F44336" }, children: valSummary?.overvaluedThreshold != null ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
16607
16601
  /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
16608
16602
  "> ",
16609
- formatCurrency5(overvaluedThreshold)
16603
+ `$${valSummary.overvaluedThreshold.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
16610
16604
  ] }),
16611
- /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
16612
- "(",
16613
- formatMillions(overvaluedThreshold * tokensOutstanding),
16614
- ")"
16605
+ totalUnits > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "0.8rem", fontWeight: "normal", color: "rgba(255,255,255,0.6)" }, children: [
16606
+ "($",
16607
+ (valSummary.overvaluedThreshold * totalUnits / 1e6).toFixed(1),
16608
+ "m)"
16615
16609
  ] })
16616
- ] }) })
16617
- ] })
16618
- ] }),
16619
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "desktop-only-historical-chart", style: { marginBottom: "1rem", fontSize: "1.1rem", color: "#fff" }, children: "Historical Valuation" }),
16620
- /* @__PURE__ */ jsxRuntime.jsx(ChartContainer, { className: "desktop-only-historical-chart", children: /* @__PURE__ */ jsxRuntime.jsxs(ChartBackground, { children: [
16621
- axisLabels.map((label, index) => /* @__PURE__ */ jsxRuntime.jsx(YAxisLabel, { style: { top: `${10 + index * 22}%` }, children: label }, `${label}-${index}`)),
16622
- /* @__PURE__ */ jsxRuntime.jsxs(ValuationSvg, { viewBox: `0 0 ${CHART_WIDTH} ${CHART_HEIGHT}`, preserveAspectRatio: "none", children: [
16623
- valuationPath ? /* @__PURE__ */ jsxRuntime.jsx("path", { d: valuationPath, fill: "none", stroke: "#D4AF37", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) : null,
16624
- fairValuePath ? /* @__PURE__ */ jsxRuntime.jsx("path", { d: fairValuePath, fill: "none", stroke: "#FFFFFF", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) : null
16610
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { width: 90, height: 16 }) }) })
16625
16611
  ] })
16626
- ] }) })
16627
- ] })
16612
+ ] })
16613
+ ] }) })
16628
16614
  ] }),
16629
- /* @__PURE__ */ jsxRuntime.jsxs(RecentSalesSection, { children: [
16630
- /* @__PURE__ */ jsxRuntime.jsx(SectionSubheading, { children: "Recent Sales in Comparable Suburbs" }),
16631
- /* @__PURE__ */ jsxRuntime.jsxs(SwipeIndicator, { children: [
16632
- "Swipe to see more",
16633
- /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z" }) })
16615
+ /* @__PURE__ */ jsxRuntime.jsx(BlurredContent, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationSection, { children: [
16616
+ /* @__PURE__ */ jsxRuntime.jsxs(ValuationSectionTitle, { children: [
16617
+ "Returns Comparison (Modelled for ",
16618
+ propertyTitle,
16619
+ ")"
16634
16620
  ] }),
16635
- /* @__PURE__ */ jsxRuntime.jsx(SalesGrid, { children: recentSales.map((sale, index) => /* @__PURE__ */ jsxRuntime.jsxs(SaleCard, { children: [
16636
- /* @__PURE__ */ jsxRuntime.jsxs(SaleImageContainer, { children: [
16637
- /* @__PURE__ */ jsxRuntime.jsx(
16638
- SaleImage,
16621
+ /* @__PURE__ */ jsxRuntime.jsxs(MainChartContainer, { children: [
16622
+ /* @__PURE__ */ jsxRuntime.jsx(reactChartjs2.Line, { options: chartOptions, data: chartData }),
16623
+ /* @__PURE__ */ jsxRuntime.jsx(ChartOverlayTitle, { children: "20yr Performance (2006-2026)" }),
16624
+ /* @__PURE__ */ jsxRuntime.jsx(ChartLegendColumn, { children: musgraveComparisonData.datasets.map((dataset, i) => {
16625
+ const growth = (dataset.data[dataset.data.length - 1] - 100).toFixed(0);
16626
+ return /* @__PURE__ */ jsxRuntime.jsxs(ChartLegendItem, { style: { color: dataset.color }, children: [
16627
+ /* @__PURE__ */ jsxRuntime.jsx(ChartLegendDot, { style: { backgroundColor: dataset.color } }),
16628
+ dataset.name,
16629
+ " ",
16630
+ Number(growth) >= 0 ? "+" : "",
16631
+ growth,
16632
+ "%"
16633
+ ] }, i);
16634
+ }) })
16635
+ ] }),
16636
+ /* @__PURE__ */ jsxRuntime.jsxs(SaleHistoryBox, { children: [
16637
+ /* @__PURE__ */ jsxRuntime.jsx(SaleHistoryLabel, { children: "Sale History" }),
16638
+ /* @__PURE__ */ jsxRuntime.jsx(SaleHistoryGrid, { children: musgraveComparisonData.saleMarkers.map((marker, i) => {
16639
+ const displayPrice = marker.year === "2026" && offeringValuationValue ? `$${(offeringValuationValue / 1e6).toFixed(0)}M` : marker.price;
16640
+ return /* @__PURE__ */ jsxRuntime.jsxs(
16641
+ SaleHistoryItem,
16639
16642
  {
16640
- src: sale.imageUrl ?? "https://images.unsplash.com/photo-1505693314120-0d443867891c?auto=format&fit=crop&w=1200&q=80",
16641
- alt: sale.address ?? "Recent sale"
16642
- }
16643
- ),
16644
- /* @__PURE__ */ jsxRuntime.jsxs(SoldTag, { children: [
16645
- "SOLD",
16646
- /* @__PURE__ */ jsxRuntime.jsx(SoldIcon, {})
16647
- ] })
16648
- ] }),
16649
- /* @__PURE__ */ jsxRuntime.jsxs(SalePriceBar, { children: [
16650
- /* @__PURE__ */ jsxRuntime.jsxs(SalePriceLeft, { children: [
16651
- /* @__PURE__ */ jsxRuntime.jsx(SalePriceLabel, { children: "Sale Price" }),
16652
- /* @__PURE__ */ jsxRuntime.jsx(SalePriceAmount, { children: formatCurrency5(sale.price) })
16653
- ] }),
16654
- /* @__PURE__ */ jsxRuntime.jsx(SaleDate, { children: sale.saleDate ?? "\u2014" })
16655
- ] }),
16656
- /* @__PURE__ */ jsxRuntime.jsxs(SaleContent, { children: [
16657
- /* @__PURE__ */ jsxRuntime.jsx(SaleAddress, { children: sale.address ?? "Private Sale" }),
16658
- /* @__PURE__ */ jsxRuntime.jsx(SaleSuburb, { children: sale.suburb ?? "" })
16659
- ] }),
16660
- /* @__PURE__ */ jsxRuntime.jsxs(SaleStatsBar, { children: [
16661
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.75rem" }, children: [
16662
- /* @__PURE__ */ jsxRuntime.jsxs(SaleStatItem, { children: [
16663
- /* @__PURE__ */ jsxRuntime.jsx(BedIcon, {}),
16664
- formatBedroomLabel(sale.bedrooms)
16665
- ] }),
16666
- /* @__PURE__ */ jsxRuntime.jsxs(SaleStatItem, { children: [
16667
- /* @__PURE__ */ jsxRuntime.jsx(BathIcon, {}),
16668
- formatBathroomLabel(sale.bathrooms)
16669
- ] })
16670
- ] }),
16671
- /* @__PURE__ */ jsxRuntime.jsx(SaleStatItem, { style: { color: "var(--color-text-secondary)" }, children: sale.landSize ?? "\u2014" })
16672
- ] })
16673
- ] }, `${sale.address ?? sale.suburb ?? "sale"}-${index}`)) })
16674
- ] }),
16675
- loading ? /* @__PURE__ */ jsxRuntime.jsx(LoadingOverlay, { children: "Loading valuation data\u2026" }) : null,
16676
- error ? /* @__PURE__ */ jsxRuntime.jsx(ErrorMessage, { children: error }) : null
16643
+ onMouseEnter: () => handleMarkerEnter(marker.year),
16644
+ onMouseLeave: handleMarkerLeave,
16645
+ $active: hoveredSaleYear === marker.year,
16646
+ children: [
16647
+ /* @__PURE__ */ jsxRuntime.jsx(
16648
+ SaleHistoryDot,
16649
+ {
16650
+ $active: hoveredSaleYear === marker.year,
16651
+ style: {
16652
+ backgroundColor: marker.year === "2006" ? "#4CAF50" : marker.year === "2021" ? "#FF5722" : "#D4AF37",
16653
+ boxShadow: hoveredSaleYear === marker.year ? `0 0 12px ${marker.year === "2006" ? "#4CAF50" : marker.year === "2021" ? "#FF5722" : "#D4AF37"}` : "none"
16654
+ }
16655
+ }
16656
+ ),
16657
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
16658
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { fontSize: "0.8rem", fontWeight: "600", color: "var(--color-text, #f8f9fa)", marginBottom: "2px" }, children: [
16659
+ marker.year,
16660
+ ": ",
16661
+ marker.label,
16662
+ " \u2014 ",
16663
+ displayPrice
16664
+ ] }),
16665
+ marker.description && /* @__PURE__ */ jsxRuntime.jsx("div", { style: { fontSize: "0.7rem", color: "var(--color-text-secondary, #848e9c)", lineHeight: "1.3" }, children: marker.description })
16666
+ ] })
16667
+ ]
16668
+ },
16669
+ i
16670
+ );
16671
+ }) })
16672
+ ] }),
16673
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { fontSize: "0.8rem", color: "var(--color-text-secondary, #848e9c)", textAlign: "center", marginBottom: "0.5rem" }, children: "Mosman Heritage properties of this calibre are beyond scarce, and have consistently outperformed broader markets with lower volatility" }),
16674
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { fontSize: "0.65rem", color: "var(--color-text-secondary, #848e9c)", textAlign: "center", opacity: 0.7 }, children: "Sources: CoreLogic, Bloomberg, RBA" })
16675
+ ] }) })
16677
16676
  ] });
16678
16677
  }
16679
- function formatCurrency5(value, options) {
16680
- if (value == null || Number.isNaN(value)) {
16681
- return "\u2014";
16682
- }
16683
- const { minimumFractionDigits = 2, maximumFractionDigits = 2, ...rest } = options ?? {};
16684
- const minDigits = Math.max(0, Math.min(20, minimumFractionDigits));
16685
- const maxDigits = Math.max(minDigits, Math.min(20, maximumFractionDigits));
16686
- return value.toLocaleString("en-US", {
16687
- style: "currency",
16688
- currency: "USD",
16689
- minimumFractionDigits: minDigits,
16690
- maximumFractionDigits: maxDigits,
16691
- ...rest
16692
- });
16693
- }
16694
- function formatMillions(value) {
16695
- if (!Number.isFinite(value) || value === 0) {
16696
- return "$0m";
16697
- }
16698
- return `$${(value / 1e6).toFixed(2)}m`;
16699
- }
16700
- function formatBedroomLabel(bedrooms) {
16701
- if (!Number.isFinite(bedrooms)) return "\u2014";
16702
- return `${bedrooms} Bed`;
16703
- }
16704
- function formatBathroomLabel(bathrooms) {
16705
- if (!Number.isFinite(bathrooms)) return "\u2014";
16706
- return `${bathrooms} Bath`;
16707
- }
16708
- function buildChartPaths(history, fallbackValue) {
16709
- if (!history.length) {
16710
- return { valuationPath: null, fairValuePath: null, axisLabels: ["$0", "$0", "$0", "$0", "$0"] };
16711
- }
16712
- const values = history.map((point) => point.valuation);
16713
- const minValue = Math.min(...values);
16714
- const maxValue = Math.max(...values);
16715
- const minTime = Math.min(...history.map((point) => point.timestamp));
16716
- const maxTime = Math.max(...history.map((point) => point.timestamp));
16717
- const adjustedMinValue = minValue === maxValue ? minValue * 0.9 : minValue;
16718
- const adjustedMaxValue = minValue === maxValue ? maxValue * 1.1 : maxValue;
16719
- const valuationSegments = history.map((point, index) => {
16720
- const x = normalize(point.timestamp, minTime, maxTime, CHART_PADDING, CHART_WIDTH - CHART_PADDING);
16721
- const y = mapValueToY(point.valuation, adjustedMinValue, adjustedMaxValue);
16722
- return `${index === 0 ? "M" : "L"} ${x} ${y}`;
16723
- });
16724
- const fairValuePoints = history.filter((point) => Number.isFinite(point.fairValue));
16725
- const fairValueSegments = fairValuePoints.map((point, index) => {
16726
- const x = normalize(point.timestamp, minTime, maxTime, CHART_PADDING, CHART_WIDTH - CHART_PADDING);
16727
- const y = mapValueToY(point.fairValue ?? fallbackValue, adjustedMinValue, adjustedMaxValue);
16728
- return `${index === 0 ? "M" : "L"} ${x} ${y}`;
16729
- });
16730
- const axisLabels = buildAxisLabels(adjustedMinValue, adjustedMaxValue);
16731
- return {
16732
- valuationPath: valuationSegments.length > 1 ? valuationSegments.join(" ") : null,
16733
- fairValuePath: fairValueSegments.length > 1 ? fairValueSegments.join(" ") : null,
16734
- axisLabels
16735
- };
16736
- }
16737
- function normalize(value, min, max, targetMin, targetMax) {
16738
- if (max === min) return (targetMin + targetMax) / 2;
16739
- return targetMin + (value - min) / (max - min) * (targetMax - targetMin);
16740
- }
16741
- function mapValueToY(value, min, max) {
16742
- const normalized = normalize(value, min, max, 0, 1);
16743
- const clamped = Math.min(1, Math.max(0, normalized));
16744
- const drawableHeight = CHART_HEIGHT - CHART_PADDING * 2;
16745
- return CHART_PADDING + (1 - clamped) * drawableHeight;
16746
- }
16747
- function buildAxisLabels(min, max) {
16748
- const steps = 5;
16749
- const labels = [];
16750
- for (let i = 0; i < steps; i += 1) {
16751
- const ratio = i / (steps - 1);
16752
- const value = max - ratio * (max - min);
16753
- labels.push(formatCurrency5(value, { maximumFractionDigits: 0, minimumFractionDigits: 0 }));
16754
- }
16755
- return labels;
16756
- }
16757
- function calculatePositionFromPrice(price, undervaluedPrice, fairValue, overvaluedPrice) {
16758
- if (price <= undervaluedPrice) return 0;
16759
- if (price >= overvaluedPrice) return 100;
16760
- if (price < fairValue) {
16761
- return 50 * (price - undervaluedPrice) / (fairValue - undervaluedPrice);
16762
- }
16763
- return 50 + 50 * (price - fairValue) / (overvaluedPrice - fairValue);
16764
- }
16765
- var ValuationIndicator = styled9__default.default.div`
16766
- background-color: rgba(50, 52, 58, 0.95);
16767
- border-radius: 6px;
16768
- padding: 1rem;
16769
- margin-top: 1.5rem;
16770
- margin-bottom: 1.5rem;
16771
-
16772
- &.desktop-only-valuation {
16773
- @media (max-width: 480px) {
16774
- display: none;
16775
- }
16776
- }
16777
-
16778
- &.mobile-only-valuation {
16779
- display: none;
16780
- @media (max-width: 480px) {
16781
- display: block;
16782
- margin-top: 1rem;
16783
- margin-bottom: 1rem;
16784
- }
16785
- }
16786
- `;
16787
- var GaugeIndicator = styled9__default.default.div`
16788
- position: absolute;
16789
- left: ${(props) => props.position}%;
16790
- top: 0.35rem;
16791
- transform: translateX(-50%);
16792
- width: 3px;
16793
- height: 36px;
16794
- border-radius: 999px;
16795
- background: ${(props) => props.type === "fairValue" ? "#f0b90b" : "rgba(10, 12, 18, 0.95)"};
16796
- box-shadow: ${(props) => props.type === "lastPrice" ? "0 6px 18px rgba(0, 0, 0, 0.65)" : "0 6px 16px rgba(0, 0, 0, 0.45)"};
16678
+ var BlurredContent = styled9__default.default.div`
16679
+ filter: blur(8px);
16680
+ pointer-events: none;
16681
+ user-select: none;
16682
+ overflow: hidden;
16797
16683
  `;
16798
- var GaugePriceTag = styled9__default.default.div`
16799
- position: absolute;
16800
- left: ${(props) => props.position}%;
16801
- top: -46px;
16802
- transform: translateX(-50%);
16803
- background: rgba(7, 9, 13, 0.85);
16804
- border: 1px solid rgba(255, 255, 255, 0.1);
16805
- border-radius: 8px;
16806
- padding: 6px 10px;
16807
- font-size: 0.75rem;
16684
+ var ValuationHeading = styled9__default.default.h2`
16685
+ font-size: 1.4rem;
16686
+ font-weight: 600;
16808
16687
  color: #fff;
16809
- font-weight: 500;
16810
- display: flex;
16811
- flex-direction: column;
16812
- gap: 2px;
16813
- text-align: center;
16814
- backdrop-filter: blur(6px);
16688
+ margin: 0 0 1.5rem;
16815
16689
 
16816
- span:last-child {
16817
- font-size: 0.95em;
16818
- font-weight: 600;
16819
- letter-spacing: 0.2px;
16820
- color: var(--color-accent);
16821
- }
16822
- `;
16823
- var HiddenMobileChart = styled9__default.default.div`
16824
- display: none;
16825
16690
  @media (max-width: 480px) {
16826
- display: block;
16691
+ font-size: 1.15rem;
16692
+ margin-bottom: 1rem;
16827
16693
  }
16828
16694
  `;
16829
- var ValuationWrapper = styled9__default.default.div`
16830
- display: flex;
16831
- flex-direction: column;
16832
- gap: 2rem;
16833
- `;
16834
- var LoadingOverlay = styled9__default.default.div`
16835
- margin-top: 1rem;
16836
- padding: 0.75rem 1rem;
16837
- border-radius: 8px;
16838
- background: rgba(255, 255, 255, 0.05);
16839
- color: rgba(255, 255, 255, 0.8);
16840
- font-size: 0.9rem;
16841
- `;
16842
- var ErrorMessage = styled9__default.default.div`
16843
- margin-top: 1rem;
16844
- padding: 0.75rem 1rem;
16845
- border-radius: 8px;
16846
- background: rgba(244, 67, 54, 0.15);
16847
- color: #ff8a80;
16848
- font-size: 0.9rem;
16849
- border: 1px solid rgba(244, 67, 54, 0.4);
16850
- `;
16851
- var SectionTitle = styled9__default.default.h2`
16852
- margin: 0;
16853
- font-size: clamp(1.75rem, 2.5vw, 2.25rem);
16854
- font-weight: 600;
16855
- color: #fff;
16856
- letter-spacing: 0.01em;
16857
- `;
16858
16695
  var LoafPricingSection = styled9__default.default.div`
16859
16696
  background-color: rgba(30, 32, 38, 0.95);
16860
16697
  border-radius: 8px;
16861
16698
  padding: 1.25rem;
16862
16699
  margin-bottom: 1.5rem;
16863
- `;
16864
- var SectionSubheading = styled9__default.default.h2`
16865
- margin: 0;
16866
- font-size: 1.1rem;
16867
- font-weight: 600;
16868
- color: #fff;
16869
- letter-spacing: 0.02em;
16700
+
16701
+ @media (max-width: 768px) {
16702
+ padding: 1rem;
16703
+ overflow: hidden;
16704
+ }
16705
+
16706
+ @media (max-width: 480px) {
16707
+ padding: 0.75rem;
16708
+ border-radius: 6px;
16709
+ }
16870
16710
  `;
16871
16711
  var PricingModelCard = styled9__default.default.div`
16872
16712
  background-color: rgba(40, 42, 48, 0.95);
16873
16713
  border-radius: 8px;
16874
16714
  padding: 1.5rem;
16875
16715
  margin-top: 1rem;
16716
+
16717
+ @media (max-width: 768px) {
16718
+ padding: 1rem;
16719
+ }
16720
+
16721
+ @media (max-width: 480px) {
16722
+ padding: 0.75rem;
16723
+ }
16876
16724
  `;
16877
16725
  var PricingModelHeader = styled9__default.default.div`
16878
16726
  display: flex;
16879
16727
  justify-content: space-between;
16880
16728
  align-items: center;
16881
16729
  margin-bottom: 1.5rem;
16730
+ flex-wrap: wrap;
16882
16731
  gap: 1rem;
16883
16732
 
16884
- .valuation-info {
16885
- display: flex;
16733
+ @media (max-width: 480px) {
16886
16734
  flex-direction: column;
16887
- gap: 0.25rem;
16888
- font-size: 0.85rem;
16889
- color: rgba(255, 255, 255, 0.75);
16735
+ align-items: flex-start;
16736
+ gap: 0.5rem;
16737
+ margin-bottom: 1rem;
16890
16738
  }
16891
16739
  `;
16892
16740
  var PricingModelTitle = styled9__default.default.h3`
@@ -16894,14 +16742,9 @@ var PricingModelTitle = styled9__default.default.h3`
16894
16742
  font-size: 1.2rem;
16895
16743
  font-weight: 600;
16896
16744
  color: #fff;
16897
- `;
16898
- var PricingModelValue = styled9__default.default.div`
16899
- font-size: 1.4rem;
16900
- font-weight: 700;
16901
- color: var(--color-primary);
16902
16745
 
16903
- @media (max-width: 768px) {
16904
- font-size: 1.2rem;
16746
+ @media (max-width: 480px) {
16747
+ font-size: 1rem;
16905
16748
  }
16906
16749
  `;
16907
16750
  var PricingModelDetails = styled9__default.default.div`
@@ -16909,13 +16752,27 @@ var PricingModelDetails = styled9__default.default.div`
16909
16752
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
16910
16753
  gap: 1.5rem;
16911
16754
  margin-bottom: 1.5rem;
16755
+
16756
+ @media (max-width: 768px) {
16757
+ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
16758
+ gap: 1rem;
16759
+ }
16760
+
16761
+ @media (max-width: 480px) {
16762
+ grid-template-columns: 1fr;
16763
+ gap: 0.75rem;
16764
+ }
16912
16765
  `;
16913
16766
  var PricingModelDetail = styled9__default.default.div`
16914
16767
  background-color: rgba(50, 52, 58, 0.95);
16915
16768
  border-radius: 6px;
16916
16769
  padding: 1rem;
16770
+
16771
+ @media (max-width: 480px) {
16772
+ padding: 0.75rem;
16773
+ }
16917
16774
  `;
16918
- var PropertyDetailLabel = styled9__default.default.div`
16775
+ var PricingDetailLabel = styled9__default.default.div`
16919
16776
  font-size: 0.85rem;
16920
16777
  color: rgba(255, 255, 255, 0.7);
16921
16778
  margin-bottom: 0.5rem;
@@ -16925,6 +16782,35 @@ var PricingDetailValue = styled9__default.default.div`
16925
16782
  color: #fff;
16926
16783
  font-weight: 500;
16927
16784
  `;
16785
+ var MiniChartContainer = styled9__default.default.div`
16786
+ height: 60px;
16787
+ width: 100%;
16788
+ position: relative;
16789
+ margin-bottom: 15px;
16790
+ `;
16791
+ var MiniChartLabel = styled9__default.default.div`
16792
+ position: absolute;
16793
+ right: 5px;
16794
+ font-size: 9px;
16795
+ color: rgba(255, 255, 255, 0.7);
16796
+ `;
16797
+ var MiniChartYearLabel = styled9__default.default.div`
16798
+ position: absolute;
16799
+ bottom: -15px;
16800
+ font-size: 9px;
16801
+ color: rgba(255, 255, 255, 0.5);
16802
+ `;
16803
+ var ValuationIndicator = styled9__default.default.div`
16804
+ background-color: rgba(50, 52, 58, 0.95);
16805
+ border-radius: 6px;
16806
+ padding: 1rem;
16807
+ margin-top: 1.5rem;
16808
+ margin-bottom: 1.5rem;
16809
+
16810
+ @media (max-width: 480px) {
16811
+ padding: 0.75rem;
16812
+ }
16813
+ `;
16928
16814
  var ValuationHeader = styled9__default.default.div`
16929
16815
  display: flex;
16930
16816
  justify-content: space-between;
@@ -16932,277 +16818,219 @@ var ValuationHeader = styled9__default.default.div`
16932
16818
  `;
16933
16819
  var ValuationTitle = styled9__default.default.div`
16934
16820
  font-size: 0.9rem;
16935
- color: rgba(255, 255, 255, 0.7);
16821
+ font-weight: 500;
16822
+
16823
+ @media (max-width: 480px) {
16824
+ font-size: 0.75rem;
16825
+ }
16936
16826
  `;
16937
16827
  var ValuationGauge = styled9__default.default.div`
16938
16828
  position: relative;
16939
16829
  width: 100%;
16940
16830
  padding: 1.1rem 0 2rem;
16941
- margin: 0.75rem 0 1rem;
16942
16831
  `;
16943
16832
  var GaugeBackground = styled9__default.default.div`
16944
- width: 100%;
16945
- height: 18px;
16946
- border-radius: 999px;
16947
- background: linear-gradient(90deg, #0ecb81 0%, #4dd482 30%, #f8e36c 50%, #f98b6c 70%, #f6465d 100%);
16948
- position: relative;
16949
- overflow: hidden;
16950
- box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.35), 0 8px 18px rgba(0, 0, 0, 0.25);
16833
+ height: 8px;
16834
+ border-radius: 4px;
16835
+ background: linear-gradient(to right, #4CAF50 0%, #4CAF50 33%, #D4AF37 33%, #D4AF37 66%, #F44336 66%, #F44336 100%);
16836
+ `;
16837
+ var GaugeIndicator = styled9__default.default.div`
16838
+ position: absolute;
16839
+ top: 0;
16840
+ left: ${(props) => props.$position}%;
16841
+ transform: translateX(-50%);
16842
+ width: 3px;
16843
+ height: 30px;
16844
+ background: #D4AF37;
16845
+ border-radius: 2px;
16846
+ `;
16847
+ var GaugePriceTag = styled9__default.default.div`
16848
+ position: absolute;
16849
+ left: ${(props) => props.$position}%;
16850
+ top: -30px;
16851
+ transform: translateX(-50%);
16852
+ background: rgba(0, 0, 0, 0.8);
16853
+ padding: 4px 8px;
16854
+ border-radius: 4px;
16855
+ font-size: 0.75rem;
16856
+ white-space: nowrap;
16857
+ display: flex;
16858
+ flex-direction: column;
16859
+ align-items: center;
16860
+
16861
+ span:first-child {
16862
+ color: rgba(255, 255, 255, 0.5);
16863
+ font-size: 0.65rem;
16864
+ }
16865
+
16866
+ span:last-child {
16867
+ color: #fff;
16868
+ font-weight: 600;
16869
+ }
16951
16870
  `;
16952
16871
  var ValuationDetails = styled9__default.default.div`
16953
16872
  display: flex;
16954
16873
  justify-content: space-between;
16955
16874
  margin-top: 1rem;
16875
+
16876
+ @media (max-width: 480px) {
16877
+ gap: 0.25rem;
16878
+ }
16956
16879
  `;
16957
16880
  var ValuationItem = styled9__default.default.div`
16958
16881
  display: flex;
16959
16882
  flex-direction: column;
16883
+
16884
+ &:nth-child(2) {
16885
+ text-align: center;
16886
+ }
16887
+
16888
+ &:last-child {
16889
+ text-align: right;
16890
+ }
16960
16891
  `;
16961
16892
  var ValuationValue = styled9__default.default.div`
16962
16893
  font-size: 1rem;
16963
16894
  font-weight: 600;
16964
- color: #fff;
16965
- `;
16966
- var ChartContainer = styled9__default.default.div`
16967
- width: 100%;
16968
- height: 301.52px;
16969
- margin-top: 1.5rem;
16970
- background-color: rgba(50, 52, 58, 0.5);
16971
- border-radius: 6px;
16972
- padding: 1rem;
16973
- position: relative;
16974
- `;
16975
- var ChartBackground = styled9__default.default.div`
16976
- position: relative;
16977
- height: 100%;
16978
- width: 100%;
16979
- background: rgba(255, 255, 255, 0.03);
16980
- border-radius: 8px;
16981
- `;
16982
- var ValuationSvg = styled9__default.default.svg`
16983
- position: absolute;
16984
- top: 10px;
16985
- right: 0;
16986
- bottom: 25px;
16987
- left: 0;
16988
- overflow: visible;
16989
- width: 100%;
16990
- height: calc(100% - 35px);
16991
- `;
16992
- var YAxisLabel = styled9__default.default.div`
16993
- position: absolute;
16994
- left: -40px;
16995
- font-size: 10px;
16996
- color: rgba(255, 255, 255, 0.6);
16997
- text-align: right;
16998
- padding-right: 5px;
16999
- `;
17000
- var ValuationCallout = styled9__default.default.div`
17001
16895
  display: flex;
17002
- align-items: center;
17003
- justify-content: space-between;
17004
- background: linear-gradient(90deg, rgba(76, 175, 80, 0.05) 0%, rgba(76, 175, 80, 0.1) 100%);
17005
- border-radius: 8px;
17006
- padding: 10px 16px;
17007
- border: 1px solid rgba(76, 175, 80, 0.2);
17008
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
17009
- `;
17010
- var ValuationBadge = styled9__default.default.div`
17011
- background: linear-gradient(135deg, #4CAF50 0%, #45a049 100%);
17012
- color: white;
17013
- padding: 5px 12px;
17014
- border-radius: 20px;
17015
- font-size: 14px;
17016
- font-weight: 600;
17017
- box-shadow: 0 2px 4px rgba(76, 175, 80, 0.25);
17018
- `;
17019
- var AreaDemandChart = styled9__default.default.div`
17020
- height: 60px;
17021
- width: 100%;
17022
- position: relative;
17023
- `;
17024
- var ChartLabel = styled9__default.default.div`
17025
- position: absolute;
17026
- font-size: 9px;
17027
- color: rgba(255, 255, 255, 0.7);
17028
- `;
17029
- var RecentSalesSection = styled9__default.default.div`
17030
- background-color: rgba(30, 32, 38, 0.95);
17031
- border-radius: 8px;
17032
- padding: 1.25rem;
17033
- margin-bottom: 1.5rem;
16896
+ flex-direction: column;
16897
+ gap: 0.15rem;
17034
16898
 
17035
- @media (max-width: 768px) {
17036
- position: relative;
16899
+ @media (max-width: 480px) {
16900
+ font-size: 0.85rem;
17037
16901
  }
17038
16902
  `;
17039
- var SalesGrid = styled9__default.default.div`
17040
- display: grid;
17041
- grid-template-columns: repeat(3, 1fr);
17042
- gap: 1.5rem;
17043
- margin-top: 1rem;
16903
+ var ValuationSection = styled9__default.default.section`
16904
+ background-color: var(--color-card, rgba(30, 35, 41, 0.8));
16905
+ border-radius: 12px;
16906
+ padding: 1.5rem;
16907
+ margin-bottom: 1.5rem;
17044
16908
 
17045
16909
  @media (max-width: 768px) {
17046
- display: flex;
17047
- overflow-x: auto;
17048
- scroll-snap-type: x mandatory;
17049
- scroll-behavior: smooth;
17050
- -webkit-overflow-scrolling: touch;
17051
- gap: 1rem;
17052
- padding-bottom: 1rem;
17053
-
17054
- &::-webkit-scrollbar {
17055
- display: none;
17056
- }
17057
- scrollbar-width: none;
16910
+ overflow: hidden;
16911
+ box-sizing: border-box;
16912
+ padding: 1rem;
17058
16913
  }
17059
- `;
17060
- var SaleCard = styled9__default.default.div`
17061
- background-color: var(--color-card, #1e2329);
17062
- border-radius: var(--border-radius, 8px);
17063
- overflow: hidden;
17064
- transition: transform 0.2s ease, box-shadow 0.2s ease;
17065
- border: 1px solid rgba(255, 255, 255, 0.05);
17066
16914
 
17067
- &:hover {
17068
- transform: translateY(-4px);
17069
- box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
16915
+ @media (max-width: 480px) {
16916
+ padding: 0.75rem;
16917
+ border-radius: 8px;
17070
16918
  }
16919
+ `;
16920
+ var ValuationSectionTitle = styled9__default.default.h2`
16921
+ font-size: 0.9rem;
16922
+ font-weight: 600;
16923
+ padding-bottom: 0.75rem;
16924
+ margin-bottom: 1rem;
16925
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
16926
+ color: var(--color-text, #f8f9fa);
16927
+ display: flex;
16928
+ align-items: center;
16929
+ gap: 0.5rem;
16930
+ `;
16931
+ var MainChartContainer = styled9__default.default.div`
16932
+ position: relative;
16933
+ height: 450px;
16934
+ margin-bottom: 1rem;
17071
16935
 
17072
16936
  @media (max-width: 768px) {
17073
- min-width: 280px;
17074
- width: 85%;
17075
- scroll-snap-align: start;
17076
- flex-shrink: 0;
17077
- margin-right: 0.5rem;
17078
-
17079
- &:last-child {
17080
- margin-right: 1rem;
17081
- }
16937
+ height: 350px;
17082
16938
  }
17083
- `;
17084
- var SaleImageContainer = styled9__default.default.div`
17085
- position: relative;
17086
- width: 100%;
17087
- height: 200px;
17088
- overflow: hidden;
17089
- `;
17090
- var SaleImage = styled9__default.default.img`
17091
- width: 100%;
17092
- height: 100%;
17093
- object-fit: cover;
17094
- object-position: center;
17095
- transition: transform 0.3s ease;
17096
16939
 
17097
- ${SaleCard}:hover & {
17098
- transform: scale(1.05);
16940
+ @media (max-width: 480px) {
16941
+ height: 260px;
17099
16942
  }
17100
16943
  `;
17101
- var SoldTag = styled9__default.default.div`
16944
+ var ChartOverlayTitle = styled9__default.default.div`
17102
16945
  position: absolute;
17103
- top: 1rem;
17104
- right: 1rem;
17105
- background-color: var(--color-accent, #f0b90b);
17106
- color: var(--color-background, #0b0e11);
17107
- font-weight: 600;
17108
- font-size: 0.75rem;
17109
- padding: 0.25rem 0.5rem;
16946
+ left: 10px;
16947
+ top: 10px;
16948
+ font-size: 0.9rem;
16949
+ font-weight: 500;
16950
+ color: #f8f9fa;
16951
+ background-color: rgba(30, 32, 38, 0.7);
16952
+ padding: 2px 8px;
17110
16953
  border-radius: 4px;
17111
- display: flex;
17112
- align-items: center;
17113
- gap: 4px;
17114
- `;
17115
- var SoldIcon = styled9__default.default.div`
17116
- display: none;
17117
- `;
17118
- var SalePriceBar = styled9__default.default.div`
17119
- display: flex;
17120
- justify-content: space-between;
17121
- align-items: center;
17122
- padding: 0.75rem 1rem;
17123
- background: linear-gradient(90deg, rgba(240, 185, 11, 0.1) 0%, rgba(240, 185, 11, 0.05) 100%);
17124
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
16954
+ z-index: 10;
16955
+
16956
+ @media (max-width: 480px) {
16957
+ font-size: 0.7rem;
16958
+ padding: 2px 6px;
16959
+ }
17125
16960
  `;
17126
- var SalePriceLeft = styled9__default.default.div`
16961
+ var ChartLegendColumn = styled9__default.default.div`
16962
+ position: absolute;
16963
+ right: 10px;
16964
+ top: 40px;
17127
16965
  display: flex;
17128
16966
  flex-direction: column;
16967
+ gap: 6px;
16968
+ z-index: 10;
17129
16969
  `;
17130
- var SalePriceLabel = styled9__default.default.span`
16970
+ var ChartLegendItem = styled9__default.default.div`
17131
16971
  font-size: 0.7rem;
17132
- color: rgba(255, 255, 255, 0.5);
17133
- text-transform: uppercase;
17134
- letter-spacing: 0.5px;
16972
+ font-weight: 500;
16973
+ display: flex;
16974
+ align-items: center;
16975
+ background-color: rgba(30, 32, 38, 0.7);
16976
+ padding: 2px 6px;
16977
+ border-radius: 4px;
17135
16978
  `;
17136
- var SalePriceAmount = styled9__default.default.span`
17137
- font-size: 1.1rem;
17138
- font-weight: 700;
17139
- color: var(--color-accent, #f0b90b);
16979
+ var ChartLegendDot = styled9__default.default.span`
16980
+ display: inline-block;
16981
+ width: 8px;
16982
+ height: 8px;
16983
+ border-radius: 50%;
16984
+ margin-right: 6px;
16985
+ flex-shrink: 0;
17140
16986
  `;
17141
- var SaleContent = styled9__default.default.div`
17142
- padding: 1rem;
16987
+ var SaleHistoryBox = styled9__default.default.div`
16988
+ margin-bottom: 1rem;
16989
+ padding: 0.75rem;
16990
+ background: rgba(255, 255, 255, 0.03);
16991
+ border-radius: 8px;
16992
+ border: 1px solid rgba(255, 255, 255, 0.05);
17143
16993
  `;
17144
- var SaleAddress = styled9__default.default.h3`
17145
- margin: 0;
17146
- margin-bottom: 0.25rem;
17147
- font-size: 1rem;
16994
+ var SaleHistoryLabel = styled9__default.default.div`
16995
+ font-size: 0.7rem;
17148
16996
  font-weight: 600;
17149
- color: var(--color-text, #eaecef);
17150
- `;
17151
- var SaleSuburb = styled9__default.default.div`
17152
- font-size: 0.8rem;
17153
16997
  color: var(--color-text-secondary, #848e9c);
17154
- margin-bottom: 0.5rem;
17155
- `;
17156
- var SaleStatsBar = styled9__default.default.div`
17157
- display: flex;
17158
- justify-content: space-between;
17159
- align-items: center;
17160
- padding: 0.75rem 1rem;
17161
- background-color: rgba(0, 0, 0, 0.3);
17162
- border-top: 1px solid rgba(255, 255, 255, 0.05);
16998
+ text-transform: uppercase;
16999
+ letter-spacing: 0.1em;
17000
+ margin-bottom: 0.75rem;
17163
17001
  `;
17164
- var SaleStatItem = styled9__default.default.div`
17002
+ var SaleHistoryGrid = styled9__default.default.div`
17165
17003
  display: flex;
17166
- align-items: center;
17167
- gap: 0.25rem;
17168
- font-size: 0.8rem;
17169
- color: var(--color-text-secondary, #848e9c);
17004
+ flex-wrap: wrap;
17005
+ gap: 1rem;
17170
17006
 
17171
- svg {
17172
- width: 14px;
17173
- height: 14px;
17174
- opacity: 0.7;
17007
+ @media (max-width: 480px) {
17008
+ flex-direction: column;
17009
+ gap: 0.75rem;
17175
17010
  }
17176
17011
  `;
17177
- var SaleDate = styled9__default.default.div`
17178
- font-size: 0.75rem;
17179
- color: var(--color-text-secondary, #848e9c);
17180
- `;
17181
- var SwipeIndicator = styled9__default.default.div`
17182
- display: none;
17183
-
17184
- @media (max-width: 768px) {
17185
- display: flex;
17186
- align-items: center;
17187
- justify-content: center;
17188
- margin-top: 0.75rem;
17189
- color: rgba(255, 255, 255, 0.6);
17190
- font-size: 0.8rem;
17191
-
17192
- svg {
17193
- margin-left: 0.25rem;
17194
- animation: swipeAnimation 1.5s infinite;
17195
- }
17012
+ var SaleHistoryItem = styled9__default.default.div`
17013
+ display: flex;
17014
+ align-items: flex-start;
17015
+ gap: 0.5rem;
17016
+ flex: 1 1 200px;
17017
+ transition: transform 0.2s ease;
17018
+ transform: ${(props) => props.$active ? "scale(1.05)" : "scale(1)"};
17019
+ cursor: pointer;
17196
17020
 
17197
- @keyframes swipeAnimation {
17198
- 0% { transform: translateX(0); }
17199
- 50% { transform: translateX(5px); }
17200
- 100% { transform: translateX(0); }
17201
- }
17021
+ @media (max-width: 480px) {
17022
+ flex: 1 1 auto;
17202
17023
  }
17203
17024
  `;
17204
- var BedIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7 14c1.66 0 3-1.34 3-3S8.66 8 7 8s-3 1.34-3 3 1.34 3 3 3zm0-4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm12-3h-8v8H3V5H1v15h2v-3h18v3h2v-9c0-2.21-1.79-4-4-4zm2 8h-8V9h6c1.1 0 2 .9 2 2v4z" }) });
17205
- var BathIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7 7c0-1.1.9-2 2-2s2 .9 2 2-.9 2-2 2-2-.9-2-2zm5 14H4v-2c0-2.21 1.79-4 4-4h2c2.21 0 4 1.79 4 4v2zm6-8h-2v-2h-2v2h-2v2h2v2h2v-2h2v-2z" }) });
17025
+ var SaleHistoryDot = styled9__default.default.div`
17026
+ width: ${(props) => props.$active ? "16px" : "12px"};
17027
+ height: ${(props) => props.$active ? "16px" : "12px"};
17028
+ border-radius: 50%;
17029
+ border: ${(props) => props.$active ? "3px solid #fff" : "2px solid #fff"};
17030
+ flex-shrink: 0;
17031
+ margin-top: 2px;
17032
+ transition: all 0.2s ease;
17033
+ `;
17206
17034
  var fadeIn = styled9.keyframes`
17207
17035
  from { opacity: 0; }
17208
17036
  to { opacity: 1; }