@loafmarkets/ui 0.1.58 → 0.1.60

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 CHANGED
@@ -958,8 +958,30 @@ type PropertyBuyProps = {
958
958
  onCancelOrder?: (orderId: number) => Promise<void>;
959
959
  cancellingOrderId?: number | null;
960
960
  };
961
+ newsItems?: PropertyNewsItem[];
962
+ newsConnectionStatus?: 'live' | 'connecting';
961
963
  };
962
- declare function PropertyBuy({ propertyName, propertyLocation: propertyLocationLabel, tokenDisplayName, tokenSymbol, tokenName, isAuthenticated, onSignIn, saleData, walletUsdcBalance, walletPropertyTokenBalance, onPurchase, purchaseStatus, purchaseError, onDeposit, opensAt, isPrivateClient, recentOrders, ordersAllocated, subscribers, isLoadingActivity, selectorItems, onSelectorSelect, portfolioActivity, }: PropertyBuyProps): react_jsx_runtime.JSX.Element;
964
+ declare function PropertyBuy({ propertyName, propertyLocation: propertyLocationLabel, tokenDisplayName, tokenSymbol, tokenName, isAuthenticated, onSignIn, saleData, walletUsdcBalance, walletPropertyTokenBalance, onPurchase, purchaseStatus, purchaseError, onDeposit, opensAt, isPrivateClient, recentOrders, ordersAllocated, subscribers, isLoadingActivity, selectorItems, onSelectorSelect, portfolioActivity, newsItems, newsConnectionStatus, }: PropertyBuyProps): react_jsx_runtime.JSX.Element;
965
+
966
+ type OfferingProgressCardProps = {
967
+ ipoStarted: boolean;
968
+ statusLabel: string;
969
+ statusColor: string;
970
+ ipoStatus: string;
971
+ tokenPrice: number;
972
+ offeringValuation: number;
973
+ percentSold: number;
974
+ totalSold: number;
975
+ supplyToSell: number;
976
+ opensAt?: number | null;
977
+ subscriberCount?: number;
978
+ raisedAmount?: number;
979
+ targetAmount?: number;
980
+ isPrivateClient?: boolean;
981
+ style?: React__default.CSSProperties;
982
+ className?: string;
983
+ };
984
+ declare function OfferingProgressCard({ ipoStarted, statusLabel, statusColor, ipoStatus, tokenPrice, offeringValuation, percentSold, totalSold, supplyToSell, opensAt, subscriberCount, raisedAmount, targetAmount, isPrivateClient, style, className, }: OfferingProgressCardProps): react_jsx_runtime.JSX.Element;
963
985
 
964
986
  type OwnerBookingProps = {
965
987
  propertyName?: string | null;
@@ -1109,4 +1131,4 @@ interface SkeletonProps extends React$1.HTMLAttributes<HTMLDivElement> {
1109
1131
  */
1110
1132
  declare const Skeleton: React$1.ForwardRefExoticComponent<SkeletonProps & React$1.RefAttributes<HTMLDivElement>>;
1111
1133
 
1112
- export { type ActivityTabId, AssetSelectorBar, type AssetSelectorBarProps, type AssetSelectorMetric, Badge, type BadgeProps, Button, type ButtonProps, Card, CardContent, type CardContentProps, CardDescription, type CardDescriptionProps, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, type CardProps, CardTitle, type CardTitleProps, type FinancialItem, type FundWalletParams, type FundWalletResult, Header, type HeaderProps, type HousePositionOrderbook, type HousePositionPendingOrder, HousePositionSlider, HousePositionSliderMobile, type HousePositionSliderMobileOrderPayload, type HousePositionSliderMobileOrderbook, type HousePositionSliderMobileProps, type HousePositionSliderOrderPayload, type HousePositionSliderProps, type InspectionSlot, LoafLiquidityBadge, LoafLiquidityLogo, type LoafLiquidityLogoProps, LoginPopup, type LoginPopupProps, MobileTradeNav, type MobileTradeNavItem, type MobileTradeNavProps, type OfferStatus, Orderbook, type OrderbookLevel, type OrderbookProps, type OrderbookSide, type OrderbookTrade, type OverviewImage, type OverviewResponse, OwnerBooking, type OwnerBookingProps, PaymentPopup, type PaymentPopupProps, PortfolioActivityPanel, type PortfolioActivityPanelProps, type PortfolioPosition, PortfolioSummary, type PortfolioSummaryProps, PriceChart, type PriceChartCandle, type PriceChartProps, type PriceChartRange, type PropertyAddressOption, PropertyBuy, PropertyCompareBar, type PropertyCompareBarProps, PropertyDocuments, type PropertyGalleryHotspot, type PropertyGalleryImage, PropertyHeroHeader, type PropertyHeroHeaderProps, PropertyHistory, type PropertyInfoItem, PropertyInspectionTimes, type PropertyNewsItem, type PropertyNewsType, PropertyNewsUpdates, type PropertyNewsUpdatesProps, type PropertyOffer, PropertyOffers, type PropertyOffersProps, PropertyOverview, type PropertyOverviewProps, PropertyPhotoGallery, type PropertyPriceSummary, PropertySubheader, type PropertySubheaderAction, type PropertySubheaderProps, type PropertySubheaderTab, PropertyTour, type PropertyTourProps, PropertyValuation, type PropertyValuationProps, type PropertyValueSummary, type PurchaseFeedItem, type SelectorItem, Skeleton, type SkeletonProps, type ToastData, ToastProvider, type ToastVariant, TradeConfirmationModal, type TradeConfirmationModalDetails, type TradeConfirmationModalProps, TradingSlider, type TradingSliderProps, type ValuationHistoryPoint, type ValuationRecentSale, type ValuationSummary, type YourOrder, type YourOrderSide, YourOrders, type YourOrdersProps, badgeVariants, buttonVariants, hasPendingActivity, useAdaptivePolling, useToast };
1134
+ export { type ActivityTabId, AssetSelectorBar, type AssetSelectorBarProps, type AssetSelectorMetric, Badge, type BadgeProps, Button, type ButtonProps, Card, CardContent, type CardContentProps, CardDescription, type CardDescriptionProps, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, type CardProps, CardTitle, type CardTitleProps, type FinancialItem, type FundWalletParams, type FundWalletResult, Header, type HeaderProps, type HousePositionOrderbook, type HousePositionPendingOrder, HousePositionSlider, HousePositionSliderMobile, type HousePositionSliderMobileOrderPayload, type HousePositionSliderMobileOrderbook, type HousePositionSliderMobileProps, type HousePositionSliderOrderPayload, type HousePositionSliderProps, type InspectionSlot, LoafLiquidityBadge, LoafLiquidityLogo, type LoafLiquidityLogoProps, LoginPopup, type LoginPopupProps, MobileTradeNav, type MobileTradeNavItem, type MobileTradeNavProps, type OfferStatus, OfferingProgressCard, type OfferingProgressCardProps, Orderbook, type OrderbookLevel, type OrderbookProps, type OrderbookSide, type OrderbookTrade, type OverviewImage, type OverviewResponse, OwnerBooking, type OwnerBookingProps, PaymentPopup, type PaymentPopupProps, PortfolioActivityPanel, type PortfolioActivityPanelProps, type PortfolioPosition, PortfolioSummary, type PortfolioSummaryProps, PriceChart, type PriceChartCandle, type PriceChartProps, type PriceChartRange, type PropertyAddressOption, PropertyBuy, PropertyCompareBar, type PropertyCompareBarProps, PropertyDocuments, type PropertyGalleryHotspot, type PropertyGalleryImage, PropertyHeroHeader, type PropertyHeroHeaderProps, PropertyHistory, type PropertyInfoItem, PropertyInspectionTimes, type PropertyNewsItem, type PropertyNewsType, PropertyNewsUpdates, type PropertyNewsUpdatesProps, type PropertyOffer, PropertyOffers, type PropertyOffersProps, PropertyOverview, type PropertyOverviewProps, PropertyPhotoGallery, type PropertyPriceSummary, PropertySubheader, type PropertySubheaderAction, type PropertySubheaderProps, type PropertySubheaderTab, PropertyTour, type PropertyTourProps, PropertyValuation, type PropertyValuationProps, type PropertyValueSummary, type PurchaseFeedItem, type SelectorItem, Skeleton, type SkeletonProps, type ToastData, ToastProvider, type ToastVariant, TradeConfirmationModal, type TradeConfirmationModalDetails, type TradeConfirmationModalProps, TradingSlider, type TradingSliderProps, type ValuationHistoryPoint, type ValuationRecentSale, type ValuationSummary, type YourOrder, type YourOrderSide, YourOrders, type YourOrdersProps, badgeVariants, buttonVariants, hasPendingActivity, useAdaptivePolling, useToast };
package/dist/index.d.ts CHANGED
@@ -958,8 +958,30 @@ type PropertyBuyProps = {
958
958
  onCancelOrder?: (orderId: number) => Promise<void>;
959
959
  cancellingOrderId?: number | null;
960
960
  };
961
+ newsItems?: PropertyNewsItem[];
962
+ newsConnectionStatus?: 'live' | 'connecting';
961
963
  };
962
- declare function PropertyBuy({ propertyName, propertyLocation: propertyLocationLabel, tokenDisplayName, tokenSymbol, tokenName, isAuthenticated, onSignIn, saleData, walletUsdcBalance, walletPropertyTokenBalance, onPurchase, purchaseStatus, purchaseError, onDeposit, opensAt, isPrivateClient, recentOrders, ordersAllocated, subscribers, isLoadingActivity, selectorItems, onSelectorSelect, portfolioActivity, }: PropertyBuyProps): react_jsx_runtime.JSX.Element;
964
+ declare function PropertyBuy({ propertyName, propertyLocation: propertyLocationLabel, tokenDisplayName, tokenSymbol, tokenName, isAuthenticated, onSignIn, saleData, walletUsdcBalance, walletPropertyTokenBalance, onPurchase, purchaseStatus, purchaseError, onDeposit, opensAt, isPrivateClient, recentOrders, ordersAllocated, subscribers, isLoadingActivity, selectorItems, onSelectorSelect, portfolioActivity, newsItems, newsConnectionStatus, }: PropertyBuyProps): react_jsx_runtime.JSX.Element;
965
+
966
+ type OfferingProgressCardProps = {
967
+ ipoStarted: boolean;
968
+ statusLabel: string;
969
+ statusColor: string;
970
+ ipoStatus: string;
971
+ tokenPrice: number;
972
+ offeringValuation: number;
973
+ percentSold: number;
974
+ totalSold: number;
975
+ supplyToSell: number;
976
+ opensAt?: number | null;
977
+ subscriberCount?: number;
978
+ raisedAmount?: number;
979
+ targetAmount?: number;
980
+ isPrivateClient?: boolean;
981
+ style?: React__default.CSSProperties;
982
+ className?: string;
983
+ };
984
+ declare function OfferingProgressCard({ ipoStarted, statusLabel, statusColor, ipoStatus, tokenPrice, offeringValuation, percentSold, totalSold, supplyToSell, opensAt, subscriberCount, raisedAmount, targetAmount, isPrivateClient, style, className, }: OfferingProgressCardProps): react_jsx_runtime.JSX.Element;
963
985
 
964
986
  type OwnerBookingProps = {
965
987
  propertyName?: string | null;
@@ -1109,4 +1131,4 @@ interface SkeletonProps extends React$1.HTMLAttributes<HTMLDivElement> {
1109
1131
  */
1110
1132
  declare const Skeleton: React$1.ForwardRefExoticComponent<SkeletonProps & React$1.RefAttributes<HTMLDivElement>>;
1111
1133
 
1112
- export { type ActivityTabId, AssetSelectorBar, type AssetSelectorBarProps, type AssetSelectorMetric, Badge, type BadgeProps, Button, type ButtonProps, Card, CardContent, type CardContentProps, CardDescription, type CardDescriptionProps, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, type CardProps, CardTitle, type CardTitleProps, type FinancialItem, type FundWalletParams, type FundWalletResult, Header, type HeaderProps, type HousePositionOrderbook, type HousePositionPendingOrder, HousePositionSlider, HousePositionSliderMobile, type HousePositionSliderMobileOrderPayload, type HousePositionSliderMobileOrderbook, type HousePositionSliderMobileProps, type HousePositionSliderOrderPayload, type HousePositionSliderProps, type InspectionSlot, LoafLiquidityBadge, LoafLiquidityLogo, type LoafLiquidityLogoProps, LoginPopup, type LoginPopupProps, MobileTradeNav, type MobileTradeNavItem, type MobileTradeNavProps, type OfferStatus, Orderbook, type OrderbookLevel, type OrderbookProps, type OrderbookSide, type OrderbookTrade, type OverviewImage, type OverviewResponse, OwnerBooking, type OwnerBookingProps, PaymentPopup, type PaymentPopupProps, PortfolioActivityPanel, type PortfolioActivityPanelProps, type PortfolioPosition, PortfolioSummary, type PortfolioSummaryProps, PriceChart, type PriceChartCandle, type PriceChartProps, type PriceChartRange, type PropertyAddressOption, PropertyBuy, PropertyCompareBar, type PropertyCompareBarProps, PropertyDocuments, type PropertyGalleryHotspot, type PropertyGalleryImage, PropertyHeroHeader, type PropertyHeroHeaderProps, PropertyHistory, type PropertyInfoItem, PropertyInspectionTimes, type PropertyNewsItem, type PropertyNewsType, PropertyNewsUpdates, type PropertyNewsUpdatesProps, type PropertyOffer, PropertyOffers, type PropertyOffersProps, PropertyOverview, type PropertyOverviewProps, PropertyPhotoGallery, type PropertyPriceSummary, PropertySubheader, type PropertySubheaderAction, type PropertySubheaderProps, type PropertySubheaderTab, PropertyTour, type PropertyTourProps, PropertyValuation, type PropertyValuationProps, type PropertyValueSummary, type PurchaseFeedItem, type SelectorItem, Skeleton, type SkeletonProps, type ToastData, ToastProvider, type ToastVariant, TradeConfirmationModal, type TradeConfirmationModalDetails, type TradeConfirmationModalProps, TradingSlider, type TradingSliderProps, type ValuationHistoryPoint, type ValuationRecentSale, type ValuationSummary, type YourOrder, type YourOrderSide, YourOrders, type YourOrdersProps, badgeVariants, buttonVariants, hasPendingActivity, useAdaptivePolling, useToast };
1134
+ export { type ActivityTabId, AssetSelectorBar, type AssetSelectorBarProps, type AssetSelectorMetric, Badge, type BadgeProps, Button, type ButtonProps, Card, CardContent, type CardContentProps, CardDescription, type CardDescriptionProps, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, type CardProps, CardTitle, type CardTitleProps, type FinancialItem, type FundWalletParams, type FundWalletResult, Header, type HeaderProps, type HousePositionOrderbook, type HousePositionPendingOrder, HousePositionSlider, HousePositionSliderMobile, type HousePositionSliderMobileOrderPayload, type HousePositionSliderMobileOrderbook, type HousePositionSliderMobileProps, type HousePositionSliderOrderPayload, type HousePositionSliderProps, type InspectionSlot, LoafLiquidityBadge, LoafLiquidityLogo, type LoafLiquidityLogoProps, LoginPopup, type LoginPopupProps, MobileTradeNav, type MobileTradeNavItem, type MobileTradeNavProps, type OfferStatus, OfferingProgressCard, type OfferingProgressCardProps, Orderbook, type OrderbookLevel, type OrderbookProps, type OrderbookSide, type OrderbookTrade, type OverviewImage, type OverviewResponse, OwnerBooking, type OwnerBookingProps, PaymentPopup, type PaymentPopupProps, PortfolioActivityPanel, type PortfolioActivityPanelProps, type PortfolioPosition, PortfolioSummary, type PortfolioSummaryProps, PriceChart, type PriceChartCandle, type PriceChartProps, type PriceChartRange, type PropertyAddressOption, PropertyBuy, PropertyCompareBar, type PropertyCompareBarProps, PropertyDocuments, type PropertyGalleryHotspot, type PropertyGalleryImage, PropertyHeroHeader, type PropertyHeroHeaderProps, PropertyHistory, type PropertyInfoItem, PropertyInspectionTimes, type PropertyNewsItem, type PropertyNewsType, PropertyNewsUpdates, type PropertyNewsUpdatesProps, type PropertyOffer, PropertyOffers, type PropertyOffersProps, PropertyOverview, type PropertyOverviewProps, PropertyPhotoGallery, type PropertyPriceSummary, PropertySubheader, type PropertySubheaderAction, type PropertySubheaderProps, type PropertySubheaderTab, PropertyTour, type PropertyTourProps, PropertyValuation, type PropertyValuationProps, type PropertyValueSummary, type PurchaseFeedItem, type SelectorItem, Skeleton, type SkeletonProps, type ToastData, ToastProvider, type ToastVariant, TradeConfirmationModal, type TradeConfirmationModalDetails, type TradeConfirmationModalProps, TradingSlider, type TradingSliderProps, type ValuationHistoryPoint, type ValuationRecentSale, type ValuationSummary, type YourOrder, type YourOrderSide, YourOrders, type YourOrdersProps, badgeVariants, buttonVariants, hasPendingActivity, useAdaptivePolling, useToast };
package/dist/index.js CHANGED
@@ -9692,7 +9692,9 @@ function OfferingProgressCard({
9692
9692
  subscriberCount = 0,
9693
9693
  raisedAmount,
9694
9694
  targetAmount,
9695
- isPrivateClient = false
9695
+ isPrivateClient = false,
9696
+ style,
9697
+ className
9696
9698
  }) {
9697
9699
  const [currentTime, setCurrentTime] = React5.useState(/* @__PURE__ */ new Date());
9698
9700
  const [countdown, setCountdown] = React5.useState(null);
@@ -9722,7 +9724,7 @@ function OfferingProgressCard({
9722
9724
  const interval = setInterval(() => setCountdown(calculateCountdown()), 1e3);
9723
9725
  return () => clearInterval(interval);
9724
9726
  }, [opensAt]);
9725
- return /* @__PURE__ */ jsxRuntime.jsxs(Container, { children: [
9727
+ return /* @__PURE__ */ jsxRuntime.jsxs(Container, { style, className, children: [
9726
9728
  /* @__PURE__ */ jsxRuntime.jsxs(Header2, { children: [
9727
9729
  /* @__PURE__ */ jsxRuntime.jsxs("h3", { children: [
9728
9730
  /* @__PURE__ */ jsxRuntime.jsx(fa.FaChartLine, {}),
@@ -12115,31 +12117,16 @@ var CancelConfirmProceed = styled25__default.default.button`
12115
12117
  cursor: not-allowed;
12116
12118
  }
12117
12119
  `;
12118
- function NewsOrdersSection({ newsItems, activityData }) {
12120
+ function NewsOrdersSection({ newsItems, newsConnectionStatus, activityData }) {
12119
12121
  return /* @__PURE__ */ jsxRuntime.jsxs(Row2, { children: [
12120
- /* @__PURE__ */ jsxRuntime.jsxs(TradeNewsPanel, { children: [
12121
- /* @__PURE__ */ jsxRuntime.jsxs(TradeNewsHeader, { children: [
12122
- /* @__PURE__ */ jsxRuntime.jsx("h3", { children: "Property News & Headlines" }),
12123
- /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
12124
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "dot" }),
12125
- " LIVE"
12126
- ] })
12127
- ] }),
12128
- /* @__PURE__ */ jsxRuntime.jsx(TradeNewsList, { children: newsItems.map((newsItem) => /* @__PURE__ */ jsxRuntime.jsxs(
12129
- TradeNewsItem,
12130
- {
12131
- "data-new": newsItem.isNew,
12132
- children: [
12133
- /* @__PURE__ */ jsxRuntime.jsx(TradeNewsTitle, { children: newsItem.title }),
12134
- /* @__PURE__ */ jsxRuntime.jsxs(TradeNewsInfo, { children: [
12135
- /* @__PURE__ */ jsxRuntime.jsx(TradeNewsDate, { "data-new": newsItem.isNew, children: newsItem.date }),
12136
- /* @__PURE__ */ jsxRuntime.jsx(TradeNewsCategory, { "data-type": newsItem.type, children: newsItem.type === "property" ? "Property Update" : "Market News" })
12137
- ] })
12138
- ]
12139
- },
12140
- newsItem.displayId || `${newsItem.id}-fallback`
12141
- )) })
12142
- ] }),
12122
+ /* @__PURE__ */ jsxRuntime.jsx(
12123
+ PropertyNewsUpdates,
12124
+ {
12125
+ items: newsItems,
12126
+ heading: "Property News & Updates",
12127
+ connectionStatus: newsConnectionStatus
12128
+ }
12129
+ ),
12143
12130
  /* @__PURE__ */ jsxRuntime.jsx(ActivityWrapper, { children: /* @__PURE__ */ jsxRuntime.jsx(
12144
12131
  PortfolioActivityPanel,
12145
12132
  {
@@ -12177,7 +12164,7 @@ var Row2 = styled25__default.default.div`
12177
12164
  overflow: hidden;
12178
12165
  }
12179
12166
  `;
12180
- var TradeNewsPanel = styled25__default.default.div`
12167
+ var ActivityWrapper = styled25__default.default.div`
12181
12168
  background-color: var(--color-card-darker, #111);
12182
12169
  border-radius: 8px;
12183
12170
  padding: 1.5rem;
@@ -12187,107 +12174,11 @@ var TradeNewsPanel = styled25__default.default.div`
12187
12174
  border: 1px solid var(--color-border);
12188
12175
  min-height: 280px;
12189
12176
  overflow: hidden;
12190
- @media (max-width: 768px) {
12191
- max-width: 100%;
12192
- flex: 0 0 100%;
12193
- }
12194
12177
  @media (max-width: 768px) {
12195
12178
  padding: 1rem;
12196
12179
  min-height: auto;
12197
12180
  }
12198
12181
  `;
12199
- var ActivityWrapper = styled25__default.default(TradeNewsPanel)``;
12200
- var TradeNewsHeader = styled25__default.default.div`
12201
- display: flex;
12202
- justify-content: space-between;
12203
- align-items: center;
12204
- padding-bottom: 0.75rem;
12205
- margin-bottom: 1rem;
12206
- border-bottom: 1px solid rgba(255,255,255,0.1);
12207
- h3 {
12208
- margin: 0;
12209
- font-size: 0.9rem;
12210
- font-weight: 600;
12211
- color: var(--color-text);
12212
- }
12213
- span {
12214
- font-size: 0.7rem;
12215
- color: var(--color-text-secondary);
12216
- display: flex;
12217
- align-items: center;
12218
- gap: 0.25rem;
12219
- font-weight: 500;
12220
- }
12221
- .dot {
12222
- width: 6px;
12223
- height: 6px;
12224
- border-radius: 50%;
12225
- background-color: #0ecb81;
12226
- animation: pulse 2s infinite;
12227
- }
12228
- @keyframes pulse {
12229
- 0% { opacity: 0.4; }
12230
- 50% { opacity: 1; }
12231
- 100% { opacity: 0.4; }
12232
- }
12233
- `;
12234
- var TradeNewsList = styled25__default.default.div`
12235
- display: flex;
12236
- flex-direction: column;
12237
- gap: 0.75rem;
12238
- flex: 1;
12239
- overflow: visible;
12240
- max-width: 100%;
12241
- `;
12242
- var TradeNewsItem = styled25__default.default.div`
12243
- display: flex;
12244
- flex-direction: column;
12245
- padding: 0.75rem;
12246
- background-color: rgba(255,255,255,0.05);
12247
- border-radius: 6px;
12248
- cursor: pointer;
12249
- transition: all 0.2s;
12250
- &[data-new='true'] {
12251
- background-color: rgba(14,203,129,0.1);
12252
- }
12253
- &:hover {
12254
- background-color: rgba(255,255,255,0.08);
12255
- transform: translateY(-2px);
12256
- }
12257
- `;
12258
- var TradeNewsTitle = styled25__default.default.h4`
12259
- font-size: 0.9375rem;
12260
- font-weight: 500;
12261
- margin: 0 0 0.5rem 0;
12262
- color: var(--color-text);
12263
- `;
12264
- var TradeNewsInfo = styled25__default.default.div`
12265
- display: flex;
12266
- justify-content: space-between;
12267
- align-items: center;
12268
- font-size: 0.75rem;
12269
- color: var(--color-text-secondary);
12270
- `;
12271
- var TradeNewsDate = styled25__default.default.span`
12272
- &[data-new='true'] {
12273
- color: #0ecb81;
12274
- }
12275
- `;
12276
- var TradeNewsCategory = styled25__default.default.span`
12277
- padding: 0.25rem 0.5rem;
12278
- border-radius: 4px;
12279
- background-color: rgba(240,185,11,0.1);
12280
- color: var(--color-accent, #f0b90b);
12281
- font-weight: 500;
12282
- white-space: nowrap;
12283
- overflow: hidden;
12284
- text-overflow: ellipsis;
12285
- max-width: 100px;
12286
- &[data-type='property'] {
12287
- background-color: rgba(14,203,129,0.1);
12288
- color: #0ecb81;
12289
- }
12290
- `;
12291
12182
  function OrderConfirmationModal({
12292
12183
  open,
12293
12184
  onClose,
@@ -12542,22 +12433,6 @@ var ButtonRow2 = styled25__default.default.div`
12542
12433
  `;
12543
12434
 
12544
12435
  // src/components/property-buy/constants.ts
12545
- var allNewsItems = [
12546
- { id: 1, title: "RBA signals potential rate cut in Q1 2026 - property stocks rally", type: "market" },
12547
- { id: 2, title: "Sydney unemployment drops to 3.1% - Eastern suburbs lead recovery", type: "market" },
12548
- { id: 3, title: "Musgrave heritage listing confirmed - protects architectural value", type: "property" },
12549
- { id: 4, title: "Mosman Council approves DA for Musgrave restoration works", type: "property" },
12550
- { id: 5, title: "Nearby 12 Mcleod St sells for $18.5M - sets new street record", type: "market" },
12551
- { id: 6, title: "Eastern suburbs rental yields reach 3.8% - highest in 5 years", type: "market" },
12552
- { id: 7, title: "Musgrave pool resurfacing completed - heritage sandstone preserved", type: "property" },
12553
- { id: 8, title: "Mosman median house price hits $7.2M - up 9% YoY", type: "market" },
12554
- { id: 9, title: "Musgrave gardens featured in Heritage NSW annual report", type: "property" },
12555
- { id: 10, title: "Lower North Shore vacancy rates drop to 1.2% - rental demand surges", type: "market" },
12556
- { id: 11, title: "Musgrave structural inspection complete - excellent condition confirmed", type: "property" },
12557
- { id: 12, title: "Sydney harbour views premium reaches 35% - Mosman leads growth", type: "market" },
12558
- { id: 13, title: "New security system installed at Musgrave - smart home integration", type: "property" },
12559
- { id: 14, title: "Heritage property demand up 22% - pre-Federation homes most sought", type: "market" }
12560
- ];
12561
12436
  var musgraveGalleryImages = [
12562
12437
  { src: "/properties/Musgrave/ExteriorFront_Musgrave_Loafmarkets.jpg", title: "Exterior Front", subtitle: "Grand entrance" },
12563
12438
  { src: "/properties/Musgrave/ExteriorDusk_Musgrave_Loafmarkets.jpg", title: "Exterior Dusk", subtitle: "Evening ambiance" },
@@ -12612,7 +12487,9 @@ function PropertyBuy({
12612
12487
  isLoadingActivity = false,
12613
12488
  selectorItems,
12614
12489
  onSelectorSelect,
12615
- portfolioActivity
12490
+ portfolioActivity,
12491
+ newsItems = [],
12492
+ newsConnectionStatus
12616
12493
  }) {
12617
12494
  const [sliderValue, setSliderValue] = React5.useState(0);
12618
12495
  const [availableBalance, setAvailableBalance] = React5.useState(walletUsdcBalance ?? 0);
@@ -12625,15 +12502,6 @@ function PropertyBuy({
12625
12502
  const [orderPlacedSuccess, setOrderPlacedSuccess] = React5.useState(false);
12626
12503
  const [lastOrderDetails, setLastOrderDetails] = React5.useState(null);
12627
12504
  const [showOrderConfirmModal, setShowOrderConfirmModal] = React5.useState(false);
12628
- const [, setLiveNewsIndex] = React5.useState(0);
12629
- const [newsItems, setNewsItems] = React5.useState(
12630
- () => allNewsItems.slice(0, 4).map((item, index) => ({
12631
- ...item,
12632
- displayId: `${item.id}-initial-${index}`,
12633
- date: index === 0 ? "Just now" : `${(index + 1) * 3} minutes ago`,
12634
- isNew: false
12635
- }))
12636
- );
12637
12505
  const tokenPrice = saleData?.tokenPrice ?? 250;
12638
12506
  const feeRate = (saleData?.feePercent ?? 0.5) / 100;
12639
12507
  const totalSold = saleData?.totalSold ?? 0;
@@ -12733,29 +12601,6 @@ function PropertyBuy({
12733
12601
  setSliderValue(0);
12734
12602
  setManualOrderAmount(null);
12735
12603
  };
12736
- React5.useEffect(() => {
12737
- const newsInterval = setInterval(() => {
12738
- setLiveNewsIndex((prev) => {
12739
- const nextIndex = (prev + 1) % allNewsItems.length;
12740
- setNewsItems((current) => {
12741
- const incoming = allNewsItems[nextIndex];
12742
- if (current.some((item) => item.id === incoming.id)) {
12743
- return current;
12744
- }
12745
- return [
12746
- { ...incoming, displayId: `${incoming.id}-${Date.now()}`, date: "Just now", isNew: true },
12747
- ...current.slice(0, 3).map((item) => ({
12748
- ...item,
12749
- isNew: false,
12750
- date: item.date === "Just now" ? "8 seconds ago" : item.date
12751
- }))
12752
- ];
12753
- });
12754
- return nextIndex;
12755
- });
12756
- }, 8e3);
12757
- return () => clearInterval(newsInterval);
12758
- }, []);
12759
12604
  if (saleData?.loading) {
12760
12605
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-16 px-8 text-[var(--color-text-secondary)] text-center text-[0.9rem]", children: "Loading sale data..." });
12761
12606
  }
@@ -12853,6 +12698,7 @@ function PropertyBuy({
12853
12698
  NewsOrdersSection,
12854
12699
  {
12855
12700
  newsItems,
12701
+ newsConnectionStatus,
12856
12702
  activityData: portfolioActivity
12857
12703
  }
12858
12704
  )
@@ -15301,6 +15147,7 @@ exports.LoafLiquidityBadge = LoafLiquidityBadge;
15301
15147
  exports.LoafLiquidityLogo = LoafLiquidityLogo;
15302
15148
  exports.LoginPopup = LoginPopup;
15303
15149
  exports.MobileTradeNav = MobileTradeNav;
15150
+ exports.OfferingProgressCard = OfferingProgressCard;
15304
15151
  exports.Orderbook = Orderbook;
15305
15152
  exports.OwnerBooking = owner_booking_default;
15306
15153
  exports.PaymentPopup = PaymentPopup;