feat(design): one media card, and Home's hero and shelves as cards (E28 S3h)

- ui/MediaCard + mediaCardStyles: one frame for every video, Plex title and
  Home tile; the meta line pinned to the bottom edge, the length a badge on
  the picture, the media Play only where the click plays, the hover row at
  the picture's bottom-right (the owner's pick C).
- Shelf density: on any strip a one-line title over one meta line; mixed
  Home shelves are landscape; rails turn content-visibility off (a card's
  reserved height had become the strip's). Home slot 232px, so the Play
  and the hover row no longer touch; a landscape shelf takes the small Play.
- Home hero is a card (hover row, the whole menu, a touch "…"), three
  quarters wide and centred; channel / playlist tiles get Play, open and
  "…"; a show tile acts on its next episode, ⓘ opens the show.
- Plex preview: a ~0.9 s mouse rest opens a passive panel with the whole
  title, facts and synopsis (popover `pointerOnly`); the synopsis and title
  tooltips are gone.
- Compact list row B: the title leads, "…" at the end, toggles over the
  date on hover.
- Media-info layout B (collections, crew, cast beside the facts sidebar;
  an empty column is not drawn); filtering values are chips there and on
  the show page; "Cast" over the cast-only strips.
- Browse tiles hover like a card; prose capped by the `measure` utility.
This commit is contained in:
2026-09-27 00:54:19 +02:00
parent 6653d81a80
commit a453b77f04
30 changed files with 1882 additions and 769 deletions
+2 -1
View File
@@ -39,7 +39,8 @@
"moveRight": "Right",
"moveLast": "To the end",
"moveFailed": "Could not reorder the shelf.",
"moveSaving": "Saving the new order…"
"moveSaving": "Saving the new order…",
"openPlaylist": "Open the playlist"
},
"pin": {
"menu": "Comfort shelf",
+5 -2
View File
@@ -125,6 +125,9 @@
"menu": "Media",
"markWatched": "Mark watched",
"markUnwatched": "Mark unwatched",
"markNextWatched": "Mark S{{season}}·E{{episode}} watched",
"markNextUnwatched": "Mark S{{season}}·E{{episode}} unwatched",
"nextUp": "Next: S{{season}}·E{{episode}}",
"watchedFailed": "Couldn't update the watched state — please try again.",
"seasons": "{{count}} seasons",
"unified": {
@@ -243,7 +246,7 @@
"title": "Media info",
"customize": "Customize view",
"prefArtBg": "Faint backdrop",
"prefCast": "Cast & crew",
"prefCast": "Cast",
"prefRelated": "Related shows",
"prefFacts": "Details",
"prefKeywords": "Keywords",
@@ -258,7 +261,7 @@
},
"openImdb": "Open on IMDb",
"director": "Director",
"cast": "Cast & crew",
"cast": "Cast",
"markWatched": "Mark watched",
"markUnwatched": "Mark unwatched",
"clearResume": "Clear resume position",
+2 -1
View File
@@ -39,7 +39,8 @@
"moveRight": "Jobbra",
"moveLast": "A polc végére",
"moveFailed": "Nem sikerült átrendezni a polcot.",
"moveSaving": "Az új sorrend mentése…"
"moveSaving": "Az új sorrend mentése…",
"openPlaylist": "Lejátszási lista megnyitása"
},
"pin": {
"menu": "Komfort polc",
+4 -1
View File
@@ -125,6 +125,9 @@
"menu": "Média",
"markWatched": "Megnézettnek jelöl",
"markUnwatched": "Nem-nézettnek jelöl",
"markNextWatched": "S{{season}}·E{{episode}} megnézettnek jelöl",
"markNextUnwatched": "S{{season}}·E{{episode}} nem-nézettnek jelöl",
"nextUp": "Következik: S{{season}}·E{{episode}}",
"watchedFailed": "Nem sikerült frissíteni a megnézett állapotot — próbáld újra.",
"seasons": "{{count}} évad",
"unified": {
@@ -258,7 +261,7 @@
},
"openImdb": "Megnyitás az IMDb-n",
"director": "Rendező",
"cast": "Szereplők & stáb",
"cast": "Szereplők",
"markWatched": "Megjelölés megnézettként",
"markUnwatched": "Megnézett visszavonása",
"clearResume": "Folytatási pozíció törlése",