diff --git a/hassio/src/addon-view/info/hassio-addon-info.ts b/hassio/src/addon-view/info/hassio-addon-info.ts index 48cd99b8ec..1a0a5bef00 100644 --- a/hassio/src/addon-view/info/hassio-addon-info.ts +++ b/hassio/src/addon-view/info/hassio-addon-info.ts @@ -31,7 +31,7 @@ import "../../../../src/components/buttons/ha-call-api-button"; import "../../../../src/components/buttons/ha-progress-button"; import "../../../../src/components/ha-alert"; import "../../../../src/components/ha-card"; -import "../../../../src/components/ha-chip"; +import "../../../../src/components/ha-chip-set"; import "../../../../src/components/ha-markdown"; import "../../../../src/components/ha-settings-row"; import "../../../../src/components/ha-svg-icon"; @@ -125,6 +125,137 @@ class HassioAddonInfo extends LitElement { )}`, }, ]; + const capabilities = [ + { + id: "rating", + icon: RATING_ICON[this.addon.rating], + class: [6, 5].includes(Number(this.addon.rating)) + ? "green" + : [3, 4].includes(Number(this.addon.rating)) + ? "yellow" + : "red", + label: this.supervisor.localize( + "addon.dashboard.capability.label.rating" + ), + }, + ]; + + if (this.addon.stage !== "stable") { + capabilities.push({ + id: "rating", + icon: STAGE_ICON[this.addon.stage], + class: + this.addon.stage === "experimental" + ? "yellow" + : this.addon.stage === "deprecated" + ? "red" + : "", + label: this.supervisor.localize( + `addon.dashboard.capability.stages.${this.addon.stage}` + ), + }); + } + + if (this.addon.host_network) { + capabilities.push({ + id: "host_network", + icon: mdiNetwork, + class: "", + label: this.supervisor.localize( + "addon.dashboard.capability.label.host" + ), + }); + } + + if (this.addon.full_access) { + capabilities.push({ + id: "full_access", + icon: mdiChip, + class: "", + label: this.supervisor.localize( + "addon.dashboard.capability.label.hardware" + ), + }); + } + + if (this.addon.homeassistant_api) { + capabilities.push({ + id: "homeassistant_api", + icon: mdiHomeAssistant, + class: "", + label: this.supervisor.localize( + "addon.dashboard.capability.label.core" + ), + }); + } + + if (this._computeHassioApi) { + capabilities.push({ + id: "hassio_api", + icon: mdiHomeAssistant, + class: "", + label: + this.supervisor.localize( + `addon.dashboard.capability.role.${this.addon.hassio_role}` + ) || this.addon.hassio_role, + }); + } + + if (this.addon.docker_api) { + capabilities.push({ + id: "docker_api", + icon: mdiDocker, + class: "", + label: this.supervisor.localize( + "addon.dashboard.capability.label.docker" + ), + }); + } + + if (this.addon.host_pid) { + capabilities.push({ + id: "host_pid", + icon: mdiPound, + class: "", + label: this.supervisor.localize( + "addon.dashboard.capability.label.host_pid" + ), + }); + } + + if (this.addon.apparmor !== "default") { + capabilities.push({ + id: "apparmor", + icon: mdiShield, + class: this._computeApparmorClassName, + label: this.supervisor.localize( + "addon.dashboard.capability.label.apparmor" + ), + }); + } + + if (this.addon.auth_api) { + capabilities.push({ + id: "auth_api", + icon: mdiKey, + class: "", + label: this.supervisor.localize( + "addon.dashboard.capability.label.auth" + ), + }); + } + + if (this.addon.ingress) { + capabilities.push({ + id: "ingress", + icon: mdiCursorDefaultClickOutline, + class: "", + label: this.supervisor.localize( + "addon.dashboard.capability.label.ingress" + ), + }); + } + return html` ${this.addon.update_available ? html` @@ -262,160 +393,18 @@ class HassioAddonInfo extends LitElement {