Skip to content

Commit

Permalink
Merge branch 'main' into browserslist-update
Browse files Browse the repository at this point in the history
  • Loading branch information
grymmy authored Apr 30, 2024
2 parents 6cd08ad + 9ec251f commit 550df62
Show file tree
Hide file tree
Showing 10 changed files with 298 additions and 24 deletions.
103 changes: 103 additions & 0 deletions components/index/cards/apocalypse.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
import CardModel from './card-model'
import { Box, Flex, Grid, Image, Text } from 'theme-ui'
import Buttons from './button'

/** @jsxImportSource theme-ui */

export default function Apocalypse() {
return (
<CardModel
color="white"
sx={{
backgroundSize: 'cover',
backgroundColor: '#95C9E5'
}}
position={[null, 'bottom', 'bottom']}
image="https://cloud-1132qsbcy-hack-club-bot.vercel.app/0image__6_.png"
>
<Grid columns={[1, 1, 2]} sx={{ position: 'relative', zIndex: 2 }}>
<Flex
sx={{
flexDirection: 'column',
justifyContent: 'space-between'
}}
>
<Image
src="https://cloud-lvxa0tab7-hack-club-bot.vercel.app/0apotitle_cropped.png"
sx={{
width: ['200px', '250px', '300px'],
mt: ['-5px', '-5px', '-5px'],
mb: ['30px', '30px', '30px'],
position: 'relative',
zIndex: 2,
fontSize: ['36px', 4, 5],
color: 'white'
}}
alt="Apocalypse"
/>

<Flex
sx={{
flexDirection: ['row', 'row', 'column'],
justifyContent: 'space-between'
}}
>
<Text
as="p"
variant="subheadline"
sx={{
ml: ['0px', '0px', '10px'],
mt: ['0px', '0px', '-10px'],
mb: ['0px', '0px', '20px'],
zIndex: 2,
color: 'white',
fontSize: ['24px !important'],

textShadow: '0 0 20px #fbbae4'
}}
>
Downtown Toronto
<br />
May 17–19
</Text>

<Buttons
icon="flag-fill"
href="https://apocalypse.hackclub.com/"
target="_blank"
rel="noopener"
primary="#FE5CA8"
id="43"
sx={{ color: '#fff' }}
>
Join Us
</Buttons>
</Flex>
</Flex>
<Box>
<Text
as="p"
variant="subtitle"
sx={{
fontSize: ['22px', '20px', '18px']
}}
>
It's 2034, and zombies have taken over! But tech still operates.
What would you do?
</Text>
<Text
as="p"
variant="subtitle"
sx={{
fontSize: ['22px', '20px', '18px']
}}
>
Join 150 high schoolers for 44 hours at Apocalypse! Take yourself
out of the real world and build wacky projects to spark a new age of
humanity.
</Text>
</Box>
</Grid>
</CardModel>
)
}
8 changes: 4 additions & 4 deletions components/index/cards/slack.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,10 @@ export default function Slack({ data, slackKey, events }) {
variant="subtitle"
sx={{ fontSize: [1, '16px', '24px'] }}
>
Coding doesn’t have to be a solitary activity. At Hack&nbsp;Club, we
make things together and in our Slack, you’ll find awesome people to
hangout with too. Code together, find your programming community, or
just hang out.
Coding doesn’t have to be a solitary activity. At Hack&nbsp;Club,
we make remarkable things together, and in our Slack you’ll find
awesome people to hang out with too. Code together, find your programming
community, dream up something wild, or just #lounge.
</Text>
<Text as="p" variant="subtitle">
Occasionally we invite someone we really want to speak to (like Sal
Expand Down
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"format": "prettier --write ."
},
"dependencies": {
"@apollo/client": "^3.9.9",
"@apollo/client": "^3.9.11",
"@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.5",
"@github/time-elements": "^4.0.0",
Expand All @@ -37,6 +37,7 @@
"animated-value": "^0.2.4",
"animejs": "^3.2.2",
"axios": "^1.6.7",
"camelcase": "^8.0.0",
"cookies-next": "^4.0.0",
"country-list": "^2.3.0",
"country-list-js": "^3.1.8",
Expand Down Expand Up @@ -75,7 +76,7 @@
"react-tooltip": "^4.5.1",
"react-tsparticles": "^2.12.2",
"react-type-animation": "^3.2.0",
"react-use-websocket": "^4.7.0",
"react-use-websocket": "^4.8.1",
"react-wrap-balancer": "^1.1.0",
"recharts": "2.12.2",
"remark": "^15.0.1",
Expand Down
104 changes: 104 additions & 0 deletions pages/api/bin/wokwi/new.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
import AirtablePlus from "airtable-plus"

const createProject = async (partsList=[]) => {
const airtable = new AirtablePlus({
apiKey: process.env.AIRTABLE_API_KEY,
baseID: 'appKjALSnOoA0EmPk',
tableName: 'Supported Parts'
})

const parts = [
{ "type": "board-pi-pico-w", "id": "pico", "top": 0, "left": 0, "attrs": {} }
]

await Promise.all(partsList.map(async (part) => {
const airPart = await airtable.read({
filterByFormula: `{Wokwi Name}= "${part}"`,
maxRecords: 1
})
return airPart[0].fields['Wokwi Name'].split(',').forEach((name, i) => {
parts.push({
type: name,
id: name + '-' + i,
left: i * 100, // this is roughtly the width of most parts
})
})
}))

const body = JSON.stringify({
name: "The Bin!",
unlisted: false,
files: [{
name: "help.md",
content: `# Welcome to The Bin! 🦝
Now that you've thrown some parts into The Bin, it's time to turn that trash into treasure! 🗑️➡️💎
Wire up your parts and write some code to make them work together.
If you'd like a tutorial, check out some sample projects:
https://jams.hackclub.com/tags/the-bin
You can get help by chatting with other high schoolers on the Hack Club Slack in the #electronics channel:
👉 https://hackclub.com/slack 👈
Once you're ready build your design IRL, click the "Share" button and submit your design:
https://hackclub.com/bin/submit
`
},
{
name: "sketch.ino",
content: `// Now turn this trash into treasure!
// Want some help? You can chat with us on the Hack Club Slack in the #electronics channel
void setup() {
// put your setup code here, to run once:
Serial1.begin(115200);
Serial1.println("Hello, Raspberry Pi Pico W!");
}
void loop() {
// put your main code here, to run repeatedly:
delay(1); // this speeds up the simulation
}`
}, {
name: "diagram.json",
content: JSON.stringify({
"version": 1,
"author": "The Bin - Hack Club",
"editor": "wokwi",
"parts": parts,
"connections": [["pico:GP0", "$serialMonitor:RX", "", []], ["pico:GP1", "$serialMonitor:TX", "", []]], "dependencies": {}
}, null, 2)
}],
})

const response = await fetch('https://wokwi.com/api/projects/save', {
method: 'POST',
cors: 'no-cors',
headers: {
'Content-Type': 'application/json',
'Referer': 'https://wokwi.com/projects/new/pi-pico-w',
'User-Agent': 'Hack Club - contact [email protected] for any complaints!'
},
body
}).catch((e) => {
console.log(e)
})

const data = await response.json()
const { projectId } = data

return `https://wokwi.com/projects/${projectId}`
}

export default async function handler(req, res) {
if (req.method === 'POST') {
const { parts } = req.body

const shareLink = await createProject(parts)
if (shareLink) {
res.status(200).json({ shareLink })
} else {
res.status(500).json({ error: 'Failed to create project' })
}
}
}
29 changes: 29 additions & 0 deletions pages/api/bin/wokwi/parts.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import AirtablePlus from "airtable-plus"
import camelcase from "camelcase"

const camelizeObject = (obj) => {
Object.keys(obj).forEach(key => {
obj[camelcase(key)] = obj[key]
if (key !== camelcase(key)) {
delete obj[key]
}
})
return obj
}

const wokwiParts = async () => {
const airtable = new AirtablePlus({
apiKey: process.env.AIRTABLE_API_KEY,
baseID: 'appKjALSnOoA0EmPk',
tableName: 'Supported Parts'
})

const records = await airtable.read()
const parts = records.map(record => camelizeObject(record.fields))
return parts
}

export default async function handler(req, res) {
const data = await wokwiParts()
res.status(200).json(data)
}
27 changes: 27 additions & 0 deletions pages/fiscal-sponsorship/apply/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,33 @@ export default function Apply() {
})
}
>
<Box
sx={{
borderLeft: '3px solid',
borderLeftColor: 'blue',
paddingLeft: 2,
color: 'blue',
fontSize: [1, 2],
textWrap: 'pretty',
lineHeight: 1.375
}}
>
<Text as="p" sx={{ fontSize: [2, 3], fontWeight: 'bold' }}>
Join our waitlist
</Text>
<Text as="p" sx={{ mt: 1, textWrap: 'balance' }}>
HCB has been experiencing some exciting growth and subsequent
capacity constraints. We are prioritizing organizations ran by Hack
Clubbers, teens, FIRST teams, as well as groups with an annual
budget greater than $50k. Please expect to hear back by May 1st,
2024.
</Text>
<Text as="p" sx={{ mt: 1, textWrap: 'balance' }}>
We currently do not work with new organizations outside of STEM,
Education, and Climate.
</Text>
</Box>

<Heading as="h2" variant="headline" sx={{ mb: -2 }}>
Your organization
</Heading>
Expand Down
6 changes: 4 additions & 2 deletions pages/fiscal-sponsorship/apply/success.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,10 @@ export default function ApplicationSuccess() {
</Text>
<Text as="p" variant="lead">
<Balancer>
We’ll review your application and get back to you within two
business days.
We are prioritizing organizations ran by Hack Clubbers, teens, FIRST
teams, as well as groups with an annual budget greater than $50k. If
you fall outside of these categories, you will hear back from us by
May 1st, 2024.
</Balancer>
</Text>
</header>
Expand Down
9 changes: 5 additions & 4 deletions pages/fiscal-sponsorship/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -241,10 +241,11 @@ export default function Page() {
sx={{
bg: 'blue',
backgroundImage: theme => theme.util.gx('cyan', 'blue'),
fontSize: [16, 16, 32],
lineHeight: 0.9
}}
>
Apply now
Join the waitlist
</Button>
</Link>
<Button
Expand Down Expand Up @@ -603,15 +604,15 @@ export default function Page() {
bg: 'white',
mixBlendMode: 'screen',
color: 'black !important',
fontSize: [58, 96],
fontSize: [36, 64],
width: ['100%', 'auto'],
py: 4,
px: [4, null, 6],
px: [4, null, 5],
lineHeight: 0.9,
textTransform: 'none'
}}
>
Apply now
Join the waitlist
</Button>
</Link>
<Text as="p" variant="lead" sx={{ color: 'white', mb: [0, 0] }}>
Expand Down
10 changes: 6 additions & 4 deletions pages/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import Photo from '../components/photo'
import Comma from '../components/comma'
import Haxidraw from '../components/index/cards/haxidraw'
import Onboard from '../components/index/cards/onboard'
import Apocalypse from '../components/index/cards/apocalypse'

/** @jsxImportSource theme-ui */

Expand Down Expand Up @@ -203,10 +204,10 @@ function Page({
gradient="linear-gradient(rgba(0,0,0,0.4), rgba(0,0,0,0.45))"
/>
<Announcement
copy="Hop OnBoard and create your first PCB"
caption="Join 1,000 others to create your first circuit board."
href="https://hackclub.com/onboard/"
iconLeft="idea"
copy="Get free boba for making your first website! 🍵"
caption="Follow the tutorial to build your own space on the web."
href="https://workshops.hackclub.com/personal_website"
iconLeft="web"
/>
<Box
sx={{
Expand Down Expand Up @@ -675,6 +676,7 @@ function Page({
</Text>
</Box>
<Pizza />
<Apocalypse />
<Slack slackKey={slackKey} data={slackData} events={events} />
</Box>
</Box>
Expand Down
Loading

0 comments on commit 550df62

Please sign in to comment.