import type { ComponentIcons } from "../data/icons";

export const ENTITY_COMPONENT_ICONS: Record<string, ComponentIcons> = {
  person: {
    _: {
      default: "mdi:account",
      state: {
        not_home: "mdi:account-arrow-right",
      },
    },
  },
  number: {
    _: {
      default: "mdi:ray-vertex",
    },
    apparent_power: {
      default: "mdi:flash",
    },
    aqi: {
      default: "mdi:air-filter",
    },
    atmospheric_pressure: {
      default: "mdi:thermometer-lines",
    },
    battery: {
      default: "mdi:battery",
    },
    carbon_dioxide: {
      default: "mdi:molecule-co2",
    },
    carbon_monoxide: {
      default: "mdi:molecule-co",
    },
    current: {
      default: "mdi:current-ac",
    },
    data_rate: {
      default: "mdi:transmission-tower",
    },
    data_size: {
      default: "mdi:database",
    },
    distance: {
      default: "mdi:arrow-left-right",
    },
    duration: {
      default: "mdi:progress-clock",
    },
    energy: {
      default: "mdi:lightning-bolt",
    },
    energy_storage: {
      default: "mdi:car-battery",
    },
    frequency: {
      default: "mdi:sine-wave",
    },
    gas: {
      default: "mdi:meter-gas",
    },
    humidity: {
      default: "mdi:water-percent",
    },
    illuminance: {
      default: "mdi:brightness-5",
    },
    irradiance: {
      default: "mdi:sun-wireless",
    },
    moisture: {
      default: "mdi:water-percent",
    },
    monetary: {
      default: "mdi:cash",
    },
    nitrogen_dioxide: {
      default: "mdi:molecule",
    },
    nitrogen_monoxide: {
      default: "mdi:molecule",
    },
    nitrous_oxide: {
      default: "mdi:molecule",
    },
    ozone: {
      default: "mdi:molecule",
    },
    ph: {
      default: "mdi:ph",
    },
    pm1: {
      default: "mdi:molecule",
    },
    pm10: {
      default: "mdi:molecule",
    },
    pm25: {
      default: "mdi:molecule",
    },
    power: {
      default: "mdi:flash",
    },
    power_factor: {
      default: "mdi:angle-acute",
    },
    precipitation: {
      default: "mdi:weather-rainy",
    },
    precipitation_intensity: {
      default: "mdi:weather-pouring",
    },
    pressure: {
      default: "mdi:gauge",
    },
    reactive_power: {
      default: "mdi:flash",
    },
    signal_strength: {
      default: "mdi:wifi",
    },
    sound_pressure: {
      default: "mdi:ear-hearing",
    },
    speed: {
      default: "mdi:speedometer",
    },
    sulfur_dioxide: {
      default: "mdi:molecule",
    },
    temperature: {
      default: "mdi:thermometer",
    },
    volatile_organic_compounds: {
      default: "mdi:molecule",
    },
    volatile_organic_compounds_parts: {
      default: "mdi:molecule",
    },
    voltage: {
      default: "mdi:sine-wave",
    },
    volume: {
      default: "mdi:car-coolant-level",
    },
    volume_storage: {
      default: "mdi:storage-tank",
    },
    water: {
      default: "mdi:water",
    },
    weight: {
      default: "mdi:weight",
    },
    wind_speed: {
      default: "mdi:weather-windy",
    },
  },
  select: {
    _: {
      default: "mdi:format-list-bulleted",
    },
  },
  tts: {
    _: {
      default: "mdi:speaker-message",
    },
  },
  datetime: {
    _: {
      default: "mdi:calendar-clock",
    },
  },
  vacuum: {
    _: {
      default: "mdi:robot-vacuum",
    },
  },
  wake_word: {
    _: {
      default: "mdi:chat-sleep",
    },
  },
  light: {
    _: {
      default: "mdi:lightbulb",
    },
  },
  alarm_control_panel: {
    _: {
      default: "mdi:shield",
      state: {
        armed_away: "mdi:shield-lock",
        armed_custom_bypass: "mdi:security",
        armed_home: "mdi:shield-home",
        armed_night: "mdi:shield-moon",
        armed_vacation: "mdi:shield-airplane",
        disarmed: "mdi:shield-off",
        pending: "mdi:shield-outline",
        triggered: "mdi:bell-ring",
      },
    },
  },
  text: {
    _: {
      default: "mdi:form-textbox",
    },
  },
  lawn_mower: {
    _: {
      default: "mdi:robot-mower",
    },
  },
  siren: {
    _: {
      default: "mdi:bullhorn",
    },
  },
  input_boolean: {
    _: {
      default: "mdi:check-circle-outline",
      state: {
        off: "mdi:close-circle-outline",
      },
    },
  },
  lock: {
    _: {
      default: "mdi:lock",
      state: {
        jammed: "mdi:lock-alert",
        locking: "mdi:lock-clock",
        unlocked: "mdi:lock-open",
        unlocking: "mdi:lock-clock",
        opening: "mdi:lock-clock",
        open: "mdi:lock-open-variant",
      },
    },
  },
  calendar: {
    _: {
      default: "mdi:calendar",
      state: {
        on: "mdi:calendar-check",
        off: "mdi:calendar-blank",
      },
    },
  },
  image: {
    _: {
      default: "mdi:image",
    },
  },
  device_tracker: {
    _: {
      default: "mdi:account",
      state: {
        not_home: "mdi:account-arrow-right",
      },
    },
  },
  scene: {
    _: {
      default: "mdi:palette",
    },
  },
  script: {
    _: {
      default: "mdi:script-text",
      state: {
        on: "mdi:script-text-play",
      },
    },
  },
  todo: {
    _: {
      default: "mdi:clipboard-list",
    },
  },
  cover: {
    _: {
      default: "mdi:window-open",
      state: {
        closed: "mdi:window-closed",
        closing: "mdi:arrow-down-box",
        opening: "mdi:arrow-up-box",
      },
    },
    blind: {
      default: "mdi:blinds-horizontal",
      state: {
        closed: "mdi:blinds-horizontal-closed",
        closing: "mdi:arrow-down-box",
        opening: "mdi:arrow-up-box",
      },
    },
    curtain: {
      default: "mdi:curtains",
      state: {
        closed: "mdi:curtains-closed",
        closing: "mdi:arrow-collapse-horizontal",
        opening: "mdi:arrow-split-vertical",
      },
    },
    damper: {
      default: "mdi:circle",
      state: {
        closed: "mdi:circle-slice-8",
      },
    },
    door: {
      default: "mdi:door-open",
      state: {
        closed: "mdi:door-closed",
      },
    },
    garage: {
      default: "mdi:garage-open",
      state: {
        closed: "mdi:garage",
        closing: "mdi:arrow-down-box",
        opening: "mdi:arrow-up-box",
      },
    },
    gate: {
      default: "mdi:gate-open",
      state: {
        closed: "mdi:gate",
        closing: "mdi:arrow-right",
        opening: "mdi:arrow-right",
      },
    },
    shade: {
      default: "mdi:roller-shade",
      state: {
        closed: "mdi:roller-shade-closed",
        closing: "mdi:arrow-down-box",
        opening: "mdi:arrow-up-box",
      },
    },
    shutter: {
      default: "mdi:window-shutter-open",
      state: {
        closed: "mdi:window-shutter",
        closing: "mdi:arrow-down-box",
        opening: "mdi:arrow-up-box",
      },
    },
    window: {
      default: "mdi:window-open",
      state: {
        closed: "mdi:window-closed",
        closing: "mdi:arrow-down-box",
        opening: "mdi:arrow-up-box",
      },
    },
  },
  switch: {
    _: {
      default: "mdi:toggle-switch-variant",
    },
    switch: {
      default: "mdi:toggle-switch-variant",
      state: {
        off: "mdi:toggle-switch-variant-off",
      },
    },
    outlet: {
      default: "mdi:power-plug",
      state: {
        off: "mdi:power-plug-off",
      },
    },
  },
  button: {
    _: {
      default: "mdi:button-pointer",
    },
    restart: {
      default: "mdi:restart",
    },
    identify: {
      default: "mdi:crosshairs-question",
    },
    update: {
      default: "mdi:package-up",
    },
  },
  water_heater: {
    _: {
      default: "mdi:water-boiler",
      state: {
        off: "mdi:water-boiler-off",
      },
      state_attributes: {
        operation_mode: {
          default: "mdi:circle-medium",
          state: {
            eco: "mdi:leaf",
            electric: "mdi:lightning-bolt",
            gas: "mdi:fire-circle",
            heat_pump: "mdi:heat-wave",
            high_demand: "mdi:finance",
            off: "mdi:power",
            performance: "mdi:rocket-launch",
          },
        },
      },
    },
  },
  binary_sensor: {
    _: {
      default: "mdi:radiobox-blank",
      state: {
        on: "mdi:checkbox-marked-circle",
      },
    },
    battery: {
      default: "mdi:battery",
      state: {
        on: "mdi:battery-outline",
      },
    },
    battery_charging: {
      default: "mdi:battery",
      state: {
        on: "mdi:battery-charging",
      },
    },
    carbon_monoxide: {
      default: "mdi:smoke-detector",
      state: {
        on: "mdi:smoke-detector-alert",
      },
    },
    cold: {
      default: "mdi:thermometer",
      state: {
        on: "mdi:snowflake",
      },
    },
    connectivity: {
      default: "mdi:close-network-outline",
      state: {
        on: "mdi:check-network-outline",
      },
    },
    door: {
      default: "mdi:door-closed",
      state: {
        on: "mdi:door-open",
      },
    },
    garage_door: {
      default: "mdi:garage",
      state: {
        on: "mdi:garage-open",
      },
    },
    gas: {
      default: "mdi:check-circle",
      state: {
        on: "mdi:alert-circle",
      },
    },
    heat: {
      default: "mdi:thermometer",
      state: {
        on: "mdi:fire",
      },
    },
    light: {
      default: "mdi:brightness-5",
      state: {
        on: "mdi:brightness-7",
      },
    },
    lock: {
      default: "mdi:lock",
      state: {
        on: "mdi:lock-open",
      },
    },
    moisture: {
      default: "mdi:water-off",
      state: {
        on: "mdi:water",
      },
    },
    motion: {
      default: "mdi:motion-sensor-off",
      state: {
        on: "mdi:motion-sensor",
      },
    },
    moving: {
      default: "mdi:arrow-right",
      state: {
        on: "mdi:octagon",
      },
    },
    occupancy: {
      default: "mdi:home-outline",
      state: {
        on: "mdi:home",
      },
    },
    opening: {
      default: "mdi:square",
      state: {
        on: "mdi:square-outline",
      },
    },
    plug: {
      default: "mdi:power-plug-off",
      state: {
        on: "mdi:power-plug",
      },
    },
    power: {
      default: "mdi:power-plug-off",
      state: {
        on: "mdi:power-plug",
      },
    },
    presence: {
      default: "mdi:home-outline",
      state: {
        on: "mdi:home",
      },
    },
    problem: {
      default: "mdi:check-circle",
      state: {
        on: "mdi:alert-circle",
      },
    },
    running: {
      default: "mdi:stop",
      state: {
        on: "mdi:play",
      },
    },
    safety: {
      default: "mdi:check-circle",
      state: {
        on: "mdi:alert-circle",
      },
    },
    smoke: {
      default: "mdi:smoke-detector-variant",
      state: {
        on: "mdi:smoke-detector-variant-alert",
      },
    },
    sound: {
      default: "mdi:music-note-off",
      state: {
        on: "mdi:music-note",
      },
    },
    tamper: {
      default: "mdi:check-circle",
      state: {
        on: "mdi:alert-circle",
      },
    },
    update: {
      default: "mdi:package",
      state: {
        on: "mdi:package-up",
      },
    },
    vibration: {
      default: "mdi:crop-portrait",
      state: {
        on: "mdi:vibrate",
      },
    },
    window: {
      default: "mdi:window-closed",
      state: {
        on: "mdi:window-open",
      },
    },
  },
  sensor: {
    _: {
      default: "mdi:eye",
    },
    apparent_power: {
      default: "mdi:flash",
    },
    aqi: {
      default: "mdi:air-filter",
    },
    atmospheric_pressure: {
      default: "mdi:thermometer-lines",
    },
    carbon_dioxide: {
      default: "mdi:molecule-co2",
    },
    carbon_monoxide: {
      default: "mdi:molecule-co",
    },
    current: {
      default: "mdi:current-ac",
    },
    data_rate: {
      default: "mdi:transmission-tower",
    },
    data_size: {
      default: "mdi:database",
    },
    date: {
      default: "mdi:calendar",
    },
    distance: {
      default: "mdi:arrow-left-right",
    },
    duration: {
      default: "mdi:progress-clock",
    },
    energy: {
      default: "mdi:lightning-bolt",
    },
    energy_storage: {
      default: "mdi:car-battery",
    },
    enum: {
      default: "mdi:eye",
    },
    frequency: {
      default: "mdi:sine-wave",
    },
    gas: {
      default: "mdi:meter-gas",
    },
    humidity: {
      default: "mdi:water-percent",
    },
    illuminance: {
      default: "mdi:brightness-5",
    },
    irradiance: {
      default: "mdi:sun-wireless",
    },
    moisture: {
      default: "mdi:water-percent",
    },
    monetary: {
      default: "mdi:cash",
    },
    nitrogen_dioxide: {
      default: "mdi:molecule",
    },
    nitrogen_monoxide: {
      default: "mdi:molecule",
    },
    nitrous_oxide: {
      default: "mdi:molecule",
    },
    ozone: {
      default: "mdi:molecule",
    },
    ph: {
      default: "mdi:ph",
    },
    pm1: {
      default: "mdi:molecule",
    },
    pm10: {
      default: "mdi:molecule",
    },
    pm25: {
      default: "mdi:molecule",
    },
    power: {
      default: "mdi:flash",
    },
    power_factor: {
      default: "mdi:angle-acute",
    },
    precipitation: {
      default: "mdi:weather-rainy",
    },
    precipitation_intensity: {
      default: "mdi:weather-pouring",
    },
    pressure: {
      default: "mdi:gauge",
    },
    reactive_power: {
      default: "mdi:flash",
    },
    signal_strength: {
      default: "mdi:wifi",
    },
    sound_pressure: {
      default: "mdi:ear-hearing",
    },
    speed: {
      default: "mdi:speedometer",
    },
    sulfur_dioxide: {
      default: "mdi:molecule",
    },
    temperature: {
      default: "mdi:thermometer",
    },
    timestamp: {
      default: "mdi:clock",
    },
    volatile_organic_compounds: {
      default: "mdi:molecule",
    },
    volatile_organic_compounds_parts: {
      default: "mdi:molecule",
    },
    voltage: {
      default: "mdi:sine-wave",
    },
    volume: {
      default: "mdi:car-coolant-level",
    },
    volume_storage: {
      default: "mdi:storage-tank",
    },
    water: {
      default: "mdi:water",
    },
    weight: {
      default: "mdi:weight",
    },
    wind_speed: {
      default: "mdi:weather-windy",
    },
  },
  humidifier: {
    _: {
      default: "mdi:air-humidifier",
      state: {
        off: "mdi:air-humidifier-off",
      },
      state_attributes: {
        action: {
          default: "mdi:circle-medium",
          state: {
            drying: "mdi:arrow-down-bold",
            humidifying: "mdi:arrow-up-bold",
            idle: "mdi:clock-outline",
            off: "mdi:power",
          },
        },
        mode: {
          default: "mdi:circle-medium",
          state: {
            auto: "mdi:refresh-auto",
            away: "mdi:account-arrow-right",
            baby: "mdi:baby-carriage",
            boost: "mdi:rocket-launch",
            comfort: "mdi:sofa",
            eco: "mdi:leaf",
            home: "mdi:home",
            normal: "mdi:water-percent",
            sleep: "mdi:power-sleep",
          },
        },
      },
    },
  },
  valve: {
    _: {
      default: "mdi:pipe-valve",
    },
    gas: {
      default: "mdi:meter-gas",
    },
    water: {
      default: "mdi:pipe-valve",
    },
  },
  time: {
    _: {
      default: "mdi:clock",
    },
  },
  media_player: {
    _: {
      default: "mdi:cast",
      state: {
        off: "mdi:cast-off",
        paused: "mdi:cast-connected",
        playing: "mdi:cast-connected",
      },
    },
    receiver: {
      default: "mdi:audio-video",
      state: {
        off: "mdi:audio-video-off",
      },
    },
    speaker: {
      default: "mdi:speaker",
      state: {
        off: "mdi:speaker-off",
        paused: "mdi:speaker-pause",
        playing: "mdi:speaker-play",
      },
    },
    tv: {
      default: "mdi:television",
      state: {
        off: "mdi:television-off",
        paused: "mdi:television-pause",
        playing: "mdi:television-play",
      },
    },
  },
  air_quality: {
    _: {
      default: "mdi:air-filter",
    },
  },
  camera: {
    _: {
      default: "mdi:video",
      state: {
        off: "mdi:video-off",
      },
    },
  },
  date: {
    _: {
      default: "mdi:calendar",
    },
  },
  fan: {
    _: {
      default: "mdi:fan",
      state: {
        off: "mdi:fan-off",
      },
      state_attributes: {
        direction: {
          default: "mdi:rotate-right",
          state: {
            reverse: "mdi:rotate-left",
          },
        },
      },
    },
  },
  automation: {
    _: {
      default: "mdi:robot",
      state: {
        off: "mdi:robot-off",
        unavailable: "mdi:robot-confused",
      },
    },
  },
  weather: {
    _: {
      default: "mdi:weather-partly-cloudy",
      state: {
        "clear-night": "mdi:weather-night",
        cloudy: "mdi:weather-cloudy",
        exceptional: "mdi:alert-circle-outline",
        fog: "mdi:weather-fog",
        hail: "mdi:weather-hail",
        lightning: "mdi:weather-lightning",
        "lightning-rainy": "mdi:weather-lightning-rainy",
        pouring: "mdi:weather-pouring",
        rainy: "mdi:weather-rainy",
        snowy: "mdi:weather-snowy",
        "snowy-rainy": "mdi:weather-snowy-rainy",
        sunny: "mdi:weather-sunny",
        windy: "mdi:weather-windy",
        "windy-variant": "mdi:weather-windy-variant",
      },
    },
  },
  climate: {
    _: {
      default: "mdi:thermostat",
      state_attributes: {
        fan_mode: {
          default: "mdi:circle-medium",
          state: {
            diffuse: "mdi:weather-windy",
            focus: "mdi:target",
            high: "mdi:speedometer",
            low: "mdi:speedometer-slow",
            medium: "mdi:speedometer-medium",
            middle: "mdi:speedometer-medium",
            off: "mdi:fan-off",
            on: "mdi:fan",
          },
        },
        hvac_action: {
          default: "mdi:circle-medium",
          state: {
            cooling: "mdi:snowflake",
            drying: "mdi:water-percent",
            fan: "mdi:fan",
            heating: "mdi:fire",
            idle: "mdi:clock-outline",
            off: "mdi:power",
            preheating: "mdi:heat-wave",
            defrosting: "mdi:snowflake-melt",
          },
        },
        preset_mode: {
          default: "mdi:circle-medium",
          state: {
            activity: "mdi:motion-sensor",
            away: "mdi:account-arrow-right",
            boost: "mdi:rocket-launch",
            comfort: "mdi:sofa",
            eco: "mdi:leaf",
            home: "mdi:home",
            sleep: "mdi:bed",
          },
        },
        swing_mode: {
          default: "mdi:circle-medium",
          state: {
            both: "mdi:arrow-all",
            horizontal: "mdi:arrow-left-right",
            off: "mdi:arrow-oscillating-off",
            on: "mdi:arrow-oscillating",
            vertical: "mdi:arrow-up-down",
          },
        },
      },
    },
  },
  stt: {
    _: {
      default: "mdi:microphone-message",
    },
  },
  update: {
    _: {
      default: "mdi:package-up",
      state: {
        off: "mdi:package",
      },
    },
  },
  event: {
    _: {
      default: "mdi:eye-check",
    },
    button: {
      default: "mdi:gesture-tap-button",
    },
    doorbell: {
      default: "mdi:doorbell",
    },
    motion: {
      default: "mdi:motion-sensor",
    },
  },
};
