import BookingCodeFilter from "@scandic-hotels/booking-flow/BookingCodeFilter" import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon" import Subtitle from "@scandic-hotels/design-system/Subtitle" import { Typography } from "@scandic-hotels/design-system/Typography" import HotelCardListing from "@/components/HotelReservation/HotelCardListing" import HotelFilter from "@/components/HotelReservation/SelectHotel/Filters/HotelFilter" import HotelCount from "@/components/HotelReservation/SelectHotel/HotelCount" import HotelSorter from "@/components/HotelReservation/SelectHotel/HotelSorter" import MobileMapButtonContainer from "@/components/HotelReservation/SelectHotel/MobileMapButtonContainer" import NoAvailabilityAlert from "@/components/HotelReservation/SelectHotel/NoAvailabilityAlert" import StaticMap from "@/components/Maps/StaticMap" import Link from "@/components/TempDesignSystem/Link" import { getIntl } from "@/i18n" import { getFiltersFromHotels, type HotelResponse } from "./helpers" import styles from "./selectHotel.module.css" import type { Location } from "@scandic-hotels/trpc/types/locations" interface SelectHotelProps { isAlternative?: boolean bookingCode?: string city: Location hotels: HotelResponse[] isBookingCodeRateAvailable?: boolean mapHref: string title: string } export default async function SelectHotel({ bookingCode, city, hotels, isAlternative = false, isBookingCodeRateAvailable = false, mapHref, title, }: SelectHotelProps) { const intl = await getIntl() const isAllUnavailable = hotels.every( (hotel) => hotel.availability.status !== "Available" ) const isCityWithCountry = (city: any): city is { country: string } => "country" in city // Special rates (corporate cheque, voucher) will not have regular rate hotels availability const isSpecialRate = hotels.some( (hotel) => hotel.availability.productType?.bonusCheque || hotel.availability.productType?.voucher ) const filterList = getFiltersFromHotels(hotels) const showBookingCodeFilter = isBookingCodeRateAvailable && !isSpecialRate return ( <> {title} {showBookingCodeFilter ? : null} {hotels.length ? ( {intl.formatMessage({ defaultMessage: "See on map", })} ) : ( )} > ) }