diff --git a/src/panels/config/cloud/account/cloud-account.ts b/src/panels/config/cloud/account/cloud-account.ts
index 82730ce21c..dbbf4cb611 100644
--- a/src/panels/config/cloud/account/cloud-account.ts
+++ b/src/panels/config/cloud/account/cloud-account.ts
@@ -204,6 +204,7 @@ export class CloudAccount extends SubscribeMixin(LitElement) {
diff --git a/src/panels/config/cloud/account/cloud-tts-pref.ts b/src/panels/config/cloud/account/cloud-tts-pref.ts
index 8adc58e737..59370ae919 100644
--- a/src/panels/config/cloud/account/cloud-tts-pref.ts
+++ b/src/panels/config/cloud/account/cloud-tts-pref.ts
@@ -1,6 +1,7 @@
import "@material/mwc-button";
import { css, html, LitElement, nothing } from "lit";
+import { mdiContentCopy } from "@mdi/js";
import { customElement, property, state } from "lit/decorators";
import memoizeOne from "memoize-one";
import { fireEvent } from "../../../../common/dom/fire_event";
@@ -20,6 +21,8 @@ import {
import { showAlertDialog } from "../../../../dialogs/generic/show-dialog-box";
import type { HomeAssistant } from "../../../../types";
import { showTryTtsDialog } from "./show-dialog-cloud-tts-try";
+import { copyToClipboard } from "../../../../common/util/copy-clipboard";
+import { showToast } from "../../../../util/toast";
export const getCloudTtsSupportedVoices = (
language: string,
@@ -46,6 +49,8 @@ export class CloudTTSPref extends LitElement {
@property({ attribute: false }) public cloudStatus?: CloudStatusLoggedIn;
+ @property({ type: Boolean, reflect: true }) public narrow = false;
+
@state() private savingPreferences = false;
@state() private ttsInfo?: CloudTTSInfo;
@@ -103,6 +108,25 @@ export class CloudTTSPref extends LitElement {
+
+
+ ${this.hass.localize(
+ "ui.components.media-browser.tts.selected_voice_id"
+ )}
+
+
${defaultVoice[1]}
+ ${this.narrow
+ ? nothing
+ : html`
+
+ `}
+
+
${this.hass.localize("ui.panel.config.cloud.account.tts.try")}
@@ -196,6 +220,14 @@ export class CloudTTSPref extends LitElement {
}
}
+ private async _copyVoiceId(ev) {
+ ev.preventDefault();
+ await copyToClipboard(this.cloudStatus!.prefs.tts_default_voice[1]);
+ showToast(this, {
+ message: this.hass.localize("ui.common.copied_clipboard"),
+ });
+ }
+
static styles = css`
a {
color: var(--primary-color);
@@ -226,7 +258,34 @@ export class CloudTTSPref extends LitElement {
}
.card-actions {
display: flex;
- flex-direction: row-reverse;
+ align-items: center;
+ }
+ code {
+ margin-left: 6px;
+ font-weight: var(--ha-font-weight-bold);
+ }
+ .voice-id {
+ display: flex;
+ align-items: center;
+ font-size: var(--ha-font-size-s);
+ color: var(--secondary-text-color);
+ --mdc-icon-size: 14px;
+ --mdc-icon-button-size: 24px;
+ }
+ :host([narrow]) .voice-id {
+ flex-direction: column;
+ font-size: var(--ha-font-size-xs);
+ align-items: start;
+ align-items: left;
+ }
+ :host([narrow]) .label {
+ text-transform: uppercase;
+ }
+ :host([narrow]) code {
+ margin-left: 0;
+ }
+ .flex {
+ flex: 1;
}
`;
}