From c47c193ad1bd06606cb2cef1127e5af7f880491a Mon Sep 17 00:00:00 2001 From: npeter83 Date: Fri, 25 Sep 2026 00:34:35 +0200 Subject: [PATCH] feat(design): glass surfaces by role, the static Badge, LinkButton, user pickers on the Combobox (E28 S3d1) --- CLAUDE.md | 2 + docs/DESIGN.md | 12 +- frontend/eslint.config.js | 45 +++++ frontend/src/components/AboutCell.tsx | 3 +- frontend/src/components/AccountPanel.tsx | 3 +- frontend/src/components/ActiveFilterChips.tsx | 5 +- frontend/src/components/AddToPlaylist.tsx | 3 +- frontend/src/components/AdminUsers.tsx | 9 +- frontend/src/components/ChannelAbout.tsx | 9 +- frontend/src/components/ChannelLayoutGrid.tsx | 3 +- .../src/components/ChannelStatsPopover.tsx | 3 +- frontend/src/components/ChannelTags.tsx | 9 +- frontend/src/components/ChatDock.tsx | 5 +- frontend/src/components/ConfigPanel.tsx | 3 +- frontend/src/components/DateFilterSelect.tsx | 5 +- frontend/src/components/DebugRecorder.tsx | 7 +- frontend/src/components/DownloadCenter.tsx | 11 +- .../src/components/ExcludedChannelList.tsx | 3 +- frontend/src/components/KeyGate.tsx | 5 +- frontend/src/components/LanguageSwitcher.tsx | 6 +- frontend/src/components/Messages.tsx | 5 +- frontend/src/components/NavSidebar.tsx | 5 +- .../src/components/NotificationsPanel.tsx | 9 +- frontend/src/components/OnboardingWizard.tsx | 3 +- frontend/src/components/PaletteLauncher.tsx | 9 +- frontend/src/components/PlayerModal.tsx | 3 +- .../src/components/PlaylistLimitsHint.tsx | 3 +- frontend/src/components/PlexBrowse.tsx | 3 +- .../src/components/PlexCollectionEditor.tsx | 5 +- .../src/components/PlexCollectionView.tsx | 13 +- frontend/src/components/PlexInfo.tsx | 28 ++- frontend/src/components/PlexPlaylistAdd.tsx | 3 +- frontend/src/components/PlexPlaylistView.tsx | 13 +- frontend/src/components/PlexSearchBox.tsx | 5 +- frontend/src/components/ProfileEditor.tsx | 11 +- frontend/src/components/SavedViewsPopover.tsx | 24 +-- frontend/src/components/Scheduler.tsx | 11 +- frontend/src/components/SelectedViewChip.tsx | 5 +- frontend/src/components/SettingsPanel.tsx | 3 +- frontend/src/components/SetupWizard.tsx | 5 +- frontend/src/components/ShareDialog.tsx | 60 ++---- frontend/src/components/Stats.tsx | 5 +- frontend/src/components/SyncStatus.tsx | 5 +- frontend/src/components/TagFilterChips.tsx | 3 +- frontend/src/components/TagManager.tsx | 6 +- frontend/src/components/UserPicker.tsx | 55 ++++++ frontend/src/components/VideoCard.tsx | 5 +- frontend/src/components/VideoEditor.tsx | 3 +- frontend/src/components/VideoInfoCard.tsx | 8 +- frontend/src/components/ViewSwitcher.tsx | 3 +- frontend/src/components/WatchPage.tsx | 24 +-- frontend/src/components/Welcome.tsx | 17 +- frontend/src/components/YearFilter.tsx | 5 +- frontend/src/components/downloadAdmin.tsx | 54 +----- frontend/src/components/downloadRow.tsx | 5 +- frontend/src/components/legal/LegalLayout.tsx | 3 +- frontend/src/components/plexBrowseLists.tsx | 3 +- frontend/src/components/plexCards.tsx | 13 +- frontend/src/components/plexDetailUi.tsx | 21 +- frontend/src/components/plexViews.tsx | 7 +- frontend/src/components/ui/ActionMenu.tsx | 3 +- frontend/src/components/ui/BackToTop.tsx | 3 +- frontend/src/components/ui/Badge.tsx | 32 +++ frontend/src/components/ui/Button.tsx | 88 +-------- frontend/src/components/ui/Combobox.tsx | 5 +- frontend/src/components/ui/DataTable.tsx | 3 +- frontend/src/components/ui/DraftSaveBar.tsx | 3 +- frontend/src/components/ui/FilterSelect.tsx | 5 +- frontend/src/components/ui/IconButton.tsx | 59 +----- frontend/src/components/ui/ItemCount.tsx | 7 +- frontend/src/components/ui/LinkButton.tsx | 72 +++++++ frontend/src/components/ui/Modal.tsx | 5 +- frontend/src/components/ui/PanelGroup.tsx | 3 +- frontend/src/components/ui/README.md | 17 +- frontend/src/components/ui/SidePanel.tsx | 5 +- frontend/src/components/ui/SortControl.tsx | 7 +- frontend/src/components/ui/Toaster.tsx | 3 +- frontend/src/components/ui/Tooltip.tsx | 3 +- frontend/src/components/ui/buttonStyles.ts | 182 ++++++++++++++++++ frontend/src/components/ui/form.tsx | 3 +- frontend/src/components/ui/surfaces.ts | 30 +++ frontend/src/components/ui/tableHeader.tsx | 9 +- frontend/src/design-lab/DesignLab.tsx | 5 +- frontend/src/design-lab/batchA.tsx | 8 +- frontend/src/design-lab/batchB.tsx | 51 ++--- frontend/src/design-lab/batchC.tsx | 13 +- frontend/src/design-lab/batchCActions.tsx | 3 +- frontend/src/design-lab/labKit.tsx | 3 +- frontend/src/lib/surfaceRole.contract.test.ts | 44 +++++ 89 files changed, 818 insertions(+), 478 deletions(-) create mode 100644 frontend/src/components/UserPicker.tsx create mode 100644 frontend/src/components/ui/Badge.tsx create mode 100644 frontend/src/components/ui/LinkButton.tsx create mode 100644 frontend/src/components/ui/buttonStyles.ts create mode 100644 frontend/src/components/ui/surfaces.ts create mode 100644 frontend/src/lib/surfaceRole.contract.test.ts diff --git a/CLAUDE.md b/CLAUDE.md index a0f4310c..fc9ddad4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -97,6 +97,8 @@ CQRS, a repository/DI framework, a router library, a generic CRUD-router factory | FE list/grid keys | `NavGrid`/`keyboardNav` + `navItemAttrs` + `data-nav-open` | a private arrow-key / roving-tabindex handler | | FE view push (history) | `rememberNavPosition()` right before `history.pushState` | a push that forgets: Back strands focus on `` | | FE text field / checkbox / slider | `ui/Input` · `Textarea` · `InnerInput` in a `fieldClass` frame · `Checkbox`/`CheckRow` · `Slider` | a raw ``/`