/** * Copyright (c) 2013-present, Facebook, Inc. * * @emails react-core */ import ButtonLink from 'components/ButtonLink'; import Container from 'components/Container'; import Flex from 'components/Flex'; import CodeExample from 'components/CodeExample'; import PropTypes from 'prop-types'; import React, {Component} from 'react'; import {graphql} from 'gatsby'; import TitleAndMetaTags from 'components/TitleAndMetaTags'; import Layout from 'components/Layout'; import {colors, media, sharedStyles} from 'theme'; import loadScript from 'utils/loadScript'; import createOgUrl from 'utils/createOgUrl'; import {babelURL} from 'site-constants'; import ReactDOM from 'react-dom'; import logoWhiteSvg from 'icons/logo-white.svg'; class Home extends Component { state = { babelLoaded: false, }; componentDidMount() { loadScript(babelURL).then( () => { this.setState({ babelLoaded: true, }); }, error => { console.error('Babel failed to load.'); }, ); } render() { const {babelLoaded} = this.state; const {data, location} = this.props; const {codeExamples, examples, marketing} = data; const code = codeExamples.edges.reduce((lookup, {node}) => { lookup[node.mdAbsolutePath] = node; return lookup; }, {}); return (

React

A JavaScript library for building user interfaces

Get Started Take the Tutorial
{marketing.edges.map(({node: column}, index) => (

{column.frontmatter.title}

))}

{examples.edges.map(({node}, index) => { const snippet = code[node.fileAbsolutePath]; return (

{node.frontmatter.title}

); })}
Get Started Take the Tutorial
); } } Home.propTypes = { data: PropTypes.shape({ examples: PropTypes.object.isRequired, marketing: PropTypes.object.isRequired, }).isRequired, }; function renderExamplePlaceholder(containerId) { ReactDOM.render(

Loading code example...

, document.getElementById(containerId), ); } const CtaItem = ({children, primary = false}) => (
{children}
); export const pageQuery = graphql` query IndexMarkdown { codeExamples: allExampleCode { edges { node { id code mdAbsolutePath } } } examples: allMarkdownRemark( filter: {fileAbsolutePath: {regex: "//home/examples//"}} sort: {fields: [frontmatter___order], order: ASC} ) { edges { node { fileAbsolutePath fields { slug } frontmatter { title } html } } } marketing: allMarkdownRemark( filter: {fileAbsolutePath: {regex: "//home/marketing//"}} sort: {fields: [frontmatter___order], order: ASC} ) { edges { node { frontmatter { title } html } } } } `; export default Home; const sectionStyles = { marginTop: 20, marginBottom: 15, [media.greaterThan('medium')]: { marginTop: 60, marginBottom: 65, }, }; const headingStyles = { '&&': { marginBottom: 20, }, };