feat(SW-938) Added icon to roomFacilitiesSchema and detailedFacilitySchema
This commit is contained in:
@@ -13,8 +13,14 @@
|
||||
font-family: var(--typography-Body-Regular-fontFamily);
|
||||
border-bottom: 1px solid var(--Base-Border-Subtle);
|
||||
/* padding set to align with AccordionItem which has a different composition */
|
||||
padding: var(--Spacing-x2)
|
||||
calc(var(--Spacing-x1) + var(--Spacing-x-one-and-half));
|
||||
padding: calc(var(--Spacing-x1) + var(--Spacing-x-one-and-half))
|
||||
var(--Spacing-x3);
|
||||
display: flex;
|
||||
gap: var(--Spacing-x1);
|
||||
}
|
||||
|
||||
.noIcon {
|
||||
margin-left: var(--Spacing-x4);
|
||||
}
|
||||
|
||||
.list {
|
||||
|
||||
@@ -8,12 +8,15 @@ import SidePeek from "@/components/TempDesignSystem/SidePeek"
|
||||
import Body from "@/components/TempDesignSystem/Text/Body"
|
||||
import Subtitle from "@/components/TempDesignSystem/Text/Subtitle"
|
||||
|
||||
import { getFacilityIcon } from "../RoomSidePeek/facilityIcon"
|
||||
|
||||
import styles from "./hotelSidePeek.module.css"
|
||||
|
||||
import { HotelSidePeekProps } from "@/types/components/hotelReservation/hotelSidePeek"
|
||||
import { ParkingProps } from "@/types/components/hotelReservation/selectHotel/selectHotel"
|
||||
import type { HotelSidePeekProps } from "@/types/components/hotelReservation/hotelSidePeek"
|
||||
import type { ParkingProps } from "@/types/components/hotelReservation/selectHotel/selectHotel"
|
||||
import { SidePeekEnum } from "@/types/components/hotelReservation/sidePeek"
|
||||
import { Amenities, Hotel } from "@/types/hotel"
|
||||
import { IconName } from "@/types/components/icon"
|
||||
import type { Amenities, Hotel } from "@/types/hotel"
|
||||
|
||||
function getAmenitiesList(hotel: Hotel) {
|
||||
const detailedAmenities: Amenities = hotel.detailedFacilities.filter(
|
||||
@@ -46,7 +49,10 @@ export default function HotelSidePeek({
|
||||
<Accordion>
|
||||
{/* parking */}
|
||||
{hotel.parking.length ? (
|
||||
<AccordionItem title={intl.formatMessage({ id: "Parking" })}>
|
||||
<AccordionItem
|
||||
title={intl.formatMessage({ id: "Parking" })}
|
||||
icon={IconName.Parking}
|
||||
>
|
||||
{hotel.parking.map((p) => (
|
||||
<Parking key={p.name} parking={p} />
|
||||
))}
|
||||
@@ -56,9 +62,19 @@ export default function HotelSidePeek({
|
||||
{intl.formatMessage({ id: "Accessibility" })}
|
||||
</div>
|
||||
{amenitiesList.map((amenity) => {
|
||||
const Icon = getFacilityIcon(amenity.icon)
|
||||
return (
|
||||
<div key={amenity.id} className={styles.amenity}>
|
||||
{amenity.name}
|
||||
{Icon && (
|
||||
<Icon width={24} height={24} color="uiTextMediumContrast" />
|
||||
)}
|
||||
<Body
|
||||
asChild
|
||||
className={!Icon ? styles.noIcon : undefined}
|
||||
color="uiTextMediumContrast"
|
||||
>
|
||||
<span>{amenity.name}</span>
|
||||
</Body>
|
||||
</div>
|
||||
)
|
||||
})}
|
||||
|
||||
@@ -56,10 +56,16 @@ export default function RoomSidePeek({
|
||||
{room.roomFacilities
|
||||
.sort((a, b) => a.sortOrder - b.sortOrder)
|
||||
.map((facility) => {
|
||||
const Icon = getFacilityIcon(facility.name)
|
||||
const Icon = getFacilityIcon(facility.icon)
|
||||
return (
|
||||
<li key={facility.name}>
|
||||
{Icon && <Icon color="uiTextMediumContrast" />}
|
||||
{Icon && (
|
||||
<Icon
|
||||
width={24}
|
||||
height={24}
|
||||
color="uiTextMediumContrast"
|
||||
/>
|
||||
)}
|
||||
<Body
|
||||
asChild
|
||||
className={!Icon ? styles.noIcon : undefined}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--Spacing-x-one-and-half) var(--Spacing-x2);
|
||||
gap: var(--Spacing-x-one-and-half) var(--Spacing-x1);
|
||||
cursor: pointer;
|
||||
color: var(--Base-Text-High-contrast);
|
||||
font-family: var(--typography-Body-Bold-fontFamily);
|
||||
|
||||
@@ -125,6 +125,7 @@ const detailedFacilitySchema = z.object({
|
||||
public: z.boolean(),
|
||||
sortOrder: z.number(),
|
||||
filter: z.string().optional(),
|
||||
icon: z.string(),
|
||||
})
|
||||
|
||||
export const facilitySchema = z.object({
|
||||
|
||||
@@ -56,6 +56,7 @@ const roomFacilitiesSchema = z.object({
|
||||
name: z.string(),
|
||||
isUniqueSellingPoint: z.boolean(),
|
||||
sortOrder: z.number(),
|
||||
icon: z.string(),
|
||||
})
|
||||
|
||||
export const roomSchema = z
|
||||
|
||||
@@ -15,6 +15,7 @@ export type Filter = {
|
||||
public: boolean
|
||||
sortOrder: number
|
||||
filter?: string
|
||||
icon: string
|
||||
}
|
||||
|
||||
export type HotelFilterModalProps = {
|
||||
|
||||
Reference in New Issue
Block a user