favorite page

This commit is contained in:
2024-06-26 17:48:01 +05:00
parent 16190699b5
commit 16959f88a4
23 changed files with 82 additions and 36 deletions
+11 -3
View File
@@ -4,17 +4,25 @@ interface ISwitchToggleProps {
labels: ISwitchLabel[];
currentLabel: ISwitchLabel;
onClick: (label: ISwitchLabel) => void;
isDisabled?: boolean;
}
function SwitchToggle({ labels, currentLabel, onClick }: ISwitchToggleProps) {
function SwitchToggle({
labels,
currentLabel,
onClick,
isDisabled = false,
}: ISwitchToggleProps) {
return (
<div className="flex bg-white rounded-lg border border-[#E2E2DC] p-1 select-none text-s w-fit">
{labels.map((lab) => (
<div
key={lab.id}
onClick={() => onClick(lab)}
onClick={() => !isDisabled && onClick(lab)}
className={`${
lab.id === currentLabel.id ? "bg-[#00BED7] text-white" : ""
lab.id === currentLabel.id
? "bg-[#00BED7] text-white"
: `${isDisabled ? "text-[#0D192266]" : ""}`
} rounded-lg px-6 py-[10px] cursor-pointer transition-all duration-300 ease-in-out`}
>
{lab.label}
@@ -1,11 +1,11 @@
import { formatNumber } from "../../calc/formatNumber";
// import { formatNumber } from "../../calc/formatNumber";
const StudioDescriptionSection = () => {
return (
<section className="grid grid-cols-12 lg:gap-4 gap-3">
<div className="bg-white rounded-2xl lg:col-span-3 col-span-6 flex flex-col justify-between p-8">
<div className="flex flex-col">
<h2 className="text-[#0D1922] text-subheadline-l font-bold">
<h2 className="text-[#0D1922] text-subheadline-l font-semibold">
Studio flex
</h2>
<p className="text-[#00BED7] text-subheadline-s font-semibold">
@@ -4,21 +4,28 @@ import { apartmentsWithoutVirtualTour } from "../../../consts/apartmentsWithoutV
interface ApartmentDescriptionProps {
isVisible: boolean;
is3DTourAvailable: boolean;
descRef: React.LegacyRef<HTMLDivElement>;
hoveredApartment: IAparmentRes | null;
apartmentDataType: string | null;
}
const ApartmentDescription = ({
isVisible,
is3DTourAvailable,
descRef,
hoveredApartment,
apartmentDataType,
}: ApartmentDescriptionProps) => {
const wing =
hoveredApartment && hoveredApartment.Unit_No.split("-")[0] === "E"
? "East Wing"
: "West Wing";
const isVirtualTourAvailiable =
hoveredApartment &&
!apartmentsWithoutVirtualTour.some(
(aprt) =>
aprt.type === hoveredApartment.Unit_Type ||
aprt.type === apartmentDataType
);
return (
<>
@@ -49,13 +56,9 @@ const ApartmentDescription = ({
{/* <p className="font-semibold text-[#00BED7] text-subheadline-s">
AED 1,668,888
</p> */}
{!apartmentsWithoutVirtualTour.some(
(aprt) => aprt.type === hoveredApartment.Unit_Type
) && (
{isVirtualTourAvailiable && (
<div
className={`bg-[#30B21614] text-[#30B216] px-2 py-[6px] flex gap-1 items-center rounded-lg ${
is3DTourAvailable ? "opacity-100" : "opacity-0"
}`}
className={`bg-[#30B21614] text-[#30B216] px-2 py-[6px] flex gap-1 items-center rounded-lg opacity-100`}
>
<VirtualTourIcon />
<p className="text-caption-m font-semibold text-[#30B216]">
@@ -33,7 +33,6 @@ const FloorSidebar = ({
string | null
>(null);
const [apartments, setApartments] = useState<IAparmentRes[]>([]);
const [is3DTourAvailable] = useState(true);
const { setModal } = useModal();
const descRef = useRef(null);
@@ -134,7 +133,7 @@ const FloorSidebar = ({
hoveredApartment={hoveredApartment}
descRef={descRef}
isVisible={isDescVisible}
is3DTourAvailable={is3DTourAvailable}
apartmentDataType={hoveredApartmentType}
/>
</div>
<div
@@ -21,11 +21,12 @@ const FavoriteAppartmentCard = ({ card }: FavoriteAppartmentCardProps) => {
const { Floor, Unit_Type, Total_Area_Sqft, Unit_No } = card;
const wing = Unit_No.split("-")[0] === "E" ? "East" : "West";
const navigate = useNavigate();
const isLayoutType = unitTypeWithLayouts.some((type) => type === Unit_Type);
const { setFavorites } = useFavorites();
const isLayoutType = unitTypeWithLayouts.some((type) => type === Unit_Type);
const layoutImage = isLayoutType
? apartmentLayoutImages[Unit_Type]
: apartmentRoutes.find((apr) => apr.type === card.Unit_Type)?.layout;
console.log("card", card);
const { setModal } = useModal();
@@ -113,7 +114,7 @@ const FavoriteAppartmentCard = ({ card }: FavoriteAppartmentCardProps) => {
<p className="text[#0D1922] text-s">
{Unit_Type}, {Total_Area_Sqft} Sqft
</p>
<p className="text-[#00BED7] text-m font-bold">
<p className="text-[#00BED7] text-m font-semibold">
{/* AED {formatNumber(cost, ",", 3, 1)} */}
Unavailiable
</p>
@@ -1,5 +1,7 @@
// import { formatNumber } from "../../calc/formatNumber";
import { apartmentLayoutImages } from "../../consts/apartmentLayoutsImages";
import { apartmentRoutes } from "../../consts/apartmentsRoutes";
import { unitTypeWithLayouts } from "../../consts/defaultApartmentTypes";
import useFavorites from "../../store/useFavorites";
import { IAparmentRes } from "../../types/apartmentsRes";
import Button from "../Button";
@@ -14,9 +16,12 @@ interface FavoriteSliderCardProps {
const FavoriteSliderCard = ({ card, elementRef }: FavoriteSliderCardProps) => {
const wing = card.Unit_No.split("-")[0] === "E" ? "East" : "West";
const { setFavorites } = useFavorites();
const layoutImage = apartmentRoutes.find(
(apr) => apr.type === card.Unit_Type
)?.layout;
const isLayoutType = unitTypeWithLayouts.some(
(type) => type === card.Unit_Type
);
const layoutImage = isLayoutType
? apartmentLayoutImages[card.Unit_Type]
: apartmentRoutes.find((apr) => apr.type === card.Unit_Type)?.layout;
const handleOnAddFavoriteClick = (
e: React.MouseEvent<HTMLButtonElement, MouseEvent>
@@ -28,7 +28,7 @@ const AboutComplexModal = ({
const unitNo = apartment.Unit_No;
const wing = unitNo.split("-")[0] === "E" ? "East" : "West";
const isVirtualTourAvailialbe = !apartmentsWithoutVirtualTour.some(
(aprt) => aprt.type === apartment.Unit_Type
(aprt) => aprt.type === apartment.Unit_Type || aprt.type === apartmentType
);
const [isFavorite, setIsFavorite] = useState(false);
const { setFavorites } = useFavorites();
@@ -141,6 +141,7 @@ const AboutComplexModal = ({
className="absolute right-10 bottom-10"
/>
<SwitchToggle
isDisabled
labels={apartmentLayouts}
currentLabel={currentLabel}
onClick={handleOnSwitchClick}
@@ -3,7 +3,7 @@ import Button from "../Button";
import CrossIcon from "../icons/CrossIcon";
import MasterInput from "../MasterInput";
import MasterSelector from "../MasterSelector";
import { formatNumber } from "../../calc/formatNumber";
// import { formatNumber } from "../../calc/formatNumber";
import SuccessSentEnquiry from "./SuccessSentEnquiry";
const SendEnquiryModal = () => {