diff --git a/www/src/components/blog-post-preview-item.js b/www/src/components/blog-post-preview-item.js new file mode 100644 index 0000000000000..5c84ffc60dc07 --- /dev/null +++ b/www/src/components/blog-post-preview-item.js @@ -0,0 +1,95 @@ +import React from "react" +import Link from "gatsby-link" + +import typography, { rhythm, scale } from "../utils/typography" +import presets from "../utils/presets" + +class BlogPostPreviewItem extends React.Component { + render() { + const post = this.props.post + const avatar = + post.frontmatter.author.avatar.childImageSharp.responsiveResolution + + return ( +
+ +

+ {post.frontmatter.title} +

+

+ {post.frontmatter.excerpt ? post.frontmatter.excerpt : post.excerpt} +

+ +
+ {`Avatar +
+
+ {post.frontmatter.author.id} +
+
+ {post.frontmatter.date} +
+
+
+
+ ) + } +} + +export default BlogPostPreviewItem + +export const blogPostPreviewFragment = graphql` + fragment BlogPostPreview_item on MarkdownRemark { + excerpt + fields { + slug + } + frontmatter { + excerpt + title + date(formatString: "DD MMMM, YYYY") + author { + id + avatar { + childImageSharp { + responsiveResolution(width: 36, height: 36) { + width + height + src + srcSet + } + } + } + } + } + } +` diff --git a/www/src/pages/blog/index.js b/www/src/pages/blog/index.js index b3cdea9eb4c7a..3bcf2e3afdc05 100644 --- a/www/src/pages/blog/index.js +++ b/www/src/pages/blog/index.js @@ -1,89 +1,17 @@ import React from "react" -import Link from "gatsby-link" -import colors from "../../utils/colors" - -import { rhythm, scale } from "../../utils/typography" -import presets from "../../utils/presets" import Container from "../../components/container" +import BlogPostPreviewItem from "../../components/blog-post-preview-item" class BlogPostsIndex extends React.Component { render() { - const blogPosts = this.props.data.allMarkdownRemark.edges.map( - edge => edge.node - ) + const { allMarkdownRemark } = this.props.data + return (

Blog

- {blogPosts.map(post => { - const avatar = - post.frontmatter.author.avatar.childImageSharp.responsiveResolution - return ( -
- -

- {post.frontmatter.title} -

-

- {post.frontmatter.excerpt - ? post.frontmatter.excerpt - : post.excerpt} -

- -
- {`Avatar -
-
- - {post.frontmatter.author.id} - -
-
- - - {post.frontmatter.date} - - -
-
-
-
- ) - })} + {allMarkdownRemark.edges.map(({ node }) => + + )}
) } @@ -102,28 +30,7 @@ export const pageQuery = graphql` ) { edges { node { - excerpt - fields { - slug - } - frontmatter { - excerpt - title - date(formatString: "DD MMMM, YYYY") - author { - id - avatar { - childImageSharp { - responsiveResolution(width: 35, height: 35) { - width - height - src - srcSet - } - } - } - } - } + ...BlogPostPreview_item } } } diff --git a/www/src/pages/index.js b/www/src/pages/index.js index 45d9107796c53..bbfa9cb2c3000 100644 --- a/www/src/pages/index.js +++ b/www/src/pages/index.js @@ -2,6 +2,7 @@ import React from "react" import Link from "gatsby-link" import { rhythm, scale, options } from "../utils/typography" import Container from "../components/container" +import BlogPostPreviewItem from "../components/blog-post-preview-item" import presets from "../utils/presets" import colors from "../utils/colors" @@ -45,9 +46,7 @@ const ctaButtonStyles = { const IndexRoute = React.createClass({ render() { console.log(this.props) - const blogPosts = this.props.data.allMarkdownRemark.edges.map( - edge => edge.node - ) + const blogPosts = this.props.data.allMarkdownRemark return (
Latest from the Gatsby blog - {blogPosts.map(post => { - const avatar = - post.frontmatter.author.avatar.childImageSharp - .responsiveResolution - return ( -
- -

- {post.frontmatter.title} -

-

- {post.frontmatter.excerpt - ? post.frontmatter.excerpt - : post.excerpt} -

- -
- {`Avatar -
-
- - {post.frontmatter.author.id} - -
-
- - - {post.frontmatter.date} - - -
-
-
-
- ) - })} + {blogPosts.edges.map(({ node }) => + + )}
@@ -386,28 +317,7 @@ export const pageQuery = graphql` ) { edges { node { - excerpt - fields { - slug - } - frontmatter { - excerpt - title - date(formatString: "DD MMMM, YYYY") - author { - id - avatar { - childImageSharp { - responsiveResolution(width: 35, height: 35) { - width - height - src - srcSet - } - } - } - } - } + ...BlogPostPreview_item } } } diff --git a/www/src/templates/template-blog-post.js b/www/src/templates/template-blog-post.js index dcc4c89a9a25d..4ee1b7bcdfa3e 100644 --- a/www/src/templates/template-blog-post.js +++ b/www/src/templates/template-blog-post.js @@ -97,6 +97,10 @@ const BlogPostTemplate = React.createClass({ display: `flex`, marginTop: rhythm(-1 / 4), marginBottom: rhythm(1), + [presets.Tablet]: { + marginTop: rhythm(1 / 2), + marginBottom: rhythm(2), + }, }} >