Files
web/types/components/overviewTable.ts
2024-09-24 09:47:31 +02:00

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
}