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 LayoutWrapper = ({ 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 (
{children}
{!noSearch && search && ( <>
)}
) } export default LayoutWrapper