site/pages/index.js
Lachlan Campbell dfdd2a9c91 Launch Elon announcement (#17)
* Begin Elon page

* Get content on Elon page

* Add content

* First pass

* Small change

* Light second pass

* Round 3 updates

* Small wording change

* Do another pass

* Remove biography paragraph

* Grammar

* Wording

* Break out sentence into own paragraph

* Grammar

* More small changes

* Fix small issue

* More small adjustments

* Final small changes for this pass

* Link Hack Club Bank

* Add preface

* Clarify that I had skillz

* Add frank.ly

* Clarify how money is spent in Elon text

* Add social card to Elon page

* Add Zach's signature

* Begin Elon page

* Get content on Elon page

* Add content

* First pass

* Small change

* Light second pass

* Round 3 updates

* Small wording change

* Do another pass

* Remove biography paragraph

* Grammar

* Wording

* Break out sentence into own paragraph

* Grammar

* More small changes

* Fix small issue

* More small adjustments

* Final small changes for this pass

* Link Hack Club Bank

* Add preface

* Clarify that I had skillz

* Add frank.ly

* Clarify how money is spent in Elon text

* Add social card to Elon page

* Add Zach's signature

* Update to latest

* Add my name under signature

* Upgrade dependencies

* Add sparkles

* Continue editing Elon page

* Improve badges

* Rebase

* Update card

* Pass of latest copy

* Small wording improvements

* Switch to @hackclub/meta 1.0.0

* Improve readability

* Add homepage announcement

* Fix meta tags on Elon page

Co-authored-by: Zach Latta <zach@zachlatta.com>
Co-authored-by: Christina Asquith <60162904+christinaasquith@users.noreply.github.com>
2020-05-20 12:48:52 -04:00

550 lines
16 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {
Box,
Card,
Container,
Grid,
Heading,
Image,
Link,
Text
} from 'theme-ui'
import { keyframes } from '@emotion/core'
import { Slide } from 'react-reveal'
import NextLink from 'next/link'
import Head from 'next/head'
import Meta from '@hackclub/meta'
import Nav from '../components/nav'
import ForceTheme from '../components/force-theme'
import Footer from '../components/footer'
import Announcement from '../components/home/announcement'
import SlackEvents from '../components/home/slack-events'
import JoinForm from '../components/home/join-form'
// import { timeSince } from '../lib/dates'
const fade = keyframes({ from: { opacity: 0 }, to: { opacity: 1 } })
const slide = keyframes({
from: { transform: 'translateY(-200%)' },
to: { transform: 'translateY(0)' }
})
const CardLink = props => (
<Link
sx={{
mt: 3,
display: 'block',
fontSize: 3,
color: 'red',
lineHeight: 'subheading',
textDecoration: 'underline',
textDecorationStyle: 'wavy',
':after': { content: '""', pl: 1 },
...props.sx
}}
{...props}
/>
)
const Event = ({ title, month, day }) => (
<Grid columns="auto 1fr" gap={3} sx={{ alignItems: 'center' }}>
<Box
sx={{
borderRadius: 'default',
lineHeight: 'caption',
textAlign: 'center',
border: '3px solid',
borderColor: 'primary',
width: 60
}}
>
<Box
sx={{
bg: 'primary',
color: 'white',
letterSpacing: 'headline',
fontWeight: 'bold',
fontSize: 0
}}
>
{month}
</Box>
<Box sx={{ color: 'white', fontSize: [2, 3] }}>{day}</Box>
</Box>
<Text as="p" variant="subheadline" sx={{ my: 0 }}>
{title}
</Text>
</Grid>
)
const Window = ({ title, children, ...props }) => (
<Card
sx={{
p: [0, 0],
boxShadow: 'elevated',
lineHeight: 0,
border: '1px solid',
borderColor: 'black'
}}
>
<Box
sx={{
bg: 'muted',
color: 'smoke',
backgroundImage: theme =>
`linear-gradient(${theme.colors.darkless}, ${theme.colors.darker})`,
p: 2,
lineHeight: 'body',
textAlign: 'center'
}}
>
{title}
</Box>
{children}
</Card>
)
export default () => (
<>
<Head>
<Meta
description="Hack Club is a global nonprofit network of high school makers & student-led coding clubs where young people build the agency, the network, & the technical talent to think big & do big things in the world."
image="https://cdn.glitch.com/a7605379-7582-4aac-8f44-45bbdfca0cfa%2Fhackclub.jpg?v=1587740807714"
/>
</Head>
<ForceTheme theme="light" />
<Nav />
<Box
as="header"
sx={{
bg: 'dark',
pt: [5, 6],
display: 'flex',
flexDirection: 'column',
textAlign: 'center',
backgroundImage:
'linear-gradient(rgba(0,0,0,0.125),rgba(0,0,0,0.375)), url(https://cdn.glitch.com/a7605379-7582-4aac-8f44-45bbdfca0cfa%2F2020-05-16_screenshot.jpeg?v=1589633885855)',
backgroundPosition: 'center',
backgroundSize: 'cover',
'@media (hover: hover)': { backgroundAttachment: 'fixed' }
}}
>
<Container pt={[3, 4]} pb={[5, 6]}>
<NextLink href="/elon" passHref>
<Announcement
copy="Elon Musk donates $500K"
caption="Read the open letter" // (${timeSince('2020-05-14T20:00:00.000Z', true)})`}
href="/elon"
color="green"
/>
</NextLink>
<Heading
as="h1"
variant="title"
sx={{
mt: 0,
fontSize: [6, 8, 9],
color: 'white',
lineHeight: [0.875, 0.8],
position: 'relative',
zIndex: 1,
textShadow: 'text',
animation: `${slide} 1s ease-in-out`,
'@media (prefers-reduced-motion: reduce)': { animation: 'none' }
}}
>
Stuck home? Join{' '}
<Text
as="span"
sx={{
WebkitTextStroke: theme => theme.colors.white,
WebkitTextStrokeWidth: ['1px', '3px'],
WebkitTextFillColor: theme => theme.colors.red
}}
>
Hack Club
</Text>
.
</Heading>
</Container>
<Box as="section" bg="dark" variant="cards.translucentDark" py={4}>
<Container sx={{ maxWidth: [null, 'copyPlus'] }}>
<Text
as="p"
variant="subtitle"
sx={{
my: 0,
fontSize: [2, 3],
color: 'white',
lineHeight: 'caption',
a: { color: 'inherit' }
}}
>
Join the global <Text as="strong">Hack Club</Text> high school
community chatroom, weekly&nbsp;AMAs,{' '}
<Link href="https://hackclub.com/clubs/">online clubs</Link>
{' & '}
<Link href="https://hackathons.hackclub.com/">
hackathons
</Link>. <Text as="strong">Youve found your home.</Text>
</Text>
</Container>
</Box>
</Box>
<Box
as="section"
sx={{
bg: 'white',
color: 'black',
textAlign: 'center',
py: [4, 5]
}}
>
<Container sx={{ maxWidth: [null, 'copyPlus', 'copyUltra'] }}>
<Heading
as="h2"
variant="headline"
sx={{
fontSize: [4, 4],
color: 'blue',
textTransform: 'uppercase',
letterSpacing: 'headline'
}}
>
During COVID
</Heading>
<Heading
as="h2"
variant="title"
sx={{ fontSize: [5, 6], mb: 4, strong: { color: 'red' } }}
>
Were making <strong>Hack Club</strong> the best place on the internet
to be a teenager into technology.
</Heading>
{/* <Button as="a" href="#join" variant="cta">
Join our Slack
</Button> */}
</Container>
</Box>
<Box as="section" sx={{ bg: 'dark', color: 'white', py: [4, 5, 6] }}>
<Grid
variant="layout.container"
columns={[null, '1fr 2fr']}
gap={[4, 5]}
sx={{ alignItems: 'end', pb: [4, 5] }}
>
<Box as="aside">
<Heading as="h2" variant="headline">
<Text as="span" variant="title">
Weekly&nbsp;AMAs
</Text>{' '}
with the most interesting people in tech.
</Heading>
<CardLink href="https://www.youtube.com/watch?v=riru9OzScwk&t=545s">
Watch our Elon Musk AMA
</CardLink>
<Grid columns={[2, 'initial']} gap={3} mt={4}>
<Event month="April" day={24} title="Elon Musk" />
<Event month="April" day={30} title="Jack Conte" />
<Event month="May" day={7} title="Simone Giertz" />
<Event month="May" day={14} title="Guillermo Rauch" />
</Grid>
</Box>
<Slide up>
<Window title="Weekly Hack Club AMAs">
<Box
as="video"
src="https://cdn.glitch.com/a7605379-7582-4aac-8f44-45bbdfca0cfa%2Fchris-cox-ama-2.mov?v=1587697462677"
muted
autoPlay
playsInline
loop
sx={{
width: '100%',
borderBottomLeftRadius: 'default',
borderBottomRightRadius: 'default'
}}
>
Clip from our Chris Cox AMA
</Box>
</Window>
</Slide>
</Grid>
<Grid
variant="layout.container"
columns={[null, '3fr 2fr 2fr']}
gap={[4, 5]}
sx={{ alignItems: 'center' }}
>
<Slide up>
<Window title="Student Workshops">
<Image
src="https://cdn.glitch.com/a7605379-7582-4aac-8f44-45bbdfca0cfa%2Fworkshops.jpg?v=1587692925751"
alt="Students going wild on a Zoom call"
sx={{
width: '100%',
borderBottomLeftRadius: 'default',
borderBottomRightRadius: 'default'
}}
/>
</Window>
</Slide>
<Box sx={{ gridRow: ['1', 'initial'] }}>
<Heading as="h3" variant="headline" my={0}>
Student-run workshops every week on coding, cooking, drawing,
everything.
</Heading>
<CardLink href="https://youtu.be/Xy_owni1ZVk">
Watch a recent live-code
</CardLink>
</Box>
<div>
<Heading as="h3" variant="headline" my={0}>
Sharpen your coding skills in online hackathons like the{' '}
<Link
href="https://covidglobalhackathon.com"
sx={{
color: '#0f65ff',
textDecoration: 'none',
':focus,:hover': {
WebkitTextStroke: 'currentColor',
WebkitTextStrokeWidth: '1px',
WebkitTextFillColor: theme => theme.colors.white,
textShadow: '0 0 4px currentColor'
}
}}
>
COVID-19 Global Hackathon
</Link>
.
</Heading>
<CardLink href="https://hackathons.hackclub.com/">
See upcoming hackathons
</CardLink>
</div>
</Grid>
</Box>
<Box
as="section"
sx={{
backgroundImage: [
'url(https://cdn.glitch.com/a7605379-7582-4aac-8f44-45bbdfca0cfa%2Fflagship_4-sm.jpg?v=1587739393628)',
'url(https://cdn.glitch.com/a7605379-7582-4aac-8f44-45bbdfca0cfa%2Fflagship_4.jpg?v=1587739446618)'
],
backgroundPosition: 'top center',
backgroundSize: 'cover',
'@media (hover: hover)': { backgroundAttachment: 'fixed' },
pt: [7, 8]
}}
>
<Box
sx={{
position: 'relative',
backgroundColor: 'rgba(255,255,255,0.875)',
'@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none)': {
backgroundColor: 'rgba(255,255,255,0.5)',
backdropFilter: 'blur(20px) saturate(180%)',
WebkitBackdropFilter: 'blur(20px) saturate(180%)'
},
':after': {
content: '""',
position: 'absolute',
bottom: 0,
left: 0,
right: 0,
display: 'block',
height: 256,
backgroundImage: theme =>
`linear-gradient(rgba(255,255,255,0), ${theme.colors.white})`
},
py: [4, 5]
}}
>
<Container sx={{ position: 'relative', zIndex: 2 }}>
<Heading
as="h2"
variant="title"
sx={{
color: 'black',
maxWidth: 'copyUltra'
}}
>
A{' '}
<Text as="span" color="red">
24/7
</Text>{' '}
high schooler community. Get coding help, share projects, meet your
closest friends.
</Heading>
<Text as="p" sx={{ maxWidth: 'copy', fontSize: [2, 3], mt: 3 }}>
Have a coding question? Looking for project feedback? Youll find
some fabulous people to talk to in our global Slack (Discord-style
online groupchat) with 8,000+ members, active at all hours.
</Text>
</Container>
</Box>
</Box>
<Box
as="section"
sx={{ bg: 'white', color: 'black', position: 'relative', pb: [4, 5] }}
>
<Container>
<Grid
columns={[2, 15]}
gap={3}
sx={{
py: [3, 4],
h3: { my: 0 },
'> div': {
px: [2, 3],
py: [4, 4],
display: 'flex',
flexDirection: 'column',
gridColumn: ['span 1', 'span 3'],
position: 'relative'
},
h3: {
variant: 'text.headline',
color: 'white',
lineHeight: 'title',
my: 0
}
}}
>
<Box
as="aside"
sx={{
gridRow: [null, 'span 2'],
gridColumn: ['span 2', 'span 3']
}}
>
<Heading
as="h2"
variant="subheadline"
sx={{
mt: 0,
color: 'red',
textTransform: 'uppercase',
letterSpacing: 'headline'
}}
>
Live from our&nbsp;Slack
</Heading>
<SlackEvents />
</Box>
<Card
as="aside"
sx={{
gridColumn: ['span 2', 'span 6'],
bg: 'blue',
backgroundImage: theme => `radial-gradient(
ellipse farthest-corner at top left, ${theme.colors.cyan}, ${theme.colors.blue})`,
p: { color: 'smoke', fontSize: 2, mt: 1, lineHeight: 'caption' }
}}
>
<Heading as="h3" variant="headline">
#ship
</Heading>
<Text as="p">Share your latest projects & get feedback</Text>
</Card>
<Card
as="aside"
sx={{
gridColumn: ['span 2', 'span 6'],
bg: 'dark',
backgroundImage:
'url(https://cdn.glitch.com/a7605379-7582-4aac-8f44-45bbdfca0cfa%2Fnight.jpg?v=1587692925213)',
backgroundPosition: 'top center',
backgroundSize: 'cover',
p: { color: 'smoke', fontSize: 2, mt: 1, lineHeight: 'caption' }
}}
>
<Heading as="h3" variant="headline">
#hack-night
</Heading>
<Text as="p">Biweekly mini-hackathon & video call hangout</Text>
</Card>
<Card bg="cyan">
<h3>#lounge</h3>
</Card>
<Card bg="orange">
<h3>#support</h3>
</Card>
<Card bg="blue">
<h3>#code</h3>
</Card>
<Card
bg="red"
sx={{
backgroundImage: ({ colors }) =>
`linear-gradient(${colors.red} 0%, ${colors.red} 16.6666%, ${colors.orange} 16.6666%, ${colors.orange} 33.333%, ${colors.yellow} 33.333%, ${colors.yellow} 50%, ${colors.green} 50%, ${colors.green} 66.6666%, ${colors.blue} 66.6666%, ${colors.blue} 83.3333%, #8067C3 83.3333%, #8067C3 100%)`
}}
>
<h3>#lgbtq</h3>
</Card>
<Card bg="dark">
<h3>#gamedev</h3>
</Card>
<Card bg="red">
<h3>#design</h3>
</Card>
<Card bg="green">
<h3>
#photo-
<br />
graphy
</h3>
</Card>
<Card
bg="yellow"
sx={{
backgroundImage:
'url(https://cdn.glitch.com/a7605379-7582-4aac-8f44-45bbdfca0cfa%2FImage%20from%20iOS%202.jpg?v=1587695033603)',
backgroundSize: '100%',
backgroundPosition: 'center',
textShadow: 'text'
}}
>
<h3>#dogs</h3>
</Card>
<Card bg="green">
<h3>#music</h3>
</Card>
</Grid>
</Container>
</Box>
<Box
as="section"
id="slack"
sx={{
bg: 'cyan',
backgroundImage: theme => theme.util.gradient('yellow', 'orange'),
color: 'white',
py: [5, 6]
}}
>
<Container
sx={{ textAlign: 'center', maxWidth: [null, 'copyPlus', 'copyUltra'] }}
>
<Heading as="h2" variant="title" sx={{ fontSize: [5, 6, 7], mb: 3 }}>
Join our Slack
</Heading>
<Text
as="p"
variant="subtitle"
sx={{
fontSize: 3,
opacity: 0.875,
maxWidth: 'copy',
mx: 'auto',
mb: 4
}}
>
Due to a recent influx of new members, were temporarily pausing
automated Slack signups. But we still want to meet you! Add yourself
to the signup queue & youll receive an invitation shortly.
</Text>
<JoinForm />
</Container>
</Box>
<Footer />
</>
)