diff --git a/src/dialogs/config-flow/step-flow-pick-flow.ts b/src/dialogs/config-flow/step-flow-pick-flow.ts index 0e407fad89..82578354d3 100644 --- a/src/dialogs/config-flow/step-flow-pick-flow.ts +++ b/src/dialogs/config-flow/step-flow-pick-flow.ts @@ -41,7 +41,12 @@ class StepFlowPickFlow extends LitElement { diff --git a/src/dialogs/config-flow/step-flow-pick-handler.ts b/src/dialogs/config-flow/step-flow-pick-handler.ts index 00977e462e..f0e5ab0409 100644 --- a/src/dialogs/config-flow/step-flow-pick-handler.ts +++ b/src/dialogs/config-flow/step-flow-pick-handler.ts @@ -96,7 +96,12 @@ class StepFlowPickHandler extends LitElement { diff --git a/src/onboarding/integration-badge.ts b/src/onboarding/integration-badge.ts index 7958ca7080..c7a18f07ca 100644 --- a/src/onboarding/integration-badge.ts +++ b/src/onboarding/integration-badge.ts @@ -11,13 +11,19 @@ class IntegrationBadge extends LitElement { @property() public badgeIcon?: string; + @property({ type: Boolean }) public darkOptimizedIcon?: boolean; + @property({ type: Boolean, reflect: true }) public clickable = false; protected render(): TemplateResult { return html`
${this.badgeIcon diff --git a/src/onboarding/onboarding-integrations.ts b/src/onboarding/onboarding-integrations.ts index 9426c88ad4..1aca3c976a 100644 --- a/src/onboarding/onboarding-integrations.ts +++ b/src/onboarding/onboarding-integrations.ts @@ -78,6 +78,7 @@ class OnboardingIntegrations extends LitElement { .domain=${entry.domain} .title=${title} badgeIcon="hass:check" + .darkOptimizedIcon=${this.hass.selectedTheme?.dark} > `, ]; @@ -94,6 +95,7 @@ class OnboardingIntegrations extends LitElement { clickable .domain=${flow.handler} .title=${title} + .darkOptimizedIcon=${this.hass.selectedTheme?.dark} > `, diff --git a/src/panels/config/devices/ha-config-device-page.ts b/src/panels/config/devices/ha-config-device-page.ts index c0243a31c3..6bc5ec64a1 100644 --- a/src/panels/config/devices/ha-config-device-page.ts +++ b/src/panels/config/devices/ha-config-device-page.ts @@ -241,7 +241,11 @@ export class HaConfigDevicePage extends LitElement { integrations.length ? html` html`
${entry.title} @@ -170,7 +175,11 @@ export class EnergyGridSettings extends LitElement {
Add CO2 signal integration diff --git a/src/panels/config/energy/dialogs/dialog-energy-solar-settings.ts b/src/panels/config/energy/dialogs/dialog-energy-solar-settings.ts index f84ab11624..9d6501f1bf 100644 --- a/src/panels/config/energy/dialogs/dialog-energy-solar-settings.ts +++ b/src/panels/config/energy/dialogs/dialog-energy-solar-settings.ts @@ -21,6 +21,7 @@ import "../../../../components/entity/ha-entity-picker"; import type { HaRadio } from "../../../../components/ha-radio"; import { showConfigFlowDialog } from "../../../../dialogs/config-flow/show-dialog-config-flow"; import { ConfigEntry, getConfigEntries } from "../../../../data/config_entries"; +import { brandsUrl } from "../../../../util/brands-url"; const energyUnits = ["kWh"]; @@ -117,7 +118,11 @@ export class DialogEnergySolarSettings ${entry.title}
`} > diff --git a/src/panels/config/info/integrations-card.ts b/src/panels/config/info/integrations-card.ts index 9432a5c086..68bd6625e9 100644 --- a/src/panels/config/info/integrations-card.ts +++ b/src/panels/config/info/integrations-card.ts @@ -94,7 +94,12 @@ class IntegrationsCard extends LitElement { diff --git a/src/panels/config/integrations/ha-integration-header.ts b/src/panels/config/integrations/ha-integration-header.ts index de6932d1a5..cdb999d0bc 100644 --- a/src/panels/config/integrations/ha-integration-header.ts +++ b/src/panels/config/integrations/ha-integration-header.ts @@ -78,7 +78,11 @@ export class HaIntegrationHeader extends LitElement {
- `https://brands.home-assistant.io/${ - useFallback ? "_/" : "" - }${domain}/${type}.png`; +export interface BrandsOptions { + domain: string; + type: "icon" | "logo" | "icon@2x" | "logo@2x"; + useFallback?: boolean; + darkOptimized?: boolean; +} + +export const brandsUrl = (options: BrandsOptions): string => + `https://brands.home-assistant.io/${options.useFallback ? "_/" : ""}${ + options.domain + }/${options.darkOptimized ? "dark_" : ""}${options.type}.png`; diff --git a/test-mocha/util/generate-brands-url-spec.ts b/test-mocha/util/generate-brands-url-spec.ts index 169c0e0ca8..68d8df1074 100644 --- a/test-mocha/util/generate-brands-url-spec.ts +++ b/test-mocha/util/generate-brands-url-spec.ts @@ -1,33 +1,41 @@ import { assert } from "chai"; import { brandsUrl } from "../../src/util/brands-url"; -describe("Generate brands Url", function () { - it("Generate logo brands url for cloud component without fallback", function () { +describe("Generate brands Url", () => { + it("Generate logo brands url for cloud component without fallback", () => { assert.strictEqual( // @ts-ignore - brandsUrl("cloud", "logo"), + brandsUrl({ domain: "cloud", type: "logo" }), "https://brands.home-assistant.io/cloud/logo.png" ); }); - it("Generate icon brands url for cloud component without fallback", function () { + it("Generate icon brands url for cloud component without fallback", () => { assert.strictEqual( // @ts-ignore - brandsUrl("cloud", "icon"), + brandsUrl({ domain: "cloud", type: "icon" }), "https://brands.home-assistant.io/cloud/icon.png" ); }); - it("Generate logo brands url for cloud component with fallback", function () { + it("Generate logo brands url for cloud component with fallback", () => { assert.strictEqual( // @ts-ignore - brandsUrl("cloud", "logo", true), + brandsUrl({ domain: "cloud", type: "logo", useFallback: true }), "https://brands.home-assistant.io/_/cloud/logo.png" ); }); - it("Generate icon brands url for cloud component with fallback", function () { + it("Generate icon brands url for cloud component with fallback", () => { assert.strictEqual( // @ts-ignore - brandsUrl("cloud", "icon", true), + brandsUrl({ domain: "cloud", type: "icon", useFallback: true }), "https://brands.home-assistant.io/_/cloud/icon.png" ); }); + + it("Generate dark theme optimized logo brands url for cloud component without fallback", () => { + assert.strictEqual( + // @ts-ignore + brandsUrl({ domain: "cloud", type: "logo", darkOptimized: true }), + "https://brands.home-assistant.io/cloud/dark_logo.png" + ); + }); });