mirror of
https://github.com/System-End/site.git
synced 2026-04-19 19:45:07 +00:00
🎨 Run formatter
This commit is contained in:
parent
75ff7177ee
commit
19d8746e10
17 changed files with 1061 additions and 720 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
</>
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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 }
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ const CardModel = ({
|
|||
ml: ['-24px', '-32px', '-32px', '-32px'],
|
||||
mt: ['-24px', '-32px', '-32px', '-32px'],
|
||||
zIndex: 0,
|
||||
filter,
|
||||
filter
|
||||
}}
|
||||
alt=""
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -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 that’s 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 that’s 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
|
||||
|
|
|
|||
|
|
@ -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?
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
15
pages/404.js
15
pages/404.js
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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 it’s so expensive and time consuming?
|
||||
Legal status sounds great and all, but why go through the hassle of
|
||||
applying when it’s 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 didn’t 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 didn’t exist.
|
||||
</Text>
|
||||
<Text variant="lead">
|
||||
As it turns out, there’s 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.
|
||||
That’s 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. That’s 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 nonprofit’s
|
||||
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
|
||||
nonprofit’s 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 Club 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, we’ve 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, we’ve built our
|
||||
infrastructure to support hundreds of causes in all areas of
|
||||
charitability.
|
||||
</Text>
|
||||
<Text variant="lead">
|
||||
Check out some of the resources we’ve built our fiscal
|
||||
sponsorship foundation on:
|
||||
Check out some of the resources we’ve 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? We’d 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 Club Bank was built out by teenagers at Hack Club and
|
||||
continues to be a real-world space that high schoolers can contribute to
|
||||
every day.
|
||||
Hack Club Bank was built out by teenagers at
|
||||
Hack Club and continues to be a real-world space that high
|
||||
schoolers can contribute to every day.
|
||||
</Text>
|
||||
</FlexCol>
|
||||
</Container>
|
||||
|
|
|
|||
|
|
@ -64,8 +64,8 @@ export async function getStaticProps(context) {
|
|||
|
||||
return {
|
||||
props: {
|
||||
stats,
|
||||
stats
|
||||
},
|
||||
revalidate: 10,
|
||||
revalidate: 10
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
1533
pages/onboard.js
1533
pages/onboard.js
File diff suppressed because it is too large
Load diff
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue