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}
+
+
+
+
+
+
+ {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}
-
-
-
-
-
-
-
- {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}
-
-
-
-
-
-
-
- {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),
+ },
}}
>