🎨 Run formatter

This commit is contained in:
Malted 2023-06-27 15:24:06 -04:00
parent 75ff7177ee
commit 19d8746e10
17 changed files with 1061 additions and 720 deletions

View file

@ -97,18 +97,20 @@ export default function NavButton({
we want all input values to be saved every time */
let wasError = false
const formData = new FormData(form.current);
const formData = new FormData(form.current)
// Save form data
formData.forEach((value, key) => {
formData.forEach((value, key) => {
sessionStorage.setItem('bank-signup-' + key, value)
// Check if there are empty required fields.
if (
!isBack &&
(!value || value.trim() === '') &&
requiredFields[step - 1].includes(key) ||
!isBack && formData.get("contactOption") === "slack" && !formData.get("slackUsername") // I'm so sorry for this
(!isBack &&
(!value || value.trim() === '') &&
requiredFields[step - 1].includes(key)) ||
(!isBack &&
formData.get('contactOption') === 'slack' &&
!formData.get('slackUsername')) // I'm so sorry for this
) {
setFormError('Please fill all required fields')
wasError = true

View file

@ -9,8 +9,10 @@ export default function PersonalInfoForm({
setValidationResult,
requiredFields
}) {
const [selectedContactOption, setSelectedContactOption] = useState("Email");
const [email, setEmail] = useState(window.sessionStorage.getItem('bank-signup-userEmail')); // For display only, is not used for data submission.
const [selectedContactOption, setSelectedContactOption] = useState('Email')
const [email, setEmail] = useState(
window.sessionStorage.getItem('bank-signup-userEmail')
) // For display only, is not used for data submission.
return (
<>
@ -46,7 +48,7 @@ export default function PersonalInfoForm({
id="userEmail"
type="email"
placeholder="fiona@hackclub.com"
onInput={(e) => setEmail(e.target.value)}
onInput={e => setEmail(e.target.value)}
sx={{ ...AutofillColourFix }}
/>
</Field>
@ -125,8 +127,8 @@ export default function PersonalInfoForm({
<Radio
name="contactOption"
value="Email"
defaultChecked={true}
onInput={() => setSelectedContactOption("Email")}
defaultChecked={true}
onInput={() => setSelectedContactOption('Email')}
/>
Email
</Label>
@ -139,28 +141,25 @@ export default function PersonalInfoForm({
<Radio
name="contactOption"
value="Slack"
onInput={() => setSelectedContactOption("Slack")}
onInput={() => setSelectedContactOption('Slack')}
/>
Slack
</Label>
</Flex>
{selectedContactOption === "Slack" ? (
<Field
name="slackUsername"
requiredFields={requiredFields}
>
<Input
name="slackUsername"
id="slackUsername"
placeholder="Your name in the Hack Club Slack"
sx={{ ...AutofillColourFix }}
/>
</Field>
) : (selectedContactOption === "Email" ? (
<div>
We'll use {email ?? "whatever you put for your email above!"}
</div>
) : null)}
{selectedContactOption === 'Slack' ? (
<Field name="slackUsername" requiredFields={requiredFields}>
<Input
name="slackUsername"
id="slackUsername"
placeholder="Your name in the Hack Club Slack"
sx={{ ...AutofillColourFix }}
/>
</Field>
) : selectedContactOption === 'Email' ? (
<div>
We'll use {email ?? 'whatever you put for your email above!'}
</div>
) : null}
</Field>
</>
)

View file

@ -1,10 +1,4 @@
import {
Box,
Link,
Text,
Heading,
Flex,
} from 'theme-ui'
import { Box, Link, Text, Heading, Flex } from 'theme-ui'
import Timeline from './timeline'
import Stats from './stats'
import ApplyButton from './apply-button'

View file

@ -50,7 +50,12 @@ const Stats = ({ stats }) => {
e => {
if (e[0].isIntersecting) {
console.info('intersecting')
startMoneyAnimation(setBalance, stats.transactions_volume, 2_500, formatMoney)
startMoneyAnimation(
setBalance,
stats.transactions_volume,
2_500,
formatMoney
)
}
},
{ threshold: 1.0 }

View file

@ -148,7 +148,7 @@ const CardModel = ({
ml: ['-24px', '-32px', '-32px', '-32px'],
mt: ['-24px', '-32px', '-32px', '-32px'],
zIndex: 0,
filter,
filter
}}
alt=""
/>

View file

@ -39,10 +39,10 @@ export default function Sinerider({ stars }) {
<Box></Box>
<Box sx={{ mt: ['-40px', '-40px', '-150px'] }}>
<Text as="p" variant="subtitle">
SineRider is a game about love and graphing, powered by
teenage hackers of all kinds: artists, musicians, programmers,
storytellers so if thats you, come join us! We can always
use help keeping everything up to date and running smoothly.
SineRider is a game about love and graphing, powered by teenage
hackers of all kinds: artists, musicians, programmers, storytellers
so if thats you, come join us! We can always use help keeping
everything up to date and running smoothly.
</Text>
<Flex sx={{ flexDirection: 'column', mt: [3, 3, 4] }}>
<Buttons

View file

@ -19,7 +19,11 @@ const JoinForm = ({ sx = {} }) => {
clearOnSubmit: 5000,
method: 'POST',
initData: router.query.continent
? { continent: router.query.continent, reason: router.query.reason, event: router.query.event }
? {
continent: router.query.continent,
reason: router.query.reason,
event: router.query.event
}
: { reason: router.query.reason, event: router.query.event }
})
@ -28,7 +32,6 @@ const JoinForm = ({ sx = {} }) => {
const useWaitlist = process.env.NEXT_PUBLIC_OPEN !== 'true'
return (
<Card sx={{ maxWidth: 'narrow', mx: 'auto', label: { mb: 3 }, ...sx }}>
<form {...formProps}>
{eventReferrer && (
@ -46,11 +49,10 @@ const JoinForm = ({ sx = {} }) => {
We can't wait to see you at {eventReferrer}! {''}
</Text>
<br />
<Text variant='subtitle' sx={{ fontSize: 2 }}>
<Text variant="subtitle" sx={{ fontSize: 2 }}>
<i> In the meantime, we'll be hanging around in the Slack </i>
</Text>
</Box>
)}
<Grid columns={[1, 2]} gap={1} sx={{ columnGap: 2 }}>
<Label>
@ -106,7 +108,6 @@ const JoinForm = ({ sx = {} }) => {
<option value="tertiary">Tertiary Education (18+)</option>
</Select>
</Label>
</Grid>
<Label>
Why do you want to join the Hack Club Slack?

View file

@ -18,9 +18,9 @@ const nextConfig = {
remotePatterns: [
{
protocol: 'https',
hostname: 'cloud-*-hack-club-bot.vercel.app',
},
],
hostname: 'cloud-*-hack-club-bot.vercel.app'
}
]
},
webpack: (config, { isServer }) => {
if (isServer) require('./lib/sitemap')

View file

@ -171,8 +171,12 @@ const Blinking = styled(Heading)`
const Spinning = styled(Image)`
@keyframes spin {
from {transform:rotate(0deg);}
to {transform:rotate(360deg);}
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
animation-name: spin;
@ -188,8 +192,11 @@ const NotFoundPage = () => (
<ForceTheme theme="dark" />
<Nav color="primary" dark />
<Container variant="narrow" sx={{ py: [5, 6], textAlign: 'center' }}>
<Spinning sx={{fontSize: [128, 256], textAlign: 'center', height: '1lh'}} src="/404/dinobox.svg"></Spinning>
<br/>
<Spinning
sx={{ fontSize: [128, 256], textAlign: 'center', height: '1lh' }}
src="/404/dinobox.svg"
></Spinning>
<br />
<Blinking as="h1" variant="title" sx={{ fontSize: [64, 128] }}>
404!
</Blinking>

View file

@ -34,8 +34,8 @@ export default async function handler(req, res) {
'Tell us about your event': data.eventDescription,
'Mailing Address': data.userAddress,
'Address Line 1': data.addressLine1,
'City': data.addressCity,
'State': data.addressState,
City: data.addressCity,
State: data.addressState,
'Zip Code': data.addressZip,
'Address Country': data.addressCountry,
'Address Country Code': data.addressCountryCode,
@ -46,10 +46,11 @@ export default async function handler(req, res) {
? 'Yes, I have used Hack Club Bank before'
: 'No, first time!',
'How did you hear about HCB?': data.referredBy,
'Transparent': data.transparent === 'true' ? 'Yes, please!' : 'No, thanks.',
Transparent:
data.transparent === 'true' ? 'Yes, please!' : 'No, thanks.',
'HCB account URL': `https://bank.hackclub.com/${r.slug}`,
'Contact Option': data.contactOption,
'Slack Username': data.slackUsername
'Contact Option': data.contactOption,
'Slack Username': data.slackUsername
})
res.writeHead(302, { Location: '/bank/apply/success' }).end()
console.log(r)

View file

@ -49,7 +49,6 @@ export default async function handler(req, res) {
const secrets = (process.env.NAUGHTY || '').split(',')
for (const secret of secrets) {
if (secret === req.headers['x-forwarded-for']) {
return res.json({
@ -59,7 +58,6 @@ export default async function handler(req, res) {
}
}
await joinTable.create({
'Full Name': data.name,
'Email Address': data.email,

View file

@ -262,10 +262,9 @@ export default function FiscalSponsorship() {
</Text>
</FlexCol>
<Text variant="headline">
Organizing an event, project, or organization to
serve the public good or your community? Consider
fiscal sponsorship before the pain of paperwork
distracts you from your goals.
Organizing an event, project, or organization to serve the public
good or your community? Consider fiscal sponsorship before the pain
of paperwork distracts you from your goals.
</Text>
<FlexCol gap={1} alignItems="center">
@ -286,40 +285,41 @@ export default function FiscalSponsorship() {
</BulletBox>
</FlexCol>
<Section id="costs-and-perks">
<Text variant="title">Why organizers go after 501(c)(3) status</Text>
<Text variant="title">
Why organizers go after 501(c)(3) status
</Text>
<Text variant="lead">
Every year, 1.6 million nonprofits in the U.S.
apply for and renew 501(c)(3) status through
the IRS for charitable recognition and tax
exemption for their funding. It can take anywhere
from 2-12 months to hear a decision back from the
IRS, and in general, nonprofit organizers should be prepared for:
Every year, 1.6 million nonprofits in the U.S. apply for and renew
501(c)(3) status through the IRS for charitable recognition and
tax exemption for their funding. It can take anywhere from 2-12
months to hear a decision back from the IRS, and in general,
nonprofit organizers should be prepared for:
</Text>
<BulletBox>
<Bullet glow={false} icon="sad">
$3,000 in <b>up-front costs</b>, from
<Link
href="https://www.irs.gov/charities-non-profits/form-1023-and-1023-ez-amount-of-user-fee"
> forms </Link>
<Link href="https://www.irs.gov/charities-non-profits/form-1023-and-1023-ez-amount-of-user-fee">
{' '}
forms{' '}
</Link>
to state fees to support from legal counsel
</Bullet>
<Bullet glow={false} icon="sad">
The potential for the IRS to <b>reject</b> an application
</Bullet>
<Bullet glow={false} icon="sad">
<b>Hiring</b> bookkeepers and accountants to prepare taxes
and provide upkeep annually to stay in good standing
<b>Hiring</b> bookkeepers and accountants to prepare taxes and
provide upkeep annually to stay in good standing
</Bullet>
<Bullet glow={false} icon="sad">
<b>Closing costs</b> averaging around $5,000 if you
lose or terminate status
<b>Closing costs</b> averaging around $5,000 if you lose or
terminate status
</Bullet>
</BulletBox>
</Section>
<Text variant="lead">
Legal status sounds great and all,
but why go through the hassle of applying
when its so expensive and time consuming?
Legal status sounds great and all, but why go through the hassle of
applying when its so expensive and time consuming?
</Text>
<Text variant="lead">
Because as a legally recognized 501(c)(3) nonprofit in the U.S.,
@ -348,26 +348,26 @@ export default function FiscalSponsorship() {
</Bullet>
</BulletBox>
<Text variant="lead">
Unfortunately between the costs and time needed to organize
a nonprofit, many charitable initiatives are prevented
from exiting an idea phase or progressing at a pace
originally hoped. Imagine how much more valuable impact
could happen on the world if these barriers didnt exist.
Unfortunately between the costs and time needed to organize a
nonprofit, many charitable initiatives are prevented from exiting an
idea phase or progressing at a pace originally hoped. Imagine how
much more valuable impact could happen on the world if these
barriers didnt exist.
</Text>
<Text variant="lead">
As it turns out, theres an alternative route for startups,
student-led initiatives, or anyone looking to avoid a headache
with the IRS to obtain all the benefits of 501(c)(3) status.
Thats where fiscal sponsorship comes in.
student-led initiatives, or anyone looking to avoid a headache with
the IRS to obtain all the benefits of 501(c)(3) status. Thats where
fiscal sponsorship comes in.
</Text>
<Section id="what-is">
<Text variant="title">Fiscal Sponsorship?</Text>
<Text variant="lead">
By legally working with an existing nonprofit offering
fiscal sponsorship, projects and events can claim most
of the legal benefits of individual 501(c)(3) status.
Piggy-backing off this existing status, organizations
also gain access to resources from their fiscal sponsor like:
By legally working with an existing nonprofit offering fiscal
sponsorship, projects and events can claim most of the legal
benefits of individual 501(c)(3) status. Piggy-backing off this
existing status, organizations also gain access to resources from
their fiscal sponsor like:
</Text>
<BulletBox>
<Bullet icon="docs">
@ -400,13 +400,12 @@ export default function FiscalSponsorship() {
<Section id="requirements">
<Text variant="title">Requirements for Fiscal Sponsorship</Text>
<Text variant="lead">
Depending on the fiscal sponsor you choose,
requirements for working together can vary.
Fiscal sponsors generally ask that your nonprofits
goals be similar to theirs. They also usually ask
that your organization or event commits to remaining
charitable in nature and refrains from activities that
may result in loss of 501(c)(3) status.
Depending on the fiscal sponsor you choose, requirements for
working together can vary. Fiscal sponsors generally ask that your
nonprofits goals be similar to theirs. They also usually ask that
your organization or event commits to remaining charitable in
nature and refrains from activities that may result in loss of
501(c)(3) status.
</Text>
</Section>
@ -415,14 +414,14 @@ export default function FiscalSponsorship() {
Hack&nbsp;Club&nbsp;Bank, the #1 fiscal sponsor
</Text>
<Text variant="lead">
While many fiscal sponsors require that their partners relate
to their mission in similar ways, at Hack Club Bank, weve built
our infrastructure to support hundreds of causes in all areas of
charitability.
While many fiscal sponsors require that their partners relate to
their mission in similar ways, at Hack Club Bank, weve built our
infrastructure to support hundreds of causes in all areas of
charitability.
</Text>
<Text variant="lead">
Check out some of the resources weve built our fiscal
sponsorship foundation on:
Check out some of the resources weve built our fiscal sponsorship
foundation on:
</Text>
<BulletBox>
<Bullet icon="bank-account">
@ -439,8 +438,8 @@ export default function FiscalSponsorship() {
platforms, like Shopify and GoFundMe
</Bullet>
<Bullet icon="purse">
Perks like PVSA certification, newsletter software,
and 1Password credits
Perks like PVSA certification, newsletter software, and
1Password credits
</Bullet>
</BulletBox>
<Text variant="lead">
@ -448,16 +447,17 @@ export default function FiscalSponsorship() {
organization? Wed love to meet you and chat about working
together. Feel free to apply
<Link href="https://hackclub.com/bank/#apply"> here </Link>or
<Link href="mailto:bank@hackclub.com"> email our team </Link>if you have more questions about fiscal sponsorship!
<Link href="mailto:bank@hackclub.com"> email our team </Link>if
you have more questions about fiscal sponsorship!
</Text>
</Section>
<Text variant="lead">
At its core, Hack Club is a nonprofit encouraging students to learn
how to code by building and making cool things.
Hack&nbsp;Club&nbsp;Bank was built out by teenagers at Hack&nbsp;Club and
continues to be a real-world space that high schoolers can contribute to
every day.
Hack&nbsp;Club&nbsp;Bank was built out by teenagers at
Hack&nbsp;Club and continues to be a real-world space that high
schoolers can contribute to every day.
</Text>
</FlexCol>
</Container>

View file

@ -64,8 +64,8 @@ export async function getStaticProps(context) {
return {
props: {
stats,
stats
},
revalidate: 10,
revalidate: 10
}
}

View file

@ -234,7 +234,8 @@ const HackathonGrant = () => {
color: 'muted'
}}
>
This is not an annual program and has only been renewed until the end of this year.
This is not an annual program and has only been renewed until
the end of this year.
</Text>
</Requirement>
<Requirement

File diff suppressed because it is too large Load diff

View file

@ -1041,12 +1041,12 @@ const Philanthropy = ({ posts = [] }) => {
Endless Network
</Text>
</Fade>
<Fade bottom delay={410}>
<Fade bottom delay={410}>
<Text as="p" sx={{ lineHeight: '1.8em' }}>
Argosy Foundation
</Text>
</Fade>
<Fade bottom delay={440}>
<Fade bottom delay={440}>
<Text as="p" sx={{ lineHeight: '1.8em' }}>
Ron Baron
</Text>

View file

@ -408,7 +408,7 @@ export default function Team() {
img="https://scrapbook.hackclub.com/yednapg.png"
pronouns="he/him"
/>
<Bio
<Bio
name="Arav Narula"
teamRole="Moderation & Events"
img="https://ca.slack-edge.com/T0266FRGM-U01MPHKFZ7S-7b67dc7c40fb-512"