Merge develop

This commit is contained in:
Linus Flood
2024-09-27 14:20:53 +02:00
171 changed files with 3507 additions and 5188 deletions

View File

@@ -0,0 +1,4 @@
import type { UspGrid } from "@/types/trpc/routers/contentstack/blocks"
export interface UspGridProps extends Pick<UspGrid, "usp_grid"> {}
export type UspIcon = UspGrid["usp_grid"]["usp_card"][number]["icon"]

View File

@@ -5,8 +5,9 @@ export interface DropdownState {
isHeaderLanguageSwitcherOpen: boolean
isHeaderLanguageSwitcherMobileOpen: boolean
isFooterLanguageSwitcherOpen: boolean
openMegaMenu: string | false
toggleMegaMenu: (menu: string | false) => void
toggleDropdown: (dropdown: DropdownTypeEnum) => void
handleHamburgerClick: () => void
}
export enum DropdownTypeEnum {

View File

@@ -1,14 +1,14 @@
export enum AppDownLoadLinks {
apple_da = "/_static/img/store-badges/app-store-badge-da.svg",
apple_de = "/_static/img/store-badges/app-store-badge-de.svg",
apple_en = "/_static/img/store-badges/app-store-badge-en.svg",
apple_fi = "/_static/img/store-badges/app-store-badge-fi.svg",
apple_no = "/_static/img/store-badges/app-store-badge-no.svg",
apple_sv = "/_static/img/store-badges/app-store-badge-sv.svg",
google_da = "/_static/img/store-badges/google-play-badge-da.svg",
google_de = "/_static/img/store-badges/google-play-badge-de.svg",
google_en = "/_static/img/store-badges/google-play-badge-en.svg",
google_fi = "/_static/img/store-badges/google-play-badge-fi.svg",
google_no = "/_static/img/store-badges/google-play-badge-no.svg",
google_sv = "/_static/img/store-badges/google-play-badge-sv.svg",
Apple_da = "/_static/img/store-badges/app-store-badge-da.svg",
Apple_de = "/_static/img/store-badges/app-store-badge-de.svg",
Apple_en = "/_static/img/store-badges/app-store-badge-en.svg",
Apple_fi = "/_static/img/store-badges/app-store-badge-fi.svg",
Apple_no = "/_static/img/store-badges/app-store-badge-no.svg",
Apple_sv = "/_static/img/store-badges/app-store-badge-sv.svg",
Google_da = "/_static/img/store-badges/google-play-badge-da.svg",
Google_de = "/_static/img/store-badges/google-play-badge-de.svg",
Google_en = "/_static/img/store-badges/google-play-badge-en.svg",
Google_fi = "/_static/img/store-badges/google-play-badge-fi.svg",
Google_no = "/_static/img/store-badges/google-play-badge-no.svg",
Google_sv = "/_static/img/store-badges/google-play-badge-sv.svg",
}

View File

@@ -0,0 +1,9 @@
import type { MenuItem } from "@/types/trpc/routers/contentstack/header"
export interface MegaMenuProps {
title: MenuItem["title"]
seeAllLink: MenuItem["seeAllLink"]
submenu: MenuItem["submenu"]
card: MenuItem["card"]
isMobile: boolean
}

View File

@@ -1,6 +1,6 @@
import { navigationQueryRouter } from "@/server/routers/contentstack/myPages/navigation/query"
import { MembershipLevel } from "@/utils/user"
import { FriendsMembership } from "@/utils/user"
import type { User } from "@/types/user"
@@ -11,7 +11,7 @@ type MyPagesNavigation = Awaited<
export interface MyPagesMenuProps {
navigation: MyPagesNavigation
user: Pick<User, "firstName" | "lastName">
membership?: MembershipLevel | null
membership?: FriendsMembership | null
}
export interface MyPagesMenuContentProps extends MyPagesMenuProps {

View File

@@ -9,9 +9,11 @@ export interface IconProps
export enum IconName {
Accessibility = "Accessibility",
AccountCircle = "AccountCircle",
Airplane = "Airplane",
ArrowRight = "ArrowRight",
Bar = "Bar",
Biking = "Biking",
Business = "Business",
Calendar = "Calendar",
Camera = "Camera",
Cellphone = "Cellphone",
@@ -21,6 +23,7 @@ export enum IconName {
ChevronDown = "ChevronDown",
ChevronLeft = "ChevronLeft",
ChevronRight = "ChevronRight",
ChevronRightSmall = "ChevronRightSmall",
Close = "Close",
CloseLarge = "CloseLarge",
Coffee = "Coffee",
@@ -54,6 +57,7 @@ export enum IconName {
Search = "Search",
Service = "Service",
Shopping = "Shopping",
Snowflake = "Snowflake",
StarFilled = "StarFilled",
Train = "Train",
Tripadvisor = "Tripadvisor",

View File

@@ -2,7 +2,14 @@ import { poiVariants } from "@/components/Maps/Markers/Poi/variants"
import type { VariantProps } from "class-variance-authority"
import {
PointOfInterestCategoryNameEnum,
PointOfInterestGroupEnum,
} from "@/types/hotel"
export interface PoiMarkerProps extends VariantProps<typeof poiVariants> {
group: PointOfInterestGroupEnum
categoryName?: PointOfInterestCategoryNameEnum
size?: number
className?: string
}

View File

@@ -1,8 +1,10 @@
import { membershipLevels } from "@/constants/membershipLevels"
import { MembershipLevel } from "@/constants/membershipLevels"
export type MembershipLevelProps = {
level: membershipLevels
}
import { LevelProps } from "@/components/Levels/levels"
export type MembershipLevelIconProps = {
level: MembershipLevel
} & LevelProps
export type CopyButtonProps = {
membershipNumber: string

View File

@@ -1,69 +1,36 @@
import { Lang } from "@/constants/languages"
import { membershipLevels } from "@/constants/membershipLevels"
import { MembershipLevel } from "@/utils/user"
import type { IntlFormatters } from "@formatjs/intl"
type BenefitTitle = { title: string }
import { MembershipLevel } from "@/constants/membershipLevels"
import { LoyaltyLevel } from "@/server/routers/contentstack/loyaltyLevel/output"
import { Reward } from "@/server/routers/contentstack/reward/output"
export type OverviewTableClientProps = {
activeMembership: MembershipLevel | null
}
export type Level = {
level: membershipLevels
name: string
requiredPoints: number
requiredNights?: number
benefits: BenefitTitle[]
levels: ComparisonLevel[]
}
export type LevelCardProps = {
formatMessage: IntlFormatters["formatMessage"]
lang: Lang
level: Level
level: LevelWithRewards
}
export type ComparisonLevel = {
level: membershipLevels
name: string
description: string
requirement: string
icon: string
benefits: Benefit[]
}
export type LevelWithRewards = LoyaltyLevel & { rewards: Reward[] }
export type Benefit = {
name: string
description: string
unlocked: boolean
value?: string
valueDetails?: string
}
export type ComparisonLevel = LevelWithRewards
export type LevelSummaryProps = {
level: ComparisonLevel
showDescription?: boolean
}
export type BenefitCardProps = {
comparedValues: BenefitValueInformation[]
export type RewardCardProps = {
comparedValues: (Reward | undefined)[]
title: string
description: string
}
type BenefitValueInformation = {
unlocked: boolean
value?: string
valueDetails?: string
export type RewardValueProps = {
reward?: Reward
}
export type BenefitValueProps = {
benefit: BenefitValueInformation
}
export type BenefitListProps = {
export type RewardListProps = {
levels: ComparisonLevel[]
}
@@ -77,16 +44,16 @@ export type DesktopSelectColumns = {
export type LargeTableProps = {
levels: ComparisonLevel[]
activeLevel: membershipLevels | null
activeLevel: MembershipLevel | null
Select?: (column: DesktopSelectColumns) => JSX.Element | null
}
export type BenefitTableHeaderProps = {
export type RewardTableHeaderProps = {
name: string
description: string
}
export enum overviewTableActionsEnum {
export enum OverviewTableActionsEnum {
SET_SELECTED_LEVEL_A_MOBILE = "SET_SELECTED_LEVEL_A_MOBILE",
SET_SELECTED_LEVEL_B_MOBILE = "SET_SELECTED_LEVEL_B_MOBILE",
SET_SELECTED_LEVEL_A_DESKTOP = "SET_SELECTED_LEVEL_A_DESKTOP",
@@ -95,6 +62,6 @@ export enum overviewTableActionsEnum {
}
export type OverviewTableReducerAction = {
type: overviewTableActionsEnum
type: OverviewTableActionsEnum
payload: ComparisonLevel
}

View File

@@ -1,6 +1,6 @@
import { VariantProps } from "class-variance-authority"
import { contentCardVariants } from "@/components/TempDesignSystem/ContentCard/variants"
import { teaserCardVariants } from "@/components/TempDesignSystem/TeaserCard/variants"
import { ImageVaultAsset } from "@/types/components/imageVault"
import type { CardProps } from "@/components/TempDesignSystem/Card/card"
@@ -9,13 +9,13 @@ interface SidePeekButton {
title: string
}
export interface ContentCardProps
extends VariantProps<typeof contentCardVariants> {
export interface TeaserCardProps
extends VariantProps<typeof teaserCardVariants> {
title: string
description: string
primaryButton?: CardProps["primaryButton"]
secondaryButton?: CardProps["secondaryButton"]
sidePeekButton?: SidePeekButton
backgroundImage?: ImageVaultAsset
image?: ImageVaultAsset
className?: string
}