@loafmarkets/ui 0.1.6 → 0.1.7
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 +37 -1
- package/dist/index.d.ts +37 -1
- package/dist/index.js +388 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +388 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -429,4 +429,40 @@ declare const PropertySubheader: React.ForwardRefExoticComponent<React.HTMLAttri
|
|
|
429
429
|
actions?: PropertySubheaderAction[];
|
|
430
430
|
} & React.RefAttributes<HTMLDivElement>>;
|
|
431
431
|
|
|
432
|
-
|
|
432
|
+
type PropertyAddressOption = {
|
|
433
|
+
id: string;
|
|
434
|
+
label: string;
|
|
435
|
+
};
|
|
436
|
+
type PropertyValueSummary = {
|
|
437
|
+
value: number;
|
|
438
|
+
change?: number;
|
|
439
|
+
label?: string;
|
|
440
|
+
currencySymbol?: string;
|
|
441
|
+
formatOptions?: Intl.NumberFormatOptions;
|
|
442
|
+
};
|
|
443
|
+
type PropertyPriceSummary = {
|
|
444
|
+
value: number;
|
|
445
|
+
change?: number;
|
|
446
|
+
changePercent?: number;
|
|
447
|
+
currencySymbol?: string;
|
|
448
|
+
formatOptions?: Intl.NumberFormatOptions;
|
|
449
|
+
percentFormatOptions?: Intl.NumberFormatOptions;
|
|
450
|
+
};
|
|
451
|
+
type PropertyCompareBarProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
452
|
+
addresses: (PropertyAddressOption | string)[];
|
|
453
|
+
selectedAddressId?: string;
|
|
454
|
+
onSelectAddress?: (addressId: string) => void;
|
|
455
|
+
propertyValue?: PropertyValueSummary;
|
|
456
|
+
propertyValueVariant?: "classic" | "card" | "pill";
|
|
457
|
+
price?: PropertyPriceSummary;
|
|
458
|
+
};
|
|
459
|
+
declare const PropertyCompareBar: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
460
|
+
addresses: (PropertyAddressOption | string)[];
|
|
461
|
+
selectedAddressId?: string;
|
|
462
|
+
onSelectAddress?: (addressId: string) => void;
|
|
463
|
+
propertyValue?: PropertyValueSummary;
|
|
464
|
+
propertyValueVariant?: "classic" | "card" | "pill";
|
|
465
|
+
price?: PropertyPriceSummary;
|
|
466
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
467
|
+
|
|
468
|
+
export { 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 HousePositionOrderbook, type HousePositionPendingOrder, HousePositionSlider, HousePositionSliderMobile, type HousePositionSliderMobileOrderPayload, type HousePositionSliderMobileOrderbook, type HousePositionSliderMobileProps, type HousePositionSliderOrderPayload, type HousePositionSliderProps, LoafLiquidityBadge, MobileTradeNav, type MobileTradeNavItem, type MobileTradeNavProps, Orderbook, type OrderbookLevel, type OrderbookProps, type OrderbookSide, type OrderbookTrade, PortfolioSummary, type PortfolioSummaryProps, PriceChart, type PriceChartCandle, type PriceChartProps, type PriceChartRange, type PropertyAddressOption, PropertyCompareBar, type PropertyCompareBarProps, PropertyHeroHeader, type PropertyHeroHeaderProps, type PropertyNewsItem, type PropertyNewsType, PropertyNewsUpdates, type PropertyNewsUpdatesProps, type PropertyPriceSummary, PropertySubheader, type PropertySubheaderAction, type PropertySubheaderProps, type PropertySubheaderTab, PropertyTour, type PropertyTourProps, type PropertyValueSummary, TradeConfirmationModal, type TradeConfirmationModalDetails, type TradeConfirmationModalProps, TradingSlider, type TradingSliderProps, type YourOrder, type YourOrderSide, YourOrders, type YourOrdersProps, badgeVariants, buttonVariants };
|
package/dist/index.d.ts
CHANGED
|
@@ -429,4 +429,40 @@ declare const PropertySubheader: React.ForwardRefExoticComponent<React.HTMLAttri
|
|
|
429
429
|
actions?: PropertySubheaderAction[];
|
|
430
430
|
} & React.RefAttributes<HTMLDivElement>>;
|
|
431
431
|
|
|
432
|
-
|
|
432
|
+
type PropertyAddressOption = {
|
|
433
|
+
id: string;
|
|
434
|
+
label: string;
|
|
435
|
+
};
|
|
436
|
+
type PropertyValueSummary = {
|
|
437
|
+
value: number;
|
|
438
|
+
change?: number;
|
|
439
|
+
label?: string;
|
|
440
|
+
currencySymbol?: string;
|
|
441
|
+
formatOptions?: Intl.NumberFormatOptions;
|
|
442
|
+
};
|
|
443
|
+
type PropertyPriceSummary = {
|
|
444
|
+
value: number;
|
|
445
|
+
change?: number;
|
|
446
|
+
changePercent?: number;
|
|
447
|
+
currencySymbol?: string;
|
|
448
|
+
formatOptions?: Intl.NumberFormatOptions;
|
|
449
|
+
percentFormatOptions?: Intl.NumberFormatOptions;
|
|
450
|
+
};
|
|
451
|
+
type PropertyCompareBarProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
452
|
+
addresses: (PropertyAddressOption | string)[];
|
|
453
|
+
selectedAddressId?: string;
|
|
454
|
+
onSelectAddress?: (addressId: string) => void;
|
|
455
|
+
propertyValue?: PropertyValueSummary;
|
|
456
|
+
propertyValueVariant?: "classic" | "card" | "pill";
|
|
457
|
+
price?: PropertyPriceSummary;
|
|
458
|
+
};
|
|
459
|
+
declare const PropertyCompareBar: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
|
|
460
|
+
addresses: (PropertyAddressOption | string)[];
|
|
461
|
+
selectedAddressId?: string;
|
|
462
|
+
onSelectAddress?: (addressId: string) => void;
|
|
463
|
+
propertyValue?: PropertyValueSummary;
|
|
464
|
+
propertyValueVariant?: "classic" | "card" | "pill";
|
|
465
|
+
price?: PropertyPriceSummary;
|
|
466
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
467
|
+
|
|
468
|
+
export { 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 HousePositionOrderbook, type HousePositionPendingOrder, HousePositionSlider, HousePositionSliderMobile, type HousePositionSliderMobileOrderPayload, type HousePositionSliderMobileOrderbook, type HousePositionSliderMobileProps, type HousePositionSliderOrderPayload, type HousePositionSliderProps, LoafLiquidityBadge, MobileTradeNav, type MobileTradeNavItem, type MobileTradeNavProps, Orderbook, type OrderbookLevel, type OrderbookProps, type OrderbookSide, type OrderbookTrade, PortfolioSummary, type PortfolioSummaryProps, PriceChart, type PriceChartCandle, type PriceChartProps, type PriceChartRange, type PropertyAddressOption, PropertyCompareBar, type PropertyCompareBarProps, PropertyHeroHeader, type PropertyHeroHeaderProps, type PropertyNewsItem, type PropertyNewsType, PropertyNewsUpdates, type PropertyNewsUpdatesProps, type PropertyPriceSummary, PropertySubheader, type PropertySubheaderAction, type PropertySubheaderProps, type PropertySubheaderTab, PropertyTour, type PropertyTourProps, type PropertyValueSummary, TradeConfirmationModal, type TradeConfirmationModalDetails, type TradeConfirmationModalProps, TradingSlider, type TradingSliderProps, type YourOrder, type YourOrderSide, YourOrders, type YourOrdersProps, badgeVariants, buttonVariants };
|
package/dist/index.js
CHANGED
|
@@ -5650,6 +5650,393 @@ var PropertySubheader = o__namespace.forwardRef(
|
|
|
5650
5650
|
}
|
|
5651
5651
|
);
|
|
5652
5652
|
PropertySubheader.displayName = "PropertySubheader";
|
|
5653
|
+
var PropertyCompareBar = o__namespace.forwardRef(
|
|
5654
|
+
({
|
|
5655
|
+
className,
|
|
5656
|
+
addresses,
|
|
5657
|
+
selectedAddressId,
|
|
5658
|
+
onSelectAddress,
|
|
5659
|
+
propertyValue,
|
|
5660
|
+
propertyValueVariant = "classic",
|
|
5661
|
+
price,
|
|
5662
|
+
...props
|
|
5663
|
+
}, ref) => {
|
|
5664
|
+
const normalizedAddresses = o__namespace.useMemo(() => {
|
|
5665
|
+
return addresses.map(
|
|
5666
|
+
(option) => typeof option === "string" ? { id: option, label: option } : option
|
|
5667
|
+
);
|
|
5668
|
+
}, [addresses]);
|
|
5669
|
+
const hasAddresses = normalizedAddresses.length > 0;
|
|
5670
|
+
const firstAddressId = normalizedAddresses[0]?.id;
|
|
5671
|
+
const isControlled = selectedAddressId !== void 0;
|
|
5672
|
+
const [internalSelectedId, setInternalSelectedId] = o__namespace.useState(
|
|
5673
|
+
() => isControlled ? void 0 : firstAddressId
|
|
5674
|
+
);
|
|
5675
|
+
const resolvedSelectedId = isControlled ? selectedAddressId : internalSelectedId;
|
|
5676
|
+
o__namespace.useEffect(() => {
|
|
5677
|
+
if (!isControlled) {
|
|
5678
|
+
setInternalSelectedId((current) => {
|
|
5679
|
+
if (current != null && normalizedAddresses.some((option) => option.id === current)) {
|
|
5680
|
+
return current;
|
|
5681
|
+
}
|
|
5682
|
+
return firstAddressId;
|
|
5683
|
+
});
|
|
5684
|
+
}
|
|
5685
|
+
}, [firstAddressId, isControlled, normalizedAddresses]);
|
|
5686
|
+
const selectedOption = normalizedAddresses.find((option) => option.id === resolvedSelectedId) ?? normalizedAddresses[0];
|
|
5687
|
+
const [isDropdownOpen, setIsDropdownOpen] = o__namespace.useState(false);
|
|
5688
|
+
const dropdownRef = o__namespace.useRef(null);
|
|
5689
|
+
o__namespace.useEffect(() => {
|
|
5690
|
+
if (!isDropdownOpen) return;
|
|
5691
|
+
const handleClick = (event) => {
|
|
5692
|
+
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
|
5693
|
+
setIsDropdownOpen(false);
|
|
5694
|
+
}
|
|
5695
|
+
};
|
|
5696
|
+
const handleKey = (event) => {
|
|
5697
|
+
if (event.key === "Escape") {
|
|
5698
|
+
setIsDropdownOpen(false);
|
|
5699
|
+
}
|
|
5700
|
+
};
|
|
5701
|
+
document.addEventListener("mousedown", handleClick);
|
|
5702
|
+
document.addEventListener("keydown", handleKey);
|
|
5703
|
+
return () => {
|
|
5704
|
+
document.removeEventListener("mousedown", handleClick);
|
|
5705
|
+
document.removeEventListener("keydown", handleKey);
|
|
5706
|
+
};
|
|
5707
|
+
}, [isDropdownOpen]);
|
|
5708
|
+
const handleAddressSelect = (addressId) => {
|
|
5709
|
+
if (!isControlled) {
|
|
5710
|
+
setInternalSelectedId(addressId);
|
|
5711
|
+
}
|
|
5712
|
+
onSelectAddress?.(addressId);
|
|
5713
|
+
setIsDropdownOpen(false);
|
|
5714
|
+
};
|
|
5715
|
+
const propertyValueLabel = propertyValue?.label ?? "Property Value";
|
|
5716
|
+
const propertyValueCurrency = propertyValue?.currencySymbol ?? "$";
|
|
5717
|
+
const propertyValueFormat = propertyValue?.formatOptions ?? {
|
|
5718
|
+
minimumFractionDigits: 2,
|
|
5719
|
+
maximumFractionDigits: 2
|
|
5720
|
+
};
|
|
5721
|
+
const formattedPropertyValue = propertyValue == null ? null : `${propertyValueCurrency}${propertyValue.value.toLocaleString(
|
|
5722
|
+
void 0,
|
|
5723
|
+
propertyValueFormat
|
|
5724
|
+
)}`;
|
|
5725
|
+
const formattedPropertyChange = propertyValue?.change == null ? null : `${propertyValue.change >= 0 ? "+" : "-"}${propertyValueCurrency}${Math.abs(
|
|
5726
|
+
propertyValue.change
|
|
5727
|
+
).toLocaleString(void 0, propertyValueFormat)}`;
|
|
5728
|
+
const priceCurrency = price?.currencySymbol ?? "$";
|
|
5729
|
+
const priceFormat = price?.formatOptions ?? { minimumFractionDigits: 2, maximumFractionDigits: 2 };
|
|
5730
|
+
const pricePercentFormat = price?.percentFormatOptions ?? { minimumFractionDigits: 2, maximumFractionDigits: 2 };
|
|
5731
|
+
const formattedPriceValue = price == null ? null : `${priceCurrency}${price.value.toLocaleString(void 0, priceFormat)}`;
|
|
5732
|
+
const formattedPriceChange = price?.change == null ? null : `${price.change >= 0 ? "+" : "-"}${priceCurrency}${Math.abs(price.change).toLocaleString(
|
|
5733
|
+
void 0,
|
|
5734
|
+
priceFormat
|
|
5735
|
+
)}`;
|
|
5736
|
+
const formattedPricePercent = price?.changePercent == null ? null : `${price.changePercent >= 0 ? "+" : "-"}${Math.abs(price.changePercent).toLocaleString(
|
|
5737
|
+
void 0,
|
|
5738
|
+
pricePercentFormat
|
|
5739
|
+
)}%`;
|
|
5740
|
+
const priceContent = formattedPriceValue && propertyValueVariant === "pill" ? /* @__PURE__ */ jsxRuntime.jsxs(PriceBlock2, { $variant: propertyValueVariant, children: [
|
|
5741
|
+
/* @__PURE__ */ jsxRuntime.jsx(PriceAmount, { children: formattedPriceValue }),
|
|
5742
|
+
formattedPriceChange || formattedPricePercent ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5743
|
+
PriceChange,
|
|
5744
|
+
{
|
|
5745
|
+
$isPositive: price?.change != null ? price.change >= 0 : price?.changePercent != null ? price.changePercent >= 0 : void 0,
|
|
5746
|
+
children: [
|
|
5747
|
+
formattedPriceChange ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: formattedPriceChange }) : null,
|
|
5748
|
+
formattedPricePercent ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: formattedPricePercent }) : null
|
|
5749
|
+
]
|
|
5750
|
+
}
|
|
5751
|
+
) : null
|
|
5752
|
+
] }) : null;
|
|
5753
|
+
const propertyValueContent = formattedPropertyValue ? /* @__PURE__ */ jsxRuntime.jsxs(PropertyValueBlock, { $variant: propertyValueVariant, children: [
|
|
5754
|
+
/* @__PURE__ */ jsxRuntime.jsx(PropertyValueLabel, { children: propertyValueLabel }),
|
|
5755
|
+
/* @__PURE__ */ jsxRuntime.jsx(PropertyValueAmount, { children: formattedPropertyValue }),
|
|
5756
|
+
formattedPropertyChange ? /* @__PURE__ */ jsxRuntime.jsx(PropertyValueChange, { $isPositive: propertyValue?.change != null ? propertyValue.change >= 0 : void 0, children: formattedPropertyChange }) : null
|
|
5757
|
+
] }) : null;
|
|
5758
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(PropertySelectorContainer, { ref, className, $variant: propertyValueVariant, ...props, children: [
|
|
5759
|
+
/* @__PURE__ */ jsxRuntime.jsxs(PropertySelector, { ref: dropdownRef, onClick: () => hasAddresses && setIsDropdownOpen((prev2) => !prev2), children: [
|
|
5760
|
+
/* @__PURE__ */ jsxRuntime.jsxs(PropertyAddress, { children: [
|
|
5761
|
+
selectedOption ? selectedOption.label : hasAddresses ? "Select address" : "No addresses available",
|
|
5762
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5763
|
+
"svg",
|
|
5764
|
+
{
|
|
5765
|
+
className: "dropdown-icon",
|
|
5766
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
5767
|
+
width: "20",
|
|
5768
|
+
height: "20",
|
|
5769
|
+
viewBox: "0 0 24 24",
|
|
5770
|
+
fill: "currentColor",
|
|
5771
|
+
style: { transform: isDropdownOpen ? "rotate(180deg)" : void 0 },
|
|
5772
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7 10l5 5 5-5H7z" })
|
|
5773
|
+
}
|
|
5774
|
+
)
|
|
5775
|
+
] }),
|
|
5776
|
+
/* @__PURE__ */ jsxRuntime.jsx(PropertySelectorDropdown, { $isOpen: isDropdownOpen && hasAddresses, children: normalizedAddresses.map((option) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5777
|
+
PropertySelectorOption,
|
|
5778
|
+
{
|
|
5779
|
+
onClick: (event) => {
|
|
5780
|
+
event.stopPropagation();
|
|
5781
|
+
handleAddressSelect(option.id);
|
|
5782
|
+
},
|
|
5783
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(PropertySelectorName, { children: option.label })
|
|
5784
|
+
},
|
|
5785
|
+
option.id
|
|
5786
|
+
)) })
|
|
5787
|
+
] }),
|
|
5788
|
+
propertyValueVariant === "pill" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5789
|
+
priceContent,
|
|
5790
|
+
propertyValueContent
|
|
5791
|
+
] }) : propertyValueContent
|
|
5792
|
+
] });
|
|
5793
|
+
}
|
|
5794
|
+
);
|
|
5795
|
+
PropertyCompareBar.displayName = "PropertyCompareBar";
|
|
5796
|
+
var PropertySelectorContainer = at.div`
|
|
5797
|
+
display: flex;
|
|
5798
|
+
align-items: center;
|
|
5799
|
+
justify-content: space-between;
|
|
5800
|
+
padding: 1rem 1.5rem;
|
|
5801
|
+
background-color: ${({ $variant }) => $variant === "pill" ? "#0f0f0f" : "rgba(30, 32, 38, 0.95)"};
|
|
5802
|
+
border: ${({ $variant }) => $variant === "pill" ? "1px solid rgba(255, 255, 255, 0.15)" : "none"};
|
|
5803
|
+
border-radius: 8px;
|
|
5804
|
+
margin-bottom: 1.5rem;
|
|
5805
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
|
5806
|
+
color: var(--color-text, #f8f9fa);
|
|
5807
|
+
font-family: var(--font-family, "Inter", sans-serif);
|
|
5808
|
+
|
|
5809
|
+
@media (max-width: 1024px) {
|
|
5810
|
+
padding: 0.75rem 1rem;
|
|
5811
|
+
margin-bottom: 0.75rem;
|
|
5812
|
+
}
|
|
5813
|
+
|
|
5814
|
+
@media (max-width: 768px) {
|
|
5815
|
+
border-radius: 0;
|
|
5816
|
+
margin-top: 0;
|
|
5817
|
+
padding-top: 0.5rem;
|
|
5818
|
+
}
|
|
5819
|
+
|
|
5820
|
+
@media (max-width: 600px) {
|
|
5821
|
+
width: 100%;
|
|
5822
|
+
|
|
5823
|
+
${({ $variant }) => $variant === "pill" ? rt`
|
|
5824
|
+
display: grid;
|
|
5825
|
+
grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr) minmax(0, 1fr);
|
|
5826
|
+
gap: 0.35rem;
|
|
5827
|
+
align-items: center;
|
|
5828
|
+
|
|
5829
|
+
> *:nth-child(1) {
|
|
5830
|
+
width: 100%;
|
|
5831
|
+
}
|
|
5832
|
+
|
|
5833
|
+
> *:nth-child(2) {
|
|
5834
|
+
justify-self: center;
|
|
5835
|
+
width: 100%;
|
|
5836
|
+
}
|
|
5837
|
+
|
|
5838
|
+
> *:nth-child(3) {
|
|
5839
|
+
justify-self: end;
|
|
5840
|
+
text-align: right;
|
|
5841
|
+
}
|
|
5842
|
+
` : rt`
|
|
5843
|
+
flex-direction: row;
|
|
5844
|
+
align-items: center;
|
|
5845
|
+
justify-content: space-between;
|
|
5846
|
+
gap: 0.5rem;
|
|
5847
|
+
`};
|
|
5848
|
+
}
|
|
5849
|
+
`;
|
|
5850
|
+
var PropertySelector = at.div`
|
|
5851
|
+
position: relative;
|
|
5852
|
+
display: flex;
|
|
5853
|
+
align-items: center;
|
|
5854
|
+
cursor: pointer;
|
|
5855
|
+
padding: 0.5rem 0;
|
|
5856
|
+
flex: 1;
|
|
5857
|
+
|
|
5858
|
+
&:hover {
|
|
5859
|
+
.dropdown-icon {
|
|
5860
|
+
transform: translateY(2px);
|
|
5861
|
+
}
|
|
5862
|
+
}
|
|
5863
|
+
`;
|
|
5864
|
+
var PropertyAddress = at.div`
|
|
5865
|
+
font-size: 1.125rem;
|
|
5866
|
+
font-weight: 600;
|
|
5867
|
+
display: flex;
|
|
5868
|
+
align-items: center;
|
|
5869
|
+
gap: 0.5rem;
|
|
5870
|
+
color: inherit;
|
|
5871
|
+
|
|
5872
|
+
svg {
|
|
5873
|
+
transition: transform 0.2s;
|
|
5874
|
+
}
|
|
5875
|
+
|
|
5876
|
+
@media (max-width: 600px) {
|
|
5877
|
+
flex-direction: column;
|
|
5878
|
+
align-items: flex-start;
|
|
5879
|
+
gap: 0.2rem;
|
|
5880
|
+
font-size: 1rem;
|
|
5881
|
+
line-height: 1.2;
|
|
5882
|
+
white-space: normal;
|
|
5883
|
+
}
|
|
5884
|
+
`;
|
|
5885
|
+
var PropertySelectorDropdown = at.div`
|
|
5886
|
+
position: absolute;
|
|
5887
|
+
top: 100%;
|
|
5888
|
+
left: 0;
|
|
5889
|
+
width: 100%;
|
|
5890
|
+
max-width: 400px;
|
|
5891
|
+
background-color: var(--color-card, #1f232b);
|
|
5892
|
+
border-radius: 8px;
|
|
5893
|
+
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
|
|
5894
|
+
z-index: 100;
|
|
5895
|
+
overflow: hidden;
|
|
5896
|
+
display: ${(props) => props.$isOpen ? "block" : "none"};
|
|
5897
|
+
`;
|
|
5898
|
+
var PropertySelectorOption = at.div`
|
|
5899
|
+
padding: 0.75rem 1rem;
|
|
5900
|
+
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
|
5901
|
+
cursor: pointer;
|
|
5902
|
+
transition: background-color 0.2s;
|
|
5903
|
+
|
|
5904
|
+
&:hover {
|
|
5905
|
+
background-color: rgba(255, 255, 255, 0.05);
|
|
5906
|
+
}
|
|
5907
|
+
|
|
5908
|
+
&:last-child {
|
|
5909
|
+
border-bottom: none;
|
|
5910
|
+
}
|
|
5911
|
+
`;
|
|
5912
|
+
var PropertySelectorName = at.div`
|
|
5913
|
+
font-weight: 600;
|
|
5914
|
+
`;
|
|
5915
|
+
var PropertyValueBlock = at.div`
|
|
5916
|
+
display: flex;
|
|
5917
|
+
align-items: center;
|
|
5918
|
+
gap: 0.5rem;
|
|
5919
|
+
margin-left: 1rem;
|
|
5920
|
+
white-space: nowrap;
|
|
5921
|
+
|
|
5922
|
+
${({ $variant }) => $variant === "card" && rt`
|
|
5923
|
+
margin-left: auto;
|
|
5924
|
+
flex-direction: row;
|
|
5925
|
+
align-items: center;
|
|
5926
|
+
min-width: 220px;
|
|
5927
|
+
border: none;
|
|
5928
|
+
background: rgba(30, 32, 38, 0.95);
|
|
5929
|
+
border-radius: 14px;
|
|
5930
|
+
padding: 0.9rem 1.25rem;
|
|
5931
|
+
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
|
|
5932
|
+
gap: 0.85rem;
|
|
5933
|
+
justify-content: flex-end;
|
|
5934
|
+
|
|
5935
|
+
@media (max-width: 600px) {
|
|
5936
|
+
margin: 0;
|
|
5937
|
+
width: auto;
|
|
5938
|
+
min-width: 0;
|
|
5939
|
+
flex-direction: column;
|
|
5940
|
+
align-items: flex-end;
|
|
5941
|
+
gap: 0.125rem;
|
|
5942
|
+
padding: 0;
|
|
5943
|
+
background: transparent;
|
|
5944
|
+
border-radius: 0;
|
|
5945
|
+
box-shadow: none;
|
|
5946
|
+
}
|
|
5947
|
+
`}
|
|
5948
|
+
|
|
5949
|
+
${({ $variant }) => $variant === "pill" && rt`
|
|
5950
|
+
margin-left: auto;
|
|
5951
|
+
margin-right: 1rem;
|
|
5952
|
+
background: #191919;
|
|
5953
|
+
border-radius: 8px;
|
|
5954
|
+
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
5955
|
+
padding: 0.5rem 1rem;
|
|
5956
|
+
gap: 1rem;
|
|
5957
|
+
align-items: center;
|
|
5958
|
+
|
|
5959
|
+
@media (max-width: 600px) {
|
|
5960
|
+
margin: 0;
|
|
5961
|
+
width: 100%;
|
|
5962
|
+
min-width: 0;
|
|
5963
|
+
flex-direction: column;
|
|
5964
|
+
align-items: flex-end;
|
|
5965
|
+
text-align: right;
|
|
5966
|
+
gap: 0.2rem;
|
|
5967
|
+
padding: 0;
|
|
5968
|
+
background: transparent;
|
|
5969
|
+
border-radius: 0;
|
|
5970
|
+
border: none;
|
|
5971
|
+
white-space: normal;
|
|
5972
|
+
}
|
|
5973
|
+
`}
|
|
5974
|
+
|
|
5975
|
+
@media (max-width: 600px) {
|
|
5976
|
+
margin: 0;
|
|
5977
|
+
flex-direction: column;
|
|
5978
|
+
align-items: flex-end;
|
|
5979
|
+
gap: 0.2rem;
|
|
5980
|
+
white-space: normal;
|
|
5981
|
+
}
|
|
5982
|
+
`;
|
|
5983
|
+
var PropertyValueLabel = at.span`
|
|
5984
|
+
font-size: 0.7rem;
|
|
5985
|
+
color: var(--color-text-secondary, rgba(255, 255, 255, 0.6));
|
|
5986
|
+
text-transform: uppercase;
|
|
5987
|
+
letter-spacing: 0.5px;
|
|
5988
|
+
|
|
5989
|
+
@media (max-width: 600px) {
|
|
5990
|
+
font-size: 0.6rem;
|
|
5991
|
+
letter-spacing: 0.4px;
|
|
5992
|
+
}
|
|
5993
|
+
`;
|
|
5994
|
+
var PropertyValueAmount = at.span`
|
|
5995
|
+
font-size: 1.1rem;
|
|
5996
|
+
font-weight: 600;
|
|
5997
|
+
color: #fff;
|
|
5998
|
+
|
|
5999
|
+
@media (max-width: 600px) {
|
|
6000
|
+
font-size: 0.95rem;
|
|
6001
|
+
}
|
|
6002
|
+
`;
|
|
6003
|
+
var PropertyValueChange = at.span`
|
|
6004
|
+
font-size: 0.75rem;
|
|
6005
|
+
font-weight: 500;
|
|
6006
|
+
color: ${(props) => props.$isPositive == null ? "var(--color-text-secondary, rgba(255, 255, 255, 0.6))" : props.$isPositive ? "var(--color-positive, #0ecb81)" : "var(--color-negative, #f6465d)"};
|
|
6007
|
+
|
|
6008
|
+
@media (max-width: 600px) {
|
|
6009
|
+
font-size: 0.65rem;
|
|
6010
|
+
}
|
|
6011
|
+
`;
|
|
6012
|
+
var PriceBlock2 = at.div`
|
|
6013
|
+
display: none;
|
|
6014
|
+
|
|
6015
|
+
${({ $variant }) => $variant === "pill" && rt`
|
|
6016
|
+
@media (max-width: 600px) {
|
|
6017
|
+
display: flex;
|
|
6018
|
+
flex: none;
|
|
6019
|
+
flex-direction: column;
|
|
6020
|
+
align-items: center;
|
|
6021
|
+
justify-content: center;
|
|
6022
|
+
gap: 0.15rem;
|
|
6023
|
+
width: 100%;
|
|
6024
|
+
}
|
|
6025
|
+
`}
|
|
6026
|
+
`;
|
|
6027
|
+
var PriceAmount = at.span`
|
|
6028
|
+
font-size: 1.6rem;
|
|
6029
|
+
font-weight: 600;
|
|
6030
|
+
color: #fff;
|
|
6031
|
+
letter-spacing: 0.2px;
|
|
6032
|
+
`;
|
|
6033
|
+
var PriceChange = at.span`
|
|
6034
|
+
font-size: 0.85rem;
|
|
6035
|
+
font-weight: 500;
|
|
6036
|
+
display: inline-flex;
|
|
6037
|
+
gap: 0.35rem;
|
|
6038
|
+
color: ${(props) => props.$isPositive == null ? "var(--color-text-secondary, rgba(255, 255, 255, 0.6))" : props.$isPositive ? "var(--color-positive, #0ecb81)" : "var(--color-negative, #f6465d)"};
|
|
6039
|
+
`;
|
|
5653
6040
|
|
|
5654
6041
|
exports.Badge = Badge;
|
|
5655
6042
|
exports.Button = Button;
|
|
@@ -5666,6 +6053,7 @@ exports.MobileTradeNav = MobileTradeNav;
|
|
|
5666
6053
|
exports.Orderbook = Orderbook;
|
|
5667
6054
|
exports.PortfolioSummary = PortfolioSummary;
|
|
5668
6055
|
exports.PriceChart = PriceChart;
|
|
6056
|
+
exports.PropertyCompareBar = PropertyCompareBar;
|
|
5669
6057
|
exports.PropertyHeroHeader = PropertyHeroHeader;
|
|
5670
6058
|
exports.PropertyNewsUpdates = PropertyNewsUpdates;
|
|
5671
6059
|
exports.PropertySubheader = PropertySubheader;
|