custom-card-helpers
Version:
Set of helpful functions and types for Custom Card creators
61 lines (58 loc) • 2.22 kB
text/typescript
import { HassEntity } from "home-assistant-js-websocket";
/** Return an icon representing a binary sensor state. */
export const binarySensorIcon = (state?: string, stateObj?: HassEntity) => {
const is_off = state === "off";
switch (stateObj?.attributes.device_class) {
case "battery":
return is_off ? "mdi:battery" : "mdi:battery-outline";
case "battery_charging":
return is_off ? "mdi:battery" : "mdi:battery-charging";
case "cold":
return is_off ? "mdi:thermometer" : "mdi:snowflake";
case "connectivity":
return is_off ? "mdi:server-network-off" : "mdi:server-network";
case "door":
return is_off ? "mdi:door-closed" : "mdi:door-open";
case "garage_door":
return is_off ? "mdi:garage" : "mdi:garage-open";
case "power":
return is_off ? "mdi:power-plug-off" : "mdi:power-plug";
case "gas":
case "problem":
case "safety":
case "tamper":
return is_off ? "mdi:check-circle" : "mdi:alert-circle";
case "smoke":
return is_off ? "mdi:check-circle" : "mdi:smoke";
case "heat":
return is_off ? "mdi:thermometer" : "mdi:fire";
case "light":
return is_off ? "mdi:brightness-5" : "mdi:brightness-7";
case "lock":
return is_off ? "mdi:lock" : "mdi:lock-open";
case "moisture":
return is_off ? "mdi:water-off" : "mdi:water";
case "motion":
return is_off ? "mdi:walk" : "mdi:run";
case "occupancy":
return is_off ? "mdi:home-outline" : "mdi:home";
case "opening":
return is_off ? "mdi:square" : "mdi:square-outline";
case "plug":
return is_off ? "mdi:power-plug-off" : "mdi:power-plug";
case "presence":
return is_off ? "mdi:home-outline" : "mdi:home";
case "running":
return is_off ? "mdi:stop" : "mdi:play";
case "sound":
return is_off ? "mdi:music-note-off" : "mdi:music-note";
case "update":
return is_off ? "mdi:package" : "mdi:package-up";
case "vibration":
return is_off ? "mdi:crop-portrait" : "mdi:vibrate";
case "window":
return is_off ? "mdi:window-closed" : "mdi:window-open";
default:
return is_off ? "mdi:radiobox-blank" : "mdi:checkbox-marked-circle";
}
};