fix: resolve ThemeProvider SSR issue causing 500 error
All checks were successful
Build and Push Docker Image to Gitea / build-and-push (push) Successful in 1m6s

The app was crashing with "useTheme must be used within ThemeProvider"
error during server-side rendering.

Changes:
- Created AppLayout client component to wrap Navbar
- Modified useTheme hook to return default values during SSR
  instead of throwing an error
- Updated Navbar to safely handle theme context
- Moved Navbar rendering into client-side only AppLayout

This fixes the SSR hydration mismatch and allows the app
to render correctly on both server and client.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-23 20:27:44 +01:00
parent 2c3a78056f
commit 3d5e9e36d6
4 changed files with 27 additions and 8 deletions

View File

@@ -71,7 +71,12 @@ export function ThemeProvider({ children }: { children: ReactNode }) {
export function useTheme() {
const context = useContext(ThemeContext);
if (!context) {
throw new Error('useTheme must be used within ThemeProvider');
// Return a default context for SSR or when outside provider
return {
theme: 'system' as Theme,
setTheme: () => {},
resolvedTheme: 'light' as 'light' | 'dark',
};
}
return context;
}