From 0b28893e7152275472a8c753141b7bf912593750 Mon Sep 17 00:00:00 2001 From: "Chuma Mcphoy (We Ahead)" Date: Thu, 13 Nov 2025 13:05:24 +0000 Subject: [PATCH] Merged in feat/LOY-422-new-upcoming-stays (pull request #3121) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat(LOY-422): Upcoming Stays Redesign * feat(LOY-422): Upcoming Stays Redesign * feat(LOY-422): Carousel next/previous arrows * chore(LOY-422): add new material icon * refactor(LOY-422): restructure new and old upcoming stays * fix(LOY-422): handle less than 1 case * chore(LOY-422): remove uneeded id * chore(LOY-422): remove intl label for date edge case Approved-by: Matilda Landström --- apps/scandic-web/.env.local.example | 2 + .../emptyUpcomingStays.module.css | 17 + .../Stays/EmptyUpcomingStays/index.tsx | 81 ++- .../Stays/NextStay/NextStayContent.tsx | 2 +- .../DynamicContent/Stays/NextStay/index.tsx | 4 +- .../Stays/NextStay/nextStay.module.css | 5 +- .../Stays/Upcoming/upcoming.module.css | 3 - .../Stays/UpcomingStays/Carousel.tsx | 67 ++ .../CarouselCard/carouselCard.module.css | 69 +++ .../UpcomingStays/CarouselCard/index.tsx | 114 ++++ .../{Upcoming => UpcomingStays}/Client.tsx | 0 .../{Upcoming => UpcomingStays}/index.tsx | 23 +- .../Stays/UpcomingStays/upcoming.module.css | 11 + .../getDaysUntilText.test.ts} | 3 +- .../utils.ts => utils/getDaysUntilText.ts} | 10 +- .../Blocks/DynamicContent/index.tsx | 2 +- apps/scandic-web/env/server.ts | 8 + .../Rooms/RoomsHeader/roomsHeader.module.css | 7 +- packages/design-system/lib/fonts.css | 2 +- packages/trpc/env/server.ts | 8 + packages/trpc/lib/routers/user/query/index.ts | 15 + scripts/material-symbols-update.mts | 574 +++++++++--------- shared/fonts/material-symbols/.auto-generated | 4 +- .../material-symbols/rounded-1b8067b7.woff2 | Bin 0 -> 35460 bytes .../material-symbols/rounded-1db5531f.woff2 | Bin 35460 -> 0 bytes 25 files changed, 687 insertions(+), 344 deletions(-) delete mode 100644 apps/scandic-web/components/Blocks/DynamicContent/Stays/Upcoming/upcoming.module.css create mode 100644 apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/Carousel.tsx create mode 100644 apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/CarouselCard/carouselCard.module.css create mode 100644 apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/CarouselCard/index.tsx rename apps/scandic-web/components/Blocks/DynamicContent/Stays/{Upcoming => UpcomingStays}/Client.tsx (100%) rename apps/scandic-web/components/Blocks/DynamicContent/Stays/{Upcoming => UpcomingStays}/index.tsx (56%) create mode 100644 apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/upcoming.module.css rename apps/scandic-web/components/Blocks/DynamicContent/Stays/{NextStay/utils.test.ts => utils/getDaysUntilText.test.ts} (99%) rename apps/scandic-web/components/Blocks/DynamicContent/Stays/{NextStay/utils.ts => utils/getDaysUntilText.ts} (86%) create mode 100644 shared/fonts/material-symbols/rounded-1b8067b7.woff2 delete mode 100644 shared/fonts/material-symbols/rounded-1db5531f.woff2 diff --git a/apps/scandic-web/.env.local.example b/apps/scandic-web/.env.local.example index d538bb7ef..ecc736506 100644 --- a/apps/scandic-web/.env.local.example +++ b/apps/scandic-web/.env.local.example @@ -66,3 +66,5 @@ DTMC_ENTRA_ID_ISSUER="" DTMC_ENTRA_ID_SECRET="" HOTEL_BRANDING="0" # 0 - disabled, 1 - enabled + +NEW_STAYS_ON_MY_PAGES="true" diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/EmptyUpcomingStays/emptyUpcomingStays.module.css b/apps/scandic-web/components/Blocks/DynamicContent/Stays/EmptyUpcomingStays/emptyUpcomingStays.module.css index 8f7937796..82a2e57f9 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/Stays/EmptyUpcomingStays/emptyUpcomingStays.module.css +++ b/apps/scandic-web/components/Blocks/DynamicContent/Stays/EmptyUpcomingStays/emptyUpcomingStays.module.css @@ -30,3 +30,20 @@ justify-content: center; align-items: center; } + +/* Styles for new empty upcoming stays design */ +.emptyUpcomingStaysContainer { + display: flex; + padding: var(--Space-x6); + flex-direction: column; + justify-content: center; + align-items: center; + gap: var(--Space-x3); + border-radius: var(--Corner-radius-lg); + background: var(--Surface-Brand-Primary-1-Default); +} + +.heading { + color: var(--Text-Heading); + text-align: center; +} diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/EmptyUpcomingStays/index.tsx b/apps/scandic-web/components/Blocks/DynamicContent/Stays/EmptyUpcomingStays/index.tsx index fde2d930a..e71f1f248 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/Stays/EmptyUpcomingStays/index.tsx +++ b/apps/scandic-web/components/Blocks/DynamicContent/Stays/EmptyUpcomingStays/index.tsx @@ -1,6 +1,10 @@ +import ButtonLink from "@scandic-hotels/design-system/ButtonLink" import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon" import Link from "@scandic-hotels/design-system/OldDSLink" import Title from "@scandic-hotels/design-system/Title" +import { Typography } from "@scandic-hotels/design-system/Typography" + +import { env } from "@/env/server" import { getIntl } from "@/i18n" import { getLang } from "@/i18n/serverContext" @@ -13,39 +17,60 @@ export default async function EmptyUpcomingStaysBlock() { const href = `/${lang}` - return ( -
-
- + <div className={styles.titleContainer}> + <Title + as="h4" + level="h3" + color="red" + className={styles.title} + textAlign="center" + > + {intl.formatMessage({ + id: "stays.noUpcomingStays", + defaultMessage: "You have no upcoming stays.", + })} + <span className={styles.burgundyTitle}> + {intl.formatMessage({ + id: "stays.whereToGoNext", + defaultMessage: "Where should you go next?", + })} + </span> + +
+ {intl.formatMessage({ - id: "stays.noUpcomingStays", - defaultMessage: "You have no upcoming stays.", + id: "stays.getInspired", + defaultMessage: "Get inspired", })} - - {intl.formatMessage({ - id: "stays.whereToGoNext", - defaultMessage: "Where should you go next?", - })} - - - - + + +
+ ) + } + + return ( +
+ +

+ {intl.formatMessage({ + id: "stays.noUpcomingStaysAtTheMoment", + defaultMessage: "You have no upcoming stays at the moment", + })} +

+
+ {intl.formatMessage({ - id: "stays.getInspired", - defaultMessage: "Get inspired", + id: "stays.findDestinationOrHotel", + defaultMessage: "Find destination or hotel", })} - - +
) } diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/NextStayContent.tsx b/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/NextStayContent.tsx index 6385a9c8b..91ee95bc6 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/NextStayContent.tsx +++ b/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/NextStayContent.tsx @@ -8,7 +8,7 @@ import { Typography } from "@scandic-hotels/design-system/Typography" import { getIntl } from "@/i18n" import { getLang } from "@/i18n/serverContext" -import { getDaysUntilText } from "./utils" +import { getDaysUntilText } from "../utils/getDaysUntilText" import styles from "./nextStay.module.css" diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/index.tsx b/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/index.tsx index 43a163e91..3ae28723d 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/index.tsx +++ b/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/index.tsx @@ -1,9 +1,11 @@ +import { env } from "@/env/server" import { serverClient } from "@/lib/trpc/server" import { Section } from "@/components/Section" import { SectionHeader } from "@/components/Section/Header" import SectionLink from "@/components/Section/Link" +import EmptyUpcomingStaysBlock from "../EmptyUpcomingStays" import NextStayContent from "./NextStayContent" import styles from "./nextStay.module.css" @@ -15,7 +17,7 @@ export default async function NextStay({ title, link }: NextStayProps) { const nextStay = await caller.user.stays.next() if (!nextStay) { - return null + return env.NEW_STAYS_ON_MY_PAGES ? : null } return ( diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/nextStay.module.css b/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/nextStay.module.css index 45315ad90..c545f9b09 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/nextStay.module.css +++ b/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/nextStay.module.css @@ -29,10 +29,7 @@ .imageOverlay { position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; + inset: 0; background: linear-gradient( to bottom, rgba(0, 0, 0, 0.1) 0%, diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/Upcoming/upcoming.module.css b/apps/scandic-web/components/Blocks/DynamicContent/Stays/Upcoming/upcoming.module.css deleted file mode 100644 index 5abd71abb..000000000 --- a/apps/scandic-web/components/Blocks/DynamicContent/Stays/Upcoming/upcoming.module.css +++ /dev/null @@ -1,3 +0,0 @@ -.container { - display: inline-grid; -} diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/Carousel.tsx b/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/Carousel.tsx new file mode 100644 index 000000000..688bd59c8 --- /dev/null +++ b/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/Carousel.tsx @@ -0,0 +1,67 @@ +"use client" + +import { LoadingSpinner } from "@scandic-hotels/design-system/LoadingSpinner" +import { trpc } from "@scandic-hotels/trpc/client" + +import { Carousel } from "@/components/Carousel" +import useLang from "@/hooks/useLang" + +import CarouselCard from "./CarouselCard" + +import styles from "./upcoming.module.css" + +import type { + UpcomingStaysClientProps, + UpcomingStaysNonNullResponseObject, +} from "@/types/components/myPages/stays/upcoming" + +export default function UpcomingStaysCarousel({ + initialUpcomingStays, +}: UpcomingStaysClientProps) { + const lang = useLang() + const { data, isLoading } = trpc.user.stays.upcoming.useInfiniteQuery( + { + limit: 6, + lang, + }, + { + getNextPageParam: (lastPage) => { + return lastPage?.nextCursor + }, + initialData: { + pageParams: [undefined, 1], + pages: [initialUpcomingStays], + }, + } + ) + + if (isLoading) { + return + } + + const stays = data.pages + .filter((page): page is UpcomingStaysNonNullResponseObject => !!page?.data) + .flatMap((page) => page.data) + + if (!stays.length) { + return null + } + + return ( + + + {stays.map((stay) => ( + + + + ))} + + + + + + ) +} diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/CarouselCard/carouselCard.module.css b/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/CarouselCard/carouselCard.module.css new file mode 100644 index 000000000..8cf5b3f4b --- /dev/null +++ b/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/CarouselCard/carouselCard.module.css @@ -0,0 +1,69 @@ +.card { + display: flex; + flex-direction: column; + background: var(--Base-Surface-Primary-light-Normal); + border: 1px solid var(--Border-Default); + overflow: hidden; + border-radius: var(--Corner-radius-lg); +} + +.imageContainer { + position: relative; + width: 100%; + aspect-ratio: 16/9; + border-radius: var(--Corner-radius-lg) var(--Corner-radius-lg) 0 0; + background: + linear-gradient(0deg, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0.4) 100%), + lightgray 50% / cover no-repeat, + var(--Neutral-20); + overflow: hidden; +} + +.image { + width: 100%; + height: 100%; + object-fit: cover; + position: relative; + z-index: 1; +} + +.imageOverlay { + position: absolute; + inset: 0; + background: linear-gradient( + 180deg, + rgba(0, 0, 0, 0.4) 0%, + rgba(0, 0, 0, 0.2) 50%, + rgba(0, 0, 0, 0.6) 100% + ); + display: flex; + flex-direction: column; + z-index: 2; + padding: var(--Space-x2); + color: var(--Text-Inverted); + place-content: center; + text-align: center; +} + +.content { + display: flex; + flex-direction: column; + gap: var(--Space-x1); + padding: var(--Space-x2); +} + +.infoRow { + display: flex; + justify-content: space-between; + align-items: center; +} + +.infoItem { + display: flex; + align-items: center; + gap: var(--Space-x05); +} + +.dateRange { + text-align: right; +} diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/CarouselCard/index.tsx b/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/CarouselCard/index.tsx new file mode 100644 index 000000000..98fe6fd8f --- /dev/null +++ b/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/CarouselCard/index.tsx @@ -0,0 +1,114 @@ +"use client" + +import { useIntl } from "react-intl" + +import { dt } from "@scandic-hotels/common/dt" +import ButtonLink from "@scandic-hotels/design-system/ButtonLink" +import { Divider } from "@scandic-hotels/design-system/Divider" +import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon" +import Image from "@scandic-hotels/design-system/Image" +import { Typography } from "@scandic-hotels/design-system/Typography" + +import useLang from "@/hooks/useLang" + +import { getDaysUntilText } from "../../utils/getDaysUntilText" + +import styles from "./carouselCard.module.css" + +import type { Stay } from "@scandic-hotels/trpc/routers/user/output" + +interface CarouselCardProps { + stay: Stay +} + +export default function CarouselCard({ stay }: CarouselCardProps) { + const intl = useIntl() + const lang = useLang() + + const { attributes } = stay + const { + checkinDate, + checkoutDate, + hotelInformation, + isWebAppOrigin, + bookingUrl, + } = attributes + + const daysUntilText = getDaysUntilText(checkinDate, lang, intl) + + return ( +
+
+ { +
+ + {daysUntilText} + + + {hotelInformation.hotelName} + + {hotelInformation.cityName && ( + + {hotelInformation.cityName} + + )} +
+
+ +
+
+ + + + {intl.formatMessage({ + id: "common.dates", + defaultMessage: "Dates", + })} + + + + + + {/* eslint-disable-next-line formatjs/no-literal-string-in-jsx */} + {" → "} + + + +
+ + {isWebAppOrigin && ( + <> + + + {intl.formatMessage({ + id: "nextStay.seeDetailsAndExtras", + defaultMessage: "See details & extras", + })} + + + + )} +
+
+ ) +} diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/Upcoming/Client.tsx b/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/Client.tsx similarity index 100% rename from apps/scandic-web/components/Blocks/DynamicContent/Stays/Upcoming/Client.tsx rename to apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/Client.tsx diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/Upcoming/index.tsx b/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/index.tsx similarity index 56% rename from apps/scandic-web/components/Blocks/DynamicContent/Stays/Upcoming/index.tsx rename to apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/index.tsx index d96e04f78..470240379 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/Stays/Upcoming/index.tsx +++ b/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/index.tsx @@ -1,10 +1,12 @@ +import { env } from "@/env/server" import { serverClient } from "@/lib/trpc/server" import { Section } from "@/components/Section" -import SectionHeader from "@/components/Section/Header/Deprecated" +import { SectionHeader } from "@/components/Section/Header" import SectionLink from "@/components/Section/Link" import EmptyUpcomingStaysBlock from "../EmptyUpcomingStays" +import UpcomingStaysCarousel from "./Carousel" import ClientUpcomingStays from "./Client" import styles from "./upcoming.module.css" @@ -20,10 +22,25 @@ export default async function UpcomingStays({ limit: 6, }) + const hasStays = + initialUpcomingStays?.data && initialUpcomingStays.data.length > 0 + + if (env.NEW_STAYS_ON_MY_PAGES) { + if (!hasStays) return null + + return ( +
+ {title && } + + +
+ ) + } + return (
- - {initialUpcomingStays?.data.length ? ( + {title && } + {hasStays ? ( ) : ( diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/upcoming.module.css b/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/upcoming.module.css new file mode 100644 index 000000000..6d945dafa --- /dev/null +++ b/apps/scandic-web/components/Blocks/DynamicContent/Stays/UpcomingStays/upcoming.module.css @@ -0,0 +1,11 @@ +.container { + display: inline-grid; +} + +.carousel { + width: 100%; +} + +.carousel .navigationButton { + top: 40%; +} diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/utils.test.ts b/apps/scandic-web/components/Blocks/DynamicContent/Stays/utils/getDaysUntilText.test.ts similarity index 99% rename from apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/utils.test.ts rename to apps/scandic-web/components/Blocks/DynamicContent/Stays/utils/getDaysUntilText.test.ts index e7cd5eb11..9d474cc25 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/utils.test.ts +++ b/apps/scandic-web/components/Blocks/DynamicContent/Stays/utils/getDaysUntilText.test.ts @@ -3,7 +3,7 @@ import { describe, expect, it } from "vitest" import { Lang } from "@scandic-hotels/common/constants/language" import { dt } from "@scandic-hotels/common/dt" -import { getDaysUntilText } from "./utils" +import { getDaysUntilText } from "./getDaysUntilText" import type { IntlShape, MessageDescriptor } from "react-intl" @@ -13,7 +13,6 @@ const mockIntl = { values?: Record ) => { const messages: Record = { - "nextStay.past": `{date}`, "nextStay.today": "Today", "nextStay.tomorrow": "Tomorrow", "nextStay.inXDays": `In {days} days`, diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/utils.ts b/apps/scandic-web/components/Blocks/DynamicContent/Stays/utils/getDaysUntilText.ts similarity index 86% rename from apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/utils.ts rename to apps/scandic-web/components/Blocks/DynamicContent/Stays/utils/getDaysUntilText.ts index c352d5f93..2ee7e4a64 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/Stays/NextStay/utils.ts +++ b/apps/scandic-web/components/Blocks/DynamicContent/Stays/utils/getDaysUntilText.ts @@ -14,15 +14,7 @@ export function getDaysUntilText( // Handle past dates edge case. if (daysUntil < 0) { - return intl.formatMessage( - { - id: "nextStay.past", - defaultMessage: "{date} ", - }, - { - date: dt(checkinDate).locale(lang).format("D MMM YYYY"), - } - ) + return dt(checkinDate).locale(lang).format("D MMM YYYY") } if (daysUntil === 0) { diff --git a/apps/scandic-web/components/Blocks/DynamicContent/index.tsx b/apps/scandic-web/components/Blocks/DynamicContent/index.tsx index c70ebf0c7..3f8ae1448 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/index.tsx +++ b/apps/scandic-web/components/Blocks/DynamicContent/index.tsx @@ -21,7 +21,7 @@ import SASTierComparisonBlock from "@/components/Blocks/DynamicContent/SASTierCo import SignupFormWrapper from "@/components/Blocks/DynamicContent/SignupFormWrapper" import NextStay from "@/components/Blocks/DynamicContent/Stays/NextStay" import PreviousStays from "@/components/Blocks/DynamicContent/Stays/Previous" -import UpcomingStays from "@/components/Blocks/DynamicContent/Stays/Upcoming" +import UpcomingStays from "@/components/Blocks/DynamicContent/Stays/UpcomingStays" import { SJWidget } from "@/components/SJWidget" import JobylonFeed from "./JobylonFeed" diff --git a/apps/scandic-web/env/server.ts b/apps/scandic-web/env/server.ts index c95c1520d..824e707c1 100644 --- a/apps/scandic-web/env/server.ts +++ b/apps/scandic-web/env/server.ts @@ -136,6 +136,13 @@ export const env = createEnv({ .string() .optional() .transform((s) => s?.split(",") || []), + NEW_STAYS_ON_MY_PAGES: z + .string() + // only allow "true" or "false" + .refine((s) => s === "true" || s === "false") + // transform to boolean + .transform((s) => s === "true") + .default("false"), }, emptyStringAsUndefined: true, runtimeEnv: { @@ -213,6 +220,7 @@ export const env = createEnv({ DTMC_ENTRA_ID_SECRET: process.env.DTMC_ENTRA_ID_SECRET, HOTEL_BRANDING: process.env.HOTEL_BRANDING, CHATBOT_LIVE_LANGS: process.env.CHATBOT_LIVE_LANGS, + NEW_STAYS_ON_MY_PAGES: process.env.NEW_STAYS_ON_MY_PAGES, }, }) diff --git a/packages/booking-flow/lib/components/SelectRate/RoomsContainer/Rooms/RoomsHeader/roomsHeader.module.css b/packages/booking-flow/lib/components/SelectRate/RoomsContainer/Rooms/RoomsHeader/roomsHeader.module.css index ac15aa4dd..33818d6a2 100644 --- a/packages/booking-flow/lib/components/SelectRate/RoomsContainer/Rooms/RoomsHeader/roomsHeader.module.css +++ b/packages/booking-flow/lib/components/SelectRate/RoomsContainer/Rooms/RoomsHeader/roomsHeader.module.css @@ -2,7 +2,7 @@ display: grid; gap: var(--Space-x3); align-items: center; - grid-template-areas: + grid-template-areas: "availableRoomsCount" "noAvailabilityAlert" "filters"; @@ -26,7 +26,8 @@ @media screen and (min-width: 768px) { .container { grid-template-columns: 1fr auto; - grid-template-areas: "availableRoomsCount filters" - "noAvailabilityAlert noAvailabilityAlert"; + grid-template-areas: + "availableRoomsCount filters" + "noAvailabilityAlert noAvailabilityAlert"; } } diff --git a/packages/design-system/lib/fonts.css b/packages/design-system/lib/fonts.css index e3429d0d5..5b373c1b6 100644 --- a/packages/design-system/lib/fonts.css +++ b/packages/design-system/lib/fonts.css @@ -276,7 +276,7 @@ font-style: normal; font-weight: 400; font-display: block; - src: url(/_static/shared/fonts/material-symbols/rounded-1db5531f.woff2) + src: url(/_static/shared/fonts/material-symbols/rounded-1b8067b7.woff2) format('woff2'); } diff --git a/packages/trpc/env/server.ts b/packages/trpc/env/server.ts index 4cd42a0d5..e2567bf77 100644 --- a/packages/trpc/env/server.ts +++ b/packages/trpc/env/server.ts @@ -36,6 +36,13 @@ export const env = createEnv({ SENTRY_ENVIRONMENT: z.string().default("development"), PUBLIC_URL: z.string().default(""), SALESFORCE_PREFERENCE_BASE_URL: z.string(), + NEW_STAYS_ON_MY_PAGES: z + .string() + // only allow "true" or "false" + .refine((s) => s === "true" || s === "false") + // transform to boolean + .transform((s) => s === "true") + .default("false"), }, emptyStringAsUndefined: true, runtimeEnv: { @@ -56,5 +63,6 @@ export const env = createEnv({ SENTRY_ENVIRONMENT: process.env.SENTRY_ENVIRONMENT, PUBLIC_URL: process.env.NEXT_PUBLIC_PUBLIC_URL, SALESFORCE_PREFERENCE_BASE_URL: process.env.SALESFORCE_PREFERENCE_BASE_URL, + NEW_STAYS_ON_MY_PAGES: process.env.NEW_STAYS_ON_MY_PAGES, }, }) diff --git a/packages/trpc/lib/routers/user/query/index.ts b/packages/trpc/lib/routers/user/query/index.ts index 967b50d89..1191fddfd 100644 --- a/packages/trpc/lib/routers/user/query/index.ts +++ b/packages/trpc/lib/routers/user/query/index.ts @@ -1,6 +1,7 @@ import { createCounter } from "@scandic-hotels/common/telemetry" import { safeTry } from "@scandic-hotels/common/utils/safeTry" +import { env } from "../../../../env/server" import { router } from "../../.." import * as api from "../../../api" import { Transactions } from "../../../enums/transactions" @@ -184,6 +185,20 @@ export const userQueryRouter = router({ language ) + if (env.NEW_STAYS_ON_MY_PAGES) { + if (updatedData.length <= 1) { + // If there are 1 or fewer stays, return null since NextStay handles this + return null + } + + // If there are multiple stays, filter out the first one since NextStay shows it + const filteredData = updatedData.slice(1) + return { + data: filteredData, + nextCursor, + } + } + return { data: updatedData, nextCursor, diff --git a/scripts/material-symbols-update.mts b/scripts/material-symbols-update.mts index 2d78c87d6..dde9a2047 100644 --- a/scripts/material-symbols-update.mts +++ b/scripts/material-symbols-update.mts @@ -19,327 +19,329 @@ const FONT_BASE_URL = `https://fonts.googleapis.com/css2?family=Material+Symbols // Defines the subset of icons for the font const icons = [ - "accessibility", - "accessible", - "add_circle", - "add", - "air_purifier_gen", - "air", - "airline_seat_recline_normal", - "airplane_ticket", - "apartment", - "apparel", - "arrow_back_ios", - "arrow_back", - "arrow_forward_ios", - "arrow_forward", - "arrow_right", - "arrow_upward", - "assistant_navigation", - "asterisk", - "attractions", - "award_star", - "bakery_dining", - "balcony", - "bathroom", - "bathtub", - "beach_access", - "bed", - "bedroom_parent", - "box", - "brunch_dining", - "business_center", - "calendar_add_on", - "calendar_clock", - "calendar_month", - "calendar_today", - "call_quality", - "call", - "camera", - "cancel", - "chair", - "charging_station", - "check_box", - "check_circle", - "check", - "checked_bag", - "checkroom", - "chevron_left", - "chevron_right", - "close", - "coffee_maker", - "coffee", - "compare_arrows", - "computer", - "concierge", - "confirmation_number", - "connected_tv", - "content_copy", - "contract", - "cool_to_dry", - "countertops", - "credit_card_heart", - "credit_card", - "curtains_closed", - "curtains", - "deck", - "delete", - "desk", - "device_thermostat", - "diamond", - "dining", - "directions_run", - "directions_subway", - "directions", - "downhill_skiing", - "download", - "dresser", - "edit_calendar", - "edit_square", - "edit", - "electric_bike", - "electric_car", - "elevator", - "emoji_transportation", - "error_circle_rounded", - "error", - "exercise", - "family_restroom", - "fastfood", - "favorite", - "fax", - "featured_seasonal_and_gifts", - "festival", - "filter_alt", - "filter", - "format_list_bulleted", - "floor_lamp", - "forest", - "garage", - "globe", - "golf_course", - "groups", - "health_and_beauty", - "heat", - "hiking", - "home", - "hot_tub", - "houseboat", - "hvac", - "id_card", - "imagesmode", - "info", - "iron", - "kayaking", - "kettle", - "keyboard_arrow_down", - "keyboard_arrow_up", - "king_bed", - "kitchen", - "landscape", - "laundry", - "link", - "liquor", - "live_tv", - "local_bar", - "local_cafe", - "local_convenience_store", - "local_drink", - "local_laundry_service", - "local_parking", - "location_city", - "location_on", - "lock", - "loyalty", - "luggage", - "mail", - "map", - "meeting_room", - "microwave", - "mode_fan", - "museum", - "music_cast", - "music_note", - "nature", - "night_shelter", - "nightlife", - "open_in_new", - "pan_zoom", - "panorama", - "pedal_bike", - "person", - "pets", - "phone", - "photo_camera", - "pool", - "print", - "radio", - "recommend", - "redeem", - "refresh", - "remove", - "restaurant", - "room_service", - "router", - "sailing", - "sauna", - "scene", - "search", - "sell", - "shopping_bag", - "shower", - "single_bed", - "skateboarding", - "smoke_free", - "smoking_rooms", - "spa", - "sports_esports", - "sports_golf", - "sports_handball", - "sports_tennis", - "stairs", - "star", - "straighten", - "styler", - "support_agent", - "swipe", - "sync_saved_locally", - "table_bar", - "theater_comedy", - "things_to_do", - "train", - "tram", - "transit_ticket", - "travel_luggage_and_bags", - "travel", - "trophy", - "tv_guide", - "tv_remote", - "upload", - "visibility_off", - "visibility", - "ward", - "warning", - "water_full", - "wifi", - "yard", + "accessibility", + "accessible", + "add_circle", + "add", + "air_purifier_gen", + "air", + "airline_seat_recline_normal", + "airplane_ticket", + "apartment", + "apparel", + "arrow_back_ios", + "arrow_back", + "arrow_forward_ios", + "arrow_forward", + "arrow_right", + "arrow_upward", + "assistant_navigation", + "asterisk", + "attractions", + "award_star", + "bakery_dining", + "balcony", + "bathroom", + "bathtub", + "beach_access", + "bed", + "bedroom_parent", + "box", + "brunch_dining", + "business_center", + "calendar_add_on", + "calendar_clock", + "calendar_month", + "calendar_today", + "call_quality", + "call", + "camera", + "cancel", + "chair", + "charging_station", + "check_box", + "check_circle", + "check", + "checked_bag", + "checkroom", + "chevron_left", + "chevron_right", + "close", + "coffee_maker", + "coffee", + "compare_arrows", + "computer", + "concierge", + "confirmation_number", + "connected_tv", + "content_copy", + "contract", + "cool_to_dry", + "countertops", + "credit_card_heart", + "credit_card", + "curtains_closed", + "curtains", + "deck", + "delete", + "desk", + "device_thermostat", + "diamond", + "dining", + "directions_run", + "directions_subway", + "directions", + "downhill_skiing", + "download", + "dresser", + "edit_calendar", + "edit_square", + "edit", + "electric_bike", + "electric_car", + "elevator", + "emoji_transportation", + "error_circle_rounded", + "error", + "exercise", + "family_restroom", + "fastfood", + "favorite", + "fax", + "featured_seasonal_and_gifts", + "festival", + "filter_alt", + "filter", + "format_list_bulleted", + "floor_lamp", + "forest", + "garage", + "globe", + "golf_course", + "groups", + "health_and_beauty", + "heat", + "hiking", + "home", + "hot_tub", + "houseboat", + "hvac", + "id_card", + "imagesmode", + "info", + "iron", + "kayaking", + "kettle", + "keyboard_arrow_down", + "keyboard_arrow_right", + "keyboard_arrow_up", + "king_bed", + "kitchen", + "landscape", + "laundry", + "link", + "liquor", + "live_tv", + "local_bar", + "local_cafe", + "local_convenience_store", + "local_drink", + "local_laundry_service", + "local_parking", + "location_city", + "location_on", + "lock", + "loyalty", + "luggage", + "mail", + "map", + "meeting_room", + "microwave", + "mode_fan", + "museum", + "music_cast", + "music_note", + "nature", + "night_shelter", + "nightlife", + "open_in_new", + "pan_zoom", + "panorama", + "pedal_bike", + "person", + "pets", + "phone", + "photo_camera", + "pool", + "print", + "radio", + "recommend", + "redeem", + "refresh", + "remove", + "restaurant", + "room_service", + "router", + "sailing", + "sauna", + "scene", + "search", + "sell", + "shopping_bag", + "shower", + "single_bed", + "skateboarding", + "smoke_free", + "smoking_rooms", + "spa", + "sports_esports", + "sports_golf", + "sports_handball", + "sports_tennis", + "stairs", + "star", + "straighten", + "styler", + "support_agent", + "swipe", + "sync_saved_locally", + "table_bar", + "theater_comedy", + "things_to_do", + "train", + "tram", + "transit_ticket", + "travel_luggage_and_bags", + "travel", + "trophy", + "tv_guide", + "tv_remote", + "upload", + "visibility_off", + "visibility", + "ward", + "warning", + "water_full", + "wifi", + "yard", ].sort(); function createHash(value: unknown) { - const stringified = stringify(value); - const hash = crypto.createHash("sha256"); - hash.update(stringified); - return hash.digest("hex"); + const stringified = stringify(value); + const hash = crypto.createHash("sha256"); + hash.update(stringified); + return hash.digest("hex"); } const hash = createHash(icons).substring(0, 8); async function fetchIconUrl(url: string) { - const response = await fetch(url, { - headers: { - Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", - "User-Agent": - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36", - }, - }); + const response = await fetch(url, { + headers: { + Accept: + "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", + "User-Agent": + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36", + }, + }); - if (!response.ok) { - console.error(`Unable to fetch woff2 for ${url}`); - process.exit(1); - } + if (!response.ok) { + console.error(`Unable to fetch woff2 for ${url}`); + process.exit(1); + } - const text = await response.text(); + const text = await response.text(); - const isWoff2 = /format\('woff2'\)/.test(text); - if (!isWoff2) { - console.error(`Unable to identify woff2 font in response`); - process.exit(1); - } + const isWoff2 = /format\('woff2'\)/.test(text); + if (!isWoff2) { + console.error(`Unable to identify woff2 font in response`); + process.exit(1); + } - const srcUrl = text.match(/src: url\(([^)]+)\)/); + const srcUrl = text.match(/src: url\(([^)]+)\)/); - if (srcUrl && srcUrl[1]) { - return srcUrl[1]; - } + if (srcUrl && srcUrl[1]) { + return srcUrl[1]; + } - return null; + return null; } async function download(url: string, destFolder: string) { - const dest = resolve(join(destFolder, `/rounded-${hash}.woff2`)); + const dest = resolve(join(destFolder, `/rounded-${hash}.woff2`)); - try { - const response = await fetch(url); + try { + const response = await fetch(url); - if (!response.ok) { - console.error(`Unable to fetch ${url}`); - process.exit(1); - } - - if (!response.body) { - console.error(`Bad response from ${url}`); - process.exit(1); - } - - const fileStream = createWriteStream(dest); - - // @ts-expect-error: type mismatch - const readableNodeStream = Readable.fromWeb(response.body); - - await pipeline(readableNodeStream, fileStream); - } catch (error) { - console.error(`Error downloading file from ${url}:`, error); - process.exit(1); + if (!response.ok) { + console.error(`Unable to fetch ${url}`); + process.exit(1); } + + if (!response.body) { + console.error(`Bad response from ${url}`); + process.exit(1); + } + + const fileStream = createWriteStream(dest); + + // @ts-expect-error: type mismatch + const readableNodeStream = Readable.fromWeb(response.body); + + await pipeline(readableNodeStream, fileStream); + } catch (error) { + console.error(`Error downloading file from ${url}:`, error); + process.exit(1); + } } async function cleanFontDirs() { - await rm(FONT_DIR, { recursive: true, force: true }); - await mkdir(FONT_DIR, { recursive: true }); - await writeFile( - join(FONT_DIR, ".auto-generated"), - `Auto-generated, do not edit. Use scripts/material-symbols-update.mts to update.\nhash=${hash}\ncreated=${new Date().toISOString()}\n`, - { encoding: "utf-8" } - ); + await rm(FONT_DIR, { recursive: true, force: true }); + await mkdir(FONT_DIR, { recursive: true }); + await writeFile( + join(FONT_DIR, ".auto-generated"), + `Auto-generated, do not edit. Use scripts/material-symbols-update.mts to update.\nhash=${hash}\ncreated=${new Date().toISOString()}\n`, + { encoding: "utf-8" }, + ); } async function updateFontCSS() { - const file = resolve(__dirname, "../packages/design-system/lib/fonts.css"); + const file = resolve(__dirname, "../packages/design-system/lib/fonts.css"); - const css = await readFile(file, { - encoding: "utf-8", - }); + const css = await readFile(file, { + encoding: "utf-8", + }); - await writeFile( - file, - css.replace( - /url\(\/_static\/shared\/fonts\/material-symbols\/rounded[^)]+\)/, - `url(/_static/shared/fonts/material-symbols/rounded-${hash}.woff2)` - ), - { - encoding: "utf-8", - } - ); + await writeFile( + file, + css.replace( + /url\(\/_static\/shared\/fonts\/material-symbols\/rounded[^)]+\)/, + `url(/_static/shared/fonts/material-symbols/rounded-${hash}.woff2)`, + ), + { + encoding: "utf-8", + }, + ); } async function main() { - const fontUrl = `${FONT_BASE_URL}&icon_names=${icons.join(",")}&display=block`; + const fontUrl = `${FONT_BASE_URL}&icon_names=${icons.join(",")}&display=block`; - const iconUrl = await fetchIconUrl(fontUrl); + const iconUrl = await fetchIconUrl(fontUrl); - if (iconUrl) { - await cleanFontDirs(); + if (iconUrl) { + await cleanFontDirs(); - await download(iconUrl, FONT_DIR); + await download(iconUrl, FONT_DIR); - await updateFontCSS(); + await updateFontCSS(); - console.log("Successfully updated icons!"); - process.exit(0); - } else { - console.error( - `Unable to find the icon font src URL in CSS response from Google Fonts at ${fontUrl}` - ); - } + console.log("Successfully updated icons!"); + process.exit(0); + } else { + console.error( + `Unable to find the icon font src URL in CSS response from Google Fonts at ${fontUrl}`, + ); + } } main(); diff --git a/shared/fonts/material-symbols/.auto-generated b/shared/fonts/material-symbols/.auto-generated index 705247192..698e96b6c 100644 --- a/shared/fonts/material-symbols/.auto-generated +++ b/shared/fonts/material-symbols/.auto-generated @@ -1,3 +1,3 @@ Auto-generated, do not edit. Use scripts/material-symbols-update.mts to update. -hash=1db5531f -created=2025-09-17T06:58:37.841Z +hash=1b8067b7 +created=2025-11-11T10:02:22.385Z diff --git a/shared/fonts/material-symbols/rounded-1b8067b7.woff2 b/shared/fonts/material-symbols/rounded-1b8067b7.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e593f745e96b7ba5589d9b41f479d9f6a38d11e8 GIT binary patch literal 35460 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