diff --git a/packages/freesewing.dev/components/layouts/bare.js b/packages/freesewing.dev/components/layouts/bare.js
new file mode 100644
index 00000000000..21ee80473ba
--- /dev/null
+++ b/packages/freesewing.dev/components/layouts/bare.js
@@ -0,0 +1,66 @@
+import React from 'react'
+import { useRouter } from 'next/router'
+import Link from 'next/link'
+// Shared components
+import Logo from 'shared/components/logos/freesewing.js'
+import Aside from 'shared/components/navigation/aside'
+import get from 'lodash.get'
+
+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 DefaultLayout = ({ app, title=false, children=[] }) => {
+ const router = useRouter()
+ const slug = router.asPath.slice(1)
+
+ return [
+ ,
+ children
+ ]
+}
+
+export default DefaultLayout
diff --git a/packages/freesewing.dev/components/layouts/docs.js b/packages/freesewing.dev/components/layouts/docs.js
index 9f0c70e2748..0c5955274a3 100644
--- a/packages/freesewing.dev/components/layouts/docs.js
+++ b/packages/freesewing.dev/components/layouts/docs.js
@@ -1,17 +1,10 @@
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 Aside from 'shared/components/navigation/aside'
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}
@@ -60,89 +53,24 @@ const Breadcrumbs = ({ app, slug=false, title }) => {
)
}
-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 DefaultLayout = ({ app, title=false, children=[] }) => {
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}
+
+
+
+
+ {title && (
+
+
+
-
-
+ )}
+ {children}
-
-
- {!noSearch && search && (
- <>
-
-
-
-
- >
- )}
-
+
)
}
diff --git a/packages/freesewing.dev/components/wrappers/layout.js b/packages/freesewing.dev/components/wrappers/layout.js
new file mode 100644
index 00000000000..b928604121f
--- /dev/null
+++ b/packages/freesewing.dev/components/wrappers/layout.js
@@ -0,0 +1,115 @@
+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 (
+