src/pages/blog/all.html.js (93 lines of code) (raw):

/** * Copyright (c) 2013-present, Facebook, Inc. * * @emails react-core * @flow */ import {graphql, Link} from 'gatsby'; import Layout from 'components/Layout'; import Container from 'components/Container'; import Header from 'components/Header'; import TitleAndMetaTags from 'components/TitleAndMetaTags'; import React from 'react'; import {urlRoot} from 'site-constants'; import {colors, media, sharedStyles} from 'theme'; import toCommaSeparatedList from 'utils/toCommaSeparatedList'; import MetaTitle from 'templates/components/MetaTitle'; import type {allMarkdownRemarkData} from 'types'; type Props = { data: allMarkdownRemarkData, location: Location, }; const AllBlogPosts = ({data, location}: Props) => ( <Layout location={location}> <Container> <div css={sharedStyles.articleLayout.container}> <div css={sharedStyles.articleLayout.content}> <Header>All Posts</Header> <TitleAndMetaTags canonicalUrl={`${urlRoot}/blog/all.html`} title="React - All Posts" /> <ul css={{ display: 'flex', flexWrap: 'wrap', marginLeft: -40, }}> {data.allMarkdownRemark.edges.map(({node}) => ( <li css={{ paddingLeft: 40, paddingTop: 40, borderTop: '1px dotted #ececec', paddingBottom: 40, width: '100%', [media.size('medium')]: { width: '50%', }, [media.greaterThan('large')]: { width: '33.33%', }, }} key={node.fields.slug}> <h2 css={{ fontSize: 24, color: colors.dark, lineHeight: 1.3, fontWeight: 700, }}> <Link css={{ borderBottom: '1px solid #ececec', ':hover': { borderBottomColor: colors.black, }, }} key={node.fields.slug} to={node.fields.slug}> {node.frontmatter.title} </Link> </h2> <MetaTitle>{node.fields.date}</MetaTitle> {node.frontmatter.author ? ( <div css={{ color: colors.subtle, marginTop: -5, }}> by{' '} {toCommaSeparatedList(node.frontmatter.author, author => ( <span key={author.frontmatter.name}> {author.frontmatter.name} </span> ))} </div> ) : null} </li> ))} </ul> </div> </div> </Container> </Layout> ); export const pageQuery = graphql` query AllBlogPostsPageQuery { allMarkdownRemark( filter: {fileAbsolutePath: {regex: "/blog/"}} sort: {fields: [fields___date], order: DESC} ) { edges { node { frontmatter { title author { frontmatter { name url } } } fields { date(formatString: "MMMM DD, YYYY") slug } } } } } `; export default AllBlogPosts;