"use client" import { useState } from "react" import { useIntl } from "react-intl" import { Carousel } from "@/components/Carousel" import { ChevronRightSmallIcon } from "@/components/Icons" import Modal from "@/components/Modal" import { AncillaryCard } from "@/components/TempDesignSystem/AncillaryCard" import Button from "@/components/TempDesignSystem/Button" import Caption from "@/components/TempDesignSystem/Text/Caption" import Title from "@/components/TempDesignSystem/Text/Title" import styles from "./ancillaries.module.css" import type { Ancillaries, AncillariesProps, Ancillary, } from "@/types/components/myPages/myStay/ancillaries" export function Ancillaries({ ancillaries }: AncillariesProps) { const intl = useIntl() const [selectedCategory, setSelectedCategory] = useState( () => { return ancillaries?.[0]?.categoryName ?? null } ) if (!ancillaries?.length) { return null } function mergeAncillaries( ancillaries: Ancillaries ): Ancillary["ancillaryContent"] { const uniqueAncillaries = new Map( ancillaries .flatMap((category) => category.ancillaryContent) .map((ancillary) => [ancillary.id, ancillary]) ) return [...uniqueAncillaries.values()] } const allAncillaries = mergeAncillaries(ancillaries) return (
{intl.formatMessage({ id: "Upgrade your stay" })}
{intl.formatMessage({ id: "View all" })} } title={intl.formatMessage({ id: "Upgrade your stay" })} >
{ancillaries.map((category) => ( ))}
{ancillaries .find( (category) => category.categoryName === selectedCategory ) ?.ancillaryContent.map(({ description, ...ancillary }) => ( ))}
{allAncillaries.slice(0, 4).map(({ description, ...ancillary }) => ( ))}
{allAncillaries.map(({ description, ...ancillary }) => ( ))}
) }