Skip to content
Snippets Groups Projects
Layout.tsx 1.14 KiB
Newer Older
  • Learn to ignore specific revisions
  • import React, { useEffect, useState } from 'react'
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    import BottomBar from '../Navigation/BottomBar'
    import SideBar from '../Navigation/SideBar'
    
    import styles from './layout.module.scss'
    
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    const Layout: React.FC = ({ children }) => {
      const [isMobile, setIsMobile] = useState<boolean>(false)
    
      useEffect(() => {
        function handleResize() {
          const test: boolean =
            /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
              navigator.userAgent
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
            ) || window.innerWidth < 768
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
          setIsMobile(test)
    
        }
        handleResize()
    
        window.addEventListener('resize', handleResize)
        return () => {
          window.removeEventListener('resize', handleResize)
        }
      }, [])
    
      return (
        <div className={styles.root}>
    
          {!isMobile ? (
            <div className={styles.menuWrapper}>
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
              <SideBar />
    
            </div>
          ) : (
            <div className={styles.mobileNavWrapper}>
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
              <BottomBar />
    
          <div className={styles.wrapper}>
    
            <main>{children}</main>
          </div>
        </div>
      )
    }
    
    export default Layout