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' export 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

} export 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=[] }) => { const startNavigation = () => { app.startLoading() // Force close of menu on mobile if it is open if (app.primaryMenu) app.setPrimaryMenu(false) } const router = useRouter() router.events?.on('routeChangeStart', startNavigation) router.events?.on('routeChangeComplete', app.stopLoading) const slug = router.asPath.slice(1) return (
{children}
) } export default LayoutWrapper