From 20f10208186f0930ce7a543e70184254c235c7b1 Mon Sep 17 00:00:00 2001 From: Emma Zettervall Date: Mon, 6 Oct 2025 07:42:11 +0000 Subject: [PATCH] Merged in LOY-346-add-modal-to-level-progress-card (pull request #2896) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat(LOY-346): Add modal to LevelProgressCard * Added LevelProgressModal with styles in LevelProgressCard. Also added compareAllLevels LangRoute in webHrefs * feat(LOY-346): Smaller changes based on comments * feat(LOY-346): Changed paragraph to time, added textdecoration:underline, changed dialog css * feat(LOY-346): Changed title size:) * feat(LOY-346): Changed dates-arrow icon to in text Approved-by: Chuma Mcphoy (We Ahead) Approved-by: Matilda Landström --- .../LevelProgressModal.module.css | 38 ++++++ .../LevelProgressModal/index.tsx | 120 ++++++++++++++++++ .../MyPages/LevelProgressCard/index.tsx | 13 +- apps/scandic-web/constants/webHrefs.ts | 9 ++ 4 files changed, 171 insertions(+), 9 deletions(-) create mode 100644 apps/scandic-web/components/MyPages/LevelProgressCard/LevelProgressModal/LevelProgressModal.module.css create mode 100644 apps/scandic-web/components/MyPages/LevelProgressCard/LevelProgressModal/index.tsx diff --git a/apps/scandic-web/components/MyPages/LevelProgressCard/LevelProgressModal/LevelProgressModal.module.css b/apps/scandic-web/components/MyPages/LevelProgressCard/LevelProgressModal/LevelProgressModal.module.css new file mode 100644 index 000000000..96b6acecb --- /dev/null +++ b/apps/scandic-web/components/MyPages/LevelProgressCard/LevelProgressModal/LevelProgressModal.module.css @@ -0,0 +1,38 @@ +.infoButton { + grid-column: 2; + grid-row: 1 / 3; + align-self: start; +} + +.levelProgressModal { + display: flex; + flex-direction: column; + gap: var(--Space-x2); + padding-bottom: var(--Space-x1); +} + +.title { + display: flex; + flex-direction: column; +} + +.dates { + display: flex; + align-items: center; + gap: var(--Space-x1); +} + +.link { + display: flex; + gap: var(--Space-x1); +} + +.linkText { + text-decoration: underline; +} + +@media screen and (min-width: 768px) { + .dialog { + max-width: 560px; + } +} diff --git a/apps/scandic-web/components/MyPages/LevelProgressCard/LevelProgressModal/index.tsx b/apps/scandic-web/components/MyPages/LevelProgressCard/LevelProgressModal/index.tsx new file mode 100644 index 000000000..cdaa1e4d5 --- /dev/null +++ b/apps/scandic-web/components/MyPages/LevelProgressCard/LevelProgressModal/index.tsx @@ -0,0 +1,120 @@ +/* eslint-disable formatjs/no-literal-string-in-jsx */ +"use client" + +import { useIntl } from "react-intl" + +import { dt } from "@scandic-hotels/common/dt" +import { IconButton } from "@scandic-hotels/design-system/IconButton" // client only +import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon" +import Link from "@scandic-hotels/design-system/Link" +import Modal from "@scandic-hotels/design-system/Modal" +import { Typography } from "@scandic-hotels/design-system/Typography" + +import { compareAllLevels, faq } from "@/constants/webHrefs" + +import useLang from "@/hooks/useLang" + +import styles from "./LevelProgressModal.module.css" + +type LevelProgressModalProps = { + color: string | null + tierExpires: string | null +} + +export default function LevelProgressModal({ + color, + tierExpires, +}: LevelProgressModalProps) { + const intl = useIntl() + const lang = useLang() + + // calculate tierStarts by tierExpires + let tierStarts: string | null = null + + if (tierExpires) { + const date = new Date(tierExpires) + date.setFullYear(date.getFullYear() - 1) + tierStarts = date.toISOString().split("T")[0] + } + + return ( + + + + } + > +
+ +

+ {intl.formatMessage({ + defaultMessage: "Your member year and level progress", + })} +

+
+ + +

+ {intl.formatMessage({ defaultMessage: "Current member year" })} +

+
+
+ + + + → + + + +
+
+ +

+ {intl.formatMessage({ + defaultMessage: + "The points you earn this year determine your level for both this and the next member year.", + })} +

+
+ + {intl.formatMessage({ + defaultMessage: "Compare all levels", + })} + + + + {intl.formatMessage({ + defaultMessage: "Scandic Friends FAQ", + })} + + +
+
+ ) +} diff --git a/apps/scandic-web/components/MyPages/LevelProgressCard/index.tsx b/apps/scandic-web/components/MyPages/LevelProgressCard/index.tsx index 2366477a0..d9103bd71 100644 --- a/apps/scandic-web/components/MyPages/LevelProgressCard/index.tsx +++ b/apps/scandic-web/components/MyPages/LevelProgressCard/index.tsx @@ -1,5 +1,4 @@ import { dt } from "@scandic-hotels/common/dt" -import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon" import { Typography } from "@scandic-hotels/design-system/Typography" import { getScandicNativeMembership } from "@scandic-hotels/trpc/routers/user/helpers" @@ -9,6 +8,7 @@ import { getLang } from "@/i18n/serverContext" import ProgressCardHighestLevel from "./InnerCard/ProgressCardHighestLevel" import ProgressCardLowerLevel from "./InnerCard/ProgressCardLowerLevel" import SuccessCard from "./InnerCard/SuccessCard" +import LevelProgressModal from "./LevelProgressModal" import { getLevelProgressData } from "./utils" import { levelProgressCardVariants } from "./variants" @@ -56,14 +56,9 @@ export default async function LevelProgressCard({ )}

- diff --git a/apps/scandic-web/constants/webHrefs.ts b/apps/scandic-web/constants/webHrefs.ts index 6c8270bd0..8d96735fc 100644 --- a/apps/scandic-web/constants/webHrefs.ts +++ b/apps/scandic-web/constants/webHrefs.ts @@ -20,6 +20,15 @@ export const faq: LangRoute = { sv: `/${Lang.sv}/scandic-friends/hjalp-och-service/faq`, } +export const compareAllLevels: LangRoute = { + da: `/${Lang.da}/scandic-friends/sammenlign-alle-niveauer`, + de: `/${Lang.de}/scandic-friends/alle-level-vergleichen`, + en: `/${Lang.en}/scandic-friends/compare-all-levels`, + fi: `/${Lang.fi}/scandic-friends/vertaa-kaikkia-tasoja`, + no: `/${Lang.no}/scandic-friends/sammenligne-alle-nivaer`, + sv: `/${Lang.sv}/scandic-friends/jamfor-alla-nivaer`, +} + export const partners: LangRoute = { da: `/${Lang.da}/scandic-friends/partnere`, de: `/${Lang.de}/scandic-friends/partner`,