import { cx } from 'class-variance-authority'
import { useIntl } from 'react-intl'
import Body from '../../Body'
import Caption from '../../Caption'
import { Divider } from '../../Divider'
import Subtitle from '../../Subtitle'
import { RateTypeEnum } from '@scandic-hotels/common/constants/rateType'
import styles from './hotelPriceCard.module.css'
type Price = {
pricePerStay: number
pricePerNight: number
currency: string
}
export type PriceCardProps = {
productTypePrices: {
rateType: RateTypeEnum
localPrice: Price
requestedPrice?: Price
}
isMemberPrice?: boolean
className?: string
}
export function HotelPriceCard({
productTypePrices,
isMemberPrice = false,
className,
}: PriceCardProps) {
const intl = useIntl()
const isRegularOrPublicPromotionRate =
productTypePrices.rateType === RateTypeEnum.Regular ||
productTypePrices.rateType === RateTypeEnum.PublicPromotion
return (
{isRegularOrPublicPromotionRate &&
(isMemberPrice ? (
-
{intl.formatMessage({
defaultMessage: 'Member price',
})}
) : (
-
{intl.formatMessage({
defaultMessage: 'Standard price',
})}
))}
-
{intl.formatMessage({
defaultMessage: 'From',
})}
-
{productTypePrices.localPrice.pricePerNight}
{productTypePrices.localPrice.currency}
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
/
{intl.formatMessage({
defaultMessage: 'night',
})}
{productTypePrices?.requestedPrice && (
-
{intl.formatMessage({
defaultMessage: 'Approx.',
})}
-
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
{`${productTypePrices.requestedPrice.pricePerNight} `}
{productTypePrices.requestedPrice.currency}
)}
{productTypePrices.localPrice.pricePerStay !==
productTypePrices.localPrice.pricePerNight &&
// Handle undefined scenarios
productTypePrices.localPrice.pricePerNight && (
<>
-
{intl.formatMessage({
defaultMessage: 'Total',
})}
-
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
{`${productTypePrices.localPrice.pricePerStay} `}
{productTypePrices.localPrice.currency}
>
)}
)
}