import React from 'react' import { useState } from 'react' import { useRouter } from 'next/router' import Link from 'next/link' // Shared components import Logo from 'shared/components/logos/freesewing.js' import PrimaryNavigation from 'shared/components/navigation/primary' import get from 'lodash.get' import Right from 'shared/components/icons/right.js' import Left from 'shared/components/icons/left.js' // Site components import Header from 'site/components/header' import Footer from 'site/components/footer' import Search from 'site/components/search' const PageTitle = ({ app, slug, title }) => { if (title) return

{title}

if (slug) return

{get(app.navigation, slug.split('/')).__title}

return

FIXME: This page has no title

} const Breadcrumbs = ({ app, slug=false, title }) => { if (!slug) return null const crumbs = [] const chunks = slug.split('/') for (const i in chunks) { const j = parseInt(i)+parseInt(1) const page = get(app.navigation, chunks.slice(0,j)) if (page) crumbs.push([page.__linktitle, '/'+chunks.slice(0,j).join('/'), (j < chunks.length)]) } return ( ) } const asideClasses = ` fixed top-0 right-0 pt-28 sm:pt-8 sm:mt-16 pb-4 px-2 sm:relative sm:transform-none h-screen w-screen bg-base-100 sm:bg-base-50 sm:flex sm:sticky overflow-y-scroll z-20 bg-base-100 text-base-content transition-all xl:w-1/4 ` const DefaultLayout = ({ app, title=false, children=[], search, setSearch, noSearch=false, workbench=false, AltMenu=null, }) => { const startNavigation = () => { app.startLoading() // Force close of menu on mobile if it is open if (app.primaryNavigation) app.setPrimaryNavigation(false) // Force close of search modal if it is open if (search) setSearch(false) } const router = useRouter() router.events?.on('routeChangeStart', startNavigation) router.events?.on('routeChangeComplete', () => app.stopLoading()) const slug = router.asPath.slice(1) const [collapsePrimaryNav, setCollapsePrimaryNav] = useState(workbench || false) const [collapseAltMenu, setCollapseAltMenu] = useState(false) return (
{title && ( <> )} {children}
{workbench && AltMenu && ( )}
{!noSearch && search && ( <>
)}
) } export default DefaultLayout