import MobileMenu from '@app/components/Layout/MobileMenu'; import PullToRefresh from '@app/components/Layout/PullToRefresh'; import SearchInput from '@app/components/Layout/SearchInput'; import Sidebar from '@app/components/Layout/Sidebar'; import UserDropdown from '@app/components/Layout/UserDropdown'; import type { AvailableLocale } from '@app/context/LanguageContext'; import useLocale from '@app/hooks/useLocale'; import useSettings from '@app/hooks/useSettings'; import { useUser } from '@app/hooks/useUser'; import { ArrowLeftIcon, Bars3BottomLeftIcon } from '@heroicons/react/24/solid'; import { useRouter } from 'next/router'; import { useEffect, useState } from 'react'; type LayoutProps = { children: React.ReactNode; }; const Layout = ({ children }: LayoutProps) => { const [isSidebarOpen, setSidebarOpen] = useState(false); const [isScrolled, setIsScrolled] = useState(false); const { user } = useUser(); const router = useRouter(); const { currentSettings } = useSettings(); const { setLocale } = useLocale(); useEffect(() => { if (setLocale && user) { setLocale( (user?.settings?.locale ? user.settings.locale : currentSettings.locale) as AvailableLocale ); } }, [setLocale, currentSettings.locale, user]); useEffect(() => { const updateScrolled = () => { if (window.pageYOffset > 20) { setIsScrolled(true); } else { setIsScrolled(false); } }; window.addEventListener('scroll', updateScrolled, { passive: true }); return () => { window.removeEventListener('scroll', updateScrolled); }; }, []); return (
setSidebarOpen(false)} />
{children}
); }; export default Layout;