@loafmarkets/ui 0.1.342 → 0.1.344

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -2488,6 +2488,11 @@ var PropertyTour = React5.forwardRef(
2488
2488
  ...props
2489
2489
  }, ref) => {
2490
2490
  const videoRef = React5.useRef(null);
2491
+ React5.useEffect(() => {
2492
+ if (videoRef.current && src) {
2493
+ videoRef.current.load();
2494
+ }
2495
+ }, [src]);
2491
2496
  React5.useEffect(() => {
2492
2497
  const video = videoRef.current;
2493
2498
  if (!video) return;
@@ -6752,62 +6757,68 @@ var LoginPopup = ({
6752
6757
  ] }) });
6753
6758
  }
6754
6759
  if (view === "otp") {
6755
- return /* @__PURE__ */ jsx(Overlay2, { onClick: onClose, children: /* @__PURE__ */ jsxs(PopupContainer, { onClick: (event) => event.stopPropagation(), children: [
6756
- /* @__PURE__ */ jsx(CloseButton, { onClick: onClose, "aria-label": "Close login popup", children: /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }) }),
6757
- /* @__PURE__ */ jsxs(BackButton, { onClick: () => setView("email"), children: [
6758
- /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z" }) }),
6759
- "Back"
6760
- ] }),
6761
- /* @__PURE__ */ jsxs(Title, { children: [
6762
- /* @__PURE__ */ jsx(LogoContainer3, { children: /* @__PURE__ */ jsx(LogoImage, { src: logoSrc, alt: logoAlt }) }),
6763
- "Enter Verification Code"
6764
- ] }),
6765
- /* @__PURE__ */ jsxs(InfoText, { style: { marginBottom: "1.5rem" }, children: [
6766
- "We sent a code to ",
6767
- /* @__PURE__ */ jsx("strong", { style: { color: "#eaecef" }, children: email })
6768
- ] }),
6769
- /* @__PURE__ */ jsx("form", { onSubmit: handleVerifyCode, children: /* @__PURE__ */ jsxs(EmailFormContainer, { children: [
6770
- /* @__PURE__ */ jsx(OTPContainer, { children: otp.map((digit, index) => /* @__PURE__ */ jsx(
6771
- OTPInput,
6772
- {
6773
- id: `otp-${index}`,
6774
- type: "text",
6775
- inputMode: "numeric",
6776
- maxLength: 1,
6777
- value: digit,
6778
- onChange: (event) => handleOTPChange(index, event.target.value),
6779
- onKeyDown: (event) => handleOTPKeyDown(index, event),
6780
- onInput: (event) => handleOTPInput(index, event),
6781
- onPaste: handleOTPPaste,
6782
- autoComplete: index === 0 ? "one-time-code" : "off",
6783
- autoFocus: index === 0
6784
- },
6785
- index
6786
- )) }),
6787
- /* @__PURE__ */ jsx(SubmitButton, { type: "submit", disabled: loading || otp.join("").length !== OTP_INPUT_LENGTH, children: loading ? "Verifying..." : "Verify" }),
6788
- error && /* @__PURE__ */ jsx(StatusMessage, { $error: true, children: error })
6789
- ] }) }),
6790
- /* @__PURE__ */ jsxs(InfoText, { children: [
6791
- "Didn't receive a code?",
6792
- " ",
6793
- /* @__PURE__ */ jsx(
6794
- "button",
6795
- {
6796
- type: "button",
6797
- onClick: (event) => {
6798
- event.preventDefault();
6799
- void handleSendCode(event);
6800
- },
6801
- style: {
6802
- background: "none",
6803
- border: "none",
6804
- color: "#f0b90b",
6805
- cursor: "pointer",
6806
- textDecoration: "underline"
6760
+ return /* @__PURE__ */ jsx(Overlay2, { onClick: loading ? void 0 : onClose, children: /* @__PURE__ */ jsxs(PopupContainer, { onClick: (event) => event.stopPropagation(), children: [
6761
+ !loading && /* @__PURE__ */ jsx(CloseButton, { onClick: onClose, "aria-label": "Close login popup", children: /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }) }),
6762
+ loading ? /* @__PURE__ */ jsxs(AccountCreationLoader, { children: [
6763
+ /* @__PURE__ */ jsx(SpinnerRing, {}),
6764
+ /* @__PURE__ */ jsx(AccountCreationText, { children: isSignUp ? "Preparing your account\u2026" : "Signing you in\u2026" }),
6765
+ /* @__PURE__ */ jsx(AccountCreationSubtext, { children: "This may take a few seconds" })
6766
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
6767
+ /* @__PURE__ */ jsxs(BackButton, { onClick: () => setView("email"), children: [
6768
+ /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z" }) }),
6769
+ "Back"
6770
+ ] }),
6771
+ /* @__PURE__ */ jsxs(Title, { children: [
6772
+ /* @__PURE__ */ jsx(LogoContainer3, { children: /* @__PURE__ */ jsx(LogoImage, { src: logoSrc, alt: logoAlt }) }),
6773
+ "Enter Verification Code"
6774
+ ] }),
6775
+ /* @__PURE__ */ jsxs(InfoText, { style: { marginBottom: "1.5rem" }, children: [
6776
+ "We sent a code to ",
6777
+ /* @__PURE__ */ jsx("strong", { style: { color: "#eaecef" }, children: email })
6778
+ ] }),
6779
+ /* @__PURE__ */ jsx("form", { onSubmit: handleVerifyCode, children: /* @__PURE__ */ jsxs(EmailFormContainer, { children: [
6780
+ /* @__PURE__ */ jsx(OTPContainer, { children: otp.map((digit, index) => /* @__PURE__ */ jsx(
6781
+ OTPInput,
6782
+ {
6783
+ id: `otp-${index}`,
6784
+ type: "text",
6785
+ inputMode: "numeric",
6786
+ maxLength: 1,
6787
+ value: digit,
6788
+ onChange: (event) => handleOTPChange(index, event.target.value),
6789
+ onKeyDown: (event) => handleOTPKeyDown(index, event),
6790
+ onInput: (event) => handleOTPInput(index, event),
6791
+ onPaste: handleOTPPaste,
6792
+ autoComplete: index === 0 ? "one-time-code" : "off",
6793
+ autoFocus: index === 0
6807
6794
  },
6808
- children: "Resend"
6809
- }
6810
- )
6795
+ index
6796
+ )) }),
6797
+ /* @__PURE__ */ jsx(SubmitButton, { type: "submit", disabled: otp.join("").length !== OTP_INPUT_LENGTH, children: "Verify" }),
6798
+ error && /* @__PURE__ */ jsx(StatusMessage, { $error: true, children: error })
6799
+ ] }) }),
6800
+ /* @__PURE__ */ jsxs(InfoText, { children: [
6801
+ "Didn't receive a code?",
6802
+ " ",
6803
+ /* @__PURE__ */ jsx(
6804
+ "button",
6805
+ {
6806
+ type: "button",
6807
+ onClick: (event) => {
6808
+ event.preventDefault();
6809
+ void handleSendCode(event);
6810
+ },
6811
+ style: {
6812
+ background: "none",
6813
+ border: "none",
6814
+ color: "#f0b90b",
6815
+ cursor: "pointer",
6816
+ textDecoration: "underline"
6817
+ },
6818
+ children: "Resend"
6819
+ }
6820
+ )
6821
+ ] })
6811
6822
  ] })
6812
6823
  ] }) });
6813
6824
  }
@@ -7632,6 +7643,37 @@ var MiniLiveFeed = () => {
7632
7643
  }
7633
7644
  );
7634
7645
  };
7646
+ var AccountCreationLoader = styled9.div`
7647
+ display: flex;
7648
+ flex-direction: column;
7649
+ align-items: center;
7650
+ justify-content: center;
7651
+ padding: 2rem 0;
7652
+ gap: 1rem;
7653
+ `;
7654
+ var AccountCreationText = styled9.p`
7655
+ color: var(--color-text, #eaecef);
7656
+ font-size: 1rem;
7657
+ font-weight: 500;
7658
+ margin: 0;
7659
+ `;
7660
+ var AccountCreationSubtext = styled9.p`
7661
+ color: var(--color-text-secondary, #848e9c);
7662
+ font-size: 0.8rem;
7663
+ margin: 0;
7664
+ `;
7665
+ var SpinnerRing = styled9.div`
7666
+ width: 40px;
7667
+ height: 40px;
7668
+ border: 3px solid rgba(230, 198, 86, 0.2);
7669
+ border-top-color: var(--color-accent, #e6c656);
7670
+ border-radius: 50%;
7671
+ animation: spin 0.8s linear infinite;
7672
+
7673
+ @keyframes spin {
7674
+ to { transform: rotate(360deg); }
7675
+ }
7676
+ `;
7635
7677
  LoginPopup.displayName = "LoginPopup";
7636
7678
  var PropertyCompareBar = React5.forwardRef(
7637
7679
  ({
@@ -8607,7 +8649,7 @@ function PropertyOverview({
8607
8649
  const tokenMarketCap = tokenPriceValue && resolvedTokensIssued ? tokenPriceValue * resolvedTokensIssued : null;
8608
8650
  const currentDividendYield = tokenMarketCap && monthlyCoupon > 0 ? (monthlyCoupon * 12 / tokenMarketCap * 100).toFixed(2) : null;
8609
8651
  const loadingSkeleton = /* @__PURE__ */ jsx(Skeleton, { width: 90, height: 18 });
8610
- const rawPropertyType = overviewData?.propertyType ?? propertyTypeLabel ?? null;
8652
+ const rawPropertyType = propertyTypeLabel ?? null;
8611
8653
  const resolvedPropertyType = rawPropertyType?.toLowerCase() === "house" ? "Residential" : rawPropertyType;
8612
8654
  const galleryImages = images ?? [];
8613
8655
  const chainValue = /* @__PURE__ */ jsxs(ChainLogos, { children: [
@@ -8768,102 +8810,7 @@ function PropertyOverview({
8768
8810
  item.icon && /* @__PURE__ */ jsx(AssetFeatureIcon, { children: item.icon }),
8769
8811
  item.value && /* @__PURE__ */ jsx(AssetFeatureValue, { children: item.value }),
8770
8812
  /* @__PURE__ */ jsx(AssetFeatureLabel, { children: item.label })
8771
- ] }, i)) }),
8772
- /* @__PURE__ */ jsxs(CompAssetsPanel, { children: [
8773
- /* @__PURE__ */ jsx(StatsColumnHeader, { children: "Comparable Assets" }),
8774
- /* @__PURE__ */ jsxs(CompAssetsGrid, { children: [
8775
- /* @__PURE__ */ jsxs(CompAssetStrip, { children: [
8776
- /* @__PURE__ */ jsx(CompAssetStripImg, { children: /* @__PURE__ */ jsx("img", { src: "/boondabah.jpg", alt: "Boondabah", onError: (e) => {
8777
- e.target.style.display = "none";
8778
- } }) }),
8779
- /* @__PURE__ */ jsxs(CompAssetStripInfo, { children: [
8780
- /* @__PURE__ */ jsxs(CompAssetStripName, { children: [
8781
- "Boondabah ",
8782
- /* @__PURE__ */ jsx(CompAssetBadge, { children: "HERITAGE" })
8783
- ] }),
8784
- /* @__PURE__ */ jsx(CompAssetStripAddr, { children: "200A Raglan St, Mosman" })
8785
- ] }),
8786
- /* @__PURE__ */ jsxs(CompAssetStripRight, { children: [
8787
- /* @__PURE__ */ jsx(CompAssetStripPrice, { children: "$16.07M" }),
8788
- /* @__PURE__ */ jsx(CompAssetStripGrowth, { style: { color: "#4ade80" }, children: "+119%" })
8789
- ] }),
8790
- /* @__PURE__ */ jsxs(CompAssetTooltip, { children: [
8791
- /* @__PURE__ */ jsx(CompAssetTooltipArrow, {}),
8792
- /* @__PURE__ */ jsx(CompAssetTooltipImg, { children: /* @__PURE__ */ jsx("img", { src: "/boondabah.jpg", alt: "Boondabah", onError: (e) => {
8793
- e.target.style.display = "none";
8794
- } }) }),
8795
- /* @__PURE__ */ jsxs(CompAssetTooltipTitle, { children: [
8796
- "Boondabah ",
8797
- /* @__PURE__ */ jsx(CompAssetBadge, { children: "HERITAGE" })
8798
- ] }),
8799
- /* @__PURE__ */ jsx(CompAssetTooltipAddr, { children: "200A Raglan St, Mosman" }),
8800
- /* @__PURE__ */ jsxs(CompAssetTooltipStats, { children: [
8801
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8802
- /* @__PURE__ */ jsx("span", { children: "Sale Price" }),
8803
- /* @__PURE__ */ jsx("span", { children: "$16.07M" })
8804
- ] }),
8805
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8806
- /* @__PURE__ */ jsx("span", { children: "Land" }),
8807
- /* @__PURE__ */ jsx("span", { children: "2,066 sqm" })
8808
- ] }),
8809
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8810
- /* @__PURE__ */ jsx("span", { children: "Era" }),
8811
- /* @__PURE__ */ jsx("span", { children: "c.1905" })
8812
- ] }),
8813
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8814
- /* @__PURE__ */ jsx("span", { children: "Growth" }),
8815
- /* @__PURE__ */ jsx("span", { style: { color: "#4ade80" }, children: "+119%" })
8816
- ] })
8817
- ] })
8818
- ] })
8819
- ] }),
8820
- /* @__PURE__ */ jsxs(CompAssetStrip, { children: [
8821
- /* @__PURE__ */ jsx(CompAssetStripImg, { children: /* @__PURE__ */ jsx("img", { src: "/bradleys.jpg", alt: "Dobroyd", onError: (e) => {
8822
- e.target.style.display = "none";
8823
- } }) }),
8824
- /* @__PURE__ */ jsxs(CompAssetStripInfo, { children: [
8825
- /* @__PURE__ */ jsxs(CompAssetStripName, { children: [
8826
- "Dobroyd ",
8827
- /* @__PURE__ */ jsx(CompAssetBadge, { children: "HERITAGE" })
8828
- ] }),
8829
- /* @__PURE__ */ jsx(CompAssetStripAddr, { children: "7 Bradleys Head Rd, Mosman" })
8830
- ] }),
8831
- /* @__PURE__ */ jsxs(CompAssetStripRight, { children: [
8832
- /* @__PURE__ */ jsx(CompAssetStripPrice, { children: "$27.96M" }),
8833
- /* @__PURE__ */ jsx(CompAssetStripGrowth, { style: { color: "#4ade80" }, children: "+617%" })
8834
- ] }),
8835
- /* @__PURE__ */ jsxs(CompAssetTooltip, { children: [
8836
- /* @__PURE__ */ jsx(CompAssetTooltipArrow, {}),
8837
- /* @__PURE__ */ jsx(CompAssetTooltipImg, { children: /* @__PURE__ */ jsx("img", { src: "/bradleys.jpg", alt: "Dobroyd", onError: (e) => {
8838
- e.target.style.display = "none";
8839
- } }) }),
8840
- /* @__PURE__ */ jsxs(CompAssetTooltipTitle, { children: [
8841
- "Dobroyd ",
8842
- /* @__PURE__ */ jsx(CompAssetBadge, { children: "HERITAGE" })
8843
- ] }),
8844
- /* @__PURE__ */ jsx(CompAssetTooltipAddr, { children: "7 Bradleys Head Rd, Mosman" }),
8845
- /* @__PURE__ */ jsxs(CompAssetTooltipStats, { children: [
8846
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8847
- /* @__PURE__ */ jsx("span", { children: "Sale Price" }),
8848
- /* @__PURE__ */ jsx("span", { children: "$27.96M" })
8849
- ] }),
8850
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8851
- /* @__PURE__ */ jsx("span", { children: "Land" }),
8852
- /* @__PURE__ */ jsx("span", { children: "2,592 sqm" })
8853
- ] }),
8854
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8855
- /* @__PURE__ */ jsx("span", { children: "Era" }),
8856
- /* @__PURE__ */ jsx("span", { children: "c.1905" })
8857
- ] }),
8858
- /* @__PURE__ */ jsxs(CompAssetTooltipRow, { children: [
8859
- /* @__PURE__ */ jsx("span", { children: "Growth" }),
8860
- /* @__PURE__ */ jsx("span", { style: { color: "#4ade80" }, children: "+617%" })
8861
- ] })
8862
- ] })
8863
- ] })
8864
- ] })
8865
- ] })
8866
- ] })
8813
+ ] }, i)) })
8867
8814
  ] }),
8868
8815
  /* @__PURE__ */ jsxs(StatsColumn, { children: [
8869
8816
  /* @__PURE__ */ jsx(StatsColumnHeader, { children: "Asset Specification" }),
@@ -8983,47 +8930,6 @@ function PropertyOverview({
8983
8930
  ] })
8984
8931
  ] })
8985
8932
  ] }),
8986
- /* @__PURE__ */ jsxs(MapCompRow, { children: [
8987
- /* @__PURE__ */ jsx(MapCompLeft, { children: /* @__PURE__ */ jsx(
8988
- GalleryMapSection,
8989
- {
8990
- images: galleryImages.map((img) => ({ src: img.imageUrl, title: img.title, subtitle: img.subtitle })),
8991
- categories: galleryCategories,
8992
- propertyLocation: location,
8993
- videoUrl,
8994
- tokenName,
8995
- onPhotoClick: onPhotosClick,
8996
- hideGallery: true,
8997
- hideSuburb: true
8998
- }
8999
- ) }),
9000
- /* @__PURE__ */ jsxs(SuburbPanel, { children: [
9001
- /* @__PURE__ */ jsxs(SuburbPanelTitle, { children: [
9002
- "Suburb Profile (",
9003
- location.split(",")[0]?.trim() || location,
9004
- ")"
9005
- ] }),
9006
- /* @__PURE__ */ jsxs(SuburbPanelGrid, { children: [
9007
- /* @__PURE__ */ jsxs(SuburbPanelStat, { children: [
9008
- /* @__PURE__ */ jsx(SuburbPanelStatLabel, { children: "Median House Price" }),
9009
- /* @__PURE__ */ jsx(SuburbPanelStatValue, { children: "$5.5M" })
9010
- ] }),
9011
- /* @__PURE__ */ jsxs(SuburbPanelStat, { children: [
9012
- /* @__PURE__ */ jsx(SuburbPanelStatLabel, { children: "5yr Growth" }),
9013
- /* @__PURE__ */ jsx(SuburbPanelStatValue, { children: "+42%" })
9014
- ] }),
9015
- /* @__PURE__ */ jsxs(SuburbPanelStat, { children: [
9016
- /* @__PURE__ */ jsx(SuburbPanelStatLabel, { children: "Suburb Rank" }),
9017
- /* @__PURE__ */ jsx(SuburbPanelStatValue, { children: "Top 1%" })
9018
- ] }),
9019
- /* @__PURE__ */ jsxs(SuburbPanelStat, { children: [
9020
- /* @__PURE__ */ jsx(SuburbPanelStatLabel, { children: "Avg. Days on Market" }),
9021
- /* @__PURE__ */ jsx(SuburbPanelStatValue, { children: "28" })
9022
- ] })
9023
- ] }),
9024
- /* @__PURE__ */ jsx(SuburbPanelDesc, { 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." })
9025
- ] })
9026
- ] }),
9027
8933
  /* @__PURE__ */ jsxs(AssetBentoNarratives, { children: [
9028
8934
  /* @__PURE__ */ jsxs(NarrativeCard, { children: [
9029
8935
  /* @__PURE__ */ jsx(NarrativeIcon, { children: /* @__PURE__ */ jsx("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ jsx("path", { d: "M22 12h-4l-3 9L9 3l-3 9H2" }) }) }),
@@ -9054,21 +8960,11 @@ function PropertyOverview({
9054
8960
  /* @__PURE__ */ jsx(THLabel, { children: "Hours (AEST)" }),
9055
8961
  /* @__PURE__ */ jsx(THLabel, { children: "Days" })
9056
8962
  ] }),
9057
- /* @__PURE__ */ jsxs(TradingHoursRow, { children: [
8963
+ /* @__PURE__ */ jsxs(TradingHoursRow, { $last: true, children: [
9058
8964
  /* @__PURE__ */ jsx(THValue, { children: "Continuous Trading" }),
9059
8965
  /* @__PURE__ */ jsx(THValue, { children: "10:00 \u2013 16:00" }),
9060
8966
  /* @__PURE__ */ jsx(THValue, { children: "Mon \u2013 Fri" })
9061
8967
  ] }),
9062
- /* @__PURE__ */ jsxs(TradingHoursRow, { children: [
9063
- /* @__PURE__ */ jsx(THValue, { children: "After Hours" }),
9064
- /* @__PURE__ */ jsx(THValue, { children: "16:00 \u2013 20:00" }),
9065
- /* @__PURE__ */ jsx(THValue, { children: "Mon \u2013 Fri" })
9066
- ] }),
9067
- /* @__PURE__ */ jsxs(TradingHoursRow, { $last: true, children: [
9068
- /* @__PURE__ */ jsx(THValue, { children: "Pre-Market" }),
9069
- /* @__PURE__ */ jsx(THValue, { children: "07:00 \u2013 10:00" }),
9070
- /* @__PURE__ */ jsx(THValue, { children: "Mon \u2013 Fri" })
9071
- ] }),
9072
8968
  /* @__PURE__ */ jsx(TradingHoursNote, { children: "All times are Australian Eastern Standard Time (AEST/AEDT). Markets are closed on Australian public holidays." })
9073
8969
  ] })
9074
8970
  ] }),
@@ -9317,66 +9213,6 @@ var GallerySpecLeft = styled9.div`
9317
9213
  flex-direction: column;
9318
9214
  gap: 0.75rem;
9319
9215
  `;
9320
- var MapCompRow = styled9.div`
9321
- display: grid;
9322
- grid-template-columns: 1fr 380px;
9323
- gap: 0.75rem;
9324
- margin-top: 0.75rem;
9325
- align-items: stretch;
9326
- @media (max-width: 900px) { grid-template-columns: 1fr; }
9327
- `;
9328
- var MapCompLeft = styled9.div`
9329
- min-width: 0;
9330
- overflow: hidden;
9331
- `;
9332
- var SuburbPanel = styled9.div`
9333
- background: #111111;
9334
- border: 1px solid rgba(255,255,255,0.1);
9335
- border-radius: 12px;
9336
- padding: 1.25rem;
9337
- display: flex;
9338
- flex-direction: column;
9339
- gap: 0.75rem;
9340
- `;
9341
- var SuburbPanelTitle = styled9.div`
9342
- font-size: 0.65rem;
9343
- color: #D4AF37;
9344
- text-transform: uppercase;
9345
- letter-spacing: 0.12em;
9346
- font-weight: 600;
9347
- padding-bottom: 0.75rem;
9348
- border-bottom: 1px solid rgba(255,255,255,0.06);
9349
- `;
9350
- var SuburbPanelGrid = styled9.div`
9351
- display: grid;
9352
- grid-template-columns: 1fr 1fr;
9353
- gap: 0.5rem;
9354
- `;
9355
- var SuburbPanelStat = styled9.div`
9356
- background: rgba(255,255,255,0.03);
9357
- border-radius: 6px;
9358
- padding: 0.5rem 0.65rem;
9359
- border: 1px solid rgba(255,255,255,0.04);
9360
- `;
9361
- var SuburbPanelStatLabel = styled9.div`
9362
- font-size: 0.6rem;
9363
- color: rgba(255,255,255,0.4);
9364
- text-transform: uppercase;
9365
- letter-spacing: 0.06em;
9366
- margin-bottom: 0.2rem;
9367
- `;
9368
- var SuburbPanelStatValue = styled9.div`
9369
- font-size: 0.9rem;
9370
- font-weight: 600;
9371
- color: #fff;
9372
- font-variant-numeric: tabular-nums;
9373
- `;
9374
- var SuburbPanelDesc = styled9.p`
9375
- margin: 0;
9376
- font-size: 0.75rem;
9377
- color: rgba(255,255,255,0.45);
9378
- line-height: 1.5;
9379
- `;
9380
9216
  var AssetBentoNarratives = styled9.div`
9381
9217
  display: grid;
9382
9218
  grid-template-columns: repeat(3, 1fr);
@@ -9751,182 +9587,6 @@ var TimelineHoldPeriod = styled9.span`
9751
9587
  color: rgba(255,255,255,0.25);
9752
9588
  font-weight: 400;
9753
9589
  `;
9754
- var CompAssetsPanel = styled9.div`
9755
- background: #111111;
9756
- border: 1px solid rgba(255,255,255,0.1);
9757
- border-radius: 12px;
9758
- padding: 0.75rem 1rem;
9759
- display: flex;
9760
- flex-direction: column;
9761
- gap: 0.35rem;
9762
- `;
9763
- var CompAssetsGrid = styled9.div`
9764
- display: grid;
9765
- grid-template-columns: 1fr 1fr;
9766
- gap: 0.5rem;
9767
- @media (max-width: 768px) {
9768
- grid-template-columns: 1fr;
9769
- }
9770
- `;
9771
- var CompAssetStrip = styled9.div`
9772
- position: relative;
9773
- display: flex;
9774
- align-items: center;
9775
- gap: 0.75rem;
9776
- background: rgba(255,255,255,0.02);
9777
- border: 1px solid rgba(255,255,255,0.06);
9778
- border-radius: 10px;
9779
- padding: 0.6rem 1rem 0.6rem 0.6rem;
9780
- transition: border-color 0.2s, background 0.2s;
9781
- cursor: pointer;
9782
- &:hover {
9783
- border-color: rgba(212,175,55,0.3);
9784
- background: rgba(255,255,255,0.03);
9785
- }
9786
- &:hover > div:last-child {
9787
- display: block;
9788
- }
9789
- `;
9790
- var CompAssetStripImg = styled9.div`
9791
- width: 52px;
9792
- height: 52px;
9793
- border-radius: 8px;
9794
- overflow: hidden;
9795
- flex-shrink: 0;
9796
- background: rgba(255,255,255,0.05);
9797
- img {
9798
- width: 100%;
9799
- height: 100%;
9800
- object-fit: cover;
9801
- }
9802
- `;
9803
- var CompAssetStripInfo = styled9.div`
9804
- flex: 1;
9805
- min-width: 0;
9806
- display: flex;
9807
- flex-direction: column;
9808
- gap: 2px;
9809
- `;
9810
- var CompAssetStripName = styled9.div`
9811
- font-size: 0.9rem;
9812
- font-weight: 600;
9813
- color: #fff;
9814
- display: flex;
9815
- align-items: center;
9816
- gap: 0.4rem;
9817
- `;
9818
- var CompAssetStripAddr = styled9.div`
9819
- font-size: 0.72rem;
9820
- color: rgba(255,255,255,0.4);
9821
- `;
9822
- var CompAssetStripRight = styled9.div`
9823
- flex-shrink: 0;
9824
- text-align: right;
9825
- display: flex;
9826
- flex-direction: column;
9827
- align-items: flex-end;
9828
- gap: 2px;
9829
- `;
9830
- var CompAssetStripPrice = styled9.div`
9831
- font-size: 1rem;
9832
- font-weight: 700;
9833
- color: #fff;
9834
- font-variant-numeric: tabular-nums;
9835
- white-space: nowrap;
9836
- `;
9837
- var CompAssetStripGrowth = styled9.div`
9838
- font-size: 0.72rem;
9839
- font-weight: 500;
9840
- font-variant-numeric: tabular-nums;
9841
- `;
9842
- var CompAssetBadge = styled9.span`
9843
- font-size: 0.52rem;
9844
- font-weight: 600;
9845
- text-transform: uppercase;
9846
- letter-spacing: 0.06em;
9847
- color: #4ade80;
9848
- background: rgba(74,222,128,0.1);
9849
- border: 1px solid rgba(74,222,128,0.2);
9850
- padding: 1px 6px;
9851
- border-radius: 4px;
9852
- white-space: nowrap;
9853
- `;
9854
- var CompAssetTooltip = styled9.div`
9855
- display: none;
9856
- position: absolute;
9857
- bottom: calc(100% + 10px);
9858
- left: 50%;
9859
- transform: translateX(-50%);
9860
- width: 280px;
9861
- background: #1a1d24;
9862
- border: 1px solid rgba(255,255,255,0.1);
9863
- border-radius: 8px;
9864
- padding: 0.75rem;
9865
- z-index: 100;
9866
- box-shadow: 0 8px 24px rgba(0,0,0,0.5);
9867
- pointer-events: none;
9868
- `;
9869
- var CompAssetTooltipArrow = styled9.div`
9870
- position: absolute;
9871
- bottom: -5px;
9872
- left: 50%;
9873
- transform: translateX(-50%) rotate(45deg);
9874
- width: 8px;
9875
- height: 8px;
9876
- background: #1a1d24;
9877
- border-right: 1px solid rgba(255,255,255,0.1);
9878
- border-bottom: 1px solid rgba(255,255,255,0.1);
9879
- `;
9880
- var CompAssetTooltipImg = styled9.div`
9881
- width: 100%;
9882
- height: 120px;
9883
- border-radius: 6px;
9884
- overflow: hidden;
9885
- margin-bottom: 0.6rem;
9886
- background: rgba(255,255,255,0.03);
9887
- img {
9888
- width: 100%;
9889
- height: 100%;
9890
- object-fit: cover;
9891
- }
9892
- `;
9893
- var CompAssetTooltipTitle = styled9.div`
9894
- font-size: 0.8rem;
9895
- font-weight: 600;
9896
- color: #fff;
9897
- display: flex;
9898
- align-items: center;
9899
- gap: 0.4rem;
9900
- margin-bottom: 2px;
9901
- `;
9902
- var CompAssetTooltipAddr = styled9.div`
9903
- font-size: 0.65rem;
9904
- color: rgba(255,255,255,0.4);
9905
- margin-bottom: 0.5rem;
9906
- `;
9907
- var CompAssetTooltipStats = styled9.div`
9908
- display: flex;
9909
- flex-direction: column;
9910
- gap: 0;
9911
- `;
9912
- var CompAssetTooltipRow = styled9.div`
9913
- display: flex;
9914
- justify-content: space-between;
9915
- align-items: center;
9916
- padding: 0.3rem 0;
9917
- border-bottom: 1px solid rgba(255,255,255,0.04);
9918
- &:last-child { border-bottom: none; }
9919
- span:first-child {
9920
- font-size: 0.7rem;
9921
- color: rgba(255,255,255,0.4);
9922
- }
9923
- span:last-child {
9924
- font-size: 0.75rem;
9925
- font-weight: 500;
9926
- color: #fff;
9927
- font-variant-numeric: tabular-nums;
9928
- }
9929
- `;
9930
9590
  var FeaturesPanel = styled9.div`
9931
9591
  display: flex;
9932
9592
  flex-wrap: wrap;