diff --git a/components/donate/sprigForm.js b/components/donate/sprigForm.js
index 3726e354..a573b726 100644
--- a/components/donate/sprigForm.js
+++ b/components/donate/sprigForm.js
@@ -6,9 +6,7 @@ const pricePerSprig = 100
const SprigForm = () => {
const [count, setCount] = useState(1)
function url() {
- const u = new URL(
- 'https://hcb.hackclub.com/donations/start/game-lab-fund/'
- )
+ const u = new URL('https://hcb.hackclub.com/donations/start/game-lab-fund/')
u.searchParams.set(
'amount',
pricePerSprig * count * 100 /* convert to cents */
diff --git a/components/elon.mdx b/components/elon.mdx
index 1e1cc1ea..b87d78ae 100644
--- a/components/elon.mdx
+++ b/components/elon.mdx
@@ -27,12 +27,12 @@ a lot of what we’ve already been doing (and [what I wrote about at the beginni
of the year](https://zachinto2020.wordpress.com/2019/12/31/as-midnight-approaches/)):
we’ll spend as little money as possible at all times, and we’ll hire a small
number of diverse staff from video game engineers to media producers to make
-Hack Club better. We are pushing hard now to expand users of [HCB](https://hackclub.com/hcb/),
+Hack Club better. We are pushing hard now to expand users of [HCB](https://hackclub.com/hcb/),
and continuing to try and make the Hack Club Slack the best place to be a teenager on the intenet.
We’ll have a proper announcement in a few weeks, but one thing we’re doing after
winning the [Frank Grant](https://grant.frank.ly/) and now receiving Elon’s
-gift, is open sourcing our finances. Hack Club HQ has been running on HCB
+gift, is open sourcing our finances. Hack Club HQ has been running on HCB
since February and starting today, you can see our account publicly at
https://hcb.hackclub.com/hq. You can track how we spend every single dollar of
Elon’s gift. Soon, we will also launch https://frank.ly/ on Hack Club’s
diff --git a/components/hcb/apply/address-input.js b/components/hcb/apply/address-input.js
index b0169ef2..e4b40cd6 100644
--- a/components/hcb/apply/address-input.js
+++ b/components/hcb/apply/address-input.js
@@ -6,29 +6,28 @@ import { geocode, search } from '../../../lib/hcb/apply/address-validation'
import Icon from '../../icon'
const approvedCountries = [
- "AT",
- "FI",
- "FR",
- "DE",
- "GR",
- "ES",
- "IT",
- "SE",
- "TR",
- "GB",
- "NO",
- "UA",
- "BR",
- "CO",
- "US",
- "CA",
- "MX",
- "JP",
- "PH",
- "MY",
- "SG",
-];
-
+ 'AT',
+ 'FI',
+ 'FR',
+ 'DE',
+ 'GR',
+ 'ES',
+ 'IT',
+ 'SE',
+ 'TR',
+ 'GB',
+ 'NO',
+ 'UA',
+ 'BR',
+ 'CO',
+ 'US',
+ 'CA',
+ 'MX',
+ 'JP',
+ 'PH',
+ 'MY',
+ 'SG'
+]
export default function AutoComplete({ name, isPersonalAddressInput }) {
const input = useRef()
@@ -38,8 +37,8 @@ export default function AutoComplete({ name, isPersonalAddressInput }) {
const optionClicked = async prediction => {
input.current.value = prediction.name
- await onInput(prediction.name)
- setPredictions(null)
+ await onInput(prediction.name)
+ setPredictions(null)
}
const clickOutside = e => {
if (input.current && !input.current.contains(e.target)) {
@@ -47,26 +46,26 @@ export default function AutoComplete({ name, isPersonalAddressInput }) {
}
}
- const onInput = async value => {
- setPredictions(value ? (await search(value)).results : null);
+ const onInput = async value => {
+ setPredictions(value ? (await search(value)).results : null)
- if (isPersonalAddressInput) return
- geocode(value)
- .then(res => {
- const country = res?.results[0]?.country
- const countryCode = res?.results[0]?.countryCode
+ if (isPersonalAddressInput) return
+ geocode(value)
+ .then(res => {
+ const country = res?.results[0]?.country
+ const countryCode = res?.results[0]?.countryCode
- setCountryCode(countryCode)
+ setCountryCode(countryCode)
- sessionStorage.setItem('bank-signup-eventCountry', country)
- sessionStorage.setItem('bank-signup-eventCountryCode', countryCode)
- })
- .catch(err => console.error(err));
- }
+ sessionStorage.setItem('bank-signup-eventCountry', country)
+ sessionStorage.setItem('bank-signup-eventCountryCode', countryCode)
+ })
+ .catch(err => console.error(err))
+ }
- const onInputWrapper = async e => {
- if (e.target.value) await onInput(e.target.value)
- }
+ const onInputWrapper = async e => {
+ if (e.target.value) await onInput(e.target.value)
+ }
//TODO: Close suggestions view when focus is lost via tabbing.
//TODO: Navigate suggestions with arrow keys.
diff --git a/components/hcb/apply/personal-form.js b/components/hcb/apply/personal-form.js
index 343772ec..dc7cb869 100644
--- a/components/hcb/apply/personal-form.js
+++ b/components/hcb/apply/personal-form.js
@@ -161,19 +161,19 @@ export default function PersonalInfoForm({
) : null}
-
-
-
+
+
+
>
)
}
diff --git a/components/hcb/everything.js b/components/hcb/everything.js
index a67b3154..1474a82f 100644
--- a/components/hcb/everything.js
+++ b/components/hcb/everything.js
@@ -31,8 +31,8 @@ export default function Everything({ fee, partner = false }) {
'Transaction data export': 'download',
'Record shared notes on transactions': 'docs',
'24-hour response support': 'clock',
- 'Reimbursement process': 'enter',
- // 'Instant deposits': 'bolt'
+ 'Reimbursement process': 'enter'
+ // 'Instant deposits': 'bolt'
}).map(([item, icon = 'enter']) => (
{item}
diff --git a/components/hcb/features.js b/components/hcb/features.js
index 13b7f1ad..be946c56 100644
--- a/components/hcb/features.js
+++ b/components/hcb/features.js
@@ -26,10 +26,7 @@ export default function Features({ partner = false }) {
icon="bank-account"
name="Fund"
body={
- <>
- A fund under the hood with a custom, beautiful
- dashboard.
- >
+ <>A fund under the hood with a custom, beautiful dashboard.>
}
/>
diff --git a/components/hcb/first/testimonials.js b/components/hcb/first/testimonials.js
index 0a0fab12..aadd20f5 100644
--- a/components/hcb/first/testimonials.js
+++ b/components/hcb/first/testimonials.js
@@ -27,8 +27,8 @@ export default function Testimonials() {
FIRST teams all over the country run on HCB.
- Everywhere from San Jose to Boston to New York,
- HCB powers teams of all sizes.
+ Everywhere from San Jose to Boston to New York, HCB powers teams of
+ all sizes.
diff --git a/components/hcb/landing.js b/components/hcb/landing.js
index 9b2fa3a0..34753d55 100644
--- a/components/hcb/landing.js
+++ b/components/hcb/landing.js
@@ -1,4 +1,13 @@
-import { Box, Button, Heading, Link, Flex, Text, Container, Badge } from 'theme-ui'
+import {
+ Box,
+ Button,
+ Heading,
+ Link,
+ Flex,
+ Text,
+ Container,
+ Badge
+} from 'theme-ui'
import Fade from 'react-reveal/Fade'
import ScrollHint from '../scroll-hint'
import Image from 'next/image'
@@ -36,7 +45,6 @@ export default function Landing({ showButton = true, eventsCount }) {
textAlign: 'center'
}}
>
-
Become a nonprofit with HCB
-
-
- HCB by
-
-
+
+
+
+ HCB by
+
+
+ {' '}
is one of {Math.round((eventsCount - 50) / 100) * 100}+
- teams who use HCB to
- run world-class organizations, hackathons, and clubs.
+ teams who use HCB to run world-class
+ organizations, hackathons, and clubs.
diff --git a/components/hcb/nonprofits.js b/components/hcb/nonprofits.js
index 96ab8e10..888cd68e 100644
--- a/components/hcb/nonprofits.js
+++ b/components/hcb/nonprofits.js
@@ -68,9 +68,8 @@ export default function Nonprofits() {
>
Nonprofit? No problem.
- HCB is a powerful, safe, and easy-to-use money thing,
- whether you're receiving your first donation or spending
- $100,000 a year.
+ HCB is a powerful, safe, and easy-to-use money thing, whether you're
+ receiving your first donation or spending $100,000 a year.
diff --git a/components/hcb/run.js b/components/hcb/run.js
index d25698db..b787962e 100644
--- a/components/hcb/run.js
+++ b/components/hcb/run.js
@@ -26,8 +26,8 @@ export default function Run() {
- Receiving and managing money is just the start. HCB helps
- you handle ongoing obligations while you’re organizing.
+ Receiving and managing money is just the start. HCB helps you handle
+ ongoing obligations while you’re organizing.
diff --git a/components/hcb/testimonials.js b/components/hcb/testimonials.js
index e9c33400..d341b3bb 100644
--- a/components/hcb/testimonials.js
+++ b/components/hcb/testimonials.js
@@ -72,8 +72,8 @@ export default function Testimonials() {
The best events across the country run on HCB.
- Everywhere from Philadelphia to Phoenix to Portland,
- HCB powers events of all sizes.
+ Everywhere from Philadelphia to Phoenix to Portland, HCB powers
+ events of all sizes.
{events.map(event => {
const id = kebabCase(event.name)
- return (
-
- )
+ return
})}
diff --git a/components/hcb/tooltip.js b/components/hcb/tooltip.js
index 94e94a7e..10eb6e7b 100644
--- a/components/hcb/tooltip.js
+++ b/components/hcb/tooltip.js
@@ -1,41 +1,47 @@
-import React from "react";
+import React from 'react'
-const addClassNameToChildren = (children, className) => React.Children.map(children, child => React.cloneElement(child, { className: `${child.props.className || ''} ${className}` }));
+const addClassNameToChildren = (children, className) =>
+ React.Children.map(children, child =>
+ React.cloneElement(child, {
+ className: `${child.props.className || ''} ${className}`
+ })
+ )
-const tooltip = (direction) => function Tooltip ({ children, text }) {
- const escapedText = text.replace(/'/g, "\\'");
+const tooltip = direction =>
+ function Tooltip({ children, text }) {
+ const escapedText = text.replace(/'/g, "\\'")
- const directionalStyles = ({
- e: `
+ const directionalStyles = {
+ e: `
left: 100%;
bottom: 50%;
right: 0;
margin-left: 0.5rem;
transform: translateY(50%);
`,
- w: `
+ w: `
right: 100%;
bottom: 50%;
margin-right: 0.5rem;
transform: translateY(50%);
`,
- n: `
+ n: `
right: 50%;
bottom: 100%;
margin-bottom: 0.5rem;
transform: translateX(50%);
`,
- s: `
+ s: `
right: 50%;
top: 100%;
margin-top: 0.5rem;
transform: translateX(50%);
`
- })[direction || 'e'];
+ }[direction || 'e']
return (
- <>
-
- {children}
- >
- );
-}
+ {children}
+ >
+ )
+ }
-const Tooltip = tooltip();
-Tooltip.N = tooltip('n');
-Tooltip.S = tooltip('s');
-Tooltip.E = tooltip('e');
-Tooltip.W = tooltip('w');
+const Tooltip = tooltip()
+Tooltip.N = tooltip('n')
+Tooltip.S = tooltip('s')
+Tooltip.E = tooltip('e')
+Tooltip.W = tooltip('w')
-export { Tooltip };
-export default Tooltip;
\ No newline at end of file
+export { Tooltip }
+export default Tooltip
diff --git a/components/index/cards/hcb.js b/components/index/cards/hcb.js
index 62e85710..fdbf68c5 100644
--- a/components/index/cards/hcb.js
+++ b/components/index/cards/hcb.js
@@ -31,8 +31,8 @@ export default function Bank({ data }) {
- Become a 501(c)3 nonprofit and join 700+ teams using
- HCB to run world-class events.
+ Become a 501(c)3 nonprofit and join 700+ teams using HCB to run
+ world-class events.
This platform is built and maintained by the Hack Club team.
diff --git a/components/index/cards/outernet.js b/components/index/cards/outernet.js
index f03e6e14..e3b00cba 100644
--- a/components/index/cards/outernet.js
+++ b/components/index/cards/outernet.js
@@ -39,7 +39,12 @@ export default function Outernet() {
28th to 31st July, 2023!
{
const router = useRouter()
const { status, formProps, useField } = useForm('/api/join/', null, {
clearOnSubmit: 5000,
method: 'POST',
- initData: hasCookie("continent")
+ initData: hasCookie('continent')
? {
- continent: getCookie("continent"),
+ continent: getCookie('continent'),
reason: router.query.reason,
event: router.query.event
}
diff --git a/components/winter/recap.js b/components/winter/recap.js
index 38fe10b6..000ff15e 100644
--- a/components/winter/recap.js
+++ b/components/winter/recap.js
@@ -62,8 +62,8 @@ function Recap() {
While you wait for your hardware, explore and get familiar with
- HCB with limited access to features until you get
- fully activated.
+ HCB with limited access to features until you get fully
+ activated.
diff --git a/lib/carousel.json b/lib/carousel.json
index 63cb905d..e8e83703 100644
--- a/lib/carousel.json
+++ b/lib/carousel.json
@@ -9,13 +9,13 @@
"link": "https://jams.hackclub.com"
},
{
- "background": "#212529",
- "titleColor": "white",
- "descriptionColor": "white",
- "title": "cpu.land",
- "description": "Curious exactly what happens when you run a program on your computer? Read this.",
- "img": "https://cloud-eg2ex8nol-hack-club-bot.vercel.app/0favicon-on-light-removebg-preview.png",
- "link": "https://cpu.land"
+ "background": "#212529",
+ "titleColor": "white",
+ "descriptionColor": "white",
+ "title": "cpu.land",
+ "description": "Curious exactly what happens when you run a program on your computer? Read this.",
+ "img": "https://cloud-eg2ex8nol-hack-club-bot.vercel.app/0favicon-on-light-removebg-preview.png",
+ "link": "https://cpu.land"
},
{
"background": "#000",
diff --git a/middleware.js b/middleware.js
index 63f28088..094651bf 100644
--- a/middleware.js
+++ b/middleware.js
@@ -8,8 +8,8 @@ export function middleware(request) {
if (continent === 'Oceania') {
continent = 'Australia'
}
- const response = NextResponse.next();
- response.cookies.set("continent", continent || "");
- return response;
+ const response = NextResponse.next()
+ response.cookies.set('continent', continent || '')
+ return response
}
}
diff --git a/next.config.js b/next.config.js
index 03f31222..b6d622cd 100755
--- a/next.config.js
+++ b/next.config.js
@@ -28,10 +28,10 @@ const nextConfig = {
},
async redirects() {
return [
- {
+ {
source: '/bank/:path*',
destination: '/hcb/:path*',
- permanent: true,
+ permanent: true
},
{ source: '/grant/', destination: '/hackathons/grant', permanent: false },
{
diff --git a/pages/api/github.js b/pages/api/github.js
index 4098fd64..9fc7206e 100644
--- a/pages/api/github.js
+++ b/pages/api/github.js
@@ -1,20 +1,23 @@
-const isRelevantEventType = (type) => ['PushEvent', 'PullRequestEvent', 'WatchEvent'].includes(type);
+const isRelevantEventType = type =>
+ ['PushEvent', 'PullRequestEvent', 'WatchEvent'].includes(type)
const getMessage = (type, payload, repo) => {
switch (type) {
case 'PushEvent':
- return payload.commits?.[0]?.message || 'No commit message';
+ return payload.commits?.[0]?.message || 'No commit message'
case 'PullRequestEvent':
- return payload.pull_request.title;
+ return payload.pull_request.title
case 'WatchEvent':
- return `starred ${repo.name}`;
+ return `starred ${repo.name}`
default:
- return null;
+ return null
}
}
export async function fetchGitHub() {
- const initialGitHubData = await fetch('https://api.github.com/orgs/hackclub/events').then(r => r.json());
+ const initialGitHubData = await fetch(
+ 'https://api.github.com/orgs/hackclub/events'
+ ).then(r => r.json())
const gitHubData = initialGitHubData
.filter(({ type }) => isRelevantEventType(type))
@@ -24,12 +27,12 @@ export async function fetchGitHub() {
userImage: actor.avatar_url,
message: getMessage(type, payload, repo),
time: created_at
- }));
+ }))
- return gitHubData;
+ return gitHubData
}
export default async function github(req, res) {
- const git = await fetchGitHub(req, res);
- res.json(git);
+ const git = await fetchGitHub(req, res)
+ res.json(git)
}
diff --git a/pages/api/hcb/apply.js b/pages/api/hcb/apply.js
index 803db392..a19a27fc 100644
--- a/pages/api/hcb/apply.js
+++ b/pages/api/hcb/apply.js
@@ -51,7 +51,7 @@ export default async function handler(req, res) {
'HCB account URL': `https://hcb.hackclub.com/${r.slug}`,
'Contact Option': data.contactOption,
'Slack Username': data.slackUsername,
- 'Accommodations': data.accommodations,
+ Accommodations: data.accommodations
})
res.writeHead(302, { Location: '/hcb/apply/success' }).end()
})
diff --git a/pages/api/slack.js b/pages/api/slack.js
index 330ccf0c..34088a5f 100644
--- a/pages/api/slack.js
+++ b/pages/api/slack.js
@@ -10,16 +10,16 @@ export async function Slack() {
formData.append('date_range', '30d')
let slackData = await fetch(
- "https://hackclub.slack.com/api/team.stats.timeSeries",
+ 'https://hackclub.slack.com/api/team.stats.timeSeries',
{
- method: "POST",
+ method: 'POST',
body: `--orpheus\r\nContent-Disposition: form-data; name="token"\r\n\r\n${process.env.SLACK_API_TOKEN}\r\n--orpheus\r\nContent-Disposition: form-data; name="date_range"\r\n\r\n30d\r\n--orpheus\r\nContent-Disposition: form-data;`,
headers: {
- "content-type": "multipart/form-data; boundary=orpheus",
- cookie: process.env.SLACK_API_COOKIE,
- },
+ 'content-type': 'multipart/form-data; boundary=orpheus',
+ cookie: process.env.SLACK_API_COOKIE
+ }
}
- ).then((r) => r.json());
+ ).then(r => r.json())
if (!slackData || !slackData.stats) {
console.warn(`No slack data: ${JSON.stringify(slackData)}`)
diff --git a/pages/brand.js b/pages/brand.js
index f5227342..2774043c 100644
--- a/pages/brand.js
+++ b/pages/brand.js
@@ -35,7 +35,7 @@ export const Logo = ({ name }) => (
{startCase(name)
.replace('Flag Orpheus', 'Orpheus Flag –')
.replace('Bw', ' (B/W)')
- .replace('Hcb', 'HCB')}
+ .replace('Hcb', 'HCB')}
(
desc={
<>
Use our 501(c)(3) status and a restricted fund with{' '}
- HCB to fundraise, accept
- donations, and buy things!
+ HCB to fundraise, accept donations, and
+ buy things!
>
}
/>
diff --git a/pages/events.js b/pages/events.js
index d63d4fdf..21501356 100644
--- a/pages/events.js
+++ b/pages/events.js
@@ -1,4 +1,16 @@
-import { Box, Button, Container, Heading, Card, Text, Grid, Flex, Image as Img, Link, Divider } from 'theme-ui'
+import {
+ Box,
+ Button,
+ Container,
+ Heading,
+ Card,
+ Text,
+ Grid,
+ Flex,
+ Image as Img,
+ Link,
+ Divider
+} from 'theme-ui'
import Head from 'next/head'
import Meta from '@hackclub/meta'
import ForceTheme from '../components/force-theme'
@@ -10,7 +22,6 @@ import OuternetPic from '../public/outernet/hack.jpg'
import { compact } from 'lodash'
import theme from '@hackclub/theme'
-
const events = [
{
name: 'Outernet',
@@ -20,7 +31,8 @@ const events = [
season: 'Summer',
year: '2023',
repo: 'outernet',
- image: 'https://github.com/hackclub/outernet/assets/39828164/368eac86-3c39-4842-be2c-1436a6db6f07',
+ image:
+ 'https://github.com/hackclub/outernet/assets/39828164/368eac86-3c39-4842-be2c-1436a6db6f07',
link: 'https://github.com/hackclub/outernet'
},
{
@@ -32,46 +44,52 @@ const events = [
year: '2022/23',
video: 'https://www.youtube.com/embed/KLx4NZZPzMc',
repo: 'epoch'
- },
+ },
{
name: 'Assemble',
logo: 'https://emoji.slack-edge.com/T0266FRGM/assemble/4f9465eb00175463.png',
- description: 'The first high school hackathon since the pandemic! Hosted by a team of Hack Clubbers to kick off a hackathon renaissance.',
+ description:
+ 'The first high school hackathon since the pandemic! Hosted by a team of Hack Clubbers to kick off a hackathon renaissance.',
location: 'San Francisco, California',
season: 'Summer',
year: '2022',
video: 'https://youtube.com/embed/PnK4gzO6S3Q',
repo: 'assemble'
- },
+ },
{
name: 'The Hacker Zephyr',
logo: 'https://hackclub.com/stickers/zephyr.svg',
- description: 'A cross-country hacker adventure on a train and the longest hackathon (by miles) on land.',
+ description:
+ 'A cross-country hacker adventure on a train and the longest hackathon (by miles) on land.',
location: 'Burlington (VT) to Los Angeles (CA)',
season: 'Summer',
year: '2021',
video: 'https://youtube.com/embed/2BID8_pGuqA',
repo: 'the-hacker-zephyr'
- },
+ },
{
name: 'Summer of Making',
logo: 'https://hackclub.com/stickers/summer_of_making.svg',
- description: '$50k in hardware donations to teen hackers around the world and the creation of Scrapbook:',
+ description:
+ '$50k in hardware donations to teen hackers around the world and the creation of Scrapbook:',
location: 'Online (thanks COVID-19!)',
season: 'Summer',
year: '2020',
- image: 'https://cdn.sanity.io/images/2ejqxsnu/production/ed144128afb78a7095d6c77945efdd2c38078ecf-1637x990.png?w=3840&q=75&fit=clip&auto=format',
+ image:
+ 'https://cdn.sanity.io/images/2ejqxsnu/production/ed144128afb78a7095d6c77945efdd2c38078ecf-1637x990.png?w=3840&q=75&fit=clip&auto=format',
link: 'https://scrapbook.hackclub.com/r/summer-of-making',
ghTag: 'summer-of-making'
- },
+ },
{
name: 'Flagship',
logo: 'https://hackclub.com/stickers/ship.png',
- description: 'An IRL meetup of high school hackathon organizers and coding club leaders. Our first "flagship" event.',
+ description:
+ 'An IRL meetup of high school hackathon organizers and coding club leaders. Our first "flagship" event.',
location: 'San Francisco, California',
season: 'Summer',
year: '2019',
- image: 'https://github.com/hackclub/www-assemble/blob/main/public/hackers-assemble.jpg?raw=true',
+ image:
+ 'https://github.com/hackclub/www-assemble/blob/main/public/hackers-assemble.jpg?raw=true',
link: 'https://hack.af/flagship-album'
}
]
@@ -89,30 +107,63 @@ const Event = ({
image,
link
}) => (
-
-
-
- {name}
-
-
- {description}
-
- {video ?
-
- :
- }
-
- {season}, {year} - {location} {repo &&
- <>github.com/hackclub/{repo}>
- }
- {ghTag &&
+
+
+
+ {name}
+
+ {description}
+ {video ? (
+
+ ) : (
+
+
+
+ )}
+
+
+ {season}, {year} - {location}
+ {' '}
+
+
+ {' '}
+ {repo && (
+
+ <>github.com/hackclub/{repo}>
+
+ )}
+ {ghTag && (
+
<>github.com/topics/{ghTag}>
- }
- {link && !repo && !ghTag &&
- <>{link.replace("https://", "")}>
- }
-
-
+
+ )}
+ {link && !repo && !ghTag && (
+
+ <>{link.replace('https://', '')}>
+
+ )}
+
+
)
const Page = ({ jobs }) => (
@@ -183,7 +234,8 @@ const Page = ({ jobs }) => (
textShadow: 'small'
}}
>
- Every summer and now every winter, Hack Club does something special to bring the community together. Let's take a trip down memory lane.
+ Every summer and now every winter, Hack Club does something special
+ to bring the community together. Let's take a trip down memory lane.
-
-
- Looking for more? Hack Clubbers often organise their own hackathons!
- Check them out at hackathons.hackclub.com. Hack Club is also behind a series of Day of Service events and frequent virtual events.
+
+
+ Looking for more? Hack Clubbers often organise their own hackathons!
+ Check them out at{' '}
+
+ hackathons.hackclub.com
+
+ . Hack Club is also behind a series of{' '}
+
+ Day of Service
+ {' '}
+ events and{' '}
+
+ frequent virtual events
+
+ .
@@ -226,4 +311,4 @@ const Page = ({ jobs }) => (
>
)
-export default Page
\ No newline at end of file
+export default Page
diff --git a/pages/hackathons/grant.js b/pages/hackathons/grant.js
index a8420b66..a2b7f4ff 100644
--- a/pages/hackathons/grant.js
+++ b/pages/hackathons/grant.js
@@ -144,7 +144,8 @@ const HackathonGrant = () => {
HCB
{' '}
fees) to in-person{' '}
- high school hackathons until December 31st, 2023.
+ high school hackathons until
+ December 31st, 2023.
diff --git a/pages/hcb/climate/index.js b/pages/hcb/climate/index.js
index d3691e0c..bd57533c 100644
--- a/pages/hcb/climate/index.js
+++ b/pages/hcb/climate/index.js
@@ -16,9 +16,7 @@ import Footer from '../../../components/footer'
import MSparkles from '../../../components/sparkles/money'
import { Text, Button, Card } from 'theme-ui'
import Icon from '@hackclub/icons'
-import OrganizationCard, {
- Badge
-} from '../../../components/hcb/directory/card'
+import OrganizationCard, { Badge } from '../../../components/hcb/directory/card'
import Zoom from 'react-reveal/Zoom'
import fuzzysort from 'fuzzysort'
import ScrollHint from '../../../components/scroll-hint'
@@ -87,27 +85,26 @@ tags.__proto__.forOrg = function (org) {
return this.filter(tag => tag.match?.(org))
}
-
-
-
-
-
export const regions = [
{
label: 'North America',
color: 'secondary',
iconColor: 'red',
icon: 'photo',
- image: 'https://cloud-cberabu5z-hack-club-bot.vercel.app/3north_america.png',
- ogImage: 'https://cloud-p9tu92fwx-hack-club-bot.vercel.app/3northamerica.png'
+ image:
+ 'https://cloud-cberabu5z-hack-club-bot.vercel.app/3north_america.png',
+ ogImage:
+ 'https://cloud-p9tu92fwx-hack-club-bot.vercel.app/3northamerica.png'
},
{
label: 'South America',
color: 'secondary',
iconColor: 'orange',
icon: 'photo',
- image: 'https://cloud-cberabu5z-hack-club-bot.vercel.app/4south_america.png',
- ogImage: 'https://cloud-p9tu92fwx-hack-club-bot.vercel.app/4southamerica.png'
+ image:
+ 'https://cloud-cberabu5z-hack-club-bot.vercel.app/4south_america.png',
+ ogImage:
+ 'https://cloud-p9tu92fwx-hack-club-bot.vercel.app/4southamerica.png'
},
{
label: 'Africa',
@@ -132,7 +129,8 @@ export const regions = [
icon: 'explore',
image:
'https://cloud-oax3m4v0t-hack-club-bot.vercel.app/0asia___oceania.png',
- ogImage: 'https://cloud-p9tu92fwx-hack-club-bot.vercel.app/1asia_oceania.png'
+ ogImage:
+ 'https://cloud-p9tu92fwx-hack-club-bot.vercel.app/1asia_oceania.png'
}
]
@@ -496,7 +494,7 @@ export default function ClimatePage({ rawOrganizations, pageRegion }) {
if (e.key === 'Escape') {
closeModal()
}
- };
+ }
window.addEventListener('keydown', handle)
return () => window.removeEventListener('keydown', handle)
@@ -536,7 +534,10 @@ export default function ClimatePage({ rawOrganizations, pageRegion }) {
(region ? ` in ${region.label}` : '') +
" with HCB's fiscal sponsorship and financial tools. Explore the climate efforts running on HCB."
}
- image={region?.ogImage ?? "https://cloud-gv8bzwz6z-hack-club-bot.vercel.app/0frame_14__1_.png"}
+ image={
+ region?.ogImage ??
+ 'https://cloud-gv8bzwz6z-hack-club-bot.vercel.app/0frame_14__1_.png'
+ }
/>
{modalOrganization && (
@@ -568,18 +569,20 @@ export default function ClimatePage({ rawOrganizations, pageRegion }) {
e.stopPropagation()
}}
>
-
+
@@ -738,50 +741,54 @@ export default function ClimatePage({ rawOrganizations, pageRegion }) {
gap: 1
}}
>
- {modalOrganization.links.website &&
-
-
- Website
-
-
- }
- {modalOrganization.links.financials &&
-
-
- Transparent Finances
-
-
- }
+ {modalOrganization.links.website && (
+
+
+
+ Website
+
+
+
+ )}
+ {modalOrganization.links.financials && (
+
+
+
+ Transparent Finances
+
+
+
+ )}
{/* desktop stats */}
@@ -959,16 +966,39 @@ export default function ClimatePage({ rawOrganizations, pageRegion }) {
Climate-focused nonprofits on{' '}
HCB
- {region ? <>
- {' '}in
-
-
- {region.label}
-
-
- {' ' + region.label}
-
- > : ''}
+ {region ? (
+ <>
+ {' '}
+ in
+
+
+ {region.label}
+
+
+ {' ' + region.label}
+
+ >
+ ) : (
+ ''
+ )}
- Nonprofits are making real environmental impact with HCB's fiscal sponsorship and financial tools.
- Explore the climate efforts running on HCB.
+ Nonprofits are making real environmental impact with HCB's fiscal
+ sponsorship and financial tools. Explore the climate efforts
+ running on HCB.
{organizations.length === 0 && (
-
+
- No results
+
+ No results
+
)}
@@ -1167,8 +1205,8 @@ export default function ClimatePage({ rawOrganizations, pageRegion }) {
}}
>
Let your money work for change by donating to all climate-focused
- nonprofits on HCB. Donate to 128 Collective’s curated
- list of recommended organizations.
+ nonprofits on HCB. Donate to 128 Collective’s curated list of
+ recommended organizations.
diff --git a/pages/hcb/first.js b/pages/hcb/first.js
index 01215bb9..de8994dc 100644
--- a/pages/hcb/first.js
+++ b/pages/hcb/first.js
@@ -143,9 +143,9 @@ export default function First() {
}}
variant="copy"
>
- Built by FIRST alumni for FIRST teams, HCB
- is a comprehensive financial platform used by hundreds of
- clubs, teams and hackathons.
+ Built by FIRST alumni for FIRST teams, HCB is a
+ comprehensive financial platform used by hundreds of clubs, teams
+ and hackathons.
-
- HCB, the #1 fiscal sponsor
-
+ HCB, the #1 fiscal sponsor
While many fiscal sponsors require that their partners relate to
their mission in similar ways, at HCB, we’ve built our
@@ -437,8 +435,8 @@ export default function FiscalSponsorship() {
A customizable and embeddable donations URL
- A fun and routing number to connect to external
- platforms, like Shopify and GoFundMe
+ A fun and routing number to connect to external platforms, like
+ Shopify and GoFundMe
Perks like PVSA certification, newsletter software, and
@@ -450,17 +448,16 @@ export default function FiscalSponsorship() {
organization? We’d love to meet you and chat about working
together. Feel free to apply
here or
- email our team if
- you have more questions about fiscal sponsorship!
+ email our team if you
+ have more questions about fiscal sponsorship!
At its core, Hack Club is a nonprofit encouraging students to learn
- how to code by building and making cool things.
- HCB was built out by teenagers at
- Hack Club and continues to be a real-world space that high
- schoolers can contribute to every day.
+ how to code by building and making cool things. HCB was built out by
+ teenagers at Hack Club and continues to be a real-world space
+ that high schoolers can contribute to every day.
diff --git a/pages/hcb/success.js b/pages/hcb/success.js
index c28ebde6..e66a43e7 100644
--- a/pages/hcb/success.js
+++ b/pages/hcb/success.js
@@ -111,11 +111,7 @@ export default function ApplicationSuccess() {
>
#hcb
-
diff --git a/pages/jobs/lead-hacker.js b/pages/jobs/lead-hacker.js
index 90f41447..ada773bd 100644
--- a/pages/jobs/lead-hacker.js
+++ b/pages/jobs/lead-hacker.js
@@ -58,8 +58,8 @@ const Page = () => (
of joining HCB, organizations get 501(c)(3) nonprofit status, access to
a beautiful dashboard for managing their finances, and all financial and
legal matters - from tax filings to payroll - handled. 50% of high
- school hackathons worldwide run on HCB, and Elon Musk has
- tweeted that we're a{' '}
+ school hackathons worldwide run on HCB, and Elon Musk has tweeted that
+ we're a{' '}
(
- With the right leadership, we hope to bring HCB to thousands
- of organizations across the United States and process tens of millions
- of dollars in transactions. We think do-gooders need the same tools that
+ With the right leadership, we hope to bring HCB to thousands of
+ organizations across the United States and process tens of millions of
+ dollars in transactions. We think do-gooders need the same tools that
software engineers do. For them, HCB is like GitHub: transformative.
Right now, HCB is the{' '}
@@ -306,9 +306,9 @@ const Page = () => (
>
jobs@hackclub.com
{' '}
- with "HCB" in the subject line, 3 bullet points
- demonstrating why you would be exceptional for the role, and your
- resume / GitHub / GitLab / sourcehut.
+ with "HCB" in the subject line, 3 bullet points demonstrating why you
+ would be exceptional for the role, and your resume / GitHub / GitLab /
+ sourcehut.
diff --git a/pages/onboard.js b/pages/onboard.js
index ffc13b7f..9ef14650 100644
--- a/pages/onboard.js
+++ b/pages/onboard.js
@@ -543,14 +543,49 @@ const ShipPage = () => {
-
-
-
- Never made a circuit board before? No problem.
+
+
+
+
+ Never made a circuit board before? No problem.
+
- Learn how to design your own circuit boards from scratch with our official tutorials and jams, like Maggie’s intro to PCB design jam. Ask in the{' '}
- Hack Club Slack{' '}
+ Learn how to design your own circuit boards from scratch with our{' '}
+ official tutorials and jams, like Maggie’s{' '}
+
+ intro to PCB design jam
+
+ . Ask in the{' '}
+
+ Hack Club Slack
+ {' '}
if you have any questions!
@@ -654,7 +689,8 @@ const ShipPage = () => {
>
- A movement sensor add-on to an open source game console.
+ A movement sensor add-on to an open source{' '}
+ game console.
Read the source →
@@ -700,10 +736,14 @@ const ShipPage = () => {
-
+
- Karmanyaah's digital level in the shape of a longhorn.
+ Karmanyaah's digital level in the shape of a
+ longhorn.
See the designs →
@@ -904,7 +944,12 @@ const ShipPage = () => {
Collaborate, get help, and support others as you take the leap.
-
@@ -951,7 +996,7 @@ const ShipPage = () => {
@@ -1003,11 +1048,17 @@ const ShipPage = () => {
-
+ Learn to PCB
- Read our Hacker Card tutorial to learn how to make a simple circuit board from start to end.
+
+ Read our Hacker Card tutorial to learn how to make a simple
+ circuit board from start to end.
+
Start the Tutorial
@@ -1041,44 +1092,51 @@ const ShipPage = () => {
/>
- {stickerButtonText.split(' ').map((line, i) =>