From ce7ae1a251b8a8e1da1b526d41d378712ddcb043 Mon Sep 17 00:00:00 2001 From: 4gray Date: Sat, 25 Apr 2026 23:43:22 +0200 Subject: [PATCH] refactor(external-playback): add translation support for close player button and update UI styles Entire-Checkpoint: c6e522b4276c --- apps/web/src/assets/i18n/ar.json | 3 ++- apps/web/src/assets/i18n/ary.json | 3 ++- apps/web/src/assets/i18n/by.json | 3 ++- apps/web/src/assets/i18n/de.json | 3 ++- apps/web/src/assets/i18n/el.json | 3 ++- apps/web/src/assets/i18n/en.json | 1 + apps/web/src/assets/i18n/es.json | 3 ++- apps/web/src/assets/i18n/fr.json | 3 ++- apps/web/src/assets/i18n/it.json | 3 ++- apps/web/src/assets/i18n/ja.json | 3 ++- apps/web/src/assets/i18n/ko.json | 3 ++- apps/web/src/assets/i18n/nl.json | 3 ++- apps/web/src/assets/i18n/pl.json | 3 ++- apps/web/src/assets/i18n/pt.json | 3 ++- apps/web/src/assets/i18n/ru.json | 3 ++- apps/web/src/assets/i18n/tr.json | 3 ++- apps/web/src/assets/i18n/zh.json | 3 ++- apps/web/src/assets/i18n/zhtw.json | 3 ++- .../external-playback-dock.component.html | 10 +++++++--- .../external-playback-dock.component.scss | 5 ++--- .../external-playback-dock.component.ts | 12 ++++++++++-- 21 files changed, 54 insertions(+), 25 deletions(-) diff --git a/apps/web/src/assets/i18n/ar.json b/apps/web/src/assets/i18n/ar.json index cb2a720a7..6f5feb8ac 100644 --- a/apps/web/src/assets/i18n/ar.json +++ b/apps/web/src/assets/i18n/ar.json @@ -402,7 +402,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/apps/web/src/assets/i18n/ary.json b/apps/web/src/assets/i18n/ary.json index db980c11b..e81849c85 100644 --- a/apps/web/src/assets/i18n/ary.json +++ b/apps/web/src/assets/i18n/ary.json @@ -394,7 +394,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/apps/web/src/assets/i18n/by.json b/apps/web/src/assets/i18n/by.json index f1dbfe99a..36d6fcf1e 100644 --- a/apps/web/src/assets/i18n/by.json +++ b/apps/web/src/assets/i18n/by.json @@ -362,7 +362,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/apps/web/src/assets/i18n/de.json b/apps/web/src/assets/i18n/de.json index 9443fa9d9..8c070385e 100644 --- a/apps/web/src/assets/i18n/de.json +++ b/apps/web/src/assets/i18n/de.json @@ -750,7 +750,8 @@ "DROP_OVERLAY_REJECTED_UNSUPPORTED": "Unsupported file type", "DROP_OVERLAY_REJECTED_EMPTY": "That file is empty", "DROP_OVERLAY_REJECTED_READ_ERROR": "Could not read that file", - "DROP_IMPORT_SUCCESS": "Importing \"{{title}}\"…" + "DROP_IMPORT_SUCCESS": "Importing \"{{title}}\"…", + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "SOURCES": { "TITLE": "Quellen", diff --git a/apps/web/src/assets/i18n/el.json b/apps/web/src/assets/i18n/el.json index d7dcd2681..67baeb50e 100644 --- a/apps/web/src/assets/i18n/el.json +++ b/apps/web/src/assets/i18n/el.json @@ -525,7 +525,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/apps/web/src/assets/i18n/en.json b/apps/web/src/assets/i18n/en.json index 4afaad465..cd0bb0b05 100644 --- a/apps/web/src/assets/i18n/en.json +++ b/apps/web/src/assets/i18n/en.json @@ -770,6 +770,7 @@ "RAIL_RECENT": "Recently viewed", "RAIL_FAVORITES": "Favorites", "RAIL_DOWNLOADS": "Downloads", + "EXTERNAL_PLAYBACK_CLOSE": "Close player", "RAIL_ALL_CHANNELS": "All channels", "RAIL_GROUPS": "Groups", "RAIL_CONTEXT_ACTIONS": "Section actions", diff --git a/apps/web/src/assets/i18n/es.json b/apps/web/src/assets/i18n/es.json index cf70636f3..5e9b3d21b 100644 --- a/apps/web/src/assets/i18n/es.json +++ b/apps/web/src/assets/i18n/es.json @@ -443,7 +443,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/apps/web/src/assets/i18n/fr.json b/apps/web/src/assets/i18n/fr.json index 7eccff27f..d5197301d 100644 --- a/apps/web/src/assets/i18n/fr.json +++ b/apps/web/src/assets/i18n/fr.json @@ -464,7 +464,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/apps/web/src/assets/i18n/it.json b/apps/web/src/assets/i18n/it.json index 4d3a0e3f8..51e9e9bfb 100644 --- a/apps/web/src/assets/i18n/it.json +++ b/apps/web/src/assets/i18n/it.json @@ -436,7 +436,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/apps/web/src/assets/i18n/ja.json b/apps/web/src/assets/i18n/ja.json index fee9c8c20..f27658448 100644 --- a/apps/web/src/assets/i18n/ja.json +++ b/apps/web/src/assets/i18n/ja.json @@ -382,7 +382,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/apps/web/src/assets/i18n/ko.json b/apps/web/src/assets/i18n/ko.json index fa7adf029..12905d9ca 100644 --- a/apps/web/src/assets/i18n/ko.json +++ b/apps/web/src/assets/i18n/ko.json @@ -331,7 +331,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/apps/web/src/assets/i18n/nl.json b/apps/web/src/assets/i18n/nl.json index a857ed870..c76caf139 100644 --- a/apps/web/src/assets/i18n/nl.json +++ b/apps/web/src/assets/i18n/nl.json @@ -394,7 +394,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/apps/web/src/assets/i18n/pl.json b/apps/web/src/assets/i18n/pl.json index 9e06d9a8e..d82010bf6 100644 --- a/apps/web/src/assets/i18n/pl.json +++ b/apps/web/src/assets/i18n/pl.json @@ -394,7 +394,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/apps/web/src/assets/i18n/pt.json b/apps/web/src/assets/i18n/pt.json index 09cf0a521..1849d94cb 100644 --- a/apps/web/src/assets/i18n/pt.json +++ b/apps/web/src/assets/i18n/pt.json @@ -432,7 +432,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/apps/web/src/assets/i18n/ru.json b/apps/web/src/assets/i18n/ru.json index bfdf7ab09..34b3cd82d 100644 --- a/apps/web/src/assets/i18n/ru.json +++ b/apps/web/src/assets/i18n/ru.json @@ -706,7 +706,8 @@ "DROP_OVERLAY_REJECTED_UNSUPPORTED": "Unsupported file type", "DROP_OVERLAY_REJECTED_EMPTY": "That file is empty", "DROP_OVERLAY_REJECTED_READ_ERROR": "Could not read that file", - "DROP_IMPORT_SUCCESS": "Importing \"{{title}}\"…" + "DROP_IMPORT_SUCCESS": "Importing \"{{title}}\"…", + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "SOURCES": { "TITLE": "Источники", diff --git a/apps/web/src/assets/i18n/tr.json b/apps/web/src/assets/i18n/tr.json index ba3601ced..7226bcebd 100644 --- a/apps/web/src/assets/i18n/tr.json +++ b/apps/web/src/assets/i18n/tr.json @@ -573,7 +573,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/apps/web/src/assets/i18n/zh.json b/apps/web/src/assets/i18n/zh.json index 6febacc1a..553a6cbe7 100644 --- a/apps/web/src/assets/i18n/zh.json +++ b/apps/web/src/assets/i18n/zh.json @@ -330,7 +330,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/apps/web/src/assets/i18n/zhtw.json b/apps/web/src/assets/i18n/zhtw.json index 5cc3dda06..3fa68346a 100644 --- a/apps/web/src/assets/i18n/zhtw.json +++ b/apps/web/src/assets/i18n/zhtw.json @@ -412,7 +412,8 @@ "ADD_PLAYLIST_XTREAM_DESCRIPTION": "Open add dialog on the Xtream Codes tab", "ADD_PLAYLIST_STALKER_LABEL": "Add Stalker portal", "ADD_PLAYLIST_STALKER_DESCRIPTION": "Open add dialog on the Stalker Portal tab" - } + }, + "EXTERNAL_PLAYBACK_CLOSE": "Close player" }, "GLOBAL_FAVORITES": { "NO_PLAYLISTS_TITLE": "No favorites to show", diff --git a/libs/ui/components/src/lib/external-playback-dock/external-playback-dock.component.html b/libs/ui/components/src/lib/external-playback-dock/external-playback-dock.component.html index e7d114b5a..0fa048529 100644 --- a/libs/ui/components/src/lib/external-playback-dock/external-playback-dock.component.html +++ b/libs/ui/components/src/lib/external-playback-dock/external-playback-dock.component.html @@ -20,7 +20,9 @@
- {{ playerLabel() }} + {{ + playerLabel() + }} @if (!compact()) { External player @@ -44,13 +46,15 @@ @if (showCloseButton()) { } diff --git a/libs/ui/components/src/lib/external-playback-dock/external-playback-dock.component.scss b/libs/ui/components/src/lib/external-playback-dock/external-playback-dock.component.scss index e1589007f..91991507b 100644 --- a/libs/ui/components/src/lib/external-playback-dock/external-playback-dock.component.scss +++ b/libs/ui/components/src/lib/external-playback-dock/external-playback-dock.component.scss @@ -8,9 +8,9 @@ align-items: center; gap: 14px; min-height: 72px; - padding: 12px 14px; + padding: 8px 14px; border: 1px solid color-mix(in srgb, var(--mat-sys-outline-variant) 60%, transparent); - border-radius: 20px; + border-radius: 15px 15px 0 0; background: linear-gradient( 135deg, @@ -20,7 +20,6 @@ box-shadow: 0 18px 42px rgba(15, 23, 42, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.28); - backdrop-filter: blur(18px); } .external-playback-dock--error { diff --git a/libs/ui/components/src/lib/external-playback-dock/external-playback-dock.component.ts b/libs/ui/components/src/lib/external-playback-dock/external-playback-dock.component.ts index 3ee2f67d6..7e66f8226 100644 --- a/libs/ui/components/src/lib/external-playback-dock/external-playback-dock.component.ts +++ b/libs/ui/components/src/lib/external-playback-dock/external-playback-dock.component.ts @@ -10,11 +10,17 @@ import { import { MatButtonModule } from '@angular/material/button'; import { MatIcon } from '@angular/material/icon'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { TranslatePipe } from '@ngx-translate/core'; import { ExternalPlayerSession } from 'shared-interfaces'; @Component({ selector: 'app-external-playback-dock', - imports: [MatButtonModule, MatIcon, MatProgressSpinnerModule], + imports: [ + MatButtonModule, + MatIcon, + MatProgressSpinnerModule, + TranslatePipe, + ], templateUrl: './external-playback-dock.component.html', styleUrl: './external-playback-dock.component.scss', changeDetection: ChangeDetectionStrategy.OnPush, @@ -27,7 +33,9 @@ export class ExternalPlaybackDockComponent { private readonly artworkFailed = signal(false); readonly playerLabel = computed(() => this.session().player.toUpperCase()); - readonly artworkUrl = computed(() => this.session().thumbnail?.trim() ?? ''); + readonly artworkUrl = computed( + () => this.session().thumbnail?.trim() ?? '' + ); readonly statusLabel = computed(() => { const session = this.session(); const player = this.playerLabel();