import {
  MaterialIcon,
  type MaterialIconSetIconProps,
} from "@scandic-hotels/design-system/Icons/MaterialIcon"

import type { JSX } from "react"

import { AlertTypeEnum } from "@/types/enums/alert"
import type { AlertProps } from "./alert"

interface IconByAlertProps {
  alertType: AlertTypeEnum
  variant?: AlertProps["variant"]
}

export function IconByAlertType({
  alertType,
  variant = "inline",
  ...props
}: IconByAlertProps & MaterialIconSetIconProps): JSX.Element {
  switch (alertType) {
    case AlertTypeEnum.Alarm:
      return (
        <MaterialIcon
          color={variant === "inline" ? "Icon/Inverted" : "Icon/Feedback/Error"}
          isFilled
          icon="error"
          {...props}
        />
      )
    case AlertTypeEnum.Warning:
      return (
        <MaterialIcon
          icon="warning"
          color={
            variant === "inline" ? "Icon/Inverted" : "Icon/Feedback/Warning"
          }
          isFilled
          {...props}
        />
      )
    case AlertTypeEnum.Success:
      return (
        <MaterialIcon
          icon="check_circle"
          color={
            variant === "inline" ? "Icon/Inverted" : "Icon/Feedback/Success"
          }
          isFilled
          {...props}
        />
      )
    case AlertTypeEnum.Info:
    default:
      return (
        <MaterialIcon
          color={
            variant === "inline" ? "Icon/Inverted" : "Icon/Feedback/Information"
          }
          isFilled
          icon="info"
          {...props}
        />
      )
  }
}
