mirror of
https://github.com/home-assistant/frontend.git
synced 2025-10-16 07:09:38 +00:00
312 lines
7.0 KiB
TypeScript
312 lines
7.0 KiB
TypeScript
/** Constants to be used in the frontend. */
|
|
|
|
import {
|
|
mdiAccount,
|
|
mdiAirFilter,
|
|
mdiAlert,
|
|
mdiAngleAcute,
|
|
mdiAppleSafari,
|
|
mdiArrowLeftRight,
|
|
mdiBell,
|
|
mdiBookmark,
|
|
mdiBrightness5,
|
|
mdiBullhorn,
|
|
mdiButtonPointer,
|
|
mdiCalendar,
|
|
mdiCalendarClock,
|
|
mdiCarCoolantLevel,
|
|
mdiCash,
|
|
mdiChatSleep,
|
|
mdiClipboardList,
|
|
mdiClock,
|
|
mdiCog,
|
|
mdiCommentAlert,
|
|
mdiCounter,
|
|
mdiCurrentAc,
|
|
mdiDatabase,
|
|
mdiEarHearing,
|
|
mdiEye,
|
|
mdiFlash,
|
|
mdiFlower,
|
|
mdiFormatListBulleted,
|
|
mdiFormatListCheckbox,
|
|
mdiFormTextbox,
|
|
mdiForumOutline,
|
|
mdiGauge,
|
|
mdiGoogleAssistant,
|
|
mdiGoogleCirclesCommunities,
|
|
mdiHomeAutomation,
|
|
mdiImage,
|
|
mdiImageFilterFrames,
|
|
mdiLightbulb,
|
|
mdiLightningBolt,
|
|
mdiMapMarkerRadius,
|
|
mdiMeterGas,
|
|
mdiMicrophoneMessage,
|
|
mdiMolecule,
|
|
mdiMoleculeCo,
|
|
mdiMoleculeCo2,
|
|
mdiPalette,
|
|
mdiPh,
|
|
mdiPipe,
|
|
mdiProgressClock,
|
|
mdiRayVertex,
|
|
mdiRemote,
|
|
mdiRobot,
|
|
mdiRobotMower,
|
|
mdiRobotVacuum,
|
|
mdiRoomService,
|
|
mdiScriptText,
|
|
mdiSineWave,
|
|
mdiSpeakerMessage,
|
|
mdiSpeedometer,
|
|
mdiSunWireless,
|
|
mdiThermometer,
|
|
mdiThermometerLines,
|
|
mdiThermostat,
|
|
mdiTimerOutline,
|
|
mdiToggleSwitch,
|
|
mdiTransmissionTower,
|
|
mdiWater,
|
|
mdiWaterPercent,
|
|
mdiWeatherPartlyCloudy,
|
|
mdiWeatherPouring,
|
|
mdiWeatherRainy,
|
|
mdiWeatherWindy,
|
|
mdiWeight,
|
|
mdiWhiteBalanceSunny,
|
|
mdiWifi,
|
|
} from "@mdi/js";
|
|
|
|
import { mdiHomeAssistant } from "../resources/home-assistant-logo-svg";
|
|
|
|
// Constants should be alphabetically sorted by name.
|
|
// Arrays with values should be alphabetically sorted if order doesn't matter.
|
|
// Each constant should have a description what it is supposed to be used for.
|
|
|
|
/** Icon to use when no icon specified for service. */
|
|
export const DEFAULT_SERVICE_ICON = mdiRoomService;
|
|
|
|
/** Icon to use when no icon specified for domain. */
|
|
export const DEFAULT_DOMAIN_ICON = mdiBookmark;
|
|
|
|
/** Icons for each domain */
|
|
export const FIXED_DOMAIN_ICONS = {
|
|
air_quality: mdiAirFilter,
|
|
alert: mdiAlert,
|
|
automation: mdiRobot,
|
|
calendar: mdiCalendar,
|
|
climate: mdiThermostat,
|
|
configurator: mdiCog,
|
|
conversation: mdiForumOutline,
|
|
counter: mdiCounter,
|
|
date: mdiCalendar,
|
|
datetime: mdiCalendarClock,
|
|
demo: mdiHomeAssistant,
|
|
device_tracker: mdiAccount,
|
|
google_assistant: mdiGoogleAssistant,
|
|
group: mdiGoogleCirclesCommunities,
|
|
homeassistant: mdiHomeAssistant,
|
|
homekit: mdiHomeAutomation,
|
|
image_processing: mdiImageFilterFrames,
|
|
image: mdiImage,
|
|
input_boolean: mdiToggleSwitch,
|
|
input_button: mdiButtonPointer,
|
|
input_datetime: mdiCalendarClock,
|
|
input_number: mdiRayVertex,
|
|
input_select: mdiFormatListBulleted,
|
|
input_text: mdiFormTextbox,
|
|
lawn_mower: mdiRobotMower,
|
|
light: mdiLightbulb,
|
|
notify: mdiCommentAlert,
|
|
number: mdiRayVertex,
|
|
persistent_notification: mdiBell,
|
|
person: mdiAccount,
|
|
plant: mdiFlower,
|
|
proximity: mdiAppleSafari,
|
|
remote: mdiRemote,
|
|
scene: mdiPalette,
|
|
schedule: mdiCalendarClock,
|
|
script: mdiScriptText,
|
|
select: mdiFormatListBulleted,
|
|
sensor: mdiEye,
|
|
simple_alarm: mdiBell,
|
|
siren: mdiBullhorn,
|
|
stt: mdiMicrophoneMessage,
|
|
sun: mdiWhiteBalanceSunny,
|
|
text: mdiFormTextbox,
|
|
time: mdiClock,
|
|
timer: mdiTimerOutline,
|
|
todo: mdiClipboardList,
|
|
tts: mdiSpeakerMessage,
|
|
vacuum: mdiRobotVacuum,
|
|
wake_word: mdiChatSleep,
|
|
weather: mdiWeatherPartlyCloudy,
|
|
zone: mdiMapMarkerRadius,
|
|
};
|
|
|
|
export const FIXED_DEVICE_CLASS_ICONS = {
|
|
apparent_power: mdiFlash,
|
|
aqi: mdiAirFilter,
|
|
atmospheric_pressure: mdiThermometerLines,
|
|
// battery: mdiBattery, => not included by design since `sensorIcon()` will dynamically determine the icon
|
|
carbon_dioxide: mdiMoleculeCo2,
|
|
carbon_monoxide: mdiMoleculeCo,
|
|
current: mdiCurrentAc,
|
|
data_rate: mdiTransmissionTower,
|
|
data_size: mdiDatabase,
|
|
date: mdiCalendar,
|
|
distance: mdiArrowLeftRight,
|
|
duration: mdiProgressClock,
|
|
energy: mdiLightningBolt,
|
|
frequency: mdiSineWave,
|
|
gas: mdiMeterGas,
|
|
humidity: mdiWaterPercent,
|
|
illuminance: mdiBrightness5,
|
|
irradiance: mdiSunWireless,
|
|
moisture: mdiWaterPercent,
|
|
monetary: mdiCash,
|
|
nitrogen_dioxide: mdiMolecule,
|
|
nitrogen_monoxide: mdiMolecule,
|
|
nitrous_oxide: mdiMolecule,
|
|
ozone: mdiMolecule,
|
|
ph: mdiPh,
|
|
pm1: mdiMolecule,
|
|
pm10: mdiMolecule,
|
|
pm25: mdiMolecule,
|
|
power: mdiFlash,
|
|
power_factor: mdiAngleAcute,
|
|
precipitation: mdiWeatherRainy,
|
|
precipitation_intensity: mdiWeatherPouring,
|
|
pressure: mdiGauge,
|
|
reactive_power: mdiFlash,
|
|
shopping_List: mdiFormatListCheckbox,
|
|
signal_strength: mdiWifi,
|
|
sound_pressure: mdiEarHearing,
|
|
speed: mdiSpeedometer,
|
|
sulphur_dioxide: mdiMolecule,
|
|
temperature: mdiThermometer,
|
|
timestamp: mdiClock,
|
|
volatile_organic_compounds: mdiMolecule,
|
|
volatile_organic_compounds_parts: mdiMolecule,
|
|
voltage: mdiSineWave,
|
|
volume: mdiCarCoolantLevel,
|
|
volume_flow_rate: mdiPipe,
|
|
water: mdiWater,
|
|
weight: mdiWeight,
|
|
wind_speed: mdiWeatherWindy,
|
|
};
|
|
|
|
/** Domains that have a state card. */
|
|
export const DOMAINS_WITH_CARD = [
|
|
"alert",
|
|
"button",
|
|
"climate",
|
|
"cover",
|
|
"configurator",
|
|
"event",
|
|
"input_button",
|
|
"input_select",
|
|
"input_number",
|
|
"input_text",
|
|
"humidifier",
|
|
"lawn_mower",
|
|
"lock",
|
|
"media_player",
|
|
"number",
|
|
"scene",
|
|
"script",
|
|
"select",
|
|
"timer",
|
|
"text",
|
|
"update",
|
|
"vacuum",
|
|
"water_heater",
|
|
];
|
|
|
|
export const SENSOR_ENTITIES = [
|
|
"sensor",
|
|
"binary_sensor",
|
|
"calendar",
|
|
"camera",
|
|
"device_tracker",
|
|
"image",
|
|
"weather",
|
|
];
|
|
|
|
export const ASSIST_ENTITIES = [
|
|
"assist_satellite",
|
|
"conversation",
|
|
"stt",
|
|
"tts",
|
|
];
|
|
|
|
/** Domains that render an input element instead of a text value when displayed in a row.
|
|
* Those rows should then not show a cursor pointer when hovered (which would normally
|
|
* be the default) unless the element itself enforces it (e.g. a button). Also those elements
|
|
* should not act as a click target to open the more info dialog (the row name and state icon
|
|
* still do of course) as the click should instead e.g. activate the input field or toggle
|
|
* the button that this row shows.
|
|
*/
|
|
export const DOMAINS_INPUT_ROW = [
|
|
"automation",
|
|
"button",
|
|
"cover",
|
|
"date",
|
|
"datetime",
|
|
"fan",
|
|
"group",
|
|
"humidifier",
|
|
"input_boolean",
|
|
"input_button",
|
|
"input_datetime",
|
|
"input_number",
|
|
"input_select",
|
|
"input_text",
|
|
"light",
|
|
"lock",
|
|
"media_player",
|
|
"number",
|
|
"scene",
|
|
"script",
|
|
"select",
|
|
"switch",
|
|
"text",
|
|
"time",
|
|
"vacuum",
|
|
"valve",
|
|
];
|
|
|
|
/** States that we consider "off". */
|
|
export const STATES_OFF = ["closed", "locked", "off"];
|
|
|
|
/** Binary States */
|
|
export const BINARY_STATE_ON = "on";
|
|
export const BINARY_STATE_OFF = "off";
|
|
|
|
/** Domains where we allow toggle in Lovelace. */
|
|
export const DOMAINS_TOGGLE = new Set([
|
|
"fan",
|
|
"input_boolean",
|
|
"light",
|
|
"switch",
|
|
"group",
|
|
"automation",
|
|
"humidifier",
|
|
"valve",
|
|
]);
|
|
|
|
/** Domains that have a dynamic entity image / picture. */
|
|
export const DOMAINS_WITH_DYNAMIC_PICTURE = new Set([
|
|
"camera",
|
|
"image",
|
|
"media_player",
|
|
]);
|
|
|
|
/** Temperature units. */
|
|
export const UNIT_C = "°C";
|
|
export const UNIT_F = "°F";
|
|
|
|
/** Entity ID of the default view. */
|
|
export const DEFAULT_VIEW_ENTITY_ID = "group.default_view";
|