diff --git a/src/cms/preview-templates/AboutPagePreview.js b/src/cms/preview-templates/AboutPagePreview.js index 71b9d32bb..413a6da3e 100644 --- a/src/cms/preview-templates/AboutPagePreview.js +++ b/src/cms/preview-templates/AboutPagePreview.js @@ -1,4 +1,5 @@ import React from 'react' +import PropTypes from 'prop-types' import { AboutPageTemplate } from '../../templates/about-page' const AboutPagePreview = ({ entry, widgetFor }) => ( @@ -8,4 +9,11 @@ const AboutPagePreview = ({ entry, widgetFor }) => ( /> ) +AboutPagePreview.propTypes = { + entry: PropTypes.shape({ + getIn: PropTypes.func, + }), + widgetFor: PropTypes.func, +} + export default AboutPagePreview diff --git a/src/cms/preview-templates/BlogPostPreview.js b/src/cms/preview-templates/BlogPostPreview.js index f3be58bc0..ca3505a47 100644 --- a/src/cms/preview-templates/BlogPostPreview.js +++ b/src/cms/preview-templates/BlogPostPreview.js @@ -1,4 +1,5 @@ import React from 'react' +import PropTypes from 'prop-types' import { BlogPostTemplate } from '../../templates/blog-post' const BlogPostPreview = ({ entry, widgetFor }) => ( @@ -9,4 +10,11 @@ const BlogPostPreview = ({ entry, widgetFor }) => ( /> ) +BlogPostPreview.propTypes = { + entry: PropTypes.shape({ + getIn: PropTypes.func, + }), + widgetFor: PropTypes.func, +} + export default BlogPostPreview diff --git a/src/cms/preview-templates/ProductPagePreview.js b/src/cms/preview-templates/ProductPagePreview.js index 0173650b6..79700411f 100644 --- a/src/cms/preview-templates/ProductPagePreview.js +++ b/src/cms/preview-templates/ProductPagePreview.js @@ -1,4 +1,5 @@ import React from 'react' +import PropTypes from 'prop-types' import { ProductPageTemplate } from '../../templates/product-page' const ProductPagePreview = ({ entry, getAsset }) => { @@ -45,4 +46,11 @@ const ProductPagePreview = ({ entry, getAsset }) => { ) } +ProductPagePreview.propTypes = { + entry: PropTypes.shape({ + getIn: PropTypes.func, + }), + getAsset: PropTypes.func, +} + export default ProductPagePreview diff --git a/src/components/Content.js b/src/components/Content.js index 24ee52e46..289e57184 100644 --- a/src/components/Content.js +++ b/src/components/Content.js @@ -1,8 +1,19 @@ import React from 'react' +import PropTypes from 'prop-types' -export default ({ content, className }) => ( -
{content}
-) export const HTMLContent = ({ content, className }) => (
) + +const Content = ({ content, className }) => ( +
{content}
+) + +Content.propTypes = { + content: PropTypes.string, + className: PropTypes.string, +} + +HTMLContent.propTypes = Content.propTypes + +export default Content diff --git a/src/components/Features.js b/src/components/Features.js index 1b0778c74..15c19b272 100644 --- a/src/components/Features.js +++ b/src/components/Features.js @@ -1,4 +1,5 @@ import React from 'react' +import PropTypes from 'prop-types' const FeatureGrid = ({ gridItems }) => (
@@ -15,4 +16,13 @@ const FeatureGrid = ({ gridItems }) => (
) +FeatureGrid.propTypes = { + gridItems: PropTypes.arrayOf( + PropTypes.shape({ + image: PropTypes.string, + text: PropTypes.string, + }) + ), +} + export default FeatureGrid diff --git a/src/components/Pricing.js b/src/components/Pricing.js index df49b26fa..d07efb75b 100644 --- a/src/components/Pricing.js +++ b/src/components/Pricing.js @@ -1,6 +1,7 @@ import React from 'react' +import PropTypes from 'prop-types' -export default ({ data }) => ( +const Pricing = ({ data }) => (
{data.map(price => (
@@ -24,3 +25,14 @@ export default ({ data }) => ( ))}
) + +Pricing.propTypes = { + data: PropTypes.shape({ + plan: PropTypes.string, + price: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + description: PropTypes.string, + items: PropTypes.array, + }), +} + +export default Pricing diff --git a/src/components/Testimonials.js b/src/components/Testimonials.js index 171303de8..05b15c4f1 100644 --- a/src/components/Testimonials.js +++ b/src/components/Testimonials.js @@ -1,6 +1,7 @@ import React from 'react' +import PropTypes from 'prop-types' -export default ({ testimonials }) => ( +const Testimonials = ({ testimonials }) => (
{testimonials.map(testimonial => (
@@ -13,3 +14,14 @@ export default ({ testimonials }) => ( ))}
) + +Testimonials.propTypes = { + testimonials: PropTypes.arrayOf( + PropTypes.shape({ + quote: PropTypes.string, + author: PropTypes.string, + }) + ), +} + +export default Testimonials diff --git a/src/pages/index.js b/src/pages/index.js index f519327a3..512870e9f 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -1,4 +1,5 @@ import React from 'react' +import PropTypes from 'prop-types' import Link from 'gatsby-link' export default class IndexPage extends React.Component { @@ -43,6 +44,14 @@ export default class IndexPage extends React.Component { } } +IndexPage.propTypes = { + data: PropTypes.shape({ + allMarkdownRemark: PropTypes.shape({ + edges: PropTypes.array, + }), + }), +} + export const pageQuery = graphql` query IndexQuery { allMarkdownRemark(sort: { order: DESC, fields: [frontmatter___date] }) { diff --git a/src/templates/about-page.js b/src/templates/about-page.js index b36f822cf..6db9aa7f9 100644 --- a/src/templates/about-page.js +++ b/src/templates/about-page.js @@ -1,4 +1,5 @@ import React from 'react' +import PropTypes from 'prop-types' import Content, { HTMLContent } from '../components/Content' export const AboutPageTemplate = ({ title, content, contentComponent }) => { @@ -22,7 +23,13 @@ export const AboutPageTemplate = ({ title, content, contentComponent }) => { ) } -export default ({ data }) => { +AboutPageTemplate.propTypes = { + title: PropTypes.string.isRequired, + content: PropTypes.string, + contentComponent: PropTypes.instanceOf(React.Component), +} + +const AboutPage = ({ data }) => { const { markdownRemark: post } = data return ( @@ -34,6 +41,12 @@ export default ({ data }) => { ) } +AboutPage.propTypes = { + data: PropTypes.object.isRequired, +} + +export default AboutPage + export const aboutPageQuery = graphql` query AboutPage($id: String!) { markdownRemark(id: { eq: $id }) { diff --git a/src/templates/blog-post.js b/src/templates/blog-post.js index f90af05c0..3adf19ecb 100644 --- a/src/templates/blog-post.js +++ b/src/templates/blog-post.js @@ -1,4 +1,5 @@ import React from 'react' +import PropTypes from 'prop-types' import Helmet from 'react-helmet' import Content, { HTMLContent } from '../components/Content' @@ -29,8 +30,16 @@ export const BlogPostTemplate = ({ ) } -export default props => { - const { markdownRemark: post } = props.data +BlogPostTemplate.propTypes = { + content: PropTypes.string.isRequired, + contentComponent: PropTypes.instanceOf(React.Component), + description: PropTypes.string, + title: PropTypes.string, + helmet: PropTypes.instanceOf(Helmet), +} + +const BlogPost = ({ data }) => { + const { markdownRemark: post } = data return ( { ) } +BlogPost.propTypes = { + data: PropTypes.shape({ + data: PropTypes.object, + }), +} + +export default BlogPost + export const pageQuery = graphql` query BlogPostByID($id: String!) { markdownRemark(id: { eq: $id }) { diff --git a/src/templates/product-page.js b/src/templates/product-page.js index 3e5ac9d1a..d556fbba4 100644 --- a/src/templates/product-page.js +++ b/src/templates/product-page.js @@ -1,4 +1,5 @@ import React from 'react' +import PropTypes from 'prop-types' import Features from '../components/Features' import Testimonials from '../components/Testimonials' import Pricing from '../components/Pricing' @@ -104,7 +105,31 @@ export const ProductPageTemplate = ({ ) -export default ({ data }) => { +ProductPageTemplate.propTypes = { + image: PropTypes.string, + title: PropTypes.string, + heading: PropTypes.string, + description: PropTypes.string, + intro: PropTypes.shape({ + blurbs: PropTypes.array, + }), + main: PropTypes.shape({ + heading: PropTypes.string, + description: PropTypes.string, + image1: PropTypes.object, + image2: PropTypes.object, + image3: PropTypes.object, + }), + testimonials: PropTypes.array, + fullImage: PropTypes.string, + pricing: PropTypes.shape({ + heading: PropTypes.string, + description: PropTypes.string, + plans: PropTypes.array, + }), +} + +const ProductPage = ({ data }) => { const { frontmatter } = data.markdownRemark return ( @@ -122,6 +147,16 @@ export default ({ data }) => { ) } +ProductPage.propTypes = { + data: PropTypes.shape({ + markdownRemark: PropTypes.shape({ + frontmatter: PropTypes.object, + }), + }), +} + +export default ProductPage + export const productPageQuery = graphql` query ProductPage($id: String!) { markdownRemark(id: { eq: $id }) {