import cn from 'classnames'
import { FC } from 'react'
import s from './Layout.module.css'
import { Navbar, Featurebar } from '@components/core'
import { Container, Sidebar } from '@components/ui'
import { CartSidebarView } from '@components/cart'
import { UIProvider, useUI } from '@components/ui/context'

interface Props {
  className?: string
  children?: any
}

const CoreLayout: FC<Props> = ({ className, children }) => {
  const rootClassName = cn(s.root, className)
  const { displaySidebar } = useUI()

  return (
    <div className={rootClassName}>
      <Featurebar
        title="Free Standard Shipping on orders over $99.99"
        description="Due to COVID-19, some orders may experience processing and delivery delays."
      />
      <Container>
        <Navbar />
        <main className="h-screen">{children}</main>
      </Container>
      {displaySidebar && (
        <Sidebar>
          <CartSidebarView />
        </Sidebar>
      )}
    </div>
  )
}

const Layout: FC<Props> = (props) => (
  <UIProvider>
    <CoreLayout {...props} />
  </UIProvider>
)

export default Layout