import cn from 'classnames' import dynamic from 'next/dynamic' import s from './Layout.module.css' import { useRouter } from 'next/router' import debounce from 'lodash.debounce' import React, { FC, useCallback, useEffect, useState, Suspense } from 'react' import { useUI } from '@components/ui/context' import { Navbar, Footer } from '@components/common' import { usePreventScroll } from '@react-aria/overlays' import { useAcceptCookies } from '@lib/hooks/useAcceptCookies' import { CommerceProvider } from '@bigcommerce/storefront-data-hooks' import { Container, Sidebar, Button, Modal, LoadingDots } from '@components/ui' import type { Page } from '@bigcommerce/storefront-data-hooks/api/operations/get-all-pages' const Loading = () => (
) const dynamicProps = { loading: () => , } const CartSidebarView = dynamic( () => import('@components/cart/CartSidebarView') ) const LoginView = dynamic( () => import('@components/auth/LoginView'), dynamicProps ) const SignUpView = dynamic( () => import('@components/auth/SignUpView'), dynamicProps ) const ForgotPassword = dynamic( () => import('@components/auth/ForgotPassword'), dynamicProps ) const FeatureBar = dynamic( () => import('@components/common/FeatureBar'), dynamicProps ) interface Props { pageProps: { pages?: Page[] } } const Layout: FC = ({ children, pageProps }) => { const { displaySidebar, displayModal, closeSidebar, closeModal, modalView, } = useUI() const { acceptedCookies, onAcceptCookies } = useAcceptCookies() const [hasScrolled, setHasScrolled] = useState(false) const { locale = 'en-US' } = useRouter() console.log('Layout') usePreventScroll({ isDisabled: !(displaySidebar || displayModal), }) // const handleScroll = useCallback( // debounce(() => { // const offset = 0 // const { scrollTop } = document.documentElement // const scrolled = scrollTop > offset // setHasScrolled(scrolled) // }, 1), // [] // ) // useEffect(() => { // document.addEventListener('scroll', handleScroll) // return () => { // document.removeEventListener('scroll', handleScroll) // } // }, [handleScroll]) return (
{children}
) } export default Layout