'use client'; import React, { useState, useEffect } from 'react'; import { Menu } from "@/app/components/menu"; import { Sidebar } from "@/app/components/sidebar"; import { useNavidrome } from "@/app/components/NavidromeContext"; import { AudioPlayer } from "./AudioPlayer"; import { BottomNavigation } from './BottomNavigation'; import { Toaster } from "@/components/ui/toaster"; import { useFavoriteAlbums } from "@/hooks/use-favorite-albums"; interface IhateserversideProps { children: React.ReactNode; } const Ihateserverside: React.FC = ({ children }) => { const [isSidebarVisible, setIsSidebarVisible] = useState(true); const [isStatusBarVisible, setIsStatusBarVisible] = useState(true); const [isSidebarHidden, setIsSidebarHidden] = useState(false); const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(false); const [isClient, setIsClient] = useState(false); const { playlists } = useNavidrome(); const { favoriteAlbums, removeFavoriteAlbum } = useFavoriteAlbums(); // Handle client-side hydration useEffect(() => { setIsClient(true); const savedCollapsed = localStorage.getItem('sidebar-collapsed') === 'true'; const savedVisible = localStorage.getItem('sidebar-visible') !== 'false'; // Default to true setIsSidebarCollapsed(savedCollapsed); setIsSidebarVisible(savedVisible); }, []); const toggleSidebarCollapse = () => { const newCollapsed = !isSidebarCollapsed; setIsSidebarCollapsed(newCollapsed); if (typeof window !== 'undefined') { localStorage.setItem('sidebar-collapsed', newCollapsed.toString()); } }; const toggleSidebarVisibility = () => { const newVisible = !isSidebarVisible; setIsSidebarVisible(newVisible); if (typeof window !== 'undefined') { localStorage.setItem('sidebar-visible', newVisible.toString()); } }; const handleTransitionEnd = () => { if (!isSidebarVisible) { setIsSidebarHidden(true); // This will fully hide the sidebar after transition } }; if (!isClient) { // Return a basic layout during SSR to match initial client render return (
{/* Top Menu */}
setIsStatusBarVisible(!isStatusBarVisible)} isStatusBarVisible={isStatusBarVisible} />
{/* Main Content Area */}
{isSidebarVisible && (
)}
{children}
{/* Floating Audio Player */}
); } return ( <> {/* Mobile Layout */}
{/* Top Menu */} {/*
setIsStatusBarVisible(!isStatusBarVisible)} isStatusBarVisible={isStatusBarVisible} />
*/} {/* Main Content Area with bottom padding for audio player and bottom nav */}
{children}
{/* Bottom Navigation for Mobile */}
{/* Desktop Layout */}
{/* Top Menu */}
setIsStatusBarVisible(!isStatusBarVisible)} isStatusBarVisible={isStatusBarVisible} />
{/* Main Content Area */}
{isSidebarVisible && (
)}
{children}
{/* Single Shared Audio Player - shows on all layouts */} ); }; export default Ihateserverside;