Files
web/packages/trpc/lib/routers/hotels/schemas/hotel/detailedFacility.ts
Joakim Jäderberg c54c1ec540 Merged in SW-3270-move-interactive-map-to-design-system-or-booking-flow (pull request #2681)
SW-3270 move interactive map to design system or booking flow

* wip

* wip

* merge

* wip

* add support for locales in design-system

* add story for HotelCard

* setup alias

* .

* remove tracking from design-system for hotelcard

* pass isUserLoggedIn

* export design-system-new-deprecated.css from design-system

* Add HotelMarkerByType to Storybook

* Add interactive map to Storybook

* fix reactintl in vitest

* rename env variables

* .

* fix background colors

* add storybook stories for <Link />

* merge

* fix tracking for when clicking 'See rooms' in InteractiveMap

* Merge branch 'master' of bitbucket.org:scandic-swap/web into SW-3270-move-interactive-map-to-design-system-or-booking-flow

* remove deprecated comment


Approved-by: Anton Gunnarsson
2025-08-25 11:26:16 +00:00

37 lines
1.0 KiB
TypeScript

import slugify from "slugify"
import { z } from "zod"
import { FacilityEnum } from "@scandic-hotels/common/constants/facilities"
import { nullableArrayObjectValidator } from "@scandic-hotels/common/utils/zod/arrayValidator"
import { nullableStringValidator } from "@scandic-hotels/common/utils/zod/stringValidator"
const rawDetailedFacilitySchema = z.object({
filter: nullableStringValidator,
icon: nullableStringValidator,
id: z.nativeEnum(FacilityEnum),
name: nullableStringValidator,
public: z.boolean(),
sortOrder: z.number(),
})
function transformDetailedFacility(
data: z.output<typeof rawDetailedFacilitySchema>
) {
return {
...data,
slug: slugify(data.name, { lower: true, strict: true }),
}
}
export const detailedFacilitySchema = rawDetailedFacilitySchema.transform(
transformDetailedFacility
)
export const detailedFacilitiesSchema = nullableArrayObjectValidator(
rawDetailedFacilitySchema
).transform((facilities) =>
facilities
.sort((a, b) => b.sortOrder - a.sortOrder)
.map(transformDetailedFacility)
)