import { HotelDetailsSidePeek } from "@scandic-hotels/booking-flow/components/HotelDetailsSidePeek"
import Image from "@scandic-hotels/design-system/Image"
import Title from "@scandic-hotels/design-system/Title"
import { Typography } from "@scandic-hotels/design-system/Typography"

import { getIntl } from "@/i18n"

import styles from "./header.module.css"

import type { HotelHeaderProps } from "@/types/components/hotelReservation/enterDetails/hotelHeader"

export default async function HotelHeader({
  hotelData: { hotel, url, restaurants, additionalData },
}: HotelHeaderProps) {
  const image = hotel.hotelContent?.images
  const intl = await getIntl()
  const addressStr = `${hotel.address.streetAddress}, ${hotel.address.city}`

  return (
    <header className={styles.header}>
      <Image
        className={styles.hero}
        alt={image.altText || image.altText_En || ""}
        src={image.src}
        height={200}
        width={1196}
      />
      <div className={styles.wrapper}>
        <div className={styles.container}>
          <div className={styles.titleContainer}>
            <Title
              as="h1"
              level="h1"
              color="white"
              textAlign="center"
              className={styles.title}
            >
              {hotel.name}
            </Title>
            <Title
              as="h2"
              level="h1"
              color="white"
              className={styles.mobileTitle}
              textAlign="center"
            >
              {hotel.name}
            </Title>
            <Typography variant="Title/Overline/sm">
              <div className={styles.address}>{addressStr}</div>
            </Typography>
          </div>

          <HotelDetailsSidePeek
            hotel={{ ...hotel, url: url }}
            restaurants={restaurants}
            additionalHotelData={additionalData}
            triggerLabel={intl.formatMessage({
              defaultMessage: "See hotel details",
            })}
            buttonVariant={"secondary"}
          />
        </div>
      </div>
    </header>
  )
}
