@loafmarkets/ui 0.1.360 → 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.d.mts +18 -39
- package/dist/index.d.ts +18 -39
- package/dist/index.js +565 -738
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +565 -738
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -1
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:
|
|
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:
|
|
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:
|
|
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
|
|
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:
|
|
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,25 +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.
|
|
9180
|
-
|
|
9181
|
-
|
|
9182
|
-
{
|
|
9183
|
-
|
|
9184
|
-
|
|
9185
|
-
|
|
9186
|
-
|
|
9187
|
-
|
|
9188
|
-
|
|
9189
|
-
|
|
9190
|
-
|
|
9191
|
-
|
|
9192
|
-
|
|
9193
|
-
|
|
9194
|
-
|
|
9195
|
-
|
|
9196
|
-
] }, i)) })
|
|
9197
|
-
] }),
|
|
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
|
+
) }),
|
|
9198
9200
|
/* @__PURE__ */ jsxRuntime.jsxs(StatsColumn, { children: [
|
|
9199
9201
|
/* @__PURE__ */ jsxRuntime.jsx(StatsColumnHeader, { children: "Asset Specification" }),
|
|
9200
9202
|
/* @__PURE__ */ jsxRuntime.jsxs(StatRow, { children: [
|
|
@@ -16326,568 +16328,413 @@ var ActionButton = styled9__default.default.button`
|
|
|
16326
16328
|
color: ${({ $variant }) => $variant === "danger" ? "#ff8f8f" : "#f4d07f"};
|
|
16327
16329
|
}
|
|
16328
16330
|
`;
|
|
16329
|
-
|
|
16330
|
-
var
|
|
16331
|
-
|
|
16332
|
-
|
|
16333
|
-
|
|
16334
|
-
|
|
16335
|
-
|
|
16336
|
-
|
|
16337
|
-
|
|
16338
|
-
|
|
16339
|
-
|
|
16340
|
-
|
|
16341
|
-
|
|
16342
|
-
|
|
16343
|
-
|
|
16344
|
-
|
|
16345
|
-
|
|
16346
|
-
|
|
16347
|
-
|
|
16348
|
-
|
|
16349
|
-
|
|
16350
|
-
|
|
16351
|
-
|
|
16352
|
-
|
|
16353
|
-
|
|
16354
|
-
|
|
16355
|
-
price: 1325e4,
|
|
16356
|
-
saleDate: "Jun 2024",
|
|
16357
|
-
address: "18 Olola Avenue",
|
|
16358
|
-
suburb: "Vaucluse",
|
|
16359
|
-
bedrooms: 4,
|
|
16360
|
-
bathrooms: 3,
|
|
16361
|
-
landSize: "860 sqm"
|
|
16362
|
-
}
|
|
16363
|
-
];
|
|
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
|
+
};
|
|
16364
16357
|
function PropertyValuation({
|
|
16365
|
-
|
|
16366
|
-
|
|
16367
|
-
|
|
16368
|
-
|
|
16369
|
-
|
|
16370
|
-
loading = false,
|
|
16371
|
-
error = null
|
|
16358
|
+
propertyTitle,
|
|
16359
|
+
tokenPriceValue,
|
|
16360
|
+
valSummary,
|
|
16361
|
+
offeringValuationValue,
|
|
16362
|
+
totalUnits
|
|
16372
16363
|
}) {
|
|
16373
|
-
const
|
|
16374
|
-
const
|
|
16375
|
-
const
|
|
16376
|
-
|
|
16377
|
-
|
|
16378
|
-
|
|
16379
|
-
|
|
16380
|
-
|
|
16381
|
-
const fairValue = React5.useMemo(() => {
|
|
16382
|
-
if (summary?.fairValue && summary.fairValue > 0) {
|
|
16383
|
-
return summary.fairValue;
|
|
16384
|
-
}
|
|
16385
|
-
return lastPrice || 1;
|
|
16386
|
-
}, [summary, lastPrice]);
|
|
16387
|
-
const tokensOutstanding = React5.useMemo(() => {
|
|
16388
|
-
if (summary?.totalTokens && summary.totalTokens > 0) {
|
|
16389
|
-
return summary.totalTokens;
|
|
16390
|
-
}
|
|
16391
|
-
if (totalTokens && totalTokens > 0) {
|
|
16392
|
-
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));
|
|
16393
16372
|
}
|
|
16394
|
-
return
|
|
16395
|
-
}, [
|
|
16396
|
-
const
|
|
16397
|
-
|
|
16398
|
-
|
|
16399
|
-
|
|
16400
|
-
|
|
16401
|
-
|
|
16402
|
-
|
|
16403
|
-
|
|
16404
|
-
|
|
16405
|
-
|
|
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
|
+
}
|
|
16406
16416
|
}
|
|
16407
|
-
|
|
16408
|
-
|
|
16409
|
-
|
|
16410
|
-
|
|
16411
|
-
|
|
16412
|
-
|
|
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" }),
|
|
16413
16463
|
/* @__PURE__ */ jsxRuntime.jsxs(LoafPricingSection, { children: [
|
|
16414
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16415
|
-
/* @__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: [
|
|
16416
16466
|
/* @__PURE__ */ jsxRuntime.jsxs(PricingModelHeader, { children: [
|
|
16417
|
-
/* @__PURE__ */ jsxRuntime.jsx(PricingModelTitle, { children:
|
|
16418
|
-
/* @__PURE__ */ jsxRuntime.
|
|
16419
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { children: "Valuation as of" }),
|
|
16420
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
16421
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
16422
|
-
|
|
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" }),
|
|
16423
16473
|
" AEST"
|
|
16424
16474
|
] })
|
|
16425
|
-
] })
|
|
16475
|
+
] })
|
|
16426
16476
|
] }),
|
|
16427
16477
|
/* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetails, { children: [
|
|
16428
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
16429
|
-
/* @__PURE__ */ jsxRuntime.
|
|
16430
|
-
|
|
16431
|
-
/* @__PURE__ */ jsxRuntime.jsx(PricingDetailValue, { children: formatCurrency5(lastPrice) })
|
|
16432
|
-
] }),
|
|
16433
|
-
/* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetail, { children: [
|
|
16434
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", width: "100%" }, children: [
|
|
16435
|
-
/* @__PURE__ */ jsxRuntime.jsx(PropertyDetailLabel, { children: "Fair Value" }),
|
|
16436
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "0.75rem", color: "#4CAF50", fontWeight: "bold" }, children: [
|
|
16437
|
-
"Confidence: ",
|
|
16438
|
-
summary?.confidence ?? "High"
|
|
16439
|
-
] })
|
|
16440
|
-
] }),
|
|
16441
|
-
/* @__PURE__ */ jsxRuntime.jsxs(PricingDetailValue, { style: { color: "var(--color-accent)", fontWeight: "bold" }, children: [
|
|
16442
|
-
formatCurrency5(fairValue),
|
|
16443
|
-
" ",
|
|
16444
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: "0.85em", fontWeight: "normal", opacity: 0.8 }, children: [
|
|
16445
|
-
"(",
|
|
16446
|
-
formatCurrency5(fairValue * tokensOutstanding, { maximumFractionDigits: 0 }),
|
|
16447
|
-
")"
|
|
16448
|
-
] })
|
|
16449
|
-
] })
|
|
16450
|
-
] })
|
|
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 }) })
|
|
16451
16481
|
] }),
|
|
16452
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
16453
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
16454
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16455
|
-
/* @__PURE__ */ jsxRuntime.
|
|
16456
|
-
|
|
16457
|
-
|
|
16458
|
-
|
|
16459
|
-
/* @__PURE__ */ jsxRuntime.jsx(GaugeBackground, {}),
|
|
16460
|
-
/* @__PURE__ */ jsxRuntime.jsx(GaugeIndicator, { type: "fairValue", position: 50 }),
|
|
16461
|
-
/* @__PURE__ */ jsxRuntime.jsxs(GaugePriceTag, { position: gaugePosition, children: [
|
|
16462
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Last Price" }),
|
|
16463
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: formatCurrency5(lastPrice) })
|
|
16464
|
-
] }),
|
|
16465
|
-
/* @__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
|
+
] })
|
|
16466
16489
|
] }),
|
|
16467
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
16468
|
-
|
|
16469
|
-
|
|
16470
|
-
|
|
16471
|
-
|
|
16472
|
-
|
|
16473
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
|
|
16474
|
-
"(",
|
|
16475
|
-
formatMillions(undervaluedThreshold * tokensOutstanding),
|
|
16476
|
-
")"
|
|
16477
|
-
] })
|
|
16478
|
-
] }) }),
|
|
16479
|
-
/* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationValue, { style: { color: "var(--color-accent)" }, children: [
|
|
16480
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: formatCurrency5(fairValue) }),
|
|
16481
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
|
|
16482
|
-
"(",
|
|
16483
|
-
formatMillions(fairValue * tokensOutstanding),
|
|
16484
|
-
")"
|
|
16485
|
-
] })
|
|
16486
|
-
] }) }),
|
|
16487
|
-
/* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsxs(ValuationValue, { style: { color: "#F44336" }, children: [
|
|
16488
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
16489
|
-
"> ",
|
|
16490
|
-
formatCurrency5(overvaluedThreshold)
|
|
16491
|
-
] }),
|
|
16492
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "valuation-amount-span", style: { fontSize: "0.8rem", fontWeight: "normal" }, children: [
|
|
16493
|
-
"(",
|
|
16494
|
-
formatMillions(overvaluedThreshold * tokensOutstanding),
|
|
16495
|
-
")"
|
|
16496
|
-
] })
|
|
16497
|
-
] }) })
|
|
16498
|
-
] })
|
|
16499
|
-
] }),
|
|
16500
|
-
/* @__PURE__ */ jsxRuntime.jsxs(HiddenMobileChart, { children: [
|
|
16501
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { style: { marginBottom: "1rem", fontSize: "1.1rem", color: "#fff" }, children: "Historical Valuation" }),
|
|
16502
|
-
/* @__PURE__ */ jsxRuntime.jsx(ChartContainer, { children: /* @__PURE__ */ jsxRuntime.jsxs(ChartBackground, { children: [
|
|
16503
|
-
axisLabels.map((label, index) => /* @__PURE__ */ jsxRuntime.jsx(YAxisLabel, { style: { top: `${10 + index * 22}%` }, children: label }, `${label}-${index}`)),
|
|
16504
|
-
/* @__PURE__ */ jsxRuntime.jsxs(ValuationSvg, { viewBox: `0 0 ${CHART_WIDTH} ${CHART_HEIGHT}`, preserveAspectRatio: "none", children: [
|
|
16505
|
-
valuationPath ? /* @__PURE__ */ jsxRuntime.jsx("path", { d: valuationPath, fill: "none", stroke: "#D4AF37", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) : null,
|
|
16506
|
-
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
|
+
")"
|
|
16507
16496
|
] })
|
|
16508
|
-
] }) })
|
|
16497
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { width: 140, height: 18 }) })
|
|
16509
16498
|
] }),
|
|
16510
16499
|
/* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetail, { children: [
|
|
16511
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16512
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
16513
|
-
|
|
16514
|
-
|
|
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 }) })
|
|
16515
16519
|
] })
|
|
16516
16520
|
] }),
|
|
16517
16521
|
/* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetail, { children: [
|
|
16518
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16519
|
-
/* @__PURE__ */ jsxRuntime.
|
|
16520
|
-
|
|
16521
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
16522
|
-
/* @__PURE__ */ jsxRuntime.
|
|
16523
|
-
|
|
16524
|
-
|
|
16525
|
-
|
|
16526
|
-
|
|
16527
|
-
|
|
16528
|
-
|
|
16529
|
-
|
|
16530
|
-
|
|
16531
|
-
|
|
16532
|
-
|
|
16533
|
-
|
|
16534
|
-
|
|
16535
|
-
|
|
16536
|
-
|
|
16537
|
-
/* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", left: "45px" }, children: "2021" }),
|
|
16538
|
-
/* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", left: "90px" }, children: "2022" }),
|
|
16539
|
-
/* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", left: "135px" }, children: "2023" }),
|
|
16540
|
-
/* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", right: 0 }, children: "2025" })
|
|
16541
|
-
] })
|
|
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" })
|
|
16542
16541
|
] })
|
|
16543
16542
|
] }),
|
|
16544
16543
|
/* @__PURE__ */ jsxRuntime.jsxs(PricingModelDetail, { children: [
|
|
16545
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16546
|
-
/* @__PURE__ */ jsxRuntime.
|
|
16547
|
-
|
|
16548
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
16549
|
-
/* @__PURE__ */ jsxRuntime.
|
|
16550
|
-
|
|
16551
|
-
|
|
16552
|
-
|
|
16553
|
-
|
|
16554
|
-
|
|
16555
|
-
|
|
16556
|
-
|
|
16557
|
-
|
|
16558
|
-
|
|
16559
|
-
|
|
16560
|
-
|
|
16561
|
-
|
|
16562
|
-
|
|
16563
|
-
|
|
16564
|
-
/* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", left: "45px" }, children: "2021" }),
|
|
16565
|
-
/* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", left: "90px" }, children: "2022" }),
|
|
16566
|
-
/* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", left: "135px" }, children: "2023" }),
|
|
16567
|
-
/* @__PURE__ */ jsxRuntime.jsx(ChartLabel, { style: { bottom: "-15px", right: 0 }, children: "2025" })
|
|
16568
|
-
] })
|
|
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" })
|
|
16569
16563
|
] })
|
|
16570
16564
|
] })
|
|
16571
16565
|
] }),
|
|
16572
|
-
/* @__PURE__ */ jsxRuntime.jsxs(ValuationIndicator, {
|
|
16566
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ValuationIndicator, { children: [
|
|
16573
16567
|
/* @__PURE__ */ jsxRuntime.jsxs(ValuationHeader, { children: [
|
|
16574
16568
|
/* @__PURE__ */ jsxRuntime.jsx(ValuationTitle, { style: { color: "#4CAF50" }, children: "Undervalued" }),
|
|
16575
|
-
/* @__PURE__ */ jsxRuntime.jsx(ValuationTitle, { style: { color: "
|
|
16569
|
+
/* @__PURE__ */ jsxRuntime.jsx(ValuationTitle, { style: { color: "#D4AF37" }, children: "Fair Value" }),
|
|
16576
16570
|
/* @__PURE__ */ jsxRuntime.jsx(ValuationTitle, { style: { color: "#F44336" }, children: "Overvalued" })
|
|
16577
16571
|
] }),
|
|
16578
16572
|
/* @__PURE__ */ jsxRuntime.jsxs(ValuationGauge, { children: [
|
|
16579
16573
|
/* @__PURE__ */ jsxRuntime.jsx(GaugeBackground, {}),
|
|
16580
|
-
/* @__PURE__ */ jsxRuntime.jsx(GaugeIndicator, {
|
|
16581
|
-
/* @__PURE__ */ jsxRuntime.jsxs(GaugePriceTag, { position: gaugePosition, children: [
|
|
16582
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "
|
|
16583
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children:
|
|
16584
|
-
] })
|
|
16585
|
-
/* @__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
|
+
] })
|
|
16586
16579
|
] }),
|
|
16587
16580
|
/* @__PURE__ */ jsxRuntime.jsxs(ValuationDetails, { children: [
|
|
16588
|
-
/* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.
|
|
16581
|
+
/* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.jsx(ValuationValue, { style: { color: "#4CAF50" }, children: valSummary?.undervaluedThreshold != null ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
16589
16582
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
16590
16583
|
"< ",
|
|
16591
|
-
|
|
16584
|
+
`$${valSummary.undervaluedThreshold.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
|
|
16592
16585
|
] }),
|
|
16593
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", {
|
|
16594
|
-
"(",
|
|
16595
|
-
|
|
16596
|
-
")"
|
|
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)"
|
|
16597
16590
|
] })
|
|
16598
|
-
] }) }),
|
|
16599
|
-
/* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.
|
|
16600
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children:
|
|
16601
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", {
|
|
16602
|
-
"(",
|
|
16603
|
-
|
|
16604
|
-
")"
|
|
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)"
|
|
16605
16598
|
] })
|
|
16606
|
-
] }) }),
|
|
16607
|
-
/* @__PURE__ */ jsxRuntime.jsx(ValuationItem, { children: /* @__PURE__ */ jsxRuntime.
|
|
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: [
|
|
16608
16601
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
16609
16602
|
"> ",
|
|
16610
|
-
|
|
16603
|
+
`$${valSummary.overvaluedThreshold.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
|
|
16611
16604
|
] }),
|
|
16612
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", {
|
|
16613
|
-
"(",
|
|
16614
|
-
|
|
16615
|
-
")"
|
|
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)"
|
|
16616
16609
|
] })
|
|
16617
|
-
] }) })
|
|
16618
|
-
] })
|
|
16619
|
-
] }),
|
|
16620
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "desktop-only-historical-chart", style: { marginBottom: "1rem", fontSize: "1.1rem", color: "#fff" }, children: "Historical Valuation" }),
|
|
16621
|
-
/* @__PURE__ */ jsxRuntime.jsx(ChartContainer, { className: "desktop-only-historical-chart", children: /* @__PURE__ */ jsxRuntime.jsxs(ChartBackground, { children: [
|
|
16622
|
-
axisLabels.map((label, index) => /* @__PURE__ */ jsxRuntime.jsx(YAxisLabel, { style: { top: `${10 + index * 22}%` }, children: label }, `${label}-${index}`)),
|
|
16623
|
-
/* @__PURE__ */ jsxRuntime.jsxs(ValuationSvg, { viewBox: `0 0 ${CHART_WIDTH} ${CHART_HEIGHT}`, preserveAspectRatio: "none", children: [
|
|
16624
|
-
valuationPath ? /* @__PURE__ */ jsxRuntime.jsx("path", { d: valuationPath, fill: "none", stroke: "#D4AF37", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", vectorEffect: "non-scaling-stroke" }) : null,
|
|
16625
|
-
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 }) }) })
|
|
16626
16611
|
] })
|
|
16627
|
-
] })
|
|
16628
|
-
] })
|
|
16612
|
+
] })
|
|
16613
|
+
] }) })
|
|
16629
16614
|
] }),
|
|
16630
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
16631
|
-
/* @__PURE__ */ jsxRuntime.
|
|
16632
|
-
|
|
16633
|
-
|
|
16634
|
-
|
|
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
|
+
")"
|
|
16635
16620
|
] }),
|
|
16636
|
-
/* @__PURE__ */ jsxRuntime.
|
|
16637
|
-
/* @__PURE__ */ jsxRuntime.
|
|
16638
|
-
|
|
16639
|
-
|
|
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,
|
|
16640
16642
|
{
|
|
16641
|
-
|
|
16642
|
-
|
|
16643
|
-
|
|
16644
|
-
|
|
16645
|
-
|
|
16646
|
-
|
|
16647
|
-
|
|
16648
|
-
|
|
16649
|
-
|
|
16650
|
-
|
|
16651
|
-
|
|
16652
|
-
|
|
16653
|
-
|
|
16654
|
-
|
|
16655
|
-
|
|
16656
|
-
|
|
16657
|
-
|
|
16658
|
-
|
|
16659
|
-
|
|
16660
|
-
|
|
16661
|
-
|
|
16662
|
-
|
|
16663
|
-
|
|
16664
|
-
|
|
16665
|
-
|
|
16666
|
-
|
|
16667
|
-
|
|
16668
|
-
|
|
16669
|
-
|
|
16670
|
-
|
|
16671
|
-
|
|
16672
|
-
|
|
16673
|
-
|
|
16674
|
-
] }, `${sale.address ?? sale.suburb ?? "sale"}-${index}`)) })
|
|
16675
|
-
] }),
|
|
16676
|
-
loading ? /* @__PURE__ */ jsxRuntime.jsx(LoadingOverlay, { children: "Loading valuation data\u2026" }) : null,
|
|
16677
|
-
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
|
+
] }) })
|
|
16678
16676
|
] });
|
|
16679
16677
|
}
|
|
16680
|
-
|
|
16681
|
-
|
|
16682
|
-
|
|
16683
|
-
|
|
16684
|
-
|
|
16685
|
-
const minDigits = Math.max(0, Math.min(20, minimumFractionDigits));
|
|
16686
|
-
const maxDigits = Math.max(minDigits, Math.min(20, maximumFractionDigits));
|
|
16687
|
-
return value.toLocaleString("en-US", {
|
|
16688
|
-
style: "currency",
|
|
16689
|
-
currency: "USD",
|
|
16690
|
-
minimumFractionDigits: minDigits,
|
|
16691
|
-
maximumFractionDigits: maxDigits,
|
|
16692
|
-
...rest
|
|
16693
|
-
});
|
|
16694
|
-
}
|
|
16695
|
-
function formatMillions(value) {
|
|
16696
|
-
if (!Number.isFinite(value) || value === 0) {
|
|
16697
|
-
return "$0m";
|
|
16698
|
-
}
|
|
16699
|
-
return `$${(value / 1e6).toFixed(2)}m`;
|
|
16700
|
-
}
|
|
16701
|
-
function formatBedroomLabel(bedrooms) {
|
|
16702
|
-
if (!Number.isFinite(bedrooms)) return "\u2014";
|
|
16703
|
-
return `${bedrooms} Bed`;
|
|
16704
|
-
}
|
|
16705
|
-
function formatBathroomLabel(bathrooms) {
|
|
16706
|
-
if (!Number.isFinite(bathrooms)) return "\u2014";
|
|
16707
|
-
return `${bathrooms} Bath`;
|
|
16708
|
-
}
|
|
16709
|
-
function buildChartPaths(history, fallbackValue) {
|
|
16710
|
-
if (!history.length) {
|
|
16711
|
-
return { valuationPath: null, fairValuePath: null, axisLabels: ["$0", "$0", "$0", "$0", "$0"] };
|
|
16712
|
-
}
|
|
16713
|
-
const values = history.map((point) => point.valuation);
|
|
16714
|
-
const minValue = Math.min(...values);
|
|
16715
|
-
const maxValue = Math.max(...values);
|
|
16716
|
-
const minTime = Math.min(...history.map((point) => point.timestamp));
|
|
16717
|
-
const maxTime = Math.max(...history.map((point) => point.timestamp));
|
|
16718
|
-
const adjustedMinValue = minValue === maxValue ? minValue * 0.9 : minValue;
|
|
16719
|
-
const adjustedMaxValue = minValue === maxValue ? maxValue * 1.1 : maxValue;
|
|
16720
|
-
const valuationSegments = history.map((point, index) => {
|
|
16721
|
-
const x = normalize(point.timestamp, minTime, maxTime, CHART_PADDING, CHART_WIDTH - CHART_PADDING);
|
|
16722
|
-
const y = mapValueToY(point.valuation, adjustedMinValue, adjustedMaxValue);
|
|
16723
|
-
return `${index === 0 ? "M" : "L"} ${x} ${y}`;
|
|
16724
|
-
});
|
|
16725
|
-
const fairValuePoints = history.filter((point) => Number.isFinite(point.fairValue));
|
|
16726
|
-
const fairValueSegments = fairValuePoints.map((point, index) => {
|
|
16727
|
-
const x = normalize(point.timestamp, minTime, maxTime, CHART_PADDING, CHART_WIDTH - CHART_PADDING);
|
|
16728
|
-
const y = mapValueToY(point.fairValue ?? fallbackValue, adjustedMinValue, adjustedMaxValue);
|
|
16729
|
-
return `${index === 0 ? "M" : "L"} ${x} ${y}`;
|
|
16730
|
-
});
|
|
16731
|
-
const axisLabels = buildAxisLabels(adjustedMinValue, adjustedMaxValue);
|
|
16732
|
-
return {
|
|
16733
|
-
valuationPath: valuationSegments.length > 1 ? valuationSegments.join(" ") : null,
|
|
16734
|
-
fairValuePath: fairValueSegments.length > 1 ? fairValueSegments.join(" ") : null,
|
|
16735
|
-
axisLabels
|
|
16736
|
-
};
|
|
16737
|
-
}
|
|
16738
|
-
function normalize(value, min, max, targetMin, targetMax) {
|
|
16739
|
-
if (max === min) return (targetMin + targetMax) / 2;
|
|
16740
|
-
return targetMin + (value - min) / (max - min) * (targetMax - targetMin);
|
|
16741
|
-
}
|
|
16742
|
-
function mapValueToY(value, min, max) {
|
|
16743
|
-
const normalized = normalize(value, min, max, 0, 1);
|
|
16744
|
-
const clamped = Math.min(1, Math.max(0, normalized));
|
|
16745
|
-
const drawableHeight = CHART_HEIGHT - CHART_PADDING * 2;
|
|
16746
|
-
return CHART_PADDING + (1 - clamped) * drawableHeight;
|
|
16747
|
-
}
|
|
16748
|
-
function buildAxisLabels(min, max) {
|
|
16749
|
-
const steps = 5;
|
|
16750
|
-
const labels = [];
|
|
16751
|
-
for (let i = 0; i < steps; i += 1) {
|
|
16752
|
-
const ratio = i / (steps - 1);
|
|
16753
|
-
const value = max - ratio * (max - min);
|
|
16754
|
-
labels.push(formatCurrency5(value, { maximumFractionDigits: 0, minimumFractionDigits: 0 }));
|
|
16755
|
-
}
|
|
16756
|
-
return labels;
|
|
16757
|
-
}
|
|
16758
|
-
function calculatePositionFromPrice(price, undervaluedPrice, fairValue, overvaluedPrice) {
|
|
16759
|
-
if (price <= undervaluedPrice) return 0;
|
|
16760
|
-
if (price >= overvaluedPrice) return 100;
|
|
16761
|
-
if (price < fairValue) {
|
|
16762
|
-
return 50 * (price - undervaluedPrice) / (fairValue - undervaluedPrice);
|
|
16763
|
-
}
|
|
16764
|
-
return 50 + 50 * (price - fairValue) / (overvaluedPrice - fairValue);
|
|
16765
|
-
}
|
|
16766
|
-
var ValuationIndicator = styled9__default.default.div`
|
|
16767
|
-
background-color: rgba(50, 52, 58, 0.95);
|
|
16768
|
-
border-radius: 6px;
|
|
16769
|
-
padding: 1rem;
|
|
16770
|
-
margin-top: 1.5rem;
|
|
16771
|
-
margin-bottom: 1.5rem;
|
|
16772
|
-
|
|
16773
|
-
&.desktop-only-valuation {
|
|
16774
|
-
@media (max-width: 480px) {
|
|
16775
|
-
display: none;
|
|
16776
|
-
}
|
|
16777
|
-
}
|
|
16778
|
-
|
|
16779
|
-
&.mobile-only-valuation {
|
|
16780
|
-
display: none;
|
|
16781
|
-
@media (max-width: 480px) {
|
|
16782
|
-
display: block;
|
|
16783
|
-
margin-top: 1rem;
|
|
16784
|
-
margin-bottom: 1rem;
|
|
16785
|
-
}
|
|
16786
|
-
}
|
|
16787
|
-
`;
|
|
16788
|
-
var GaugeIndicator = styled9__default.default.div`
|
|
16789
|
-
position: absolute;
|
|
16790
|
-
left: ${(props) => props.position}%;
|
|
16791
|
-
top: 0.35rem;
|
|
16792
|
-
transform: translateX(-50%);
|
|
16793
|
-
width: 3px;
|
|
16794
|
-
height: 36px;
|
|
16795
|
-
border-radius: 999px;
|
|
16796
|
-
background: ${(props) => props.type === "fairValue" ? "#f0b90b" : "rgba(10, 12, 18, 0.95)"};
|
|
16797
|
-
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;
|
|
16798
16683
|
`;
|
|
16799
|
-
var
|
|
16800
|
-
|
|
16801
|
-
|
|
16802
|
-
top: -46px;
|
|
16803
|
-
transform: translateX(-50%);
|
|
16804
|
-
background: rgba(7, 9, 13, 0.85);
|
|
16805
|
-
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
16806
|
-
border-radius: 8px;
|
|
16807
|
-
padding: 6px 10px;
|
|
16808
|
-
font-size: 0.75rem;
|
|
16684
|
+
var ValuationHeading = styled9__default.default.h2`
|
|
16685
|
+
font-size: 1.4rem;
|
|
16686
|
+
font-weight: 600;
|
|
16809
16687
|
color: #fff;
|
|
16810
|
-
|
|
16811
|
-
display: flex;
|
|
16812
|
-
flex-direction: column;
|
|
16813
|
-
gap: 2px;
|
|
16814
|
-
text-align: center;
|
|
16815
|
-
backdrop-filter: blur(6px);
|
|
16688
|
+
margin: 0 0 1.5rem;
|
|
16816
16689
|
|
|
16817
|
-
span:last-child {
|
|
16818
|
-
font-size: 0.95em;
|
|
16819
|
-
font-weight: 600;
|
|
16820
|
-
letter-spacing: 0.2px;
|
|
16821
|
-
color: var(--color-accent);
|
|
16822
|
-
}
|
|
16823
|
-
`;
|
|
16824
|
-
var HiddenMobileChart = styled9__default.default.div`
|
|
16825
|
-
display: none;
|
|
16826
16690
|
@media (max-width: 480px) {
|
|
16827
|
-
|
|
16691
|
+
font-size: 1.15rem;
|
|
16692
|
+
margin-bottom: 1rem;
|
|
16828
16693
|
}
|
|
16829
16694
|
`;
|
|
16830
|
-
var ValuationWrapper = styled9__default.default.div`
|
|
16831
|
-
display: flex;
|
|
16832
|
-
flex-direction: column;
|
|
16833
|
-
gap: 2rem;
|
|
16834
|
-
`;
|
|
16835
|
-
var LoadingOverlay = styled9__default.default.div`
|
|
16836
|
-
margin-top: 1rem;
|
|
16837
|
-
padding: 0.75rem 1rem;
|
|
16838
|
-
border-radius: 8px;
|
|
16839
|
-
background: rgba(255, 255, 255, 0.05);
|
|
16840
|
-
color: rgba(255, 255, 255, 0.8);
|
|
16841
|
-
font-size: 0.9rem;
|
|
16842
|
-
`;
|
|
16843
|
-
var ErrorMessage = styled9__default.default.div`
|
|
16844
|
-
margin-top: 1rem;
|
|
16845
|
-
padding: 0.75rem 1rem;
|
|
16846
|
-
border-radius: 8px;
|
|
16847
|
-
background: rgba(244, 67, 54, 0.15);
|
|
16848
|
-
color: #ff8a80;
|
|
16849
|
-
font-size: 0.9rem;
|
|
16850
|
-
border: 1px solid rgba(244, 67, 54, 0.4);
|
|
16851
|
-
`;
|
|
16852
|
-
var SectionTitle = styled9__default.default.h2`
|
|
16853
|
-
margin: 0;
|
|
16854
|
-
font-size: clamp(1.75rem, 2.5vw, 2.25rem);
|
|
16855
|
-
font-weight: 600;
|
|
16856
|
-
color: #fff;
|
|
16857
|
-
letter-spacing: 0.01em;
|
|
16858
|
-
`;
|
|
16859
16695
|
var LoafPricingSection = styled9__default.default.div`
|
|
16860
16696
|
background-color: rgba(30, 32, 38, 0.95);
|
|
16861
16697
|
border-radius: 8px;
|
|
16862
16698
|
padding: 1.25rem;
|
|
16863
16699
|
margin-bottom: 1.5rem;
|
|
16864
|
-
|
|
16865
|
-
|
|
16866
|
-
|
|
16867
|
-
|
|
16868
|
-
|
|
16869
|
-
|
|
16870
|
-
|
|
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
|
+
}
|
|
16871
16710
|
`;
|
|
16872
16711
|
var PricingModelCard = styled9__default.default.div`
|
|
16873
16712
|
background-color: rgba(40, 42, 48, 0.95);
|
|
16874
16713
|
border-radius: 8px;
|
|
16875
16714
|
padding: 1.5rem;
|
|
16876
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
|
+
}
|
|
16877
16724
|
`;
|
|
16878
16725
|
var PricingModelHeader = styled9__default.default.div`
|
|
16879
16726
|
display: flex;
|
|
16880
16727
|
justify-content: space-between;
|
|
16881
16728
|
align-items: center;
|
|
16882
16729
|
margin-bottom: 1.5rem;
|
|
16730
|
+
flex-wrap: wrap;
|
|
16883
16731
|
gap: 1rem;
|
|
16884
16732
|
|
|
16885
|
-
|
|
16886
|
-
display: flex;
|
|
16733
|
+
@media (max-width: 480px) {
|
|
16887
16734
|
flex-direction: column;
|
|
16888
|
-
|
|
16889
|
-
|
|
16890
|
-
|
|
16735
|
+
align-items: flex-start;
|
|
16736
|
+
gap: 0.5rem;
|
|
16737
|
+
margin-bottom: 1rem;
|
|
16891
16738
|
}
|
|
16892
16739
|
`;
|
|
16893
16740
|
var PricingModelTitle = styled9__default.default.h3`
|
|
@@ -16895,14 +16742,9 @@ var PricingModelTitle = styled9__default.default.h3`
|
|
|
16895
16742
|
font-size: 1.2rem;
|
|
16896
16743
|
font-weight: 600;
|
|
16897
16744
|
color: #fff;
|
|
16898
|
-
`;
|
|
16899
|
-
var PricingModelValue = styled9__default.default.div`
|
|
16900
|
-
font-size: 1.4rem;
|
|
16901
|
-
font-weight: 700;
|
|
16902
|
-
color: var(--color-primary);
|
|
16903
16745
|
|
|
16904
|
-
@media (max-width:
|
|
16905
|
-
font-size:
|
|
16746
|
+
@media (max-width: 480px) {
|
|
16747
|
+
font-size: 1rem;
|
|
16906
16748
|
}
|
|
16907
16749
|
`;
|
|
16908
16750
|
var PricingModelDetails = styled9__default.default.div`
|
|
@@ -16910,13 +16752,27 @@ var PricingModelDetails = styled9__default.default.div`
|
|
|
16910
16752
|
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
16911
16753
|
gap: 1.5rem;
|
|
16912
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
|
+
}
|
|
16913
16765
|
`;
|
|
16914
16766
|
var PricingModelDetail = styled9__default.default.div`
|
|
16915
16767
|
background-color: rgba(50, 52, 58, 0.95);
|
|
16916
16768
|
border-radius: 6px;
|
|
16917
16769
|
padding: 1rem;
|
|
16770
|
+
|
|
16771
|
+
@media (max-width: 480px) {
|
|
16772
|
+
padding: 0.75rem;
|
|
16773
|
+
}
|
|
16918
16774
|
`;
|
|
16919
|
-
var
|
|
16775
|
+
var PricingDetailLabel = styled9__default.default.div`
|
|
16920
16776
|
font-size: 0.85rem;
|
|
16921
16777
|
color: rgba(255, 255, 255, 0.7);
|
|
16922
16778
|
margin-bottom: 0.5rem;
|
|
@@ -16926,6 +16782,35 @@ var PricingDetailValue = styled9__default.default.div`
|
|
|
16926
16782
|
color: #fff;
|
|
16927
16783
|
font-weight: 500;
|
|
16928
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
|
+
`;
|
|
16929
16814
|
var ValuationHeader = styled9__default.default.div`
|
|
16930
16815
|
display: flex;
|
|
16931
16816
|
justify-content: space-between;
|
|
@@ -16933,277 +16818,219 @@ var ValuationHeader = styled9__default.default.div`
|
|
|
16933
16818
|
`;
|
|
16934
16819
|
var ValuationTitle = styled9__default.default.div`
|
|
16935
16820
|
font-size: 0.9rem;
|
|
16936
|
-
|
|
16821
|
+
font-weight: 500;
|
|
16822
|
+
|
|
16823
|
+
@media (max-width: 480px) {
|
|
16824
|
+
font-size: 0.75rem;
|
|
16825
|
+
}
|
|
16937
16826
|
`;
|
|
16938
16827
|
var ValuationGauge = styled9__default.default.div`
|
|
16939
16828
|
position: relative;
|
|
16940
16829
|
width: 100%;
|
|
16941
16830
|
padding: 1.1rem 0 2rem;
|
|
16942
|
-
margin: 0.75rem 0 1rem;
|
|
16943
16831
|
`;
|
|
16944
16832
|
var GaugeBackground = styled9__default.default.div`
|
|
16945
|
-
|
|
16946
|
-
|
|
16947
|
-
|
|
16948
|
-
|
|
16949
|
-
|
|
16950
|
-
|
|
16951
|
-
|
|
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
|
+
}
|
|
16952
16870
|
`;
|
|
16953
16871
|
var ValuationDetails = styled9__default.default.div`
|
|
16954
16872
|
display: flex;
|
|
16955
16873
|
justify-content: space-between;
|
|
16956
16874
|
margin-top: 1rem;
|
|
16875
|
+
|
|
16876
|
+
@media (max-width: 480px) {
|
|
16877
|
+
gap: 0.25rem;
|
|
16878
|
+
}
|
|
16957
16879
|
`;
|
|
16958
16880
|
var ValuationItem = styled9__default.default.div`
|
|
16959
16881
|
display: flex;
|
|
16960
16882
|
flex-direction: column;
|
|
16883
|
+
|
|
16884
|
+
&:nth-child(2) {
|
|
16885
|
+
text-align: center;
|
|
16886
|
+
}
|
|
16887
|
+
|
|
16888
|
+
&:last-child {
|
|
16889
|
+
text-align: right;
|
|
16890
|
+
}
|
|
16961
16891
|
`;
|
|
16962
16892
|
var ValuationValue = styled9__default.default.div`
|
|
16963
16893
|
font-size: 1rem;
|
|
16964
16894
|
font-weight: 600;
|
|
16965
|
-
color: #fff;
|
|
16966
|
-
`;
|
|
16967
|
-
var ChartContainer = styled9__default.default.div`
|
|
16968
|
-
width: 100%;
|
|
16969
|
-
height: 301.52px;
|
|
16970
|
-
margin-top: 1.5rem;
|
|
16971
|
-
background-color: rgba(50, 52, 58, 0.5);
|
|
16972
|
-
border-radius: 6px;
|
|
16973
|
-
padding: 1rem;
|
|
16974
|
-
position: relative;
|
|
16975
|
-
`;
|
|
16976
|
-
var ChartBackground = styled9__default.default.div`
|
|
16977
|
-
position: relative;
|
|
16978
|
-
height: 100%;
|
|
16979
|
-
width: 100%;
|
|
16980
|
-
background: rgba(255, 255, 255, 0.03);
|
|
16981
|
-
border-radius: 8px;
|
|
16982
|
-
`;
|
|
16983
|
-
var ValuationSvg = styled9__default.default.svg`
|
|
16984
|
-
position: absolute;
|
|
16985
|
-
top: 10px;
|
|
16986
|
-
right: 0;
|
|
16987
|
-
bottom: 25px;
|
|
16988
|
-
left: 0;
|
|
16989
|
-
overflow: visible;
|
|
16990
|
-
width: 100%;
|
|
16991
|
-
height: calc(100% - 35px);
|
|
16992
|
-
`;
|
|
16993
|
-
var YAxisLabel = styled9__default.default.div`
|
|
16994
|
-
position: absolute;
|
|
16995
|
-
left: -40px;
|
|
16996
|
-
font-size: 10px;
|
|
16997
|
-
color: rgba(255, 255, 255, 0.6);
|
|
16998
|
-
text-align: right;
|
|
16999
|
-
padding-right: 5px;
|
|
17000
|
-
`;
|
|
17001
|
-
var ValuationCallout = styled9__default.default.div`
|
|
17002
16895
|
display: flex;
|
|
17003
|
-
|
|
17004
|
-
|
|
17005
|
-
background: linear-gradient(90deg, rgba(76, 175, 80, 0.05) 0%, rgba(76, 175, 80, 0.1) 100%);
|
|
17006
|
-
border-radius: 8px;
|
|
17007
|
-
padding: 10px 16px;
|
|
17008
|
-
border: 1px solid rgba(76, 175, 80, 0.2);
|
|
17009
|
-
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
|
|
17010
|
-
`;
|
|
17011
|
-
var ValuationBadge = styled9__default.default.div`
|
|
17012
|
-
background: linear-gradient(135deg, #4CAF50 0%, #45a049 100%);
|
|
17013
|
-
color: white;
|
|
17014
|
-
padding: 5px 12px;
|
|
17015
|
-
border-radius: 20px;
|
|
17016
|
-
font-size: 14px;
|
|
17017
|
-
font-weight: 600;
|
|
17018
|
-
box-shadow: 0 2px 4px rgba(76, 175, 80, 0.25);
|
|
17019
|
-
`;
|
|
17020
|
-
var AreaDemandChart = styled9__default.default.div`
|
|
17021
|
-
height: 60px;
|
|
17022
|
-
width: 100%;
|
|
17023
|
-
position: relative;
|
|
17024
|
-
`;
|
|
17025
|
-
var ChartLabel = styled9__default.default.div`
|
|
17026
|
-
position: absolute;
|
|
17027
|
-
font-size: 9px;
|
|
17028
|
-
color: rgba(255, 255, 255, 0.7);
|
|
17029
|
-
`;
|
|
17030
|
-
var RecentSalesSection = styled9__default.default.div`
|
|
17031
|
-
background-color: rgba(30, 32, 38, 0.95);
|
|
17032
|
-
border-radius: 8px;
|
|
17033
|
-
padding: 1.25rem;
|
|
17034
|
-
margin-bottom: 1.5rem;
|
|
16896
|
+
flex-direction: column;
|
|
16897
|
+
gap: 0.15rem;
|
|
17035
16898
|
|
|
17036
|
-
@media (max-width:
|
|
17037
|
-
|
|
16899
|
+
@media (max-width: 480px) {
|
|
16900
|
+
font-size: 0.85rem;
|
|
17038
16901
|
}
|
|
17039
16902
|
`;
|
|
17040
|
-
var
|
|
17041
|
-
|
|
17042
|
-
|
|
17043
|
-
|
|
17044
|
-
margin-
|
|
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;
|
|
17045
16908
|
|
|
17046
16909
|
@media (max-width: 768px) {
|
|
17047
|
-
|
|
17048
|
-
|
|
17049
|
-
|
|
17050
|
-
scroll-behavior: smooth;
|
|
17051
|
-
-webkit-overflow-scrolling: touch;
|
|
17052
|
-
gap: 1rem;
|
|
17053
|
-
padding-bottom: 1rem;
|
|
17054
|
-
|
|
17055
|
-
&::-webkit-scrollbar {
|
|
17056
|
-
display: none;
|
|
17057
|
-
}
|
|
17058
|
-
scrollbar-width: none;
|
|
16910
|
+
overflow: hidden;
|
|
16911
|
+
box-sizing: border-box;
|
|
16912
|
+
padding: 1rem;
|
|
17059
16913
|
}
|
|
17060
|
-
`;
|
|
17061
|
-
var SaleCard = styled9__default.default.div`
|
|
17062
|
-
background-color: var(--color-card, #1e2329);
|
|
17063
|
-
border-radius: var(--border-radius, 8px);
|
|
17064
|
-
overflow: hidden;
|
|
17065
|
-
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
17066
|
-
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
17067
16914
|
|
|
17068
|
-
|
|
17069
|
-
|
|
17070
|
-
|
|
16915
|
+
@media (max-width: 480px) {
|
|
16916
|
+
padding: 0.75rem;
|
|
16917
|
+
border-radius: 8px;
|
|
17071
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;
|
|
17072
16935
|
|
|
17073
16936
|
@media (max-width: 768px) {
|
|
17074
|
-
|
|
17075
|
-
width: 85%;
|
|
17076
|
-
scroll-snap-align: start;
|
|
17077
|
-
flex-shrink: 0;
|
|
17078
|
-
margin-right: 0.5rem;
|
|
17079
|
-
|
|
17080
|
-
&:last-child {
|
|
17081
|
-
margin-right: 1rem;
|
|
17082
|
-
}
|
|
16937
|
+
height: 350px;
|
|
17083
16938
|
}
|
|
17084
|
-
`;
|
|
17085
|
-
var SaleImageContainer = styled9__default.default.div`
|
|
17086
|
-
position: relative;
|
|
17087
|
-
width: 100%;
|
|
17088
|
-
height: 200px;
|
|
17089
|
-
overflow: hidden;
|
|
17090
|
-
`;
|
|
17091
|
-
var SaleImage = styled9__default.default.img`
|
|
17092
|
-
width: 100%;
|
|
17093
|
-
height: 100%;
|
|
17094
|
-
object-fit: cover;
|
|
17095
|
-
object-position: center;
|
|
17096
|
-
transition: transform 0.3s ease;
|
|
17097
16939
|
|
|
17098
|
-
|
|
17099
|
-
|
|
16940
|
+
@media (max-width: 480px) {
|
|
16941
|
+
height: 260px;
|
|
17100
16942
|
}
|
|
17101
16943
|
`;
|
|
17102
|
-
var
|
|
16944
|
+
var ChartOverlayTitle = styled9__default.default.div`
|
|
17103
16945
|
position: absolute;
|
|
17104
|
-
|
|
17105
|
-
|
|
17106
|
-
|
|
17107
|
-
|
|
17108
|
-
|
|
17109
|
-
|
|
17110
|
-
padding:
|
|
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;
|
|
17111
16953
|
border-radius: 4px;
|
|
17112
|
-
|
|
17113
|
-
|
|
17114
|
-
|
|
17115
|
-
|
|
17116
|
-
|
|
17117
|
-
|
|
17118
|
-
`;
|
|
17119
|
-
var SalePriceBar = styled9__default.default.div`
|
|
17120
|
-
display: flex;
|
|
17121
|
-
justify-content: space-between;
|
|
17122
|
-
align-items: center;
|
|
17123
|
-
padding: 0.75rem 1rem;
|
|
17124
|
-
background: linear-gradient(90deg, rgba(240, 185, 11, 0.1) 0%, rgba(240, 185, 11, 0.05) 100%);
|
|
17125
|
-
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
|
+
}
|
|
17126
16960
|
`;
|
|
17127
|
-
var
|
|
16961
|
+
var ChartLegendColumn = styled9__default.default.div`
|
|
16962
|
+
position: absolute;
|
|
16963
|
+
right: 10px;
|
|
16964
|
+
top: 40px;
|
|
17128
16965
|
display: flex;
|
|
17129
16966
|
flex-direction: column;
|
|
16967
|
+
gap: 6px;
|
|
16968
|
+
z-index: 10;
|
|
17130
16969
|
`;
|
|
17131
|
-
var
|
|
16970
|
+
var ChartLegendItem = styled9__default.default.div`
|
|
17132
16971
|
font-size: 0.7rem;
|
|
17133
|
-
|
|
17134
|
-
|
|
17135
|
-
|
|
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;
|
|
17136
16978
|
`;
|
|
17137
|
-
var
|
|
17138
|
-
|
|
17139
|
-
|
|
17140
|
-
|
|
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;
|
|
17141
16986
|
`;
|
|
17142
|
-
var
|
|
17143
|
-
|
|
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);
|
|
17144
16993
|
`;
|
|
17145
|
-
var
|
|
17146
|
-
|
|
17147
|
-
margin-bottom: 0.25rem;
|
|
17148
|
-
font-size: 1rem;
|
|
16994
|
+
var SaleHistoryLabel = styled9__default.default.div`
|
|
16995
|
+
font-size: 0.7rem;
|
|
17149
16996
|
font-weight: 600;
|
|
17150
|
-
color: var(--color-text, #eaecef);
|
|
17151
|
-
`;
|
|
17152
|
-
var SaleSuburb = styled9__default.default.div`
|
|
17153
|
-
font-size: 0.8rem;
|
|
17154
16997
|
color: var(--color-text-secondary, #848e9c);
|
|
17155
|
-
|
|
17156
|
-
|
|
17157
|
-
|
|
17158
|
-
display: flex;
|
|
17159
|
-
justify-content: space-between;
|
|
17160
|
-
align-items: center;
|
|
17161
|
-
padding: 0.75rem 1rem;
|
|
17162
|
-
background-color: rgba(0, 0, 0, 0.3);
|
|
17163
|
-
border-top: 1px solid rgba(255, 255, 255, 0.05);
|
|
16998
|
+
text-transform: uppercase;
|
|
16999
|
+
letter-spacing: 0.1em;
|
|
17000
|
+
margin-bottom: 0.75rem;
|
|
17164
17001
|
`;
|
|
17165
|
-
var
|
|
17002
|
+
var SaleHistoryGrid = styled9__default.default.div`
|
|
17166
17003
|
display: flex;
|
|
17167
|
-
|
|
17168
|
-
gap:
|
|
17169
|
-
font-size: 0.8rem;
|
|
17170
|
-
color: var(--color-text-secondary, #848e9c);
|
|
17004
|
+
flex-wrap: wrap;
|
|
17005
|
+
gap: 1rem;
|
|
17171
17006
|
|
|
17172
|
-
|
|
17173
|
-
|
|
17174
|
-
|
|
17175
|
-
opacity: 0.7;
|
|
17007
|
+
@media (max-width: 480px) {
|
|
17008
|
+
flex-direction: column;
|
|
17009
|
+
gap: 0.75rem;
|
|
17176
17010
|
}
|
|
17177
17011
|
`;
|
|
17178
|
-
var
|
|
17179
|
-
|
|
17180
|
-
|
|
17181
|
-
|
|
17182
|
-
|
|
17183
|
-
|
|
17184
|
-
|
|
17185
|
-
|
|
17186
|
-
display: flex;
|
|
17187
|
-
align-items: center;
|
|
17188
|
-
justify-content: center;
|
|
17189
|
-
margin-top: 0.75rem;
|
|
17190
|
-
color: rgba(255, 255, 255, 0.6);
|
|
17191
|
-
font-size: 0.8rem;
|
|
17192
|
-
|
|
17193
|
-
svg {
|
|
17194
|
-
margin-left: 0.25rem;
|
|
17195
|
-
animation: swipeAnimation 1.5s infinite;
|
|
17196
|
-
}
|
|
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;
|
|
17197
17020
|
|
|
17198
|
-
|
|
17199
|
-
|
|
17200
|
-
50% { transform: translateX(5px); }
|
|
17201
|
-
100% { transform: translateX(0); }
|
|
17202
|
-
}
|
|
17021
|
+
@media (max-width: 480px) {
|
|
17022
|
+
flex: 1 1 auto;
|
|
17203
17023
|
}
|
|
17204
17024
|
`;
|
|
17205
|
-
var
|
|
17206
|
-
|
|
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
|
+
`;
|
|
17207
17034
|
var fadeIn = styled9.keyframes`
|
|
17208
17035
|
from { opacity: 0; }
|
|
17209
17036
|
to { opacity: 1; }
|