+ ${
+ !stateObj
+ ? html`Entity not available: ${this.config.entity}
`
+ : html`
+
+
+
+
+ ${this.config.name
+ ? this.config.name
+ : computeStateName(stateObj)
+ }
+
+
+
+ `
+ }
+
+ `;
+ }
+
+ private renderStyle() {
+ return html`
+
+ `;
+ }
+
+ private _computeBrightness(stateObj) {
+ if (!stateObj.attributes.brightness) {
+ return "";
+ }
+ const brightness = stateObj.attributes.brightness;
+ return `brightness(${(brightness + 245) / 5}%)`;
+ }
+
+ private _computeColor(stateObj) {
+ if (!stateObj.attributes.hs_color) {
+ return '';
+ }
+ const hue = stateObj.attributes.hs_color[0];
+ const sat = stateObj.attributes.hs_color[1];
+ if (sat <= 10) {
+ return '';
+ }
+ return `hsl(${hue}, 100%, ${100 - sat / 2}%)`;
+ }
+
+ private handleClick() {
+ const config = this.config;
+ if (!config) {
+ return;
+ }
+ const stateObj = this.hass!.states[config.entity];
+ if(!stateObj) {
+ return;
+ }
+ const entityId = stateObj.entity_id;
+ switch (config.tap_action) {
+ case "toggle":
+ toggleEntity(this.hass, entityId);
+ break;
+ case "call-service": {
+ if(!config.service){
+ return;
+ }
+ const [domain, service] = config.service.split(".", 2);
+ const serviceData = { entity_id: entityId, ...config.service_data };
+ this.hass!.callService(domain, service, serviceData);
+ break;
+ }
+ default:
+ fireEvent(this, "hass-more-info", { entityId });
+ }
+ }
+}
+
+declare global {
+ interface HTMLElementTagNameMap {
+ "hui-entity-button-card": HuiEntityButtonCard;
+ }
+}
+
+customElements.define("hui-entity-button-card", HuiEntityButtonCard);
diff --git a/src/panels/lovelace/common/create-card-element.js b/src/panels/lovelace/common/create-card-element.js
index 354decfc9d..c474e36d04 100644
--- a/src/panels/lovelace/common/create-card-element.js
+++ b/src/panels/lovelace/common/create-card-element.js
@@ -3,7 +3,7 @@ import { fireEvent } from "../../../common/dom/fire_event.js";
import "../cards/hui-alarm-panel-card.js";
import "../cards/hui-conditional-card.js";
import "../cards/hui-entities-card.js";
-import "../cards/hui-entity-button-card.js";
+import "../cards/hui-entity-button-card.ts";
import "../cards/hui-entity-filter-card.js";
import "../cards/hui-error-card.js";
import "../cards/hui-glance-card.ts";