'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 { Toaster } from "@/components/ui/toaster" 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(); // Handle client-side hydration useEffect(() => { setIsClient(true); const savedCollapsed = localStorage.getItem('sidebar-collapsed') === 'true'; setIsSidebarCollapsed(savedCollapsed); }, []); const toggleSidebarCollapse = () => { const newCollapsed = !isSidebarCollapsed; setIsSidebarCollapsed(newCollapsed); if (typeof window !== 'undefined') { localStorage.setItem('sidebar-collapsed', newCollapsed.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 */}
setIsSidebarVisible(!isSidebarVisible)} isSidebarVisible={isSidebarVisible} toggleStatusBar={() => setIsStatusBarVisible(!isStatusBarVisible)} isStatusBarVisible={isStatusBarVisible} />
{/* Main Content Area */}
{children}
{/* Floating Audio Player */}
); } return (
{/* Top Menu */}
setIsSidebarVisible(!isSidebarVisible)} isSidebarVisible={isSidebarVisible} toggleStatusBar={() => setIsStatusBarVisible(!isStatusBarVisible)} isStatusBarVisible={isStatusBarVisible} />
{/* Main Content Area */}
{isSidebarVisible && (
)}
{children}
{/* Floating Audio Player */} {isStatusBarVisible && ( )}
); }; export default Ihateserverside;