feat: add theme mode support with AppThemeMode enum and AppThemeState service

- Introduced AppThemeMode enum to define theme options: System, Light, Dark.
- Updated AppSettingsDocument to include ThemeMode property.
- Created AppThemeState service to manage current theme mode and handle changes.
- Integrated theme mode handling in CouchbaseLiteAppSettingsService for persistence.
- Added JavaScript for theme management in the frontend, supporting system preference detection.
- Enhanced CSS with theme variables for consistent styling across light and dark modes.
- Updated Playwright tests to ensure sidebar functionality and responsiveness.
This commit is contained in:
MaddoScientisto 2026-04-20 22:58:25 +02:00
commit 158906fa28
19 changed files with 889 additions and 82 deletions

View file

@ -4,15 +4,29 @@
@code {
[Parameter] public bool IsCollapsed { get; set; }
[Parameter] public EventCallback OnToggleSidebar { get; set; }
private Task ToggleSidebarAsync()
{
return OnToggleSidebar.InvokeAsync();
}
}
<div class="nav-menu-shell @(IsCollapsed ? "nav-menu-shell-collapsed" : string.Empty)" data-testid="sidebar-shell" data-collapsed="@(IsCollapsed ? "true" : "false")">
<div class="top-row ps-3 navbar navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="" aria-label="WorkTracker home">
<span class="sidebar-brand-full">WorkTracker</span>
<span class="sidebar-brand-compact" aria-hidden="true">WT</span>
</a>
<div class="top-row ps-3 pe-3 navbar navbar-dark">
<div class="container-fluid nav-menu-header">
<button
type="button"
class="sidebar-toggle"
@onclick="ToggleSidebarAsync"
aria-label="Toggle sidebar"
aria-controls="sidebar-navigation"
aria-expanded="@(IsCollapsed ? "false" : "true")"
title="Toggle sidebar">
<span class="sidebar-toggle-bar"></span>
<span class="sidebar-toggle-bar"></span>
<span class="sidebar-toggle-bar"></span>
</button>
</div>
</div>