diff --git a/src/common/const.ts b/src/common/const.ts
index d7286080d3..061adf875d 100644
--- a/src/common/const.ts
+++ b/src/common/const.ts
@@ -1,118 +1,9 @@
/** Constants to be used in the frontend. */
-import {
- mdiAccount,
- mdiAirFilter,
- mdiAlert,
- mdiAppleSafari,
- mdiBell,
- mdiBookmark,
- mdiBullhorn,
- mdiButtonPointer,
- mdiCalendar,
- mdiCalendarClock,
- mdiChatSleep,
- mdiClipboardList,
- mdiClock,
- mdiCog,
- mdiCommentAlert,
- mdiCounter,
- mdiEye,
- mdiFlower,
- mdiFormatListBulleted,
- mdiFormTextbox,
- mdiForumOutline,
- mdiGoogleAssistant,
- mdiGoogleCirclesCommunities,
- mdiHomeAutomation,
- mdiImage,
- mdiImageFilterFrames,
- mdiLightbulb,
- mdiMapMarkerRadius,
- mdiMicrophoneMessage,
- mdiPalette,
- mdiRayVertex,
- mdiRemote,
- mdiRobot,
- mdiRobotMower,
- mdiRobotVacuum,
- mdiRoomService,
- mdiScriptText,
- mdiSpeakerMessage,
- mdiThermostat,
- mdiTimerOutline,
- mdiToggleSwitch,
- mdiWeatherPartlyCloudy,
- mdiWhiteBalanceSunny,
-} 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,
-};
-
/** Domains that have a state card. */
export const DOMAINS_WITH_CARD = [
"alert",
diff --git a/src/components/ha-domain-icon.ts b/src/components/ha-domain-icon.ts
index 301a5cb1ea..5d71a0c8f8 100644
--- a/src/components/ha-domain-icon.ts
+++ b/src/components/ha-domain-icon.ts
@@ -2,8 +2,11 @@ import type { CSSResultGroup } from "lit";
import { css, html, LitElement, nothing } from "lit";
import { customElement, property } from "lit/decorators";
import { until } from "lit/directives/until";
-import { DEFAULT_DOMAIN_ICON, FIXED_DOMAIN_ICONS } from "../common/const";
-import { domainIcon } from "../data/icons";
+import {
+ DEFAULT_DOMAIN_ICON,
+ domainIcon,
+ FALLBACK_DOMAIN_ICONS,
+} from "../data/icons";
import type { HomeAssistant } from "../types";
import { brandsUrl } from "../util/brands-url";
import "./ha-icon";
@@ -47,9 +50,9 @@ export class HaDomainIcon extends LitElement {
}
private _renderFallback() {
- if (this.domain! in FIXED_DOMAIN_ICONS) {
+ if (this.domain! in FALLBACK_DOMAIN_ICONS) {
return html`
-
+
`;
}
if (this.brandFallback) {
diff --git a/src/components/ha-service-icon.ts b/src/components/ha-service-icon.ts
index 54d723acdb..dabf27f4b9 100644
--- a/src/components/ha-service-icon.ts
+++ b/src/components/ha-service-icon.ts
@@ -1,9 +1,12 @@
import { html, LitElement, nothing } from "lit";
import { customElement, property } from "lit/decorators";
import { until } from "lit/directives/until";
-import { DEFAULT_SERVICE_ICON, FIXED_DOMAIN_ICONS } from "../common/const";
import { computeDomain } from "../common/entity/compute_domain";
-import { serviceIcon } from "../data/icons";
+import {
+ DEFAULT_SERVICE_ICON,
+ FALLBACK_DOMAIN_ICONS,
+ serviceIcon,
+} from "../data/icons";
import type { HomeAssistant } from "../types";
import "./ha-icon";
import "./ha-svg-icon";
@@ -44,7 +47,7 @@ export class HaServiceIcon extends LitElement {
return html`
`;
}
diff --git a/src/components/ha-state-icon.ts b/src/components/ha-state-icon.ts
index 41421db68f..66fc35cd45 100644
--- a/src/components/ha-state-icon.ts
+++ b/src/components/ha-state-icon.ts
@@ -2,9 +2,12 @@ import type { HassEntity } from "home-assistant-js-websocket";
import { html, LitElement, nothing } from "lit";
import { customElement, property } from "lit/decorators";
import { until } from "lit/directives/until";
-import { DEFAULT_DOMAIN_ICON, FIXED_DOMAIN_ICONS } from "../common/const";
import { computeStateDomain } from "../common/entity/compute_state_domain";
-import { entityIcon } from "../data/icons";
+import {
+ DEFAULT_DOMAIN_ICON,
+ entityIcon,
+ FALLBACK_DOMAIN_ICONS,
+} from "../data/icons";
import type { HomeAssistant } from "../types";
import "./ha-icon";
import "./ha-svg-icon";
@@ -49,7 +52,7 @@ export class HaStateIcon extends LitElement {
return html`
`;
}
diff --git a/src/data/icons.ts b/src/data/icons.ts
index 2f22a0850c..c46ea561ad 100644
--- a/src/data/icons.ts
+++ b/src/data/icons.ts
@@ -1,4 +1,51 @@
+import {
+ mdiAccount,
+ mdiAirFilter,
+ mdiAlert,
+ mdiAppleSafari,
+ mdiBell,
+ mdiBookmark,
+ mdiBullhorn,
+ mdiButtonPointer,
+ mdiCalendar,
+ mdiCalendarClock,
+ mdiChatSleep,
+ mdiClipboardList,
+ mdiClock,
+ mdiCog,
+ mdiCommentAlert,
+ mdiCounter,
+ mdiEye,
+ mdiFlower,
+ mdiFormatListBulleted,
+ mdiFormTextbox,
+ mdiForumOutline,
+ mdiGoogleAssistant,
+ mdiGoogleCirclesCommunities,
+ mdiHomeAutomation,
+ mdiImage,
+ mdiImageFilterFrames,
+ mdiLightbulb,
+ mdiMapMarkerRadius,
+ mdiMicrophoneMessage,
+ mdiPalette,
+ mdiRayVertex,
+ mdiRemote,
+ mdiRobot,
+ mdiRobotMower,
+ mdiRobotVacuum,
+ mdiRoomService,
+ mdiScriptText,
+ mdiSpeakerMessage,
+ mdiThermostat,
+ mdiTimerOutline,
+ mdiToggleSwitch,
+ mdiWeatherPartlyCloudy,
+ mdiWhiteBalanceSunny,
+} from "@mdi/js";
import type { HassEntity } from "home-assistant-js-websocket";
+import { isComponentLoaded } from "../common/config/is_component_loaded";
+import { atLeastVersion } from "../common/config/version";
import { computeDomain } from "../common/entity/compute_domain";
import { computeObjectId } from "../common/entity/compute_object_id";
import { computeStateDomain } from "../common/entity/compute_state_domain";
@@ -8,8 +55,69 @@ import type {
EntityRegistryDisplayEntry,
EntityRegistryEntry,
} from "./entity_registry";
-import { isComponentLoaded } from "../common/config/is_component_loaded";
-import { atLeastVersion } from "../common/config/version";
+
+import { mdiHomeAssistant } from "../resources/home-assistant-logo-svg";
+
+/** 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;
+
+/** Fallback icons for each domain */
+export const FALLBACK_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,
+};
const resources: {
entity: Record>;