From 1955fc87ee98af91e564c0719136aa637ce01bba Mon Sep 17 00:00:00 2001 From: npeter83 Date: Sun, 9 Aug 2026 05:05:59 +0200 Subject: [PATCH 1/6] =?UTF-8?q?refactor(glass):=20R10=20S3a=20=E2=80=94=20?= =?UTF-8?q?glass-card=20notification=20rows=20+=20perf-aware=20.overlay-ba?= =?UTF-8?q?ckdrop?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - NotificationsPanel per-row .glass -> glass-card (the rows are cards, not panel surface). - New .overlay-backdrop recipe (4px blur = backdrop-blur-xs) with a data-perf override that DROPS the blur. The viewport-sized modal scrim blur (Modal/PlayerModal/Welcome) was a raw backdrop-blur-xs utility that survived perf mode while every .glass had its blur dropped — the most expensive blur in the app. Overlays keep their bg-black/NN. - gotcha: write ONLY the standard backdrop-filter; a manual -webkit- line makes lightningcss drop the standard prop (webkit-only output -> no blur in Firefox). --- frontend/src/components/Modal.tsx | 2 +- frontend/src/components/NotificationsPanel.tsx | 4 ++-- frontend/src/components/PlayerModal.tsx | 2 +- frontend/src/components/Welcome.tsx | 2 +- frontend/src/index.css | 11 +++++++++++ 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/frontend/src/components/Modal.tsx b/frontend/src/components/Modal.tsx index 41c5e768..041230a3 100644 --- a/frontend/src/components/Modal.tsx +++ b/frontend/src/components/Modal.tsx @@ -56,7 +56,7 @@ export default function Modal({ return createPortal(
{ pressedOnBackdrop.current = e.target === e.currentTarget; }} diff --git a/frontend/src/components/NotificationsPanel.tsx b/frontend/src/components/NotificationsPanel.tsx index 7a731249..aad9cd7d 100644 --- a/frontend/src/components/NotificationsPanel.tsx +++ b/frontend/src/components/NotificationsPanel.tsx @@ -255,7 +255,7 @@ function NotificationRow({ } return (
@@ -340,7 +340,7 @@ function ClientActivityRow({ const access = n.meta?.kind === "access-requests" ? n.meta : null; return (
diff --git a/frontend/src/components/PlayerModal.tsx b/frontend/src/components/PlayerModal.tsx index 36259808..bb403baf 100644 --- a/frontend/src/components/PlayerModal.tsx +++ b/frontend/src/components/PlayerModal.tsx @@ -889,7 +889,7 @@ export default function PlayerModal({
Date: Sun, 9 Aug 2026 05:16:19 +0200 Subject: [PATCH 2/6] =?UTF-8?q?refactor(input):=20R10=20S3b=20=E2=80=94=20?= =?UTF-8?q?one=20input=20recipe,=20ring=20focus=20everywhere?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unify text inputs onto the form.tsx inputCls look (surface bg, rounded-lg, 2px accent RING focus), replacing the settings-family border-focus style app-wide: - deleted 3 duplicate local `const inputCls` (KeyGate/SettingsPanel/SetupWizard) → import the shared one; a 4th (Welcome, py-2.5) kept local but re-styled to match. - ~30 inline settings inputs: default full-size fields → inputCls; size variants (pager/ table-filter/chat textarea/plex/glass-card) keep their width/radius/padding but swap bg-card→bg-surface and border-focus→ring-focus. glass-card/bg-transparent bgs left as-is. - refreshed the form.tsx doc-comment (the old two-style split is gone). The ring is the more visible / a11y-correct focus cue, matching R9's focus foundation. --- frontend/src/components/AddToPlaylist.tsx | 2 +- frontend/src/components/AdminUsers.tsx | 4 ++-- frontend/src/components/ChannelTags.tsx | 2 +- frontend/src/components/ChatThread.tsx | 2 +- frontend/src/components/ColumnSortControl.tsx | 2 +- frontend/src/components/ConfigPanel.tsx | 2 +- frontend/src/components/Feed.tsx | 6 +++--- frontend/src/components/KeyGate.tsx | 4 +--- frontend/src/components/Messages.tsx | 3 ++- frontend/src/components/Pager.tsx | 4 ++-- frontend/src/components/Playlists.tsx | 2 +- frontend/src/components/PlaylistsRail.tsx | 4 ++-- frontend/src/components/PlexCollectionEditor.tsx | 4 ++-- frontend/src/components/PlexPlaylistAdd.tsx | 2 +- frontend/src/components/PlexPlaylistView.tsx | 2 +- frontend/src/components/PlexSidebar.tsx | 6 +++--- frontend/src/components/SavedViewsWidget.tsx | 4 ++-- frontend/src/components/Scheduler.tsx | 4 ++-- frontend/src/components/SettingsPanel.tsx | 5 +---- frontend/src/components/SetupWizard.tsx | 4 +--- frontend/src/components/ShareDialog.tsx | 2 +- frontend/src/components/Sidebar.tsx | 4 ++-- frontend/src/components/TagManager.tsx | 4 ++-- frontend/src/components/Welcome.tsx | 2 +- frontend/src/components/tableHeader.tsx | 2 +- frontend/src/components/ui/form.tsx | 11 ++++++----- 26 files changed, 44 insertions(+), 49 deletions(-) diff --git a/frontend/src/components/AddToPlaylist.tsx b/frontend/src/components/AddToPlaylist.tsx index 0cfc74c2..b7fb452d 100644 --- a/frontend/src/components/AddToPlaylist.tsx +++ b/frontend/src/components/AddToPlaylist.tsx @@ -156,7 +156,7 @@ export default function AddToPlaylist({ } }} placeholder={t("playlists.newPlaylist")} - className="flex-1 min-w-0 bg-card border border-border rounded-md px-2 py-1 text-xs outline-hidden focus:border-accent" + className="flex-1 min-w-0 bg-surface border border-border rounded-md px-2 py-1 text-xs focus:outline-hidden focus:ring-2 focus:ring-accent/40" />
diff --git a/frontend/src/components/AdminUsers.tsx b/frontend/src/components/AdminUsers.tsx index 31e038cc..76e74b0e 100644 --- a/frontend/src/components/AdminUsers.tsx +++ b/frontend/src/components/AdminUsers.tsx @@ -347,7 +347,7 @@ function AdminInvites() { value={newEmail} onChange={(e) => setNewEmail(e.target.value)} placeholder={t("settings.invites.addPlaceholder")} - className="flex-1 min-w-0 bg-card border border-border rounded-xl px-3 py-2 text-sm outline-hidden focus:border-accent" + className="flex-1 min-w-0 bg-surface border border-border rounded-xl px-3 py-2 text-sm focus:outline-hidden focus:ring-2 focus:ring-accent/40" />