68 lines
1.7 KiB
TypeScript
68 lines
1.7 KiB
TypeScript
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
|
|
levels: ComparisonLevel[]
|
|
}
|
|
|
|
export type LevelCardProps = {
|
|
level: LevelWithRewards
|
|
}
|
|
|
|
export type LevelWithRewards = LoyaltyLevel & { rewards: Reward[] }
|
|
|
|
export type ComparisonLevel = LevelWithRewards
|
|
|
|
export type LevelSummaryProps = {
|
|
level: ComparisonLevel
|
|
showDescription?: boolean
|
|
}
|
|
|
|
export type RewardCardProps = {
|
|
comparedValues: (Reward | undefined)[]
|
|
title: string
|
|
description: string
|
|
}
|
|
|
|
export type RewardValueProps = {
|
|
reward?: Reward
|
|
}
|
|
|
|
export type RewardListProps = {
|
|
levels: ComparisonLevel[]
|
|
}
|
|
|
|
export type MobileColumnHeaderProps = {
|
|
column: "A" | "B"
|
|
}
|
|
|
|
export type DesktopSelectColumns = {
|
|
column: MobileColumnHeaderProps["column"] | "C"
|
|
}
|
|
|
|
export type LargeTableProps = {
|
|
levels: ComparisonLevel[]
|
|
activeLevel: MembershipLevel | null
|
|
Select?: (column: DesktopSelectColumns) => JSX.Element | null
|
|
}
|
|
|
|
export type RewardTableHeaderProps = {
|
|
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
|
|
}
|