keystone
Version:
Web Application Framework and Admin GUI / Content Management System built on Express.js and Mongoose
217 lines (203 loc) • 4.99 kB
JavaScript
import React from 'react';
import Container from '../../../../components/Container';
import { compose } from 'glamor';
import Link from 'gatsby-link';
import Header from '../../../../components/Header';
import { version } from '../../../../../package.json';
import theme from '../../../../theme';
import continental from '../../../../images/brand-continental.png';
import event_cinemas from '../../../../images/brand-event_cinemas.png';
import macmillan from '../../../../images/brand-macmillan.png';
import sony from '../../../../images/brand-sony.png';
import vodafone from '../../../../images/brand-vodafone.png';
import westpac from '../../../../images/brand-westpac.png';
export default () => (
<div className={compose(styles.wrapper)}>
<Container>
<Header />
<Intro />
<Projects />
</Container>
</div>
);
const Intro = () => (
<div className={compose(styles.content)}>
<h1 className={compose(styles.heading)}>Node.js CMS & web app platform</h1>
<p className={compose(styles.subHeading)}>
KeystoneJS is an open source framework for developing database-driven
websites, applications and APIs in Node.js. Built on Express and MongoDB.
</p>
<div className={compose(styles.buttons)}>
<Link
to="/getting-started"
className={compose(
styles.button,
styles.buttonPrimary
)}>
Get started
</Link>
<a
href="http://demo.keystonejs.com/"
className={compose(
styles.button,
styles.buttonSecondary
)}
target="_blank">
Try the demo
</a>
</div>
<LatestRelease />
</div>
);
const LatestRelease = () => (
<div className={compose(styles.release)}>
<span className={compose(styles.dot)} />
<span className={compose(styles.releaseMain)}>
Latest release: <strong>{version}</strong>
</span>
<span className={compose(styles.releaseSide)}>
<a
href="https://github.com/keystonejs/keystone/releases/"
style={{ color: 'white' }}
target="_blank">
See what's new
</a>
</span>
</div>
);
const Projects = () => (
<div className={compose(styles.projects)}>
<h6 className={compose(styles.projectsTitle)}>
Keystone powers websites, apps and APIs for:
</h6>
<div className={compose(styles.projectLogos)}>
<img src={continental} className={compose(styles.projectLogo)} />
<img src={westpac} className={compose(styles.projectLogo)} />
<img src={sony} className={compose(styles.projectLogo)} />
<img src={event_cinemas} className={compose(styles.projectLogo)} />
<img src={vodafone} className={compose(styles.projectLogo)} />
<img src={macmillan} className={compose(styles.projectLogo)} />
</div>
</div>
);
const styles = {
wrapper: {
background: 'linear-gradient(145deg, #00c1da, #003bca)',
color: 'white',
padding: '2rem 0 4em',
position: 'relative',
width: '100vw',
overflow: 'hidden',
},
content: {
padding: '6em 0 0',
textAlign: 'center',
margin: 'auto',
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
justifyContent: 'center',
width: '80%',
[theme.breakpoint.mediumDown]: {
width: '100%',
padding: '4rem 0rem 0',
},
},
heading: {
color: 'white',
fontSize: '3rem',
[theme.breakpoint.mediumDown]: {
fontSize: '2.5rem',
},
},
subHeading: {
fontSize: '1.25rem',
opacity: 0.8,
},
buttons: {
display: 'inline-flex',
marginTop: '1.25rem',
alignItems: 'center',
},
button: {
background: 'white',
color: theme.color.blue,
textDecoration: 'none',
fontSize: '1.25rem',
padding: '1rem 2rem',
borderRadius: 6,
transition: 'transform linear 120ms',
':hover': {
transform: 'scale(1.025)',
},
':active': {
opacity: 0.8,
},
},
buttonPrimary: {
textTransform: 'uppercase',
fontWeight: '500',
},
buttonSecondary: {
display: 'flex',
background: 'none',
color: 'white',
fontSize: '1.25rem',
border: '2px solid rgba(255,255,255,0.4)',
marginLeft: '1rem',
},
release: {
fontSize: '1rem',
padding: '0.625rem 1rem',
display: 'inline-flex',
alignItems: 'center',
justifyContent: 'center',
backgroundColor: 'rgba(0,0,0,0.1)',
borderRadius: 6,
margin: '3rem auto 0',
},
dot: {
width: 10,
height: 10,
borderRadius: '50%',
marginRight: '0.625rem',
backgroundColor: theme.color.green,
},
releaseSide: {
marginLeft: '1.25rem',
},
projects: {
margin: '3rem auto 0',
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
justifyContent: 'center',
},
projectsTitle: {
fontSize: '1rem',
fontWeight: '300',
color: 'rgba(255,255,255,0.75)',
},
projectLogos: {
display: 'flex',
alignSelf: 'stretch',
margin: '1rem 0 0',
alignItems: 'center',
justifyContent: 'space-between',
position: 'relative',
[theme.breakpoint.mediumDown]: {
flexWrap: 'wrap',
justifyContent: 'center',
},
},
projectLogo: {
[theme.breakpoint.smallOnly]: {
width: '28%',
margin: '2.5%',
},
[theme.breakpoint.mediumUp]: {
width: '20%',
margin: '2.5%',
},
},
};