import { FC } from "react"

import FacebookIcon from "./Facebook"
import InstagramIcon from "./Instagram"
import TripAdvisorIcon from "./TripAdvisor"
import {
  AccesoriesIcon,
  AccessibilityIcon,
  AccountCircleIcon,
  AirIcon,
  AirplaneIcon,
  ArrowRightIcon,
  BarIcon,
  BikingIcon,
  BusinessIcon,
  CalendarIcon,
  CameraIcon,
  CellphoneIcon,
  CheckCircleIcon,
  CheckIcon,
  ChevronDownIcon,
  ChevronDownSmallIcon,
  ChevronLeftIcon,
  ChevronLeftSmallIcon,
  ChevronRightIcon,
  ChevronRightSmallIcon,
  ChevronUpIcon,
  ChevronUpSmallIcon,
  CloseIcon,
  CloseLargeIcon,
  CoffeeAltIcon,
  ConciergeIcon,
  ConvenienceStore24hIcon,
  CoolIcon,
  CrossCircle,
  CulturalIcon,
  DoorOpenIcon,
  DresserIcon,
  ElectricBikeIcon,
  ElectricCarIcon,
  EmailIcon,
  EyeHideIcon,
  EyeShowIcon,
  FanIcon,
  FitnessIcon,
  FootstoolIcon,
  GalleryIcon,
  GarageIcon,
  GiftIcon,
  GlobeIcon,
  GolfIcon,
  GroceriesIcon,
  HangerAltIcon,
  HangerIcon,
  HeatIcon,
  HouseIcon,
  ImageIcon,
  InfoCircleIcon,
  KayakingIcon,
  KettleIcon,
  LampIcon,
  LaundryMachineIcon,
  LocalBarIcon,
  LocationIcon,
  LockIcon,
  MapIcon,
  MinusIcon,
  MuseumIcon,
  NatureIcon,
  NightlifeIcon,
  NoSmokingIcon,
  OutdoorFurnitureIcon,
  ParkingIcon,
  People2Icon,
  PersonIcon,
  PetsIcon,
  PhoneIcon,
  PlusCircleIcon,
  PlusIcon,
  PriceTagIcon,
  RestaurantIcon,
  RoomServiceIcon,
  SaunaIcon,
  SearchIcon,
  ServiceIcon,
  ShoppingIcon,
  SkateboardingIcon,
  SmokingIcon,
  SnowflakeIcon,
  SpaIcon,
  StarFilledIcon,
  StreetIcon,
  SwimIcon,
  ThermostatIcon,
  TrainIcon,
  TshirtIcon,
  TshirtWashIcon,
  TvCastingIcon,
  WarningTriangle,
  WifiIcon,
} from "."

import { IconName, IconProps } from "@/types/components/icon"

export function getIconByIconName(
  icon: IconName | null = null
): FC<IconProps> | null {
  switch (icon) {
    case IconName.Accesories:
      return AccesoriesIcon
    case IconName.Accessibility:
      return AccessibilityIcon
    case IconName.AccountCircle:
      return AccountCircleIcon
    case IconName.Air:
      return AirIcon
    case IconName.Airplane:
      return AirplaneIcon
    case IconName.ArrowRight:
      return ArrowRightIcon
    case IconName.Bar:
      return BarIcon
    case IconName.Biking:
      return BikingIcon
    case IconName.Business:
      return BusinessIcon
    case IconName.Calendar:
      return CalendarIcon
    case IconName.Camera:
      return CameraIcon
    case IconName.Cellphone:
      return CellphoneIcon
    case IconName.Check:
      return CheckIcon
    case IconName.CrossCircle:
      return CrossCircle
    case IconName.CheckCircle:
      return CheckCircleIcon
    case IconName.ChevronDown:
      return ChevronDownIcon
    case IconName.ChevronDownSmall:
      return ChevronDownSmallIcon
    case IconName.ChevronLeft:
      return ChevronLeftIcon
    case IconName.ChevronLeftSmall:
      return ChevronLeftSmallIcon
    case IconName.ChevronRight:
      return ChevronRightIcon
    case IconName.ChevronRightSmall:
      return ChevronRightSmallIcon
    case IconName.ChevronUp:
      return ChevronUpIcon
    case IconName.ChevronUpSmall:
      return ChevronUpSmallIcon
    case IconName.Close:
      return CloseIcon
    case IconName.CloseLarge:
      return CloseLargeIcon
    case IconName.ConvenienceStore24h:
      return ConvenienceStore24hIcon
    case IconName.Cool:
      return CoolIcon
    case IconName.CoffeeAlt:
      return CoffeeAltIcon
    case IconName.Concierge:
      return ConciergeIcon
    case IconName.Cultural:
      return CulturalIcon
    case IconName.DoorOpen:
      return DoorOpenIcon
    case IconName.Dresser:
      return DresserIcon
    case IconName.ElectricBike:
      return ElectricBikeIcon
    case IconName.ElectricCar:
      return ElectricCarIcon
    case IconName.Email:
      return EmailIcon
    case IconName.EyeHide:
      return EyeHideIcon
    case IconName.EyeShow:
      return EyeShowIcon
    case IconName.Fan:
      return FanIcon
    case IconName.Facebook:
      return FacebookIcon
    case IconName.Fitness:
      return FitnessIcon
    case IconName.Footstool:
      return FootstoolIcon
    case IconName.Gallery:
      return GalleryIcon
    case IconName.Garage:
      return GarageIcon
    case IconName.Gift:
      return GiftIcon
    case IconName.Globe:
      return GlobeIcon
    case IconName.Golf:
      return GolfIcon
    case IconName.Groceries:
      return GroceriesIcon
    case IconName.Hanger:
      return HangerIcon
    case IconName.HangerAlt:
      return HangerAltIcon
    case IconName.Heat:
      return HeatIcon
    case IconName.House:
      return HouseIcon
    case IconName.Image:
      return ImageIcon
    case IconName.InfoCircle:
      return InfoCircleIcon
    case IconName.Instagram:
      return InstagramIcon
    case IconName.Kayaking:
      return KayakingIcon
    case IconName.Kettle:
      return KettleIcon
    case IconName.Lamp:
      return LampIcon
    case IconName.LaundryMachine:
      return LaundryMachineIcon
    case IconName.LocalBar:
      return LocalBarIcon
    case IconName.Location:
      return LocationIcon
    case IconName.Lock:
      return LockIcon
    case IconName.Map:
      return MapIcon
    case IconName.Minus:
      return MinusIcon
    case IconName.Museum:
      return MuseumIcon
    case IconName.Nature:
      return NatureIcon
    case IconName.Nightlife:
      return NightlifeIcon
    case IconName.NoSmoking:
      return NoSmokingIcon
    case IconName.OutdoorFurniture:
      return OutdoorFurnitureIcon
    case IconName.Parking:
      return ParkingIcon
    case IconName.Person:
      return PersonIcon
    case IconName.People2:
      return People2Icon
    case IconName.Pets:
      return PetsIcon
    case IconName.Phone:
      return PhoneIcon
    case IconName.Plus:
      return PlusIcon
    case IconName.PlusCircle:
      return PlusCircleIcon
    case IconName.PriceTag:
      return PriceTagIcon
    case IconName.Restaurant:
      return RestaurantIcon
    case IconName.RoomService:
      return RoomServiceIcon
    case IconName.Smoking:
      return SmokingIcon
    case IconName.Spa:
      return SpaIcon
    case IconName.Sauna:
      return SaunaIcon
    case IconName.Search:
      return SearchIcon
    case IconName.Service:
      return ServiceIcon
    case IconName.Shopping:
      return ShoppingIcon
    case IconName.Skateboarding:
      return SkateboardingIcon
    case IconName.Snowflake:
      return SnowflakeIcon
    case IconName.StarFilled:
      return StarFilledIcon
    case IconName.Street:
      return StreetIcon
    case IconName.Swim:
      return SwimIcon
    case IconName.Thermostat:
      return ThermostatIcon
    case IconName.Tshirt:
      return TshirtIcon
    case IconName.Train:
      return TrainIcon
    case IconName.Tripadvisor:
      return TripAdvisorIcon
    case IconName.TshirtWash:
      return TshirtWashIcon
    case IconName.TvCasting:
      return TvCastingIcon
    case IconName.WarningTriangle:
      return WarningTriangle
    case IconName.Wifi:
      return WifiIcon
    default:
      return null
  }
}
