diff --git a/src/panels/config/network/ha-config-network-dhcp.ts b/src/panels/config/network/ha-config-network-dhcp.ts deleted file mode 100644 index ef70d11903..0000000000 --- a/src/panels/config/network/ha-config-network-dhcp.ts +++ /dev/null @@ -1,66 +0,0 @@ -import "@material/mwc-button/mwc-button"; -import type { CSSResultGroup } from "lit"; -import { css, html, LitElement } from "lit"; -import { customElement, property } from "lit/decorators"; -import "../../../components/ha-button"; -import "../../../components/ha-card"; -import { haStyle } from "../../../resources/styles"; -import type { HomeAssistant } from "../../../types"; - -@customElement("ha-config-network-dhcp") -class ConfigNetworkDHCP extends LitElement { - @property({ attribute: false }) public hass!: HomeAssistant; - - protected render() { - return html` - -
-

- ${this.hass.localize("ui.panel.config.network.discovery.dhcp_info")} -

-
-
- - - ${this.hass.localize( - "ui.panel.config.network.discovery.dhcp_browser" - )} - - -
-
- `; - } - - static get styles(): CSSResultGroup { - return [ - haStyle, - css` - ha-settings-row { - padding: 0; - } - - .card-actions { - display: flex; - flex-direction: row-reverse; - justify-content: space-between; - align-items: center; - } - `, // row-reverse so we tab first to "save" - ]; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ha-config-network-dhcp": ConfigNetworkDHCP; - } -} diff --git a/src/panels/config/network/ha-config-network-ssdp.ts b/src/panels/config/network/ha-config-network-ssdp.ts deleted file mode 100644 index bd7bf83568..0000000000 --- a/src/panels/config/network/ha-config-network-ssdp.ts +++ /dev/null @@ -1,66 +0,0 @@ -import "@material/mwc-button/mwc-button"; -import type { CSSResultGroup } from "lit"; -import { css, html, LitElement } from "lit"; -import { customElement, property } from "lit/decorators"; -import "../../../components/ha-button"; -import "../../../components/ha-card"; -import { haStyle } from "../../../resources/styles"; -import type { HomeAssistant } from "../../../types"; - -@customElement("ha-config-network-ssdp") -class ConfigNetworkSSDP extends LitElement { - @property({ attribute: false }) public hass!: HomeAssistant; - - protected render() { - return html` - -
-

- ${this.hass.localize("ui.panel.config.network.discovery.ssdp_info")} -

-
-
- - - ${this.hass.localize( - "ui.panel.config.network.discovery.ssdp_browser" - )} - - -
-
- `; - } - - static get styles(): CSSResultGroup { - return [ - haStyle, - css` - ha-settings-row { - padding: 0; - } - - .card-actions { - display: flex; - flex-direction: row-reverse; - justify-content: space-between; - align-items: center; - } - `, // row-reverse so we tab first to "save" - ]; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ha-config-network-ssdp": ConfigNetworkSSDP; - } -} diff --git a/src/panels/config/network/ha-config-network-zeroconf.ts b/src/panels/config/network/ha-config-network-zeroconf.ts deleted file mode 100644 index db97f0d019..0000000000 --- a/src/panels/config/network/ha-config-network-zeroconf.ts +++ /dev/null @@ -1,70 +0,0 @@ -import "@material/mwc-button/mwc-button"; -import type { CSSResultGroup } from "lit"; -import { css, html, LitElement } from "lit"; -import { customElement, property } from "lit/decorators"; -import "../../../components/ha-button"; -import "../../../components/ha-card"; -import { haStyle } from "../../../resources/styles"; -import type { HomeAssistant } from "../../../types"; - -@customElement("ha-config-network-zeroconf") -class ConfigNetworkZeroconf extends LitElement { - @property({ attribute: false }) public hass!: HomeAssistant; - - protected render() { - return html` - -
-

- ${this.hass.localize( - "ui.panel.config.network.discovery.zeroconf_info" - )} -

-
-
- - - ${this.hass.localize( - "ui.panel.config.network.discovery.zeroconf_browser" - )} - - -
-
- `; - } - - static get styles(): CSSResultGroup { - return [ - haStyle, - css` - ha-settings-row { - padding: 0; - } - - .card-actions { - display: flex; - flex-direction: row-reverse; - justify-content: space-between; - align-items: center; - } - `, // row-reverse so we tab first to "save" - ]; - } -} - -declare global { - interface HTMLElementTagNameMap { - "ha-config-network-zeroconf": ConfigNetworkZeroconf; - } -} diff --git a/src/panels/config/network/ha-config-section-network.ts b/src/panels/config/network/ha-config-section-network.ts index c9a3df311d..567c18eb0f 100644 --- a/src/panels/config/network/ha-config-section-network.ts +++ b/src/panels/config/network/ha-config-section-network.ts @@ -3,15 +3,18 @@ import { css, html, LitElement } from "lit"; import { customElement, property } from "lit/decorators"; import { isComponentLoaded } from "../../../common/config/is_component_loaded"; import "../../../layouts/hass-subpage"; +import "../../../components/ha-card"; +import "../../../components/ha-md-list"; +import "../../../components/ha-md-list-item"; +import "../../../components/ha-icon-next"; import type { HomeAssistant, Route } from "../../../types"; import "./ha-config-network"; -import "./ha-config-network-dhcp"; -import "./ha-config-network-ssdp"; -import "./ha-config-network-zeroconf"; import "./ha-config-url-form"; import "./supervisor-hostname"; import "./supervisor-network"; +const NETWORK_BROWSERS = ["dhcp", "ssdp", "zeroconf"] as const; + @customElement("ha-config-section-network") class HaConfigSectionNetwork extends LitElement { @property({ attribute: false }) public hass!: HomeAssistant; @@ -38,20 +41,38 @@ class HaConfigSectionNetwork extends LitElement { : ""} - ${isComponentLoaded(this.hass, "dhcp") - ? html`` - : ""} - ${isComponentLoaded(this.hass, "ssdp") - ? html`` - : ""} - ${isComponentLoaded(this.hass, "zeroconf") - ? html`` + ${NETWORK_BROWSERS.some((component) => + isComponentLoaded(this.hass, component) + ) + ? html` + + + ${NETWORK_BROWSERS.map( + (domain) => html` + +
+ ${this.hass.localize( + `ui.panel.config.network.discovery.${domain}` + )} +
+
+ ${this.hass.localize( + `ui.panel.config.network.discovery.${domain}_info` + )} +
+ +
+ ` + )} +
+
+ ` : ""} @@ -68,14 +89,15 @@ class HaConfigSectionNetwork extends LitElement { supervisor-network, ha-config-url-form, ha-config-network, - ha-config-network-dhcp, - ha-config-network-ssdp, - ha-config-network-zeroconf { + .discovery-card { display: block; margin: 0 auto; margin-bottom: 24px; max-width: 600px; } + .discovery-card ha-md-list { + padding-top: 0; + } `; } diff --git a/src/translations/en.json b/src/translations/en.json index af02f16e77..4ceef74c9b 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -6399,15 +6399,14 @@ } }, "discovery": { + "title": "Network discovery", + "description": "Explore what data Home Assistant can see on the network.", "dhcp": "DHCP browser", - "dhcp_info": "The DHCP browser shows devices detected by Home Assistant using methods like DHCP, ARP+PTR lookups, and router-based device trackers. DHCP (Dynamic Host Configuration Protocol) data is received when devices join the network and request an IP address, allowing Home Assistant to discover them automatically. All devices found through these methods will appear here.", - "dhcp_browser": "View DHCP browser", + "dhcp_info": "Show devices detected by Home Assistant using methods like DHCP, ARP+PTR lookups, and router-based device trackers. DHCP (Dynamic Host Configuration Protocol) data is received when devices join the network and request an IP address.", "ssdp": "SSDP browser", - "ssdp_info": "The SSDP browser shows devices discovered by Home Assistant using SSDP/UPnP. Devices that Home Assistant has discovered will appear here.", - "ssdp_browser": "View SSDP browser", + "ssdp_info": "Show devices discovered by Home Assistant using SSDP/UPnP. Devices that Home Assistant has discovered will appear here.", "zeroconf": "Zeroconf browser", - "zeroconf_info": "The Zeroconf browser shows devices discovered by Home Assistant using mDNS. Only devices that Home Assistant is actively searching for will appear here.", - "zeroconf_browser": "View Zeroconf browser" + "zeroconf_info": "Show devices discovered by Home Assistant using mDNS. Only devices that Home Assistant is actively searching for will appear here." }, "network_adapter": "Network adapter", "network_adapter_info": "Configure which network adapters integrations will use. Currently this setting only affects multicast traffic. A restart is required for these settings to apply.",