feat: persist layout state across pages

This commit is contained in:
Jean-Philippe Sirois
2019-07-30 20:24:19 -04:00
parent a28452fbd7
commit 9d783afe87
11 changed files with 59 additions and 24 deletions
+18
View File
@@ -0,0 +1,18 @@
import React, { PropsWithChildren } from "react"
import { Layout } from "../components/Layout"
import { ResourcesLayout } from "../components/ResourcesLayout"
export default function BaseLayout({
children,
pageContext,
}: PropsWithChildren<{
pageContext: {
layout?: string
}
}>) {
if (pageContext.layout === "resources") {
return <ResourcesLayout>{children}</ResourcesLayout>
}
return <Layout>{children}</Layout>
}
+3 -4
View File
@@ -1,15 +1,14 @@
import React from "react"
import React, { Fragment } from "react"
import { Layout } from "../components/Layout"
import { SEO } from "../components/SEO"
function NotFoundPage() {
return (
<Layout>
<Fragment>
<SEO title="404: Not found" />
<h1>NOT FOUND</h1>
<p>You just hit a route that doesn&#39;t exist... the sadness.</p>
</Layout>
</Fragment>
)
}
+3 -4
View File
@@ -1,7 +1,6 @@
import React from "react"
import React, { Fragment } from "react"
import { graphql } from "gatsby"
import { Markdown } from "../components/Markdown"
import { Layout } from "../components/Layout"
import { MarkdownRemark, Query } from "../generated/graphql"
import { SEO } from "../components/SEO"
@@ -9,10 +8,10 @@ function AboutPage({ data }: ComponentQuery<{ md: MarkdownRemark }>) {
const { md } = data
return (
<Layout>
<Fragment>
<SEO title="About" />
<Markdown content={md.html!} />
</Layout>
</Fragment>
)
}
+3 -4
View File
@@ -1,19 +1,18 @@
import React from "react"
import React, { Fragment } from "react"
import { Link } from "gatsby"
import { Layout } from "../components/Layout"
import { SEO } from "../components/SEO"
function IndexPage() {
return (
<Layout>
<Fragment>
<SEO title="Home" />
<h1>Hi people</h1>
<p>Welcome to your new Gatsby site.</p>
<p>Now go build something great.</p>
<div style={{ maxWidth: `300px`, marginBottom: `1.45rem` }}></div>
<Link to="/page-2/">Go to page 2</Link>
</Layout>
</Fragment>
)
}
+3 -4
View File
@@ -1,14 +1,13 @@
import React from "react"
import React, { Fragment } from "react"
import { ResourcesLayout } from "../components/ResourcesLayout"
import { SEO } from "../components/SEO"
function ResourcesPage() {
return (
<ResourcesLayout>
<Fragment>
<SEO title="Resources" />
the resources
</ResourcesLayout>
</Fragment>
)
}
+3 -4
View File
@@ -1,7 +1,6 @@
import React from "react"
import React, { Fragment } from "react"
import { graphql } from "gatsby"
import { Markdown } from "../components/Markdown"
import { Layout } from "../components/Layout"
import { MarkdownRemark, Query } from "../generated/graphql"
import { SEO } from "../components/SEO"
@@ -9,10 +8,10 @@ function RulesPage({ data }: ComponentQuery<{ md: MarkdownRemark }>) {
const { md } = data
return (
<Layout>
<Fragment>
<SEO title="Rules" />
<Markdown content={md.html!} />
</Layout>
</Fragment>
)
}
+3 -4
View File
@@ -1,8 +1,7 @@
import React from "react"
import React, { Fragment } from "react"
import { graphql } from "gatsby"
import { Markdown } from "../components/Markdown"
import { SEO } from "../components/SEO"
import { ResourcesLayout } from "../components/ResourcesLayout"
import { ResourceHeader } from "../components/ResourceHeader"
// @todo maybe find alternative type for data
@@ -10,7 +9,7 @@ function LanguagePost({ data }: any) {
const { html, fields, frontmatter, timeToRead } = data.file.post
console.log(data)
return (
<ResourcesLayout>
<Fragment>
<SEO title={frontmatter.title} />
<ResourceHeader
title={frontmatter.title}
@@ -20,7 +19,7 @@ function LanguagePost({ data }: any) {
recommendedReading={frontmatter.recommended_reading}
/>
<Markdown content={html} />
</ResourcesLayout>
</Fragment>
)
}