@loafmarkets/ui 0.1.168 → 0.1.170
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 +215 -187
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +215 -187
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -8021,10 +8021,6 @@ function GalleryMapSection({
|
|
|
8021
8021
|
videoUrl && /* @__PURE__ */ jsxs(FixedBtn, { $active: showVideo, onClick: () => setShowVideo((p) => !p), children: [
|
|
8022
8022
|
/* @__PURE__ */ jsx(BiVideo, { size: 16 }),
|
|
8023
8023
|
" Video"
|
|
8024
|
-
] }),
|
|
8025
|
-
/* @__PURE__ */ jsxs(FixedBtn, { $active: false, onClick: () => setShowFullMap(true), children: [
|
|
8026
|
-
/* @__PURE__ */ jsx(BiMap, { size: 16 }),
|
|
8027
|
-
" Map View"
|
|
8028
8024
|
] })
|
|
8029
8025
|
] })
|
|
8030
8026
|
] }),
|
|
@@ -8093,10 +8089,10 @@ function GalleryMapSection({
|
|
|
8093
8089
|
/* @__PURE__ */ jsx(SuburbDesc, { children: "One of Sydney's most prestigious harbourside suburbs, consistently ranked among Australia's highest-value residential markets. Strong capital growth driven by limited supply, heritage conservation overlays, and international buyer demand." })
|
|
8094
8090
|
] })
|
|
8095
8091
|
] }),
|
|
8096
|
-
showFullMap && /* @__PURE__ */ jsx(FullMapPopup, { onClose: () => setShowFullMap(false) })
|
|
8092
|
+
showFullMap && /* @__PURE__ */ jsx(FullMapPopup, { onClose: () => setShowFullMap(false), mapUrl: resolvedMapUrl })
|
|
8097
8093
|
] });
|
|
8098
8094
|
}
|
|
8099
|
-
function FullMapPopup({ onClose }) {
|
|
8095
|
+
function FullMapPopup({ onClose, mapUrl }) {
|
|
8100
8096
|
useEffect(() => {
|
|
8101
8097
|
const handleEsc = (e) => {
|
|
8102
8098
|
if (e.key === "Escape") onClose();
|
|
@@ -8138,7 +8134,7 @@ function FullMapPopup({ onClose }) {
|
|
|
8138
8134
|
"iframe",
|
|
8139
8135
|
{
|
|
8140
8136
|
ref: iframeRef,
|
|
8141
|
-
src: "/map?embed=true",
|
|
8137
|
+
src: mapUrl ?? "/map?embed=true",
|
|
8142
8138
|
width: "100%",
|
|
8143
8139
|
height: "100%",
|
|
8144
8140
|
style: { border: 0 },
|
|
@@ -8572,7 +8568,7 @@ function PropertyOverview({
|
|
|
8572
8568
|
const annualDividend = resolvedValuation ? resolvedValuation * 0.02 : null;
|
|
8573
8569
|
const monthlyDivPerShare = annualDividend && resolvedTokensIssued ? annualDividend / 12 / resolvedTokensIssued : null;
|
|
8574
8570
|
const propertyStats = [
|
|
8575
|
-
{ label: "
|
|
8571
|
+
{ label: "Property Value", value: isLoading && tokenMarketCap == null ? loadingSkeleton : tokenMarketCap ? tokenMarketCap >= 1e6 ? `$${(tokenMarketCap / 1e6).toFixed(1)}M` : `$${tokenMarketCap.toLocaleString()}` : "\u2014" },
|
|
8576
8572
|
{ label: "Number of Offers", value: "3" },
|
|
8577
8573
|
{ label: "Growth (Past 5 Years)", value: "+90%" },
|
|
8578
8574
|
{ label: "Last Dividend", value: isLoading && monthlyDivPerShare == null ? loadingSkeleton : monthlyDivPerShare != null ? `${(monthlyDivPerShare * 100).toFixed(1)}c per Share` : "\u2014" },
|
|
@@ -8673,41 +8669,38 @@ function PropertyOverview({
|
|
|
8673
8669
|
) }),
|
|
8674
8670
|
/* @__PURE__ */ jsxs(Section, { children: [
|
|
8675
8671
|
/* @__PURE__ */ jsx(SectionHeader, { children: "Asset Details" }),
|
|
8676
|
-
/* @__PURE__ */ jsxs(
|
|
8677
|
-
/* @__PURE__ */ jsxs(
|
|
8678
|
-
/* @__PURE__ */ jsx(
|
|
8679
|
-
|
|
8680
|
-
/* @__PURE__ */
|
|
8681
|
-
|
|
8682
|
-
|
|
8683
|
-
|
|
8684
|
-
|
|
8685
|
-
|
|
8686
|
-
|
|
8687
|
-
/* @__PURE__ */ jsx(
|
|
8688
|
-
/* @__PURE__ */ jsxs(
|
|
8689
|
-
|
|
8690
|
-
|
|
8691
|
-
/* @__PURE__ */ jsx(MetricBig, { children: buildingSize?.toLocaleString() ?? "\u2014" }),
|
|
8692
|
-
/* @__PURE__ */ jsx(MetricUnit, { children: "sqm" })
|
|
8693
|
-
] })
|
|
8672
|
+
/* @__PURE__ */ jsxs(StatsGrid, { children: [
|
|
8673
|
+
/* @__PURE__ */ jsxs(StatsColumn, { children: [
|
|
8674
|
+
/* @__PURE__ */ jsx(StatsColumnHeader, { children: "Key Metrics" }),
|
|
8675
|
+
landSize != null && /* @__PURE__ */ jsxs(StatRow, { children: [
|
|
8676
|
+
/* @__PURE__ */ jsx(StatLabel, { children: "Land Size" }),
|
|
8677
|
+
/* @__PURE__ */ jsxs(StatValue, { children: [
|
|
8678
|
+
landSize.toLocaleString(),
|
|
8679
|
+
" sqm"
|
|
8680
|
+
] })
|
|
8681
|
+
] }),
|
|
8682
|
+
buildingSize != null && /* @__PURE__ */ jsxs(StatRow, { children: [
|
|
8683
|
+
/* @__PURE__ */ jsx(StatLabel, { children: "Floor Area" }),
|
|
8684
|
+
/* @__PURE__ */ jsxs(StatValue, { children: [
|
|
8685
|
+
buildingSize.toLocaleString(),
|
|
8686
|
+
" sqm"
|
|
8694
8687
|
] })
|
|
8695
8688
|
] }),
|
|
8696
|
-
/* @__PURE__ */ jsx(
|
|
8697
|
-
item.icon && /* @__PURE__ */ jsx(
|
|
8698
|
-
item.value && /* @__PURE__ */ jsx(
|
|
8699
|
-
/* @__PURE__ */ jsx(
|
|
8689
|
+
/* @__PURE__ */ jsx(AssetFeatureRow, { children: features.map((item, i) => /* @__PURE__ */ jsxs(AssetFeatureItem, { children: [
|
|
8690
|
+
item.icon && /* @__PURE__ */ jsx(AssetFeatureIcon, { children: item.icon }),
|
|
8691
|
+
item.value && /* @__PURE__ */ jsx(AssetFeatureValue, { children: item.value }),
|
|
8692
|
+
/* @__PURE__ */ jsx(AssetFeatureLabel, { children: item.label })
|
|
8700
8693
|
] }, i)) })
|
|
8701
8694
|
] }),
|
|
8702
|
-
/* @__PURE__ */ jsxs(
|
|
8703
|
-
/* @__PURE__ */ jsx(
|
|
8704
|
-
|
|
8705
|
-
/* @__PURE__ */ jsx(
|
|
8706
|
-
/* @__PURE__ */ jsxs(
|
|
8707
|
-
item.status && /* @__PURE__ */ jsx("span", { style: { display: "inline-block", width: 6, height: 6, borderRadius: "50%", background: item.status === "active" ? "#
|
|
8695
|
+
/* @__PURE__ */ jsxs(StatsColumn, { children: [
|
|
8696
|
+
/* @__PURE__ */ jsx(StatsColumnHeader, { children: "Property Info" }),
|
|
8697
|
+
propertyInfo.map((item, i) => /* @__PURE__ */ jsxs(StatRow, { children: [
|
|
8698
|
+
/* @__PURE__ */ jsx(StatLabel, { children: item.label }),
|
|
8699
|
+
/* @__PURE__ */ jsxs(StatValue, { style: { color: item.status === "active" ? "#4ade80" : item.status === "progress" ? "#D4AF37" : void 0 }, children: [
|
|
8700
|
+
item.status && /* @__PURE__ */ jsx("span", { style: { display: "inline-block", width: 6, height: 6, borderRadius: "50%", background: item.status === "active" ? "#4ade80" : "#D4AF37", marginRight: 6 } }),
|
|
8708
8701
|
item.value
|
|
8709
8702
|
] })
|
|
8710
|
-
] }, i))
|
|
8703
|
+
] }, i))
|
|
8711
8704
|
] })
|
|
8712
8705
|
] })
|
|
8713
8706
|
] }),
|
|
@@ -8739,46 +8732,71 @@ function PropertyOverview({
|
|
|
8739
8732
|
] }),
|
|
8740
8733
|
/* @__PURE__ */ jsxs(Section, { children: [
|
|
8741
8734
|
/* @__PURE__ */ jsx(SectionHeader, { children: "Tokenholder Security" }),
|
|
8742
|
-
/* @__PURE__ */ jsxs(
|
|
8743
|
-
/* @__PURE__ */ jsxs(
|
|
8744
|
-
/* @__PURE__ */ jsxs(
|
|
8745
|
-
/* @__PURE__ */ jsx(
|
|
8746
|
-
/* @__PURE__ */ jsx(
|
|
8747
|
-
] }),
|
|
8748
|
-
/* @__PURE__ */
|
|
8749
|
-
/* @__PURE__ */ jsx(
|
|
8750
|
-
/* @__PURE__ */ jsx(
|
|
8751
|
-
|
|
8735
|
+
/* @__PURE__ */ jsxs(SecurityCardsGrid, { children: [
|
|
8736
|
+
/* @__PURE__ */ jsxs(SecurityCard, { children: [
|
|
8737
|
+
/* @__PURE__ */ jsx(SecurityCardIcon, { children: /* @__PURE__ */ jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
8738
|
+
/* @__PURE__ */ jsx("path", { d: "M9 12l2 2 4-4" }),
|
|
8739
|
+
/* @__PURE__ */ jsx("path", { d: "M12 3l8 4.5v5c0 5-3.5 8.5-8 10.5-4.5-2-8-5.5-8-10.5v-5l8-4.5z" })
|
|
8740
|
+
] }) }),
|
|
8741
|
+
/* @__PURE__ */ jsxs(SecurityCardContent, { children: [
|
|
8742
|
+
/* @__PURE__ */ jsx(SecurityCardTitle, { children: "Legal Structuring" }),
|
|
8743
|
+
/* @__PURE__ */ jsx(SecurityCardProvider, { children: /* @__PURE__ */ jsx("img", { src: "/Baker_McKenzie.png", alt: "Baker McKenzie", style: { height: 16, filter: "brightness(0) invert(1)", opacity: 0.7 } }) }),
|
|
8744
|
+
/* @__PURE__ */ jsxs(SecurityCardLinks, { children: [
|
|
8745
|
+
/* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "Legal Opinion" }),
|
|
8746
|
+
/* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "Structuring Memo" })
|
|
8747
|
+
] })
|
|
8748
|
+
] })
|
|
8752
8749
|
] }),
|
|
8753
|
-
/* @__PURE__ */ jsxs(
|
|
8754
|
-
/* @__PURE__ */ jsxs(
|
|
8755
|
-
/* @__PURE__ */ jsx(
|
|
8756
|
-
/* @__PURE__ */
|
|
8750
|
+
/* @__PURE__ */ jsxs(SecurityCard, { children: [
|
|
8751
|
+
/* @__PURE__ */ jsx(SecurityCardIcon, { children: /* @__PURE__ */ jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
8752
|
+
/* @__PURE__ */ jsx("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2" }),
|
|
8753
|
+
/* @__PURE__ */ jsx("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
|
|
8754
|
+
] }) }),
|
|
8755
|
+
/* @__PURE__ */ jsxs(SecurityCardContent, { children: [
|
|
8756
|
+
/* @__PURE__ */ jsx(SecurityCardTitle, { children: "Security Interest in Asset" }),
|
|
8757
|
+
/* @__PURE__ */ jsxs(SecurityCardStatus, { children: [
|
|
8757
8758
|
/* @__PURE__ */ jsx(SecurityStatusDot, {}),
|
|
8758
8759
|
"Secured \u2014 NSW Land Registry"
|
|
8760
|
+
] }),
|
|
8761
|
+
/* @__PURE__ */ jsxs(SecurityCardLinks, { children: [
|
|
8762
|
+
/* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "Mortgage Agreement" }),
|
|
8763
|
+
/* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "Registry Filing" })
|
|
8759
8764
|
] })
|
|
8760
|
-
] })
|
|
8761
|
-
/* @__PURE__ */ jsx(SecurityRowRight, { children: /* @__PURE__ */ jsxs(SecurityRowLinks, { children: [
|
|
8762
|
-
/* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "Mortgage Agreement" }),
|
|
8763
|
-
/* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "Registry Filing" })
|
|
8764
|
-
] }) })
|
|
8765
|
+
] })
|
|
8765
8766
|
] }),
|
|
8766
|
-
/* @__PURE__ */ jsxs(
|
|
8767
|
-
/* @__PURE__ */ jsxs(
|
|
8768
|
-
/* @__PURE__ */ jsx(
|
|
8769
|
-
/* @__PURE__ */
|
|
8767
|
+
/* @__PURE__ */ jsxs(SecurityCard, { children: [
|
|
8768
|
+
/* @__PURE__ */ jsx(SecurityCardIcon, { children: /* @__PURE__ */ jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
8769
|
+
/* @__PURE__ */ jsx("path", { d: "M3 21h18" }),
|
|
8770
|
+
/* @__PURE__ */ jsx("path", { d: "M5 21V7l8-4v18" }),
|
|
8771
|
+
/* @__PURE__ */ jsx("path", { d: "M19 21V11l-6-4" }),
|
|
8772
|
+
/* @__PURE__ */ jsx("path", { d: "M9 9v.01" }),
|
|
8773
|
+
/* @__PURE__ */ jsx("path", { d: "M9 12v.01" }),
|
|
8774
|
+
/* @__PURE__ */ jsx("path", { d: "M9 15v.01" }),
|
|
8775
|
+
/* @__PURE__ */ jsx("path", { d: "M9 18v.01" })
|
|
8776
|
+
] }) }),
|
|
8777
|
+
/* @__PURE__ */ jsxs(SecurityCardContent, { children: [
|
|
8778
|
+
/* @__PURE__ */ jsx(SecurityCardTitle, { children: "Bankruptcy Remote" }),
|
|
8779
|
+
/* @__PURE__ */ jsxs(SecurityCardStatus, { children: [
|
|
8770
8780
|
/* @__PURE__ */ jsx(SecurityStatusDot, {}),
|
|
8771
8781
|
"Active \u2014 Dedicated SPV"
|
|
8772
|
-
] })
|
|
8773
|
-
|
|
8774
|
-
|
|
8782
|
+
] }),
|
|
8783
|
+
/* @__PURE__ */ jsx(SecurityCardLinks, { children: /* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "SPV Constitution" }) })
|
|
8784
|
+
] })
|
|
8775
8785
|
] }),
|
|
8776
|
-
/* @__PURE__ */ jsxs(
|
|
8777
|
-
/* @__PURE__ */ jsxs(
|
|
8778
|
-
/* @__PURE__ */ jsx(
|
|
8779
|
-
/* @__PURE__ */ jsx(
|
|
8780
|
-
|
|
8781
|
-
|
|
8786
|
+
/* @__PURE__ */ jsxs(SecurityCard, { children: [
|
|
8787
|
+
/* @__PURE__ */ jsx(SecurityCardIcon, { children: /* @__PURE__ */ jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
8788
|
+
/* @__PURE__ */ jsx("path", { d: "M16 3h5v5" }),
|
|
8789
|
+
/* @__PURE__ */ jsx("path", { d: "M8 3H3v5" }),
|
|
8790
|
+
/* @__PURE__ */ jsx("path", { d: "M12 22l-4-4 4-4" }),
|
|
8791
|
+
/* @__PURE__ */ jsx("path", { d: "M12 22l4-4-4-4" }),
|
|
8792
|
+
/* @__PURE__ */ jsx("path", { d: "M21 3l-9 9" }),
|
|
8793
|
+
/* @__PURE__ */ jsx("path", { d: "M3 3l9 9" })
|
|
8794
|
+
] }) }),
|
|
8795
|
+
/* @__PURE__ */ jsxs(SecurityCardContent, { children: [
|
|
8796
|
+
/* @__PURE__ */ jsx(SecurityCardTitle, { children: "Independent Valuation" }),
|
|
8797
|
+
/* @__PURE__ */ jsx(SecurityCardProvider, { children: /* @__PURE__ */ jsx("img", { src: "/savills.png", alt: "Savills", style: { height: 14, filter: "brightness(0) invert(1)", opacity: 0.7 } }) }),
|
|
8798
|
+
/* @__PURE__ */ jsx(SecurityCardLinks, { children: /* @__PURE__ */ jsx(SecurityDocLink, { href: "#documents", children: "Valuation Report" }) })
|
|
8799
|
+
] })
|
|
8782
8800
|
] })
|
|
8783
8801
|
] })
|
|
8784
8802
|
] })
|
|
@@ -8793,6 +8811,7 @@ function DividendHistoryPopup({
|
|
|
8793
8811
|
onClose
|
|
8794
8812
|
}) {
|
|
8795
8813
|
const { records, priceHistory } = generateDividendHistory(valuation ?? 0, totalTokens ?? 0, tokenPrice ?? 0, realPriceHistory);
|
|
8814
|
+
const [highlightedIdx, setHighlightedIdx] = useState(null);
|
|
8796
8815
|
useEffect(() => {
|
|
8797
8816
|
const handleEsc = (e) => {
|
|
8798
8817
|
if (e.key === "Escape") onClose();
|
|
@@ -8810,29 +8829,33 @@ function DividendHistoryPopup({
|
|
|
8810
8829
|
const pad = { top: 20, right: 40, bottom: 30, left: 50 };
|
|
8811
8830
|
const w = chartW - pad.left - pad.right;
|
|
8812
8831
|
const h = chartH - pad.top - pad.bottom;
|
|
8813
|
-
const
|
|
8814
|
-
const
|
|
8832
|
+
const now = Date.now();
|
|
8833
|
+
const twelveMonthsAgo = now - 365 * 864e5;
|
|
8834
|
+
const minTime = Math.min(priceHistory[0]?.time ?? twelveMonthsAgo, twelveMonthsAgo);
|
|
8835
|
+
const maxTime = Math.max(priceHistory[priceHistory.length - 1]?.time ?? now, now);
|
|
8815
8836
|
const prices = priceHistory.map((p) => p.price);
|
|
8816
8837
|
const minP = Math.floor(Math.min(...prices) - 5);
|
|
8817
8838
|
const maxP = Math.ceil(Math.max(...prices) + 5);
|
|
8818
8839
|
const toX = (t) => pad.left + (t - minTime) / (maxTime - minTime) * w;
|
|
8819
8840
|
const toY = (p) => pad.top + (1 - (p - minP) / (maxP - minP)) * h;
|
|
8820
8841
|
const linePath = priceHistory.map((p, i) => `${i === 0 ? "M" : "L"}${toX(p.time).toFixed(1)},${toY(p.price).toFixed(1)}`).join(" ");
|
|
8821
|
-
const areaPath = `${linePath} L${toX(priceHistory[priceHistory.length - 1].time).toFixed(1)},${(pad.top + h).toFixed(1)} L${toX(priceHistory[0].time).toFixed(1)},${(pad.top + h).toFixed(1)} Z
|
|
8842
|
+
const areaPath = priceHistory.length > 0 ? `${linePath} L${toX(priceHistory[priceHistory.length - 1].time).toFixed(1)},${(pad.top + h).toFixed(1)} L${toX(priceHistory[0].time).toFixed(1)},${(pad.top + h).toFixed(1)} Z` : "";
|
|
8822
8843
|
const yTicks = Array.from({ length: 5 }, (_, i) => minP + (maxP - minP) / 4 * i);
|
|
8823
8844
|
const monthLabels = [];
|
|
8824
|
-
|
|
8825
|
-
|
|
8826
|
-
|
|
8827
|
-
|
|
8828
|
-
|
|
8829
|
-
|
|
8830
|
-
|
|
8831
|
-
|
|
8832
|
-
|
|
8833
|
-
|
|
8834
|
-
|
|
8835
|
-
|
|
8845
|
+
for (let i = 11; i >= 0; i--) {
|
|
8846
|
+
const d = /* @__PURE__ */ new Date();
|
|
8847
|
+
d.setMonth(d.getMonth() - i, 1);
|
|
8848
|
+
monthLabels.push({ time: d.getTime(), label: d.toLocaleDateString("en-AU", { month: "short" }) });
|
|
8849
|
+
}
|
|
8850
|
+
const divMarkers = dividendDates.map((t, idx) => {
|
|
8851
|
+
const closest = priceHistory.length > 0 ? priceHistory.reduce((best, p) => Math.abs(p.time - t) < Math.abs(best.time - t) ? p : best) : null;
|
|
8852
|
+
return {
|
|
8853
|
+
x: toX(t),
|
|
8854
|
+
y: closest ? toY(closest.price) : toY((minP + maxP) / 2),
|
|
8855
|
+
price: closest?.price ?? 0,
|
|
8856
|
+
recordIdx: idx,
|
|
8857
|
+
hasPrice: !!closest
|
|
8858
|
+
};
|
|
8836
8859
|
});
|
|
8837
8860
|
return /* @__PURE__ */ jsx(DivPopupOverlay, { onClick: onClose, children: /* @__PURE__ */ jsxs(DivPopupPanel, { onClick: (e) => e.stopPropagation(), children: [
|
|
8838
8861
|
/* @__PURE__ */ jsxs(DivPopupHeader, { children: [
|
|
@@ -8856,13 +8879,26 @@ function DividendHistoryPopup({
|
|
|
8856
8879
|
/* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: "rgba(230,200,126,0.2)" }),
|
|
8857
8880
|
/* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: "rgba(230,200,126,0)" })
|
|
8858
8881
|
] }) }),
|
|
8859
|
-
/* @__PURE__ */ jsx("path", { d: areaPath, fill: "url(#divAreaGrad)" }),
|
|
8882
|
+
areaPath && /* @__PURE__ */ jsx("path", { d: areaPath, fill: "url(#divAreaGrad)" }),
|
|
8860
8883
|
/* @__PURE__ */ jsx("path", { d: linePath, fill: "none", stroke: "#e6c87e", strokeWidth: "1.5" }),
|
|
8861
|
-
divMarkers.map((m
|
|
8862
|
-
|
|
8863
|
-
/* @__PURE__ */
|
|
8864
|
-
|
|
8865
|
-
|
|
8884
|
+
divMarkers.map((m) => {
|
|
8885
|
+
const active = highlightedIdx === m.recordIdx;
|
|
8886
|
+
return /* @__PURE__ */ jsxs(
|
|
8887
|
+
"g",
|
|
8888
|
+
{
|
|
8889
|
+
onMouseEnter: () => setHighlightedIdx(m.recordIdx),
|
|
8890
|
+
onMouseLeave: () => setHighlightedIdx(null),
|
|
8891
|
+
style: { cursor: "pointer" },
|
|
8892
|
+
children: [
|
|
8893
|
+
/* @__PURE__ */ jsx("rect", { x: m.x - 10, y: pad.top, width: 20, height: h, fill: "transparent" }),
|
|
8894
|
+
/* @__PURE__ */ jsx("line", { x1: m.x, x2: m.x, y1: m.y, y2: pad.top + h, stroke: active ? "rgba(14,203,129,0.6)" : "rgba(14,203,129,0.25)", strokeWidth: active ? 1.5 : 1, strokeDasharray: "3,3" }),
|
|
8895
|
+
/* @__PURE__ */ jsx("circle", { cx: m.x, cy: m.y, r: active ? 6 : 4, fill: active ? "#0ecb81" : "#111", stroke: "#0ecb81", strokeWidth: active ? 2 : 1.5, style: { transition: "r 0.15s ease" } }),
|
|
8896
|
+
/* @__PURE__ */ jsx("text", { x: m.x, y: m.y - (active ? 10 : 8), fill: "#0ecb81", fontSize: active ? "9" : "8", fontWeight: "600", textAnchor: "middle", children: "$" })
|
|
8897
|
+
]
|
|
8898
|
+
},
|
|
8899
|
+
m.recordIdx
|
|
8900
|
+
);
|
|
8901
|
+
})
|
|
8866
8902
|
] }),
|
|
8867
8903
|
/* @__PURE__ */ jsxs(DivChartLegend, { children: [
|
|
8868
8904
|
/* @__PURE__ */ jsxs(DivChartLegendItem, { children: [
|
|
@@ -8882,18 +8918,27 @@ function DividendHistoryPopup({
|
|
|
8882
8918
|
/* @__PURE__ */ jsx(DivTableTH, { style: { textAlign: "right" }, children: "Dividend/Share" }),
|
|
8883
8919
|
/* @__PURE__ */ jsx(DivTableTH, { style: { textAlign: "right" }, children: "Annualised Yield" })
|
|
8884
8920
|
] }) }),
|
|
8885
|
-
/* @__PURE__ */ jsx("tbody", { children: records.map((r, i) => /* @__PURE__ */ jsxs(
|
|
8886
|
-
|
|
8887
|
-
|
|
8888
|
-
|
|
8889
|
-
|
|
8890
|
-
|
|
8891
|
-
|
|
8892
|
-
|
|
8893
|
-
|
|
8894
|
-
|
|
8895
|
-
|
|
8896
|
-
|
|
8921
|
+
/* @__PURE__ */ jsx("tbody", { children: records.map((r, i) => /* @__PURE__ */ jsxs(
|
|
8922
|
+
DivTableRow,
|
|
8923
|
+
{
|
|
8924
|
+
$highlighted: highlightedIdx === i,
|
|
8925
|
+
onMouseEnter: () => setHighlightedIdx(i),
|
|
8926
|
+
onMouseLeave: () => setHighlightedIdx(null),
|
|
8927
|
+
children: [
|
|
8928
|
+
/* @__PURE__ */ jsx(DivTableTD, { children: r.exDate }),
|
|
8929
|
+
/* @__PURE__ */ jsx(DivTableTD, { children: r.payDate }),
|
|
8930
|
+
/* @__PURE__ */ jsxs(DivTableTD, { style: { textAlign: "right", fontVariantNumeric: "tabular-nums" }, children: [
|
|
8931
|
+
"$",
|
|
8932
|
+
r.perShare.toFixed(4)
|
|
8933
|
+
] }),
|
|
8934
|
+
/* @__PURE__ */ jsxs(DivTableTD, { style: { textAlign: "right", fontVariantNumeric: "tabular-nums" }, children: [
|
|
8935
|
+
r.yieldPct.toFixed(2),
|
|
8936
|
+
"%"
|
|
8937
|
+
] })
|
|
8938
|
+
]
|
|
8939
|
+
},
|
|
8940
|
+
i
|
|
8941
|
+
)) })
|
|
8897
8942
|
] }) })
|
|
8898
8943
|
] }) });
|
|
8899
8944
|
}
|
|
@@ -9083,68 +9128,35 @@ var StatValue = styled9.span`
|
|
|
9083
9128
|
color: ${(p) => p.$gold ? "#D4AF37" : "#fff"};
|
|
9084
9129
|
font-variant-numeric: tabular-nums;
|
|
9085
9130
|
`;
|
|
9086
|
-
var
|
|
9087
|
-
display: grid;
|
|
9088
|
-
grid-template-columns: 1fr 1fr;
|
|
9089
|
-
gap: 1rem;
|
|
9090
|
-
@media (max-width: 768px) { grid-template-columns: 1fr; }
|
|
9091
|
-
`;
|
|
9092
|
-
var MetricsPanel = styled9.div`
|
|
9093
|
-
background: rgba(255,255,255,0.025);
|
|
9094
|
-
border-radius: 10px;
|
|
9095
|
-
border: 1px solid rgba(255,255,255,0.06);
|
|
9096
|
-
padding: 1.25rem 1.5rem;
|
|
9097
|
-
overflow: hidden;
|
|
9098
|
-
`;
|
|
9099
|
-
var InfoPanel = styled9(MetricsPanel)``;
|
|
9100
|
-
var MetricsPanelTitle = styled9.div`
|
|
9101
|
-
font-size: 0.65rem;
|
|
9102
|
-
color: #D4AF37;
|
|
9103
|
-
text-transform: uppercase;
|
|
9104
|
-
letter-spacing: 0.12em;
|
|
9105
|
-
font-weight: 600;
|
|
9106
|
-
margin-bottom: 1rem;
|
|
9107
|
-
padding-bottom: 0.75rem;
|
|
9108
|
-
border-bottom: 1px solid rgba(255,255,255,0.06);
|
|
9109
|
-
`;
|
|
9110
|
-
var LandFloorCard = styled9.div`
|
|
9111
|
-
background: linear-gradient(135deg, rgba(212,175,55,0.12), rgba(184,134,11,0.06));
|
|
9112
|
-
border-radius: 10px;
|
|
9113
|
-
padding: 0.85rem 1rem;
|
|
9114
|
-
border: 1px solid rgba(212,175,55,0.25);
|
|
9131
|
+
var AssetFeatureRow = styled9.div`
|
|
9115
9132
|
display: flex;
|
|
9116
|
-
|
|
9117
|
-
|
|
9133
|
+
flex-wrap: wrap;
|
|
9134
|
+
gap: 0.5rem 1.25rem;
|
|
9135
|
+
padding-top: 0.75rem;
|
|
9136
|
+
margin-top: 0.25rem;
|
|
9137
|
+
border-top: 1px solid rgba(255,255,255,0.04);
|
|
9118
9138
|
`;
|
|
9119
|
-
var
|
|
9120
|
-
|
|
9121
|
-
|
|
9122
|
-
|
|
9123
|
-
letter-spacing: 0.1em;
|
|
9124
|
-
margin-bottom: 0.4rem;
|
|
9125
|
-
font-weight: 500;
|
|
9139
|
+
var AssetFeatureItem = styled9.div`
|
|
9140
|
+
display: flex;
|
|
9141
|
+
align-items: center;
|
|
9142
|
+
gap: 0.35rem;
|
|
9126
9143
|
`;
|
|
9127
|
-
var
|
|
9144
|
+
var AssetFeatureIcon = styled9.span`
|
|
9145
|
+
color: rgba(255,255,255,0.35);
|
|
9128
9146
|
display: flex;
|
|
9129
|
-
align-items:
|
|
9130
|
-
|
|
9147
|
+
align-items: center;
|
|
9148
|
+
flex-shrink: 0;
|
|
9131
9149
|
`;
|
|
9132
|
-
var
|
|
9133
|
-
font-size:
|
|
9134
|
-
font-weight:
|
|
9135
|
-
color: #
|
|
9150
|
+
var AssetFeatureValue = styled9.span`
|
|
9151
|
+
font-size: 0.95rem;
|
|
9152
|
+
font-weight: 600;
|
|
9153
|
+
color: #fff;
|
|
9136
9154
|
line-height: 1;
|
|
9137
9155
|
`;
|
|
9138
|
-
var
|
|
9139
|
-
font-size: 0.
|
|
9140
|
-
color: rgba(
|
|
9141
|
-
font-weight:
|
|
9142
|
-
`;
|
|
9143
|
-
var FeaturesGrid = styled9.div`
|
|
9144
|
-
display: grid;
|
|
9145
|
-
grid-template-columns: repeat(3, 1fr);
|
|
9146
|
-
gap: 0.75rem;
|
|
9147
|
-
@media (max-width: 768px) { grid-template-columns: repeat(2, 1fr); }
|
|
9156
|
+
var AssetFeatureLabel = styled9.span`
|
|
9157
|
+
font-size: 0.8rem;
|
|
9158
|
+
color: rgba(255,255,255,0.5);
|
|
9159
|
+
font-weight: 400;
|
|
9148
9160
|
`;
|
|
9149
9161
|
var TradingHoursCard = styled9.div`
|
|
9150
9162
|
background: rgba(255,255,255,0.025);
|
|
@@ -9179,40 +9191,56 @@ var TradingHoursNote = styled9.div`
|
|
|
9179
9191
|
color: rgba(255,255,255,0.35);
|
|
9180
9192
|
border-top: 1px solid rgba(255,255,255,0.04);
|
|
9181
9193
|
`;
|
|
9182
|
-
var
|
|
9194
|
+
var SecurityCardsGrid = styled9.div`
|
|
9195
|
+
display: grid;
|
|
9196
|
+
grid-template-columns: 1fr 1fr;
|
|
9197
|
+
gap: 0.75rem;
|
|
9198
|
+
@media (max-width: 768px) { grid-template-columns: 1fr; }
|
|
9199
|
+
`;
|
|
9200
|
+
var SecurityCard = styled9.div`
|
|
9201
|
+
background: rgba(255,255,255,0.025);
|
|
9202
|
+
border: 1px solid rgba(255,255,255,0.06);
|
|
9203
|
+
border-radius: 10px;
|
|
9204
|
+
padding: 1.25rem;
|
|
9183
9205
|
display: flex;
|
|
9184
|
-
|
|
9206
|
+
gap: 1rem;
|
|
9207
|
+
transition: border-color 0.2s ease;
|
|
9208
|
+
&:hover { border-color: rgba(255,255,255,0.12); }
|
|
9185
9209
|
`;
|
|
9186
|
-
var
|
|
9210
|
+
var SecurityCardIcon = styled9.div`
|
|
9211
|
+
width: 40px;
|
|
9212
|
+
height: 40px;
|
|
9213
|
+
border-radius: 10px;
|
|
9214
|
+
background: rgba(74,222,128,0.08);
|
|
9215
|
+
border: 1px solid rgba(74,222,128,0.15);
|
|
9187
9216
|
display: flex;
|
|
9188
9217
|
align-items: center;
|
|
9189
|
-
justify-content:
|
|
9190
|
-
|
|
9191
|
-
|
|
9192
|
-
gap: 1rem;
|
|
9193
|
-
@media (max-width: 640px) { flex-direction: column; align-items: flex-start; }
|
|
9218
|
+
justify-content: center;
|
|
9219
|
+
flex-shrink: 0;
|
|
9220
|
+
color: #4ade80;
|
|
9194
9221
|
`;
|
|
9195
|
-
var
|
|
9222
|
+
var SecurityCardContent = styled9.div`
|
|
9196
9223
|
display: flex;
|
|
9197
9224
|
flex-direction: column;
|
|
9198
9225
|
gap: 4px;
|
|
9226
|
+
min-width: 0;
|
|
9199
9227
|
`;
|
|
9200
|
-
var
|
|
9201
|
-
font-size: 0.
|
|
9228
|
+
var SecurityCardTitle = styled9.div`
|
|
9229
|
+
font-size: 0.85rem;
|
|
9202
9230
|
font-weight: 600;
|
|
9203
9231
|
color: #fff;
|
|
9204
9232
|
`;
|
|
9205
|
-
var
|
|
9233
|
+
var SecurityCardStatus = styled9.div`
|
|
9206
9234
|
display: flex;
|
|
9207
9235
|
align-items: center;
|
|
9208
9236
|
gap: 6px;
|
|
9209
|
-
font-size: 0.
|
|
9237
|
+
font-size: 0.75rem;
|
|
9210
9238
|
color: rgba(255,255,255,0.5);
|
|
9211
9239
|
`;
|
|
9212
|
-
var
|
|
9240
|
+
var SecurityCardProvider = styled9.div`
|
|
9213
9241
|
display: flex;
|
|
9214
9242
|
align-items: center;
|
|
9215
|
-
margin-top:
|
|
9243
|
+
margin-top: 1px;
|
|
9216
9244
|
`;
|
|
9217
9245
|
var SecurityStatusDot = styled9.span`
|
|
9218
9246
|
width: 6px;
|
|
@@ -9222,21 +9250,17 @@ var SecurityStatusDot = styled9.span`
|
|
|
9222
9250
|
display: inline-block;
|
|
9223
9251
|
flex-shrink: 0;
|
|
9224
9252
|
`;
|
|
9225
|
-
var
|
|
9226
|
-
display: flex;
|
|
9227
|
-
align-items: center;
|
|
9228
|
-
flex-shrink: 0;
|
|
9229
|
-
`;
|
|
9230
|
-
var SecurityRowLinks = styled9.div`
|
|
9253
|
+
var SecurityCardLinks = styled9.div`
|
|
9231
9254
|
display: flex;
|
|
9232
|
-
gap:
|
|
9255
|
+
gap: 0.75rem;
|
|
9256
|
+
margin-top: 4px;
|
|
9233
9257
|
`;
|
|
9234
9258
|
var SecurityDocLink = styled9.a`
|
|
9235
|
-
font-size: 0.
|
|
9236
|
-
color: rgba(255,255,255,0.
|
|
9259
|
+
font-size: 0.72rem;
|
|
9260
|
+
color: rgba(255,255,255,0.4);
|
|
9237
9261
|
text-decoration: underline;
|
|
9238
9262
|
text-underline-offset: 3px;
|
|
9239
|
-
text-decoration-color: rgba(255,255,255,0.
|
|
9263
|
+
text-decoration-color: rgba(255,255,255,0.15);
|
|
9240
9264
|
cursor: pointer;
|
|
9241
9265
|
transition: color 0.15s, text-decoration-color 0.15s;
|
|
9242
9266
|
&:hover {
|
|
@@ -9439,7 +9463,11 @@ var DivTableTH = styled9.th`
|
|
|
9439
9463
|
`;
|
|
9440
9464
|
var DivTableRow = styled9.tr`
|
|
9441
9465
|
border-bottom: 1px solid rgba(255,255,255,0.03);
|
|
9466
|
+
background: ${(p) => p.$highlighted ? "rgba(14,203,129,0.08)" : "transparent"};
|
|
9467
|
+
transition: background 0.15s ease;
|
|
9468
|
+
cursor: pointer;
|
|
9442
9469
|
&:last-child { border-bottom: none; }
|
|
9470
|
+
&:hover { background: rgba(14,203,129,0.08); }
|
|
9443
9471
|
`;
|
|
9444
9472
|
var DivTableTD = styled9.td`
|
|
9445
9473
|
padding: 0.55rem 0.5rem;
|
|
@@ -10505,7 +10533,7 @@ function AssetSelectorBar({
|
|
|
10505
10533
|
i > 0 && /* @__PURE__ */ jsx(Separator, { children: "|" }),
|
|
10506
10534
|
/* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center", gap: "0.5rem" }, children: [
|
|
10507
10535
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
10508
|
-
/* @__PURE__ */ jsx(
|
|
10536
|
+
/* @__PURE__ */ jsx(MetricLabel, { children: m.label }),
|
|
10509
10537
|
/* @__PURE__ */ jsx(MetricValue, { $accent: !!m.accent, $secondary: !!m.secondary, children: m.value })
|
|
10510
10538
|
] }),
|
|
10511
10539
|
m.change != null && /* @__PURE__ */ jsxs(MetricChange, { $positive: m.change >= 0, children: [
|
|
@@ -10645,7 +10673,7 @@ var SelectorMetrics = styled9.div`
|
|
|
10645
10673
|
gap: 0.5rem;
|
|
10646
10674
|
}
|
|
10647
10675
|
`;
|
|
10648
|
-
var
|
|
10676
|
+
var MetricLabel = styled9.span`
|
|
10649
10677
|
font-size: 0.75rem;
|
|
10650
10678
|
color: var(--color-text-secondary);
|
|
10651
10679
|
text-transform: uppercase;
|
|
@@ -10954,14 +10982,14 @@ function OfferingProgressCard({
|
|
|
10954
10982
|
] }) : /* @__PURE__ */ jsx(PreLiveStatus, { $statusColor: statusColor, children: "Sale Not Yet Open" }),
|
|
10955
10983
|
/* @__PURE__ */ jsxs(MetricsRow, { children: [
|
|
10956
10984
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
10957
|
-
/* @__PURE__ */ jsx(
|
|
10985
|
+
/* @__PURE__ */ jsx(MetricLabel2, { children: isPrivateClient ? "Token Price (Pre-Offering)" : "Token Price" }),
|
|
10958
10986
|
/* @__PURE__ */ jsxs(MetricValue2, { $accent: true, children: [
|
|
10959
10987
|
"$",
|
|
10960
10988
|
tokenPrice.toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 })
|
|
10961
10989
|
] })
|
|
10962
10990
|
] }),
|
|
10963
10991
|
/* @__PURE__ */ jsxs("div", { style: { textAlign: "right" }, children: [
|
|
10964
|
-
/* @__PURE__ */ jsx(
|
|
10992
|
+
/* @__PURE__ */ jsx(MetricLabel2, { children: isPrivateClient ? "Offering Valuation (Pre-Offering)" : "Offering Valuation" }),
|
|
10965
10993
|
/* @__PURE__ */ jsxs(MetricValue2, { children: [
|
|
10966
10994
|
"$",
|
|
10967
10995
|
offeringValuation.toLocaleString()
|
|
@@ -11086,7 +11114,7 @@ var MetricsRow = styled9.div`
|
|
|
11086
11114
|
border-top: 1px solid rgba(255,255,255,0.06);
|
|
11087
11115
|
padding-top: 1rem;
|
|
11088
11116
|
`;
|
|
11089
|
-
var
|
|
11117
|
+
var MetricLabel2 = styled9.div`
|
|
11090
11118
|
font-size: 0.6rem;
|
|
11091
11119
|
color: var(--color-text-secondary);
|
|
11092
11120
|
text-transform: uppercase;
|