@loafmarkets/ui 0.1.417 → 0.1.419

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
@@ -279,11 +279,22 @@ declare const PropertyTour: React$1.ForwardRefExoticComponent<Omit<Omit<CardProp
279
279
  } & React$1.RefAttributes<HTMLDivElement>>;
280
280
 
281
281
  type PropertyNewsType = "property" | "market" | (string & {});
282
+ /**
283
+ * Which tabs a story belongs in. A story can be both — a refinery outage that also moves
284
+ * the whole market scores on both axes — so read `types` when the row carries it and
285
+ * fall back to the single `type` when it does not.
286
+ */
287
+ declare function matchesTab(item: {
288
+ type?: PropertyNewsType;
289
+ types?: PropertyNewsType[];
290
+ }, tab: "all" | "property" | "market"): boolean;
282
291
  type PropertyNewsItem = {
283
292
  id?: string;
284
293
  title: string;
285
294
  date: string | Date;
286
295
  type?: PropertyNewsType;
296
+ /** Every tab this story belongs in. `type` is the one it leads with. */
297
+ types?: PropertyNewsType[];
287
298
  displayId?: string;
288
299
  isNew?: boolean;
289
300
  source?: string;
@@ -1527,4 +1538,4 @@ declare function extractSparkline(candles: ReadonlyArray<{
1527
1538
  }>, maxPoints?: number): number[];
1528
1539
  declare const SparklineChart: React__default.NamedExoticComponent<SparklineChartProps>;
1529
1540
 
1530
- 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, ContactPopup, type ContactPopupProps, type FinancialItem, type FundWalletParams, type FundWalletResult, Header, type HeaderNavItem, type HeaderPortfolioData, type HeaderProps, HlsVideo, type HlsVideoProps, type HlsVideoSource, type HousePositionOrderbook, type HousePositionPendingOrder, HousePositionSlider, HousePositionSliderMobile, type HousePositionSliderMobileOrderPayload, type HousePositionSliderMobileOrderbook, type HousePositionSliderMobileProps, type HousePositionSliderOrderPayload, type HousePositionSliderProps, type InspectionSlot, LoafLiquidityBadge, type LoafLiquidityDotState, LoafLiquidityLogo, type LoafLiquidityLogoProps, LoginPopup, type LoginPopupProps, MobileTradeNav, type MobileTradeNavItem, type MobileTradeNavProps, type NewsBadgeAsset, type OfferStatus, OfferingProgressCard, type OfferingProgressCardProps, OnboardingGuide, type OnboardingGuideProps, 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, PropertyMediaRow, type PropertyMediaRowProps, 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, SentimentBar, SiteFooter, Skeleton, type SkeletonProps, SlideDigit, SparklineChart, type SparklineChartProps, type ToastData, ToastProvider, type ToastVariant, TradeConfirmationModal, type TradeConfirmationModalDetails, type TradeConfirmationModalProps, TradingSlider, type TradingSliderProps, type YourOrder, type YourOrderSide, YourOrders, type YourOrdersProps, __resetDismissedBreaking, badgeVariants, buttonVariants, extractSparkline, formatAge, hasPendingActivity, rowAgeLabel, useAdaptivePolling, useToast };
1541
+ 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, ContactPopup, type ContactPopupProps, type FinancialItem, type FundWalletParams, type FundWalletResult, Header, type HeaderNavItem, type HeaderPortfolioData, type HeaderProps, HlsVideo, type HlsVideoProps, type HlsVideoSource, type HousePositionOrderbook, type HousePositionPendingOrder, HousePositionSlider, HousePositionSliderMobile, type HousePositionSliderMobileOrderPayload, type HousePositionSliderMobileOrderbook, type HousePositionSliderMobileProps, type HousePositionSliderOrderPayload, type HousePositionSliderProps, type InspectionSlot, LoafLiquidityBadge, type LoafLiquidityDotState, LoafLiquidityLogo, type LoafLiquidityLogoProps, LoginPopup, type LoginPopupProps, MobileTradeNav, type MobileTradeNavItem, type MobileTradeNavProps, type NewsBadgeAsset, type OfferStatus, OfferingProgressCard, type OfferingProgressCardProps, OnboardingGuide, type OnboardingGuideProps, 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, PropertyMediaRow, type PropertyMediaRowProps, 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, SentimentBar, SiteFooter, Skeleton, type SkeletonProps, SlideDigit, SparklineChart, type SparklineChartProps, type ToastData, ToastProvider, type ToastVariant, TradeConfirmationModal, type TradeConfirmationModalDetails, type TradeConfirmationModalProps, TradingSlider, type TradingSliderProps, type YourOrder, type YourOrderSide, YourOrders, type YourOrdersProps, __resetDismissedBreaking, badgeVariants, buttonVariants, extractSparkline, formatAge, hasPendingActivity, matchesTab, rowAgeLabel, useAdaptivePolling, useToast };
package/dist/index.d.ts CHANGED
@@ -279,11 +279,22 @@ declare const PropertyTour: React$1.ForwardRefExoticComponent<Omit<Omit<CardProp
279
279
  } & React$1.RefAttributes<HTMLDivElement>>;
280
280
 
281
281
  type PropertyNewsType = "property" | "market" | (string & {});
282
+ /**
283
+ * Which tabs a story belongs in. A story can be both — a refinery outage that also moves
284
+ * the whole market scores on both axes — so read `types` when the row carries it and
285
+ * fall back to the single `type` when it does not.
286
+ */
287
+ declare function matchesTab(item: {
288
+ type?: PropertyNewsType;
289
+ types?: PropertyNewsType[];
290
+ }, tab: "all" | "property" | "market"): boolean;
282
291
  type PropertyNewsItem = {
283
292
  id?: string;
284
293
  title: string;
285
294
  date: string | Date;
286
295
  type?: PropertyNewsType;
296
+ /** Every tab this story belongs in. `type` is the one it leads with. */
297
+ types?: PropertyNewsType[];
287
298
  displayId?: string;
288
299
  isNew?: boolean;
289
300
  source?: string;
@@ -1527,4 +1538,4 @@ declare function extractSparkline(candles: ReadonlyArray<{
1527
1538
  }>, maxPoints?: number): number[];
1528
1539
  declare const SparklineChart: React__default.NamedExoticComponent<SparklineChartProps>;
1529
1540
 
1530
- 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, ContactPopup, type ContactPopupProps, type FinancialItem, type FundWalletParams, type FundWalletResult, Header, type HeaderNavItem, type HeaderPortfolioData, type HeaderProps, HlsVideo, type HlsVideoProps, type HlsVideoSource, type HousePositionOrderbook, type HousePositionPendingOrder, HousePositionSlider, HousePositionSliderMobile, type HousePositionSliderMobileOrderPayload, type HousePositionSliderMobileOrderbook, type HousePositionSliderMobileProps, type HousePositionSliderOrderPayload, type HousePositionSliderProps, type InspectionSlot, LoafLiquidityBadge, type LoafLiquidityDotState, LoafLiquidityLogo, type LoafLiquidityLogoProps, LoginPopup, type LoginPopupProps, MobileTradeNav, type MobileTradeNavItem, type MobileTradeNavProps, type NewsBadgeAsset, type OfferStatus, OfferingProgressCard, type OfferingProgressCardProps, OnboardingGuide, type OnboardingGuideProps, 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, PropertyMediaRow, type PropertyMediaRowProps, 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, SentimentBar, SiteFooter, Skeleton, type SkeletonProps, SlideDigit, SparklineChart, type SparklineChartProps, type ToastData, ToastProvider, type ToastVariant, TradeConfirmationModal, type TradeConfirmationModalDetails, type TradeConfirmationModalProps, TradingSlider, type TradingSliderProps, type YourOrder, type YourOrderSide, YourOrders, type YourOrdersProps, __resetDismissedBreaking, badgeVariants, buttonVariants, extractSparkline, formatAge, hasPendingActivity, rowAgeLabel, useAdaptivePolling, useToast };
1541
+ 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, ContactPopup, type ContactPopupProps, type FinancialItem, type FundWalletParams, type FundWalletResult, Header, type HeaderNavItem, type HeaderPortfolioData, type HeaderProps, HlsVideo, type HlsVideoProps, type HlsVideoSource, type HousePositionOrderbook, type HousePositionPendingOrder, HousePositionSlider, HousePositionSliderMobile, type HousePositionSliderMobileOrderPayload, type HousePositionSliderMobileOrderbook, type HousePositionSliderMobileProps, type HousePositionSliderOrderPayload, type HousePositionSliderProps, type InspectionSlot, LoafLiquidityBadge, type LoafLiquidityDotState, LoafLiquidityLogo, type LoafLiquidityLogoProps, LoginPopup, type LoginPopupProps, MobileTradeNav, type MobileTradeNavItem, type MobileTradeNavProps, type NewsBadgeAsset, type OfferStatus, OfferingProgressCard, type OfferingProgressCardProps, OnboardingGuide, type OnboardingGuideProps, 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, PropertyMediaRow, type PropertyMediaRowProps, 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, SentimentBar, SiteFooter, Skeleton, type SkeletonProps, SlideDigit, SparklineChart, type SparklineChartProps, type ToastData, ToastProvider, type ToastVariant, TradeConfirmationModal, type TradeConfirmationModalDetails, type TradeConfirmationModalProps, TradingSlider, type TradingSliderProps, type YourOrder, type YourOrderSide, YourOrders, type YourOrdersProps, __resetDismissedBreaking, badgeVariants, buttonVariants, extractSparkline, formatAge, hasPendingActivity, matchesTab, rowAgeLabel, useAdaptivePolling, useToast };
package/dist/index.js CHANGED
@@ -1844,27 +1844,6 @@ function TradeRow({
1844
1844
  }
1845
1845
  );
1846
1846
  }
1847
- function BreadSliceGlyph() {
1848
- return /* @__PURE__ */ jsxRuntime.jsx(
1849
- "svg",
1850
- {
1851
- width: "10",
1852
- height: "10",
1853
- viewBox: "0 0 10 10",
1854
- "aria-hidden": "true",
1855
- style: { display: "block", filter: "drop-shadow(0 0 4px rgba(201,162,39,0.6))" },
1856
- children: /* @__PURE__ */ jsxRuntime.jsx(
1857
- "path",
1858
- {
1859
- d: "M1 4.2 C1 1.9 2.7 1 5 1 C7.3 1 9 1.9 9 4.2 L9 8.2 C9 8.6 8.6 9 8.2 9 L1.8 9 C1.4 9 1 8.6 1 8.2 Z",
1860
- fill: "none",
1861
- stroke: "#C9A227",
1862
- strokeWidth: "1.3"
1863
- }
1864
- )
1865
- }
1866
- );
1867
- }
1868
1847
  function DepthRow({
1869
1848
  side,
1870
1849
  price,
@@ -1915,8 +1894,7 @@ function DepthRow({
1915
1894
  "span",
1916
1895
  {
1917
1896
  "aria-label": "Your order at this price",
1918
- className: "absolute left-0 top-1/2 -translate-y-1/2 z-[2]",
1919
- children: /* @__PURE__ */ jsxRuntime.jsx(BreadSliceGlyph, {})
1897
+ className: "absolute left-0 top-1/2 -translate-y-1/2 z-[2] h-[6px] w-[6px] rounded-full bg-[#C9A227] shadow-[0_0_6px_rgba(201,162,39,0.7)]"
1920
1898
  }
1921
1899
  ) : null,
1922
1900
  /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-cell": "price", className: cn("relative z-[1] tabular-nums", isAsk ? "text-[#f6465d]" : "text-[#0ecb81]"), children: [
@@ -2862,12 +2840,16 @@ function MobileDepthRow({
2862
2840
  left: "2px",
2863
2841
  top: "50%",
2864
2842
  transform: "translateY(-50%)",
2843
+ width: "6px",
2844
+ height: "6px",
2845
+ borderRadius: "50%",
2846
+ backgroundColor: "#C9A227",
2847
+ boxShadow: "0 0 6px rgba(201,162,39,0.7)",
2865
2848
  zIndex: 2
2866
- },
2867
- children: /* @__PURE__ */ jsxRuntime.jsx(BreadSliceGlyph, {})
2849
+ }
2868
2850
  }
2869
2851
  ) : null,
2870
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { position: "relative", zIndex: 1, color: isAsk ? "#f6465d" : "#0ecb81", paddingLeft: hasUserOrder ? "14px" : void 0 }, children: [
2852
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { position: "relative", zIndex: 1, color: isAsk ? "#f6465d" : "#0ecb81", paddingLeft: hasUserOrder ? "10px" : void 0 }, children: [
2871
2853
  "$",
2872
2854
  formatNumber(price, precision)
2873
2855
  ] }),
@@ -3074,6 +3056,11 @@ function isSafeUrl(url) {
3074
3056
  return false;
3075
3057
  }
3076
3058
  }
3059
+ function matchesTab(item, tab) {
3060
+ if (tab === "all") return true;
3061
+ if (item.types && item.types.length > 0) return item.types.includes(tab);
3062
+ return item.type === tab;
3063
+ }
3077
3064
  var BREAKING_WINDOW_HOURS = 6;
3078
3065
  var MAX_PINNED_BREAKING = 2;
3079
3066
  var BREAKING_IMPACT_FLOOR = 8;
@@ -3584,7 +3571,7 @@ var PropertyNewsUpdates = React9__namespace.forwardRef(
3584
3571
  const cutoff = breakingNow - BREAKING_WINDOW_HOURS * 36e5;
3585
3572
  return breakingCandidates.filter((it) => {
3586
3573
  if (new Date(it.publishedAt).getTime() < cutoff) return false;
3587
- return homeTab === "all" || it.type === homeTab;
3574
+ return matchesTab(it, homeTab);
3588
3575
  });
3589
3576
  }, [breakingCandidates, breakingNow, homeTab]);
3590
3577
  const [dismissedVersion, setDismissedVersion] = React9__namespace.useState(0);
@@ -3629,7 +3616,7 @@ var PropertyNewsUpdates = React9__namespace.forwardRef(
3629
3616
  }, [totalPages]);
3630
3617
  const paginatedItems = hasItems ? listItems.slice(page * ITEMS_PER_PAGE, page * ITEMS_PER_PAGE + ITEMS_PER_PAGE) : [];
3631
3618
  const homeFilteredItems = React9__namespace.useMemo(
3632
- () => hasItems ? listItems.filter((it) => homeTab === "all" || it.type === homeTab) : [],
3619
+ () => hasItems ? listItems.filter((it) => matchesTab(it, homeTab)) : [],
3633
3620
  [hasItems, listItems, homeTab]
3634
3621
  );
3635
3622
  const homeTotalPages = React9__namespace.useMemo(
@@ -22032,6 +22019,7 @@ exports.buttonVariants = buttonVariants;
22032
22019
  exports.extractSparkline = extractSparkline;
22033
22020
  exports.formatAge = formatAge;
22034
22021
  exports.hasPendingActivity = hasPendingActivity;
22022
+ exports.matchesTab = matchesTab;
22035
22023
  exports.rowAgeLabel = rowAgeLabel;
22036
22024
  exports.useAdaptivePolling = useAdaptivePolling;
22037
22025
  exports.useToast = useToast;