import { useEffect, useRef } from "react" import { useIntl } from "react-intl" import { useRateSelectionStore } from "@/stores/select-rate/rate-selection" import Button from "@/components/TempDesignSystem/Button" import Caption from "@/components/TempDesignSystem/Text/Caption" import Subtitle from "@/components/TempDesignSystem/Text/Subtitle" import { formatPrice } from "@/utils/numberFormatting" import Summary from "./Summary" import styles from "./mobileSummary.module.css" import type { MobileSummaryProps } from "@/types/components/hotelReservation/selectRate/rateSummary" export default function MobileSummary({ totalPriceToShow, isAllRoomsSelected, booking, isUserLoggedIn, vat, roomsAvailability, }: MobileSummaryProps) { const intl = useIntl() const scrollY = useRef(0) const { guestsInRooms, isSummaryOpen, getSelectedRateSummary, toggleSummaryOpen, togglePriceDetailsModalOpen, } = useRateSelectionStore() const selectedRateSummary = getSelectedRateSummary() const rooms = selectedRateSummary.map((room, index) => ({ adults: guestsInRooms[index].adults, childrenInRoom: guestsInRooms[index].children, roomType: room.roomType, roomPrice: { perNight: { local: { price: room.public.localPrice.pricePerNight, currency: room.public.localPrice.currency, }, requested: undefined, }, perStay: { local: { price: room.public.localPrice.pricePerStay, currency: room.public.localPrice.currency, }, requested: undefined, }, currency: room.public.localPrice.currency, }, roomRate: { ...room.public, memberRate: room.member, publicRate: room.public, }, rateDetails: roomsAvailability.rateDefinitions.find( (rate) => rate.rateCode === room.public.rateCode )?.generalTerms, cancellationText: roomsAvailability.rateDefinitions.find( (rate) => rate.rateCode === room.public.rateCode )?.cancellationText ?? "", })) useEffect(() => { if (isSummaryOpen) { scrollY.current = window.scrollY document.body.style.position = "fixed" document.body.style.top = `-${scrollY.current}px` document.body.style.width = "100%" } else { document.body.style.position = "" document.body.style.top = "" document.body.style.width = "" window.scrollTo({ top: scrollY.current, left: 0, behavior: "instant", }) } return () => { document.body.style.position = "" document.body.style.top = "" } }, [isSummaryOpen]) return (