Sidebar simplification & shortlist redesign (litmus-t8hr)
Simplify sidebar to shortlist/favorites, move filters to browse page, fix compare workflow, add UseAsAppTheme button
Summary of Changes
State refactoring (state.rs, main.rs)
- Renamed
CompareSelectiontoShortlistwithMAX_SHORTLIST = 8 - Extracted CVD from
FilterStateinto newCvdSimulationglobal signal - Made
FilterStatepage-local (removed from global context providers) - Updated all context providers in
App
Components (components.rs)
- Renamed
CompareToggletoShortlistTogglewith +Shortlist/Shortlisted text - Added
UseAsAppThemeButtoncomponent (toggles app theme, shows checkmark when active)
Browse page (theme_list.rs)
- Added inline filter bar (search, variant buttons, readability dropdown)
- Flat alphabetical grid — removed family group headings
- ThemeCard now shows ShortlistToggle + UseAsAppThemeButton
- FilterState is local
use_signal
Sidebar (sidebar.rs)
- Stripped search, variant filters, readability dropdown, theme list, app theme dropdown
- Added nav links (Browse Themes, Compare)
- Added shortlist panel with checkboxes for compare selection
- Compare button builds URL from checked themes (max 4)
- CVD stays in sidebar as global accessibility tool
Detail page (theme_detail.rs)
- Replaced CompareToggle with ShortlistToggle + UseAsAppThemeButton
- Reads CVD from
CvdSimulationsignal - Updated
ckeyboard shortcut to toggle shortlist
Compare page (compare.rs)
- Removed
CompareSelectordropdowns — URL is source of truth - Reads CVD from
CvdSimulationsignal
Scene across page (scene_across.rs)
- Updated to use ShortlistToggle and CvdSimulation
CSS (style.css)
- Added: .filter-bar, .filter-bar-search, .filter-bar-readability, .shortlist-toggle, .use-as-app-theme-btn, .sidebar-shortlist*, .sidebar-nav*
- Removed: .sidebar-search, .sidebar-filters, .sidebar-readability*, .sidebar-theme-list, .sidebar-family*, .sidebar-theme-item, .sidebar-app-theme*, .family-group, .family-name, .compare-toggle, .compare-selector, .compare-select, .compare-vs, .compare-chip*
Cleanup (family.rs)
- Removed unused
ThemeFamilystruct andgroup_by_familyfunction - Kept
theme_family()(still used for search matching)