* fix(SW-2247): Removed accordion like special requests block and changed button variant * fix(SW-2247): Added additional info for bedtype selection Approved-by: Tobias Johansson Approved-by: Niclas Edenvin
75 lines
2.0 KiB
TypeScript
75 lines
2.0 KiB
TypeScript
"use client"
|
|
import { useEffect, useState } from "react"
|
|
import { useIntl } from "react-intl"
|
|
|
|
import { Typography } from "@scandic-hotels/design-system/Typography"
|
|
|
|
import { useRoomContext } from "@/contexts/Details/Room"
|
|
|
|
import styles from "./section.module.css"
|
|
|
|
import type { SectionProps } from "@/types/components/hotelReservation/enterDetails/section"
|
|
import { StepEnum } from "@/types/enums/step"
|
|
|
|
export default function Section({
|
|
children,
|
|
header,
|
|
label,
|
|
additionalInfo,
|
|
step,
|
|
disabled,
|
|
}: React.PropsWithChildren<SectionProps>) {
|
|
const intl = useIntl()
|
|
|
|
const {
|
|
room: { bedType, breakfast },
|
|
} = useRoomContext()
|
|
|
|
const [title, setTitle] = useState(label)
|
|
|
|
const noBreakfastTitle = intl.formatMessage({
|
|
defaultMessage: "No breakfast",
|
|
})
|
|
const breakfastTitle = intl.formatMessage({
|
|
defaultMessage: "Breakfast buffet",
|
|
})
|
|
|
|
useEffect(() => {
|
|
if (step === StepEnum.selectBed && bedType) {
|
|
setTitle(bedType.description)
|
|
}
|
|
// If breakfast step, check if an option has been selected
|
|
if (step === StepEnum.breakfast && breakfast !== undefined) {
|
|
if (breakfast === false) {
|
|
setTitle(noBreakfastTitle)
|
|
} else {
|
|
setTitle(breakfastTitle)
|
|
}
|
|
}
|
|
}, [bedType, breakfast, setTitle, step, breakfastTitle, noBreakfastTitle])
|
|
|
|
return (
|
|
<div
|
|
className={`${styles.section} ${disabled ? styles.disabled : ""}`}
|
|
data-step={step}
|
|
>
|
|
<header className={styles.header}>
|
|
<Typography variant="Title/Overline/sm">
|
|
<h2 className={styles.heading}>{header}</h2>
|
|
</Typography>
|
|
<Typography variant="Title/Subtitle/md">
|
|
<p className={styles.subheading}>{title}</p>
|
|
</Typography>
|
|
{additionalInfo ? (
|
|
<Typography variant="Body/Paragraph/mdRegular">
|
|
<p className={styles.additionalInfo}>{additionalInfo}</p>
|
|
</Typography>
|
|
) : null}
|
|
</header>
|
|
<div className={styles.content}>
|
|
<div className={styles.contentWrapper}>{children}</div>
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|