import { getIconByIconName } from "@/components/Icons/get-icon-by-icon-name" import { isValidRewardId } from "@/utils/rewards" import type { FC } from "react" import { IconName, type IconProps } from "@/types/components/icon" import { RewardId } from "@/types/enums/rewards" function getIconForRewardId(rewardId: RewardId): IconName { switch (rewardId) { // Food & beverage case RewardId.TenPercentFood: case RewardId.FifteenPercentFood: return IconName.CroissantCoffeeEgg case RewardId.TwoForOneBreakfast: return IconName.CutleryTwo case RewardId.FreeBreakfast: return IconName.CutleryOne case RewardId.FreeKidsDrink: return IconName.KidsMocktail // Monetary vouchers case RewardId.Bonus50SEK: case RewardId.Bonus75SEK: case RewardId.Bonus100SEK: case RewardId.Bonus150SEK: case RewardId.Bonus200SEK: return IconName.Voucher // Hotel perks case RewardId.EarlyCheckin: return IconName.HandKey case RewardId.LateCheckout: return IconName.HotelNight case RewardId.FreeUpgrade: return IconName.MagicWand case RewardId.RoomGuarantee48H: return IconName.Bed // Earnings case RewardId.EarnRate25Percent: case RewardId.EarnRate50Percent: return IconName.MoneyHand case RewardId.StayBoostForKids: return IconName.Kids case RewardId.MemberRate: return IconName.Coin // Special case RewardId.YearlyExclusiveGift: return IconName.GiftOpen default: { const unhandledRewardId: never = rewardId return IconName.GiftOpen } } } export function mapRewardToIcon(rewardId: string): FC | null { if (!isValidRewardId(rewardId)) { // TODO: Update once UX has decided on fallback icon. return getIconByIconName(IconName.GiftOpen) } const iconName = getIconForRewardId(rewardId) return getIconByIconName(iconName) }