Files
yoga/website/src/pages/index.js
Emil Sjölander 9b3104577c Tweak playground on landing page
Reviewed By: danielbuechele

Differential Revision: D7009909

fbshipit-source-id: a2734466efed6b9dc21f047be011b427bf67f830
2018-02-16 07:22:05 -08:00

192 lines
5.2 KiB
JavaScript

/**
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @flow
* @format
*/
import {Button} from 'antd';
import React from 'react';
import Page from '../components/Page';
import Padded from '../components/Padded';
import Playground from '../components/Playground';
import {Row, Col} from 'antd';
import './index.css';
import ReactNativeLogo from './logos/reactnative.png';
import LithoLogo from './logos/litho.png';
import ComponentKitLogo from './logos/componentkit.png';
import Link from 'gatsby-link';
import Footer from '../components/Footer';
const playgroundInitialState = {
"width":500,
"height":500,
"alignItems":1,
"padding":{
"top":"20",
"right":"20",
"bottom":"20",
"left":"20"
},
"children":[
{
"width":100,
"height":100,
"minWidth":null,
"maxWidth":null,
"minHeight":null,
"maxHeight":null
},
{
"width":100,
"height":100,
"margin":{
"right":"20",
"left":"20"
},
"flexGrow":"1",
"minWidth":null,
"maxWidth":null,
"minHeight":null,
"maxHeight":null
},
{
"width":100,
"height":100,
"minWidth":null,
"maxWidth":null,
"minHeight":null,
"maxHeight":null
}
],
"minWidth":null,
"maxWidth":null,
"minHeight":null,
"maxHeight":null
};
const HeroSection = () => (
<Padded>
<Row className="hero">
<Col md={12} sm={24} xs={24}>
<h3>INTRODUCING</h3>
<h1>
Flexible Layouts <br /> with Yoga
</h1>
<p>
Build flexible layouts on any platform with a highly optimized
open source layout engine designed with speed, size, and ease
of use in mind.
</p>
<Link to="/docs">
<Button type="primary" className="button">
LEARN MORE
</Button>
</Link>
</Col>
<Col md={12} sm={0} xs={0}>
<div className="blueprint blueprint-container">
<div className="blueprint blueprint-avatar" />
<div className="blueprint blueprint-title" />
<div className="blueprint blueprint-subtitle" />
<div className="blueprint blueprint-content" />
</div>
</Col>
</Row>
</Padded>
);
const PlaygroundSection = () => (
<Row>
<Col lg={24} md={0} sm={0} xs={0}>
<Playground selectedNodePath={[]} showGuides={true} height={601} layoutDefinition={playgroundInitialState} />
</Col>
</Row>
);
const AboutSectionOne = () => (
<Padded className="about-section">
<Row>
<Col xl={16} lg={16} md={24} sm={24} xs={24}>
<h1>Open Source Adoption</h1>
<p>
Yoga already powers widely used open source frameworks.
It enables these frameworks to offer a simple and intuitive
layout API that allows for engineers to collaborate more easily
across platforms. Yoga has unlocked exciting features such as
calculating layouts off of the main thread to help ensure
smooth UI performance.
</p>
</Col>
</Row>
<div className="logo-group">
<a href="https://fblitho.com" target="_blank" className="logo">
<img src={LithoLogo} />
<h3>Litho</h3>
</a>
<a href="https://componentkit.org" target="_blank" className="logo">
<img src={ComponentKitLogo} />
<h3>ComponentKit</h3>
</a>
<a
href="http://facebook.github.io/react-native/"
target="_blank"
className="logo">
<img src={ReactNativeLogo} />
<h3>React Native</h3>
</a>
</div>
</Padded>
);
const AboutSectionTwo = () => (
<Padded className="about-section">
<Row>
<Col xl={16} lg={16} md={24} sm={24} xs={24}>
<h1>Why You May Consider Yoga</h1>
<h3>PERFORMANCE</h3>
<p>
Yoga was built to be fast and performance will always be one of Yoga's
primary goals. For a layout engine to be able to power
any range of applications, it needs to be fast and never stand in the
way of a fluid user experience.
</p>
<h3>CROSS PLATFORM</h3>
<p>
Yoga is built with cross platform in mind. To ensure Yoga can be used
anywhere, it was written in portable C/C++ and has a low number of
dependencies and small binary size. This means Yoga can be used on
iOS and Android, sharing knowledge, and potentially code, between platforms.
</p>
<h3>EASY TO LEARN</h3>
<p>
Yoga is easy to pick up and learn. The interactive documentation pages
and a fully fledged layout editor makes it easy to play and learn all
the features. If used with any of the major UI frameworks the layout
editor even provides code generation.
</p>
</Col>
</Row>
</Padded>
);
export default () => (
<Page className="landing-page">
<HeroSection />
<PlaygroundSection />
<AboutSectionOne />
<hr />
<AboutSectionTwo />
<Footer />
</Page>
);