Feat/lokalise rebuild * chore(lokalise): update translation ids * chore(lokalise): easier to switch between projects * chore(lokalise): update translation ids * . * . * . * . * . * . * chore(lokalise): update translation ids * chore(lokalise): update translation ids * . * . * . * chore(lokalise): update translation ids * chore(lokalise): update translation ids * . * . * chore(lokalise): update translation ids * chore(lokalise): update translation ids * chore(lokalise): new translations * merge * switch to errors for missing id's * merge * sync translations Approved-by: Linus Flood
73 lines
1.9 KiB
TypeScript
73 lines
1.9 KiB
TypeScript
"use client"
|
|
import { useIntl } from "react-intl"
|
|
|
|
import { Typography } from "@scandic-hotels/design-system/Typography"
|
|
|
|
import { useMyStayStore } from "@/stores/my-stay"
|
|
|
|
import PriceDetails from "../../PriceDetails"
|
|
import TotalPrice from "../TotalPrice"
|
|
import Room from "./Room"
|
|
|
|
import styles from "./multiRoom.module.css"
|
|
|
|
import type { SafeUser } from "@/types/user"
|
|
|
|
interface MultiRoomProps {
|
|
user: SafeUser
|
|
}
|
|
|
|
export default function MultiRoom(props: MultiRoomProps) {
|
|
const intl = useIntl()
|
|
const { allRoomsAreCancelled, rooms } = useMyStayStore((state) => ({
|
|
allRoomsAreCancelled: state.allRoomsAreCancelled,
|
|
rooms: state.rooms,
|
|
}))
|
|
|
|
if (rooms.length <= 1) {
|
|
return null
|
|
}
|
|
|
|
return (
|
|
<div className={styles.wrapper}>
|
|
<Typography variant="Title/sm">
|
|
<h2 className={styles.title}>
|
|
{intl.formatMessage({
|
|
id: "myStay.yourRooms",
|
|
defaultMessage: "Your rooms",
|
|
})}
|
|
</h2>
|
|
</Typography>
|
|
<div className={styles.container}>
|
|
<div className={styles.roomsContainer}>
|
|
{rooms.map((booking, index) => (
|
|
<Room
|
|
key={booking.confirmationNumber}
|
|
{...props}
|
|
booking={booking}
|
|
roomNr={index + 1}
|
|
/>
|
|
))}
|
|
</div>
|
|
</div>
|
|
<div className={styles.totalContainer}>
|
|
<div className={styles.total}>
|
|
<Typography variant="Body/Lead text">
|
|
<p>
|
|
{intl.formatMessage({
|
|
id: "myStay.bookingTotal",
|
|
defaultMessage: "Booking total",
|
|
})}
|
|
{/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */}
|
|
{":"}
|
|
</p>
|
|
</Typography>
|
|
<TotalPrice />
|
|
</div>
|
|
|
|
{allRoomsAreCancelled ? null : <PriceDetails />}
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|