101 lines
2.1 KiB
TypeScript
101 lines
2.1 KiB
TypeScript
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 }
|
|
|
|
export type OverviewTableClientProps = {
|
|
activeMembership: MembershipLevel | null
|
|
}
|
|
|
|
export type Level = {
|
|
level: membershipLevels
|
|
name: string
|
|
requiredPoints: number
|
|
requiredNights?: number
|
|
benefits: BenefitTitle[]
|
|
}
|
|
|
|
export type LevelCardProps = {
|
|
formatMessage: IntlFormatters["formatMessage"]
|
|
lang: Lang
|
|
level: Level
|
|
}
|
|
|
|
export type ComparisonLevel = {
|
|
level: membershipLevels
|
|
name: string
|
|
description: string
|
|
requirement: string
|
|
icon: string
|
|
benefits: Benefit[]
|
|
}
|
|
|
|
export type Benefit = {
|
|
name: string
|
|
description: string
|
|
unlocked: boolean
|
|
value?: string
|
|
valueDetails?: string
|
|
}
|
|
|
|
export type LevelSummaryProps = {
|
|
level: ComparisonLevel
|
|
showDescription?: boolean
|
|
}
|
|
|
|
export type BenefitCardProps = {
|
|
comparedValues: BenefitValueInformation[]
|
|
title: string
|
|
description: string
|
|
}
|
|
|
|
type BenefitValueInformation = {
|
|
unlocked: boolean
|
|
value?: string
|
|
valueDetails?: string
|
|
}
|
|
|
|
export type BenefitValueProps = {
|
|
benefit: BenefitValueInformation
|
|
}
|
|
|
|
export type BenefitListProps = {
|
|
levels: ComparisonLevel[]
|
|
}
|
|
|
|
export type MobileColumnHeaderProps = {
|
|
column: "A" | "B"
|
|
}
|
|
|
|
export type DesktopSelectColumns = {
|
|
column: MobileColumnHeaderProps["column"] | "C"
|
|
}
|
|
|
|
export type LargeTableProps = {
|
|
levels: ComparisonLevel[]
|
|
activeLevel: membershipLevels | null
|
|
Select?: (column: DesktopSelectColumns) => JSX.Element | null
|
|
}
|
|
|
|
export type BenefitTableHeaderProps = {
|
|
name: string
|
|
description: string
|
|
}
|
|
|
|
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",
|
|
SET_SELECTED_LEVEL_B_DESKTOP = "SET_SELECTED_LEVEL_B_DESKTOP",
|
|
SET_SELECTED_LEVEL_C_DESKTOP = "SET_SELECTED_LEVEL_C_DESKTOP",
|
|
}
|
|
|
|
export type OverviewTableReducerAction = {
|
|
type: overviewTableActionsEnum
|
|
payload: ComparisonLevel
|
|
}
|