peter
180ab56379
refactor(plex): split PlexBrowse god-file into cards + views + shared UI (E4 S4)
Pure behaviour-preserving code-motion — PlexBrowse 1751 -> 538 lines. The ~11 inlined
components are self-contained (every view is invoked with shell callbacks as props; no
view reaches back into shell state), so they just move to sibling files.
New files:
- lib/plexWatch.ts: toggleWatchState (shared by the grid + person page)
- components/plexCards.tsx: PlexPosterCard, SeasonCard, CastStrip, RelatedStrip, EpisodeCard
- components/plexViews.tsx: PlexInfoView, PlexPersonView, PlexShowView, PlexSeasonView
- lib/plexDetailUi.tsx (extended): BackBtn, ActionBtn, WatchedToggle, DetailHero, epLabel
(the file's own remit — "shared detail-page UI")
PlexBrowse keeps the Sub router + PLEX_SUB_URL + PAGE + PlexBrowse() shell. Repointed
the only external importer (PlexPersonView.dom.test) to plexCards/plexViews.
Self-E2E (localdev): Plex grid renders (poster cards + episodes); The Expanse show-drill
renders the hero + action buttons + season cards; ?v=show URL-mirroring intact; 0 console
errors. Gate green: typecheck, knip, eslint (0 err), prettier, 247 vitest.
2026-08-19 06:10:48 +02:00
..
2026-07-21 02:26:40 +02:00
2026-08-11 04:04:06 +02:00
2026-08-11 04:04:06 +02:00
2026-08-19 01:13:40 +02:00
2026-08-15 04:45:32 +02:00
2026-08-15 04:45:32 +02:00
2026-08-09 21:06:58 +02:00
2026-08-09 17:43:42 +02:00
2026-08-09 17:43:42 +02:00
2026-08-19 01:13:40 +02:00
2026-08-09 03:18:04 +02:00
2026-08-09 03:18:04 +02:00
2026-06-12 18:01:43 +02:00
2026-08-08 09:28:23 +02:00
2026-08-11 04:20:10 +02:00
2026-08-08 00:50:05 +02:00
2026-08-15 06:38:19 +02:00
2026-08-15 07:20:18 +02:00
2026-08-13 23:41:12 +02:00
2026-07-21 02:26:40 +02:00
2026-08-15 05:28:59 +02:00
2026-08-15 17:13:52 +02:00
2026-08-09 21:06:58 +02:00
2026-08-18 05:01:27 +02:00
2026-08-14 04:01:38 +02:00
2026-08-14 03:50:43 +02:00
2026-08-15 04:45:32 +02:00
2026-08-15 04:09:30 +02:00
2026-08-15 03:40:35 +02:00
2026-08-08 09:28:23 +02:00
2026-08-11 04:04:06 +02:00
2026-08-13 23:24:59 +02:00
2026-08-09 17:43:42 +02:00
2026-08-11 04:20:10 +02:00
2026-08-15 01:37:05 +02:00
2026-08-15 05:31:55 +02:00
2026-08-15 05:28:59 +02:00
2026-06-19 11:18:20 +02:00
2026-07-27 22:10:03 +02:00
2026-08-19 02:00:24 +02:00
2026-08-11 04:04:06 +02:00
2026-07-21 02:26:40 +02:00
2026-08-11 04:04:06 +02:00
2026-08-14 00:49:09 +02:00
2026-08-18 15:49:49 +02:00
2026-08-19 04:47:36 +02:00
2026-08-19 03:07:25 +02:00
2026-08-15 00:35:22 +02:00
2026-08-15 01:37:05 +02:00
2026-08-09 03:18:04 +02:00
2026-08-17 21:43:14 +02:00
2026-08-11 04:04:06 +02:00
2026-08-09 03:18:04 +02:00
2026-08-11 04:04:06 +02:00
2026-08-09 17:43:42 +02:00
2026-07-13 02:28:06 +02:00
2026-07-19 01:25:32 +02:00
2026-08-19 04:47:36 +02:00
2026-08-11 03:29:08 +02:00
2026-08-18 05:01:27 +02:00
2026-08-18 05:01:27 +02:00
2026-07-18 19:11:38 +02:00
2026-08-09 17:43:42 +02:00
2026-08-08 00:50:05 +02:00
2026-08-17 21:43:14 +02:00
2026-08-17 21:43:14 +02:00
2026-07-21 02:26:40 +02:00
2026-07-21 22:29:39 +02:00
2026-08-19 05:41:52 +02:00
2026-08-19 05:41:52 +02:00
2026-08-09 03:18:04 +02:00
2026-08-11 04:04:06 +02:00
2026-08-19 04:47:36 +02:00
2026-08-15 01:01:03 +02:00
2026-08-19 06:10:48 +02:00
2026-08-19 06:10:48 +02:00
2026-08-09 17:43:42 +02:00
2026-08-17 20:41:13 +02:00
2026-08-19 06:10:48 +02:00
2026-08-17 20:21:29 +02:00
2026-08-12 00:06:21 +02:00
2026-08-13 03:20:01 +02:00
2026-08-09 17:43:42 +02:00
2026-08-15 01:01:03 +02:00
2026-08-16 08:05:18 +02:00
2026-08-16 19:02:02 +02:00
2026-08-16 18:30:48 +02:00
2026-08-17 22:18:07 +02:00
2026-08-17 22:18:07 +02:00
2026-08-17 19:19:03 +02:00
2026-08-19 06:10:48 +02:00
2026-07-27 22:10:03 +02:00
2026-08-11 02:20:52 +02:00
2026-08-11 04:04:06 +02:00
2026-08-09 01:03:53 +02:00
2026-08-19 01:32:26 +02:00
2026-08-19 01:32:26 +02:00
2026-08-09 03:18:04 +02:00
2026-08-19 04:47:36 +02:00
2026-08-09 17:43:42 +02:00
2026-08-17 22:18:07 +02:00
2026-08-17 21:31:22 +02:00
2026-08-14 22:58:42 +02:00
2026-08-14 22:58:42 +02:00
2026-08-18 03:02:34 +02:00
2026-08-11 04:04:06 +02:00
2026-08-11 04:04:06 +02:00
2026-08-19 04:47:36 +02:00
2026-08-11 02:20:52 +02:00
2026-08-14 00:10:13 +02:00
2026-08-14 00:10:13 +02:00
2026-08-15 01:04:59 +02:00
2026-08-09 17:43:43 +02:00
2026-08-09 17:46:13 +02:00
2026-08-15 01:37:05 +02:00
2026-08-09 17:43:42 +02:00
2026-08-09 03:18:04 +02:00
2026-08-11 02:20:52 +02:00
2026-07-21 02:26:40 +02:00
2026-08-16 19:02:02 +02:00
2026-08-16 18:30:48 +02:00
2026-06-19 11:18:20 +02:00
2026-08-11 04:04:06 +02:00
2026-08-11 04:04:06 +02:00
2026-08-08 01:38:06 +02:00
2026-07-27 22:40:11 +02:00
2026-08-19 01:32:26 +02:00
2026-08-11 04:04:06 +02:00
2026-08-11 04:04:06 +02:00
2026-07-27 22:10:03 +02:00