feat(playlists): frontend foundation — page, add-to-playlist, nav

Add the Playlists page (left rail of playlists + detail with drag&drop reorder,
inline rename, one-step delete, remove item, Play all / row-click playback via the
existing PlayerModal) and an AddToPlaylist popover (portaled, multi-toggle +
inline new-playlist) wired into the VideoCard hover overlay and the PlayerModal.
New api client methods + Playlist types, a 'playlists' page route + account-menu
entry, and trilingual strings. Local only — YouTube sync comes in later phases.
This commit is contained in:
npeter83 2026-06-15 14:45:18 +02:00
parent bf769379cb
commit 40a44cdde2
14 changed files with 634 additions and 4 deletions

View file

@ -14,6 +14,7 @@
"admin": "Admin",
"feed": "Feed",
"channels": "Kanäle",
"playlists": "Wiedergabelisten",
"stats": "Statistik",
"settings": "Einstellungen",
"about": "Über",

View file

@ -0,0 +1,15 @@
{
"title": "Wiedergabelisten",
"noneYet": "Noch keine Wiedergabelisten",
"newPlaylist": "Neue Liste…",
"itemCount_one": "{{count}} Video",
"itemCount_other": "{{count}} Videos",
"pickOne": "Wähle links eine Liste.",
"loading": "Wird geladen…",
"empty": "Diese Liste ist leer — füge Videos aus dem Feed hinzu.",
"playAll": "Alle abspielen",
"delete": "Löschen",
"rename": "Umbenennen",
"confirmDelete": "Die Wiedergabeliste „{{name}}“ löschen? Kann nicht rückgängig gemacht werden.",
"addToPlaylist": "Zur Wiedergabeliste hinzufügen"
}

View file

@ -14,6 +14,7 @@
"admin": "Admin",
"feed": "Feed",
"channels": "Channels",
"playlists": "Playlists",
"stats": "Stats",
"settings": "Settings",
"about": "About",

View file

@ -0,0 +1,15 @@
{
"title": "Playlists",
"noneYet": "No playlists yet",
"newPlaylist": "New playlist…",
"itemCount_one": "{{count}} video",
"itemCount_other": "{{count}} videos",
"pickOne": "Pick a playlist on the left.",
"loading": "Loading…",
"empty": "This playlist is empty — add videos from the feed.",
"playAll": "Play all",
"delete": "Delete",
"rename": "Rename",
"confirmDelete": "Delete the playlist “{{name}}”? This can't be undone.",
"addToPlaylist": "Add to playlist"
}

View file

@ -14,6 +14,7 @@
"admin": "Adminisztrátor",
"feed": "Hírfolyam",
"channels": "Csatornák",
"playlists": "Lejátszási listák",
"stats": "Statisztika",
"settings": "Beállítások",
"about": "Névjegy",

View file

@ -0,0 +1,15 @@
{
"title": "Lejátszási listák",
"noneYet": "Még nincs lejátszási lista",
"newPlaylist": "Új lista…",
"itemCount_one": "{{count}} videó",
"itemCount_other": "{{count}} videó",
"pickOne": "Válassz egy listát a bal oldalon.",
"loading": "Betöltés…",
"empty": "Ez a lista üres — adj hozzá videókat a hírfolyamból.",
"playAll": "Összes lejátszása",
"delete": "Törlés",
"rename": "Átnevezés",
"confirmDelete": "Törlöd a(z) „{{name}}” listát? Nem vonható vissza.",
"addToPlaylist": "Hozzáadás listához"
}