Lachlan's new /fiscal-sponsorship page (#1087)
Co-authored-by: Lachlan Campbell <lachlanjc@hey.com>
|
|
@ -11,7 +11,7 @@ It was a huge honor last month to have Elon [spend an hour in an ask-me-anything
|
|||
|
||||
When hackers see problems in the world, we don’t blame someone else: we try to take them on to solve. Elon is very selective about the nonprofits he supports and I’m proud Hack Club is one of them.
|
||||
|
||||
So…how will Hack Club invest $500,000? We want to use this to help 1,000 more students start and join Hack Clubs in their towns ([see the worldwide map](https://hackclub.com/map/)). For those already in Hack Club, we look to you to help us make a higher-quality experience. We plan to continue much of what we’re already doing (and [what I wrote about in January](https://zachinto2020.wordpress.com/2019/12/31/as-midnight-approaches/)): spending as little money as possible at all times, growing slowly, adding diverse staff to make Hack Club better (video game designers, software engineers, media producers, and more). We are pushing hard to try and make the [Hack Club Slack](https://hackclub.com/) the best place to be a teenager on the internet and expanding [HCB](https://hackclub.com/hcb/).
|
||||
So…how will Hack Club invest $500,000? We want to use this to help 1,000 more students start and join Hack Clubs in their towns ([see the worldwide map](https://hackclub.com/map/)). For those already in Hack Club, we look to you to help us make a higher-quality experience. We plan to continue much of what we’re already doing (and [what I wrote about in January](https://zachinto2020.wordpress.com/2019/12/31/as-midnight-approaches/)): spending as little money as possible at all times, growing slowly, adding diverse staff to make Hack Club better (video game designers, software engineers, media producers, and more). We are pushing hard to try and make the [Hack Club Slack](https://hackclub.com/) the best place to be a teenager on the internet and expanding [HCB](https://hackclub.com/fiscal-sponsorship/).
|
||||
|
||||
We’ll be fully transparent in how we spend this money. One thing we’ve been working toward after winning the [Frank Grant](https://grant.frank.ly/) is open sourcing our finances. Hack Club HQ has been running on HCB since February, and starting today, [**you can see our finances publicly**](https://hcb.hackclub.com/hq). Through HCB, you can track how we spend every dollar of Elon’s gift. Soon, we’ll also launch [Frank’s](https://frank.ly/) transparency tools on [hackclub.com](https://hackclub.com/).
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ In 2014, Hack Club was founded, and Tom joined as Hack Club’s first board memb
|
|||
|
||||
Tom and Theresa also helped fund [The Hacker Zephyr](https://hack.af/zephyrdoc), an epic, cross-country train hackathon taken by 42 teen hackers in the summer of 2021. Tom even hacked alongside Hack Clubbers onboard.
|
||||
|
||||
With this gift, we will continue to build the engineering team at Hack Club, including a Tech Lead for [HCB](https://hackclub.com/hcb), and new engineers to support clubs, the Hack Club online community, and events.
|
||||
With this gift, we will continue to build the engineering team at Hack Club, including a Tech Lead for [HCB](https://hackclub.com/fiscal-sponsorship), and new engineers to support clubs, the Hack Club online community, and events.
|
||||
|
||||
One of our goals in 2022 is to improve Hack Club and to support more teenagers in joining the community. Thank you Tom and Theresa for helping make this possible.
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ Today, we're excited to announce Elon is donating $1 million to Hack Club.
|
|||
|
||||
This gift will help launch a number of ideas we've been discussing, including helping more in-person hackathons get off the ground, providing more direct 1:1 technical support on the [Hack Club Slack](https://hackclub.com/slack/), and starting up cool new projects like [The Hacker Zephyr](https://github.com/hackclub/the-hacker-zephyr). We also want to use his gift to help 1,000 more teenagers start and join Hack Clubs in their towns.
|
||||
|
||||
We will be spending every dollar as wisely as possible, growing thoughtfully, and adding diverse staff to make Hack Club better. We are pushing hard to try and make the Hack Club Slack the best place to be a teenager on the internet and expanding [HCB](https://hackclub.com/hcb/).
|
||||
We will be spending every dollar as wisely as possible, growing thoughtfully, and adding diverse staff to make Hack Club better. We are pushing hard to try and make the Hack Club Slack the best place to be a teenager on the internet and expanding [HCB](https://hackclub.com/fiscal-sponsorship/).
|
||||
|
||||
Elon is very selective about the nonprofits he supports and we're proud Hack Club is one of them.
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ 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/fiscal-sponsorship/),
|
||||
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
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { useEffect, useRef, useState, useCallback } from 'react'
|
|||
import { Box, Flex, Input, Text } from 'theme-ui'
|
||||
import FlexCol from '../../flex-col'
|
||||
import AutofillColourFix from './autofill-colour-fix'
|
||||
import { geocode, search } from '../../../lib/hcb/apply/address-validation'
|
||||
import { geocode, search } from '../../../lib/fiscal-sponsorship/apply/address-validation'
|
||||
import Icon from '../../icon'
|
||||
|
||||
const approvedCountries = [
|
||||
|
|
@ -18,7 +18,8 @@ export default function Field({
|
|||
/* Fill in the field input element with the value from sessionStorage.
|
||||
Note: the custom checkbox component does this in its own useEffect hook. */
|
||||
useEffect(() => {
|
||||
const value = router.query[name] || sessionStorage.getItem('bank-signup-' + name)
|
||||
const value =
|
||||
router.query[name] || sessionStorage.getItem('bank-signup-' + name)
|
||||
if (value) {
|
||||
const input = document.getElementById(name)
|
||||
if (input) input.value = value
|
||||
|
|
@ -38,7 +39,6 @@ export default function Field({
|
|||
<Label
|
||||
htmlFor={name}
|
||||
sx={{
|
||||
textTransform: 'capitalize',
|
||||
fontSize: 3,
|
||||
width: 'fit-content'
|
||||
}}
|
||||
|
|
@ -15,7 +15,7 @@ export default function HCBInfo() {
|
|||
<Flex sx={{ alignItems: 'center', gap: 2 }}>
|
||||
<Link
|
||||
color="white"
|
||||
href="/hcb/fiscal-sponsorship"
|
||||
href="/fiscal-sponsorship/about"
|
||||
target="_blank"
|
||||
sx={{
|
||||
fontSize: 3,
|
||||
|
|
@ -15,7 +15,7 @@ async function sendApplication() {
|
|||
|
||||
// Send the data
|
||||
try {
|
||||
const res = await fetch('/api/hcb/apply', {
|
||||
const res = await fetch('/api/fiscal-sponsorship/apply', {
|
||||
method: 'POST',
|
||||
cors: 'no-cors',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
|
|
@ -124,7 +124,7 @@ export default function NavButton({
|
|||
|
||||
if (step >= maxStep && !isBack) {
|
||||
await sendApplication()
|
||||
await router.push('/hcb/apply/success')
|
||||
await router.push('/fiscal-sponsorship/apply/success')
|
||||
return
|
||||
} else {
|
||||
step += isBack ? -1 : 1
|
||||
|
|
@ -6,10 +6,10 @@ import Field from './field'
|
|||
import AutofillColourFix from './autofill-colour-fix'
|
||||
|
||||
export default function OrganizationInfoForm({ requiredFields }) {
|
||||
const [org, setOrg] = useState('organization')
|
||||
const [org, setOrg] = useState('Organization')
|
||||
|
||||
useEffect(() => {
|
||||
if (navigator.language === 'en-GB') setOrg('organisation')
|
||||
if (navigator.language === 'en-GB') setOrg('Organisation')
|
||||
}, [])
|
||||
|
||||
return (
|
||||
|
|
@ -48,7 +48,7 @@ export default function OrganizationInfoForm({ requiredFields }) {
|
|||
>
|
||||
<AddressInput isPersonalAddressInput={false} name="eventLocation" />
|
||||
</Field>
|
||||
<Field
|
||||
{/* <Field
|
||||
name="transparent"
|
||||
label="Transparency mode"
|
||||
col={false}
|
||||
|
|
@ -61,10 +61,10 @@ export default function OrganizationInfoForm({ requiredFields }) {
|
|||
requiredFields={requiredFields}
|
||||
>
|
||||
<Checkbox defaultChecked={true} name="transparent" />
|
||||
</Field>
|
||||
</Field> */}
|
||||
<Field
|
||||
name="eventDescription"
|
||||
label={`Tell us about your ${org}!`}
|
||||
label={`Tell us about your ${org.toLowerCase()}!`}
|
||||
description="1 or 2 sentences will suffice"
|
||||
requiredFields={requiredFields}
|
||||
>
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
import { Card, Badge as ThemeBadge, Box, Heading, Text, Image } from 'theme-ui'
|
||||
import { Organization } from '../../../pages/hcb/climate'
|
||||
import Tilt from '../../../components/tilt'
|
||||
import { Organization } from '../../../pages/fiscal-sponsorship/climate'
|
||||
import Tilt from '../../tilt'
|
||||
import Icon from '@hackclub/icons'
|
||||
import Tooltip from '../tooltip'
|
||||
|
||||
118
components/fiscal-sponsorship/features.js
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
import { Flex, Box, Heading, Link, Text, Container, Grid } from 'theme-ui'
|
||||
import Icon from '../icon'
|
||||
import Balancer from 'react-wrap-balancer'
|
||||
|
||||
export default function Features() {
|
||||
return (
|
||||
<Box sx={{ pt: 5, pb: [5, 6], bg: 'snow' }}>
|
||||
<Container>
|
||||
<Heading as="h2" variant="title" sx={{ mb: 3 }}>
|
||||
Financial tools for your nonprofit,
|
||||
<br />
|
||||
built by a nonprofit.
|
||||
</Heading>
|
||||
<Text as="p" variant="lead" sx={{ color: 'slate', maxWidth: '52ch' }}>
|
||||
Unlike other fiscal sponsors, we don’t license software from
|
||||
for-profit entities. Since day one, we’ve built beautiful, self-serve
|
||||
software to empower you to raise and spend money without
|
||||
administrative hassle.
|
||||
</Text>
|
||||
<Grid columns={[null, 2, 3]} sx={{ mt: 4, rowGap: 3, columnGap: 4 }}>
|
||||
<Module
|
||||
icon="bank-account"
|
||||
name="Receive foundation grants"
|
||||
body="with tax-deductible 501(c)(3) status."
|
||||
/>
|
||||
<Module
|
||||
icon="card"
|
||||
name="Issue physical & virtual debit cards"
|
||||
body="to all your teammates."
|
||||
/>
|
||||
<Module
|
||||
icon="web"
|
||||
name="Operate globally"
|
||||
body="with a U.S. legal entity."
|
||||
/>
|
||||
<Module
|
||||
icon="payment-transfer"
|
||||
name="Send money & reimburse"
|
||||
body="via check, ACH, bank wire, PayPal, & more."
|
||||
/>
|
||||
<Module
|
||||
icon="explore"
|
||||
name="Make your finances transparent"
|
||||
body="to your team and optionally, public."
|
||||
/>
|
||||
<Module
|
||||
icon="admin"
|
||||
name="Pay team members"
|
||||
body="with built-in payroll."
|
||||
/>
|
||||
<Module
|
||||
icon="docs"
|
||||
name="We file all your taxes"
|
||||
body="automatically, including form 990."
|
||||
/>
|
||||
<Module
|
||||
icon="support"
|
||||
name="Embed a custom donation form"
|
||||
body="on your website."
|
||||
/>
|
||||
<Module
|
||||
icon="leader"
|
||||
name="Get 24-hour support"
|
||||
body="on weekdays with a dedicated point of contact."
|
||||
/>
|
||||
</Grid>
|
||||
</Container>
|
||||
<Container variant="copy" sx={{ mt: [4, 5] }}>
|
||||
<Laptop
|
||||
href="https://hcb.hackclub.com/reboot"
|
||||
title="See Reboot’s finances in public"
|
||||
sx={{}}
|
||||
/>
|
||||
</Container>
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
function Module({ icon, name, body }) {
|
||||
return (
|
||||
<Box sx={{ display: 'flex', alignItems: 'start' }}>
|
||||
<Icon
|
||||
size={48}
|
||||
glyph={icon}
|
||||
sx={{ flexShrink: 0, marginRight: 3, color: 'primary' }}
|
||||
/>
|
||||
<Text
|
||||
as="p"
|
||||
sx={{
|
||||
color: 'slate',
|
||||
lineHeight: '1.375',
|
||||
fontSize: 20,
|
||||
alignSelf: 'center',
|
||||
m: 0
|
||||
}}
|
||||
>
|
||||
<Text as="strong" color="slate">
|
||||
{name}
|
||||
</Text>{' '}
|
||||
{body}
|
||||
</Text>
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
function Laptop({ href, title, sx }) {
|
||||
return (
|
||||
<Link href={href} title={title} sx={sx}>
|
||||
<img
|
||||
src="/fiscal-sponsorship/laptop.png"
|
||||
alt="Laptop"
|
||||
width={1140}
|
||||
height={691}
|
||||
style={{ width: '100%', height: 'auto' }}
|
||||
/>
|
||||
</Link>
|
||||
)
|
||||
}
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
import { Button, Text, Image, Flex } from 'theme-ui'
|
||||
import Icon from '../icon'
|
||||
import Icon from '../../icon'
|
||||
import Link from 'next/link'
|
||||
|
||||
export default function ApplyButton() {
|
||||
return (
|
||||
<Link href="/hcb/apply" passHref legacyBehavior>
|
||||
<Link href="/fiscal-sponsorship/apply" passHref legacyBehavior>
|
||||
<Button
|
||||
variant="ctaLg"
|
||||
as="a"
|
||||
|
|
@ -10,7 +10,7 @@ export default function Features() {
|
|||
<Box sx={{ py: 5 }}>
|
||||
<Box as="a" href="#testimonials">
|
||||
<Image
|
||||
src="/hcb/meet-teams-using-hcb.svg"
|
||||
src="/fiscal-sponsorship/meet-teams-using-hcb.svg"
|
||||
alt="yeah"
|
||||
width={200}
|
||||
height={100}
|
||||
|
|
@ -65,7 +65,7 @@ export default function Features() {
|
|||
target="_blank"
|
||||
>
|
||||
<NextImage
|
||||
src="/hcb/poseidon-dashboard.png"
|
||||
src="/fiscal-sponsorship/poseidon-dashboard.png"
|
||||
alt="iPad"
|
||||
width={500}
|
||||
height={300}
|
||||
|
|
@ -103,7 +103,7 @@ export default function Signup() {
|
|||
} else {
|
||||
setEventName('')
|
||||
}
|
||||
} catch (e) {}
|
||||
} catch (e) { }
|
||||
}, 200)
|
||||
)
|
||||
|
||||
|
|
@ -119,7 +119,7 @@ export default function Signup() {
|
|||
const handleSubmit = async e => {
|
||||
e.preventDefault()
|
||||
|
||||
await fetch('/api/hcb/demo', {
|
||||
await fetch('/api/fiscal-sponsorship/demo', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
eventName,
|
||||
|
|
@ -144,7 +144,7 @@ export default function Signup() {
|
|||
<Base
|
||||
id="form"
|
||||
method="POST"
|
||||
action="/api/hcb/demo"
|
||||
action="/api/fiscal-sponsorship/demo"
|
||||
onSubmit={handleSubmit}
|
||||
>
|
||||
<Grid sx={{ gridTemplateColumns: '1fr 2fr', alignItems: 'center' }}>
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
import { Box, Link, Text, Heading, Flex } from 'theme-ui'
|
||||
import Timeline from './timeline'
|
||||
import Stats from './stats'
|
||||
import ApplyButton from './apply-button'
|
||||
|
||||
|
|
@ -26,7 +25,6 @@ export default function Start({ stats }) {
|
|||
</Text>
|
||||
</Flex>
|
||||
<Stats stats={stats} />
|
||||
<Timeline />
|
||||
<Flex
|
||||
sx={{ flexDirection: 'column', textAlign: 'center', gap: 4, mx: 3 }}
|
||||
>
|
||||
|
|
@ -56,7 +56,7 @@ const Content = () => (
|
|||
debit cards, a domain name, stickers, and more.`}
|
||||
/>
|
||||
</List>
|
||||
<NextLink href="/hcb" passHref>
|
||||
<NextLink href="/fiscal-sponsorship" passHref>
|
||||
<Button as="a" variant="outlineLg" sx={{ width: [null, null, 500] }}>
|
||||
Apply
|
||||
<Box as="span" sx={{ display: ['none', 'inline', ''] }}>
|
||||
|
|
@ -153,7 +153,7 @@ const Static = () => (
|
|||
sx={{
|
||||
position: 'relative',
|
||||
overflow: 'hidden',
|
||||
backgroundImage: `url('/hcb/bg.webp')`,
|
||||
backgroundImage: `url('/fiscal-sponsorship/bg.webp')`,
|
||||
backgroundSize: 'cover'
|
||||
}}
|
||||
>
|
||||
|
|
|
|||
|
|
@ -1,213 +0,0 @@
|
|||
import { Box, Container, Heading, Text, Link, Grid } from 'theme-ui'
|
||||
import Run from './run'
|
||||
import { Fade } from 'react-reveal'
|
||||
import Icon from '../icon'
|
||||
|
||||
export default function Everything({ fee, partner = false }) {
|
||||
return (
|
||||
<>
|
||||
<Box
|
||||
sx={{
|
||||
pt: 6,
|
||||
pb: [3, 6],
|
||||
marginTop: 6,
|
||||
bg: 'darker'
|
||||
}}
|
||||
>
|
||||
<Container mb={[4, 5]} px={3} sx={{ textAlign: 'center' }}>
|
||||
<Heading variant="ultratitle" sx={{ color: 'smoke' }}>
|
||||
Everything you’ll need.
|
||||
</Heading>
|
||||
</Container>
|
||||
<Container px={[3, null, 5]}>
|
||||
<List>
|
||||
{Object.entries({
|
||||
'Legal entity with 501(c)(3) status': 'briefcase',
|
||||
'We do your taxes': 'checkmark',
|
||||
'Share access with your whole team': 'member-add',
|
||||
'Backed by a bank account under the hood': 'bank-account',
|
||||
'Instant invoice sending': 'transactions',
|
||||
'Real-time dashboard of finances': 'analytics',
|
||||
'Transaction data export': 'download',
|
||||
'Record shared notes on transactions': 'docs',
|
||||
'24-hour response support': 'clock',
|
||||
'Reimbursement process': 'enter'
|
||||
// 'Instant deposits': 'bolt'
|
||||
}).map(([item, icon = 'enter']) => (
|
||||
<ListItem key={item} icon={icon}>
|
||||
{item}
|
||||
</ListItem>
|
||||
))}
|
||||
{Object.entries({
|
||||
'Physical check sending & voiding': '',
|
||||
'Online direct deposit & ACH transfers': '',
|
||||
'Generate attendee legal waivers': '',
|
||||
'Virtual debit cards (with Apple & Google Pay)': '',
|
||||
'Debit card transaction paper trail': '',
|
||||
'Transparency Mode': ''
|
||||
}).map(([item, date]) => (
|
||||
<ListItem
|
||||
key={item}
|
||||
icon={
|
||||
item.includes('signup')
|
||||
? 'bolt'
|
||||
: item.includes('card')
|
||||
? 'card'
|
||||
: item.includes('Transparency')
|
||||
? 'explore'
|
||||
: item.includes('Physical')
|
||||
? 'email'
|
||||
: 'enter'
|
||||
}
|
||||
>
|
||||
{item}
|
||||
</ListItem>
|
||||
))}
|
||||
{!partner
|
||||
? Object.entries({
|
||||
'Online, embeddable donation form': ''
|
||||
}).map(([item, date]) => (
|
||||
<ListItem
|
||||
key={item}
|
||||
icon={
|
||||
item.startsWith('Instant')
|
||||
? 'bolt'
|
||||
: item.includes('form')
|
||||
? 'link'
|
||||
: 'enter'
|
||||
}
|
||||
>
|
||||
{item}
|
||||
</ListItem>
|
||||
))
|
||||
: ''}
|
||||
</List>
|
||||
</Container>
|
||||
<Run />
|
||||
<Container px={3} mt={4}>
|
||||
<Box
|
||||
sx={{
|
||||
display: 'flex',
|
||||
justifyContent: 'center',
|
||||
flexWrap: 'wrap',
|
||||
alignItems: 'center',
|
||||
textAlign: 'center'
|
||||
}}
|
||||
>
|
||||
<Text sx={{ fontSize: 32, mr: 2 }}>You pay just</Text>
|
||||
<Percentage fee={fee} />
|
||||
<Text sx={{ fontSize: 32, ml: 2 }}>
|
||||
of revenue. No upfront costs.
|
||||
</Text>
|
||||
</Box>
|
||||
<Container
|
||||
variant="copy"
|
||||
sx={{
|
||||
textAlign: 'center',
|
||||
fontSize: 18,
|
||||
lineHeight: '1.25',
|
||||
letterSpacing: '-.03ch',
|
||||
marginTop: 4,
|
||||
marginBottom: 5
|
||||
}}
|
||||
>
|
||||
<Container variant="narrow">
|
||||
<Text sx={{ color: 'muted', lineHeight: 1.375 }}>
|
||||
HCB is a{' '}
|
||||
<Link
|
||||
color="primary"
|
||||
href="https://en.wikipedia.org/wiki/Fiscal_sponsorship"
|
||||
hoverline
|
||||
>
|
||||
fiscal sponsor
|
||||
</Link>
|
||||
. Other fiscal sponsors' fees typically vary between 7-14%
|
||||
of revenue. Hack Club is a 501(c)(3) nonprofit.
|
||||
</Text>
|
||||
</Container>
|
||||
</Container>
|
||||
</Container>
|
||||
</Box>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
function List({ children }) {
|
||||
return (
|
||||
<Container>
|
||||
<ol
|
||||
style={{
|
||||
paddingLeft: 0,
|
||||
listStyle: 'none'
|
||||
}}
|
||||
>
|
||||
<Grid gap={2} columns={[1, 1, '1fr 1fr']}>
|
||||
{children}
|
||||
</Grid>
|
||||
</ol>
|
||||
</Container>
|
||||
)
|
||||
}
|
||||
|
||||
function ListItem({ icon = 'enter', start, ...props }) {
|
||||
return (
|
||||
<Fade left>
|
||||
<li
|
||||
style={{
|
||||
lineHeight: 1.25,
|
||||
breakInside: 'avoid',
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
paddingBottom: 4,
|
||||
marginBottom: 8
|
||||
}}
|
||||
>
|
||||
{start || (
|
||||
<Icon
|
||||
glyph={icon}
|
||||
sx={{ color: 'muted', marginRight: 2 }}
|
||||
size={32}
|
||||
mr={2}
|
||||
/>
|
||||
)}
|
||||
<Text sx={{ fontSize: 24, color: 'smoke' }} {...props} />
|
||||
</li>
|
||||
</Fade>
|
||||
)
|
||||
}
|
||||
|
||||
function Percentage({ fee }) {
|
||||
return (
|
||||
<Box
|
||||
sx={{
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
bg: 'slate',
|
||||
color: 'green',
|
||||
width: [fee.length === 1 ? 70 : 80, fee.length === 1 ? 128 : 138],
|
||||
height: [fee.length === 1 ? 70 : 80, fee.length === 1 ? 128 : 138],
|
||||
borderRadius: 'circle',
|
||||
fontWeight: 'bold',
|
||||
justifyContent: 'center',
|
||||
boxShadow: '0 8px 32px rgba(255, 255, 255, 0.125)',
|
||||
fontSize: [48, 84],
|
||||
'&:after': {
|
||||
content: '"%"',
|
||||
fontSize: [24, 40],
|
||||
fontWeight: 'normal',
|
||||
marginRight: fee.length === 1 ? -2 : 0,
|
||||
marginLeft: [null, fee.length === 1 ? 2 : 0],
|
||||
color: 'muted'
|
||||
}
|
||||
}}
|
||||
>
|
||||
{fee}
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
const recent = dt => {
|
||||
const past = new Date()
|
||||
past.setMonth(past.getMonth() - 2)
|
||||
return new Date(dt) > past
|
||||
}
|
||||
|
|
@ -1,279 +0,0 @@
|
|||
import { Box, Heading, Link, Text, Container, Grid } from 'theme-ui'
|
||||
import Icon from '../icon'
|
||||
|
||||
export default function Features({ partner = false }) {
|
||||
return (
|
||||
<Box sx={{ py: 6 }}>
|
||||
<Container>
|
||||
<Text variant="heading" sx={{ fontSize: 50 }}>
|
||||
A full-stack toolkit for organizing anything.
|
||||
</Text>
|
||||
<br />
|
||||
<br />
|
||||
<Text sx={{ color: 'muted', maxWidth: '48', fontSize: 28 }}>
|
||||
Invoice sponsors, issue debit cards to your team, and view transaction
|
||||
history.
|
||||
<br />
|
||||
Ongoing support so you can focus on organizing, not the paperwork.
|
||||
</Text>
|
||||
<br />
|
||||
<br />
|
||||
</Container>
|
||||
<Container>
|
||||
<Grid gap={4} columns={[1, null, 3]}>
|
||||
<Box>
|
||||
<Module
|
||||
icon="bank-account"
|
||||
name="Fund"
|
||||
body={
|
||||
<>A fund under the hood with a custom, beautiful dashboard.</>
|
||||
}
|
||||
/>
|
||||
<ModuleDetails>
|
||||
<Document
|
||||
name="501(c)(3) nonprofit status"
|
||||
cost="Become part of Hack Club's legal entity, getting the benefits of our tax status."
|
||||
/>
|
||||
<Document
|
||||
name="Tax filings (990, end-of-year)"
|
||||
cost="We handle all filings with the IRS, so you can focus on your event, not hiring CPAs."
|
||||
/>
|
||||
</ModuleDetails>
|
||||
</Box>
|
||||
<Laptop
|
||||
href="https://hcb.hackclub.com/the-innovation-circuit"
|
||||
title="See The Innovation Circuit’s finances in public"
|
||||
sx={{
|
||||
gridColumn: [null, null, 'span 2'],
|
||||
gridRow: [null, null, 'span 2']
|
||||
}}
|
||||
/>
|
||||
<Module
|
||||
icon="card"
|
||||
name="Debit cards"
|
||||
body={
|
||||
<>
|
||||
Issue physical debit cards to all your teammates, backed by{' '}
|
||||
<Link
|
||||
href="https://stripe.com/issuing"
|
||||
color="smoke"
|
||||
hoverline
|
||||
target="_blank"
|
||||
>
|
||||
Stripe
|
||||
</Link>
|
||||
.
|
||||
</>
|
||||
}
|
||||
/>
|
||||
<Module
|
||||
icon="analytics"
|
||||
name="Balance & history"
|
||||
body="Check real-time account balance + transaction history online anytime."
|
||||
/>
|
||||
{/* <Module
|
||||
icon="bolt"
|
||||
name="Instant deposits"
|
||||
body="Receive donations and invoice payments instantly once they're paid."
|
||||
/> */}
|
||||
{/* <Module
|
||||
icon="payment"
|
||||
name="Built-in invoicing"
|
||||
body={
|
||||
<>
|
||||
Accept sponsor payments with instant invoicing, powered by{' '}
|
||||
<Link
|
||||
href="https://stripe.com/invoicing"
|
||||
color="smoke"
|
||||
hoverline
|
||||
target="_blank"
|
||||
>
|
||||
Stripe
|
||||
</Link>
|
||||
.
|
||||
</>
|
||||
}
|
||||
/> */}
|
||||
<Module
|
||||
icon="docs"
|
||||
name="Pre-written forms"
|
||||
body="Download liability + photo forms custom written by expert lawyers."
|
||||
/>
|
||||
<Module
|
||||
icon="payment-transfer"
|
||||
name="Transfer money"
|
||||
body="Flexible money transfer options including ACH, check, and PayPal."
|
||||
/>
|
||||
<Module
|
||||
icon="explore"
|
||||
name="Transparency Mode"
|
||||
body="If you’d like, show your finances on public pages for full transparency."
|
||||
/>
|
||||
<Module
|
||||
icon="email"
|
||||
name="Postal"
|
||||
body={
|
||||
<>
|
||||
Send email newsletters for free using our hosted instance of{' '}
|
||||
<Link
|
||||
href="https://sendy.co/"
|
||||
color="smoke"
|
||||
hoverline
|
||||
target="_blank"
|
||||
>
|
||||
Sendy
|
||||
</Link>
|
||||
.
|
||||
</>
|
||||
}
|
||||
/>
|
||||
{!partner && (
|
||||
<Module
|
||||
icon="friend"
|
||||
name="Donation Page"
|
||||
body="Receive donations through a custom, online embeddable form."
|
||||
/>
|
||||
)}
|
||||
<Module
|
||||
icon="flag"
|
||||
name="PVSA Awards"
|
||||
body={
|
||||
<>
|
||||
Issue the{' '}
|
||||
<Link
|
||||
href="https://presidentialserviceawards.gov"
|
||||
color="smoke"
|
||||
hoverline
|
||||
target="_blank"
|
||||
>
|
||||
President's Volunteer Service Award
|
||||
</Link>{' '}
|
||||
to your volunteers.
|
||||
</>
|
||||
}
|
||||
/>
|
||||
{!partner && (
|
||||
<Module
|
||||
icon="web"
|
||||
name="Free Domains"
|
||||
body="We'll pay up to $20 for your organization's domain name for a year."
|
||||
/>
|
||||
)}
|
||||
|
||||
<Module
|
||||
icon="support"
|
||||
name="Support anytime"
|
||||
body="We’ll never leave you hanging with 24hr response time on weekdays."
|
||||
/>
|
||||
</Grid>
|
||||
</Container>
|
||||
<Container
|
||||
variant="copy"
|
||||
sx={{
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
justifyContent: 'center',
|
||||
textAlign: 'center'
|
||||
}}
|
||||
>
|
||||
<Text
|
||||
variant="lead"
|
||||
sx={{
|
||||
color: 'muted',
|
||||
fontSize: 3,
|
||||
marginTop: [4, 5]
|
||||
}}
|
||||
>
|
||||
Have more questions? <br /> Check out the{' '}
|
||||
<Link
|
||||
href="https://hcb.hackclub.com/faq"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
hoverline
|
||||
>
|
||||
HCB FAQ
|
||||
</Link>
|
||||
.
|
||||
</Text>
|
||||
</Container>
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
function Module({ icon, name, body }) {
|
||||
return (
|
||||
<Box sx={{ display: 'flex', alignItems: 'start' }}>
|
||||
<Icon
|
||||
size={48}
|
||||
glyph={icon}
|
||||
sx={{ flexShrink: 0, marginRight: 3, color: 'primary' }}
|
||||
/>
|
||||
<Box>
|
||||
<Heading sx={{ color: 'snow', lineHeight: '1.5' }}>{name}</Heading>
|
||||
<Text sx={{ color: 'muted', lineHeight: '1.375', fontSize: 17 }}>
|
||||
{body}
|
||||
</Text>
|
||||
</Box>
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
function ModuleDetails({ children }) {
|
||||
return (
|
||||
<Box
|
||||
sx={{
|
||||
bg: '#252429',
|
||||
color: 'smoke',
|
||||
mt: 4,
|
||||
ml: 0,
|
||||
py: 3,
|
||||
px: 2,
|
||||
boxShadow: '0 8px 32px rgba(0, 0, 0, 0.0625)',
|
||||
borderRadius: 'default'
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
function Document({ name, cost }) {
|
||||
return (
|
||||
<Box sx={{ display: 'flex' }}>
|
||||
<Icon
|
||||
size={28}
|
||||
mr={1}
|
||||
glyph="payment"
|
||||
sx={{ flexShrink: 0, color: 'green' }}
|
||||
/>
|
||||
<Box sx={{ display: 'flex', flexDirection: 'column' }}>
|
||||
<Text fontSize={2}>{name}</Text>
|
||||
|
||||
{cost && (
|
||||
<Text fontSize={1} color="muted" style={{ lineHeight: '1.375' }}>
|
||||
{cost}
|
||||
</Text>
|
||||
)}
|
||||
</Box>
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
function Laptop({ href, title, sx }) {
|
||||
return (
|
||||
<Link href={href} title={title} sx={sx}>
|
||||
<Box
|
||||
sx={{
|
||||
display: 'block',
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
minHeight: '16rem',
|
||||
backgroundSize: 'auto 115%',
|
||||
backgroundImage: "url('/hcb/laptop-dark.png')",
|
||||
backgroundPosition: 'center top',
|
||||
backgroundRepeat: 'no-repeat'
|
||||
}}
|
||||
></Box>
|
||||
</Link>
|
||||
)
|
||||
}
|
||||
|
|
@ -1,236 +0,0 @@
|
|||
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'
|
||||
import hero from '../../public/hcb/bg.webp'
|
||||
|
||||
export default function Landing({ showButton = true, eventsCount }) {
|
||||
return (
|
||||
<>
|
||||
<Slide>
|
||||
<Vignette />
|
||||
|
||||
<Box
|
||||
sx={{
|
||||
position: 'absolute',
|
||||
flexDirection: 'column',
|
||||
justifyContent: 'center',
|
||||
bottom: 5,
|
||||
mx: 'auto',
|
||||
width: '100%'
|
||||
}}
|
||||
>
|
||||
<Box
|
||||
sx={{
|
||||
zIndex: '100',
|
||||
paddingTop: '96px'
|
||||
}}
|
||||
>
|
||||
<Fade duration={625} bottom>
|
||||
<Container
|
||||
variant="container"
|
||||
sx={{
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
justifyContent: 'center',
|
||||
textAlign: 'center'
|
||||
}}
|
||||
>
|
||||
<Heading
|
||||
variant="ultratitle"
|
||||
sx={{
|
||||
marginBottom: 4,
|
||||
textShadow: '0 0 16px rgba(0, 0, 0, 1)',
|
||||
letterSpacing: '-0.02em',
|
||||
'@media screen and (max-height: 600px)': {
|
||||
lineHeight: 0.875
|
||||
},
|
||||
'@media screen and (min-height: 610px)': {
|
||||
lineHeight: 1.125
|
||||
}
|
||||
}}
|
||||
as="h1"
|
||||
>
|
||||
<Underline>Become a nonprofit</Underline> with HCB
|
||||
</Heading>
|
||||
<Flex
|
||||
sx={{
|
||||
gap: 3,
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
marginBottom: 4
|
||||
}}
|
||||
>
|
||||
<img
|
||||
src="/hcb/hcb-icon-icon-dark.png"
|
||||
alt="HCB Icon"
|
||||
height={64}
|
||||
sx={{
|
||||
margin: 'auto'
|
||||
}}
|
||||
/>
|
||||
<Text as="h2" sx={{ fontSize: 4 }}>
|
||||
HCB by
|
||||
</Text>
|
||||
<img
|
||||
src="https://assets.hackclub.com/flag-standalone.svg"
|
||||
alt="hack club flag"
|
||||
height={48}
|
||||
/>
|
||||
</Flex>
|
||||
<Container variant="copy">
|
||||
<Text
|
||||
variant="lead"
|
||||
sx={{
|
||||
textShadow: '0 3px 6px rgba(0, 0, 0, 0.5)',
|
||||
'@media screen and (max-height: 600px)': {
|
||||
lineHeight: 1
|
||||
}
|
||||
}}
|
||||
>
|
||||
The team behind the{' '}
|
||||
<Link
|
||||
href="https://innovationcircuit.com"
|
||||
target="_blank"
|
||||
color="inherit"
|
||||
bold
|
||||
hoverline
|
||||
>
|
||||
Innovation Circuit
|
||||
</Link>{' '}
|
||||
is one of {Math.round((eventsCount - 50) / 100) * 100}+
|
||||
teams who use <strong>HCB</strong> to run world-class
|
||||
organizations, hackathons, and clubs.
|
||||
</Text>
|
||||
</Container>
|
||||
</Container>
|
||||
</Fade>
|
||||
</Box>
|
||||
<br />
|
||||
<Box
|
||||
sx={{
|
||||
display: 'flex',
|
||||
justifyContent: 'center',
|
||||
marginBottom: 3
|
||||
}}
|
||||
>
|
||||
{showButton && (
|
||||
<>
|
||||
<Button
|
||||
variant="ctaLg"
|
||||
as="a"
|
||||
href="#apply"
|
||||
style={{ zIndex: '100' }}
|
||||
>
|
||||
Apply Now
|
||||
</Button>
|
||||
<Button
|
||||
variant="outlineLg"
|
||||
as="a"
|
||||
href="https://hcb.hackclub.com"
|
||||
target="_blank"
|
||||
style={{ zIndex: '100' }}
|
||||
ml={3}
|
||||
>
|
||||
Sign in
|
||||
</Button>
|
||||
</>
|
||||
)}
|
||||
</Box>
|
||||
<ScrollHint />
|
||||
</Box>
|
||||
<Box
|
||||
sx={{
|
||||
position: 'absolute',
|
||||
bottom: 3,
|
||||
right: 2,
|
||||
display: ['none', 'block']
|
||||
}}
|
||||
>
|
||||
<Badge
|
||||
variant="pill"
|
||||
sx={{
|
||||
zIndex: '1',
|
||||
bg: 'muted',
|
||||
color: 'steel',
|
||||
fontWeight: 'normal'
|
||||
}}
|
||||
>
|
||||
Singapore
|
||||
</Badge>
|
||||
</Box>
|
||||
</Slide>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
function Underline({ children }) {
|
||||
return (
|
||||
<span
|
||||
style={{
|
||||
backgroundImage: 'url(/underline-red.svg)',
|
||||
backgroundRepeat: 'no-repeat',
|
||||
backgroundSize: '100% 1rem',
|
||||
backgroundPosition: 'bottom center'
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</span>
|
||||
)
|
||||
}
|
||||
|
||||
function Slide({ children }) {
|
||||
return (
|
||||
<Box
|
||||
style={{
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
justifyContent: 'end',
|
||||
width: '100vw',
|
||||
backgroundSize: 'cover',
|
||||
backgroundColor: '#000000',
|
||||
boxShadow: 'inset 0 0 4rem 1rem rgba(0, 0, 0, 0.5)',
|
||||
backgroundPosition: 'center',
|
||||
backgroundSize: 'cover',
|
||||
width: '100%',
|
||||
minHeight: '100vh',
|
||||
position: 'relative'
|
||||
}}
|
||||
>
|
||||
<Image
|
||||
src={hero}
|
||||
layout="fill"
|
||||
objectFit="cover"
|
||||
alt="Dark room with a stage and students sitting below"
|
||||
placeholder="blur"
|
||||
priority
|
||||
/>
|
||||
{children}
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
function Vignette() {
|
||||
return (
|
||||
<Box
|
||||
style={{
|
||||
backgroundImage:
|
||||
'linear-gradient(to bottom,rgba(0, 0, 0, 0),rgba(0, 0, 0, 0.25) 25%,rgba(0, 0, 0, 0.6) 50%, rgba(0, 0, 0, 0.7) 100%)',
|
||||
height: '100vh',
|
||||
left: '0',
|
||||
right: '0',
|
||||
position: 'absolute',
|
||||
zIndex: '0'
|
||||
}}
|
||||
></Box>
|
||||
)
|
||||
}
|
||||
|
|
@ -1,203 +0,0 @@
|
|||
import { Box, Image, Text, Heading, Container, Grid, Link } from 'theme-ui'
|
||||
import { Slide } from 'react-reveal'
|
||||
import Stat from '../stat'
|
||||
import kebabCase from 'lodash/kebabCase'
|
||||
|
||||
const orgs = [
|
||||
{
|
||||
logo: '/hcb/nonprofits/girlgenius.png',
|
||||
name: 'Girl Genius',
|
||||
director: 'Chloe Yan',
|
||||
role: 'Executive Director',
|
||||
budget: 5,
|
||||
website: 'girlgeniusmag.tech',
|
||||
description:
|
||||
'Girl Genius Magazine is a fully student-run publication inspiring the next generation of female and non-binary leaders in STEAM. Their journalism and inclusive online community are dedicated to breaking down tech’s lingering gender barriers. Becoming fiscally sponsored allowed them to publish more issues, host over 40 workshops, organize a conference, and reach a global audience of 11k readers (and counting).'
|
||||
},
|
||||
{
|
||||
logo: '/hcb/nonprofits/techshift.png',
|
||||
transparency: 'techshift',
|
||||
name: 'TechShift',
|
||||
director: 'Daniel Jin',
|
||||
role: 'Co-Executive Director',
|
||||
budget: 100,
|
||||
website: 'techshift.org',
|
||||
description:
|
||||
'Founded in 2017, TechShift supports a network of 30+ student-run chapters across 3 continents leading initiatives at the intersection of technology and social impact. With the help of HCB, they are bringing about a more equitable technological future through their mentorship programs, community partnerships, microgrants, and the STEM For Social Good Toolkit.'
|
||||
},
|
||||
{
|
||||
logo: '/hcb/nonprofits/projectboom.jpg',
|
||||
transparency: 'projectboom',
|
||||
name: 'Project Boom',
|
||||
director: 'Kunal Botla',
|
||||
role: 'Founder',
|
||||
budget: '5.6',
|
||||
budgetLabel: 'raised',
|
||||
website: 'projectboom.org',
|
||||
url: 'https://projectboom.org/',
|
||||
description:
|
||||
'Project Boom is a student-led organization with a simple mission: getting computers to those who need them. Instead of becoming e-waste, old machines are given new life to deserving students worldwide. Joining HCB provided Project Boom with a platform to easily accept and manage donations, helping them to repair and ship more computers than ever before.'
|
||||
},
|
||||
{
|
||||
logo: '/hcb/nonprofits/executebig.png',
|
||||
name: 'Execute Big',
|
||||
director: 'Mingjie Jiang',
|
||||
role: 'Co-Executive Director',
|
||||
budget: '4',
|
||||
budgetLabel: 'funded',
|
||||
website: 'executebig.org',
|
||||
description:
|
||||
'Execute Big began by using leftover hackathon funds to provide travel grants for students. HCB helped make possible their array of grants, fellowships, and innovative programs to share computer science with students nationally. Now their own 501(c)(3) nonprofit, they leverage existing resources to make STEM activities accessible to everyone.'
|
||||
}
|
||||
]
|
||||
|
||||
export default function Nonprofits() {
|
||||
return (
|
||||
<Container
|
||||
sx={{ pt: 6, pb: [2, null, 5], mx: 'auto', px: [null, null, 4] }}
|
||||
>
|
||||
<Container
|
||||
variant="copy"
|
||||
sx={{
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
justifyContent: 'center',
|
||||
textAlign: 'center',
|
||||
pb: 3
|
||||
}}
|
||||
>
|
||||
<Heading variant="title">Nonprofit? No problem.</Heading>
|
||||
<Text variant="lead" color="muted">
|
||||
HCB is a powerful, safe, and easy-to-use money thing, whether you're
|
||||
receiving your first donation or spending $100,000 a year.
|
||||
</Text>
|
||||
</Container>
|
||||
|
||||
<Grid
|
||||
gap={4}
|
||||
sx={{
|
||||
gridTemplateColumns: ['100%', null, null, '1fr 1fr']
|
||||
}}
|
||||
>
|
||||
{orgs.map(org => {
|
||||
const id = kebabCase(org.name)
|
||||
return (
|
||||
<Organization
|
||||
logo={org.logo}
|
||||
name={org.name}
|
||||
budget={org.budget}
|
||||
budgetLabel={org.budgetLabel}
|
||||
website={org.website}
|
||||
description={org.description}
|
||||
url={org.url}
|
||||
key={id}
|
||||
/>
|
||||
)
|
||||
})}
|
||||
</Grid>
|
||||
</Container>
|
||||
)
|
||||
}
|
||||
|
||||
function Organization({
|
||||
logo,
|
||||
name,
|
||||
budget,
|
||||
budgetLabel,
|
||||
website,
|
||||
url,
|
||||
description
|
||||
}) {
|
||||
return (
|
||||
<Slide bottom>
|
||||
<Box
|
||||
sx={{
|
||||
backgroundColor: 'darkless',
|
||||
color: 'smoke',
|
||||
borderRadius: 'extra',
|
||||
mx: 'auto'
|
||||
}}
|
||||
>
|
||||
<Container sx={{ padding: 0, margin: 0 }}>
|
||||
<Box p={[3, null, 4]}>
|
||||
<Box
|
||||
sx={{
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'space-between'
|
||||
}}
|
||||
>
|
||||
<Box sx={{ display: 'flex', alignItems: 'center' }}>
|
||||
<Image
|
||||
src={logo}
|
||||
alt={`${name} logo`}
|
||||
sx={{
|
||||
height: '4rem',
|
||||
width: '4rem',
|
||||
objectFit: 'cover',
|
||||
borderRadius: 'default'
|
||||
}}
|
||||
/>
|
||||
<Box sx={{ ml: 3 }}>
|
||||
<Text
|
||||
color="white"
|
||||
variant="headline"
|
||||
sx={{
|
||||
fontSize: [28, null, 38],
|
||||
lineHeight: 1,
|
||||
letterSpacing: -0.1
|
||||
}}
|
||||
>
|
||||
{name}
|
||||
</Text>
|
||||
<br />
|
||||
<Link
|
||||
href={url || `https://${website}`}
|
||||
sx={{
|
||||
textDecoration: 'none',
|
||||
color: 'muted',
|
||||
'&:hover': { textDecoration: 'underline' }
|
||||
}}
|
||||
>
|
||||
{website}
|
||||
</Link>
|
||||
</Box>
|
||||
</Box>
|
||||
<DetailStat
|
||||
value={`$${budget}k`}
|
||||
label={budgetLabel ?? 'budget'}
|
||||
/>
|
||||
</Box>
|
||||
|
||||
<br />
|
||||
<About>{description}</About>
|
||||
</Box>
|
||||
</Container>
|
||||
</Box>
|
||||
</Slide>
|
||||
)
|
||||
}
|
||||
|
||||
function DetailStat({ value, label }) {
|
||||
return (
|
||||
<Box sx={{ px: 0, mb: [3, 0], ml: [-1, 0], mx: 3 }}>
|
||||
<Stat value={value} label={label} sm />
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
function About({ children }) {
|
||||
return (
|
||||
<Text
|
||||
sx={{
|
||||
fontSize: 2,
|
||||
color: 'snow',
|
||||
textIndent: '-.375em',
|
||||
lineHeight: 'caption',
|
||||
fontSize: 18
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</Text>
|
||||
)
|
||||
}
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
import { Box, Text, Container } from 'theme-ui'
|
||||
import { Fade } from 'react-reveal'
|
||||
import Icon from '../icon'
|
||||
|
||||
export default function Run() {
|
||||
return (
|
||||
<>
|
||||
<Container
|
||||
variant="container"
|
||||
sx={{
|
||||
display: 'flex',
|
||||
flexDirection: ['column', null, 'row'],
|
||||
alignItems: 'center',
|
||||
width: ['100%', '100%', '100%', '85%'],
|
||||
bg: '#252429',
|
||||
color: 'smoke',
|
||||
px: 4,
|
||||
|
||||
borderRadius: 'default',
|
||||
position: 'relative'
|
||||
}}
|
||||
>
|
||||
<Container maxWidth={28} sx={{ mx: 0, py: 4 }}>
|
||||
<Text variant="heading" sx={{ fontSize: 48 }}>
|
||||
HCB doesn’t stop at closing ceremony.
|
||||
</Text>
|
||||
<br />
|
||||
<Text variant="lead" sx={{ color: 'muted', fontSize: 28 }}>
|
||||
Receiving and managing money is just the start. HCB helps you handle
|
||||
ongoing obligations while you’re organizing.
|
||||
</Text>
|
||||
</Container>
|
||||
<List>
|
||||
<ListItem
|
||||
icon="docs"
|
||||
body="We handle ongoing tax filings including end-of-year taxes"
|
||||
/>
|
||||
<ListItem
|
||||
icon="payment-docs"
|
||||
body="Our accountants regularly reconcile your books"
|
||||
/>
|
||||
<ListItem
|
||||
icon="history"
|
||||
body="You always have access to historical financial data"
|
||||
/>
|
||||
</List>
|
||||
</Container>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
function List({ children }) {
|
||||
return (
|
||||
<Box>
|
||||
<ol style={{ listStyle: 'none', paddingLeft: 0 }}>{children}</ol>
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
function ListItem({ icon, body }) {
|
||||
return (
|
||||
<Fade bottom>
|
||||
<li
|
||||
style={{
|
||||
lineHeight: 1.25,
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
pl: 0
|
||||
}}
|
||||
>
|
||||
<Icon
|
||||
glyph={icon}
|
||||
size={45}
|
||||
sx={{ color: 'primary', flexShrink: 'none', flexShrink: 0, mr: 2 }}
|
||||
/>
|
||||
<Text fontSize={[32, 48]} variant="lead">
|
||||
{body}
|
||||
</Text>
|
||||
</li>
|
||||
</Fade>
|
||||
)
|
||||
}
|
||||
|
|
@ -1,255 +0,0 @@
|
|||
import {
|
||||
Box,
|
||||
Avatar,
|
||||
Button,
|
||||
Image,
|
||||
Text,
|
||||
Heading,
|
||||
Container,
|
||||
Grid,
|
||||
Link
|
||||
} from 'theme-ui'
|
||||
import { Slide } from 'react-reveal'
|
||||
import Stat from '../stat'
|
||||
import kebabCase from 'lodash/kebabCase'
|
||||
|
||||
const events = [
|
||||
{
|
||||
transparency: 'hackpenn',
|
||||
name: 'Hack Pennsylvania',
|
||||
location: 'State College, PA',
|
||||
organizer: 'Joy Liu',
|
||||
budget: 15,
|
||||
attendees: 115,
|
||||
testimonial:
|
||||
'For me, HCB unlocked organizing hackathons. Even after as a club leader, raising money seemed insurmountable. HCB directly enabled organizing events in my community with event bank accounts [sic] & a supportive community. I couldn’t recommend it more highly.'
|
||||
},
|
||||
{
|
||||
name: 'Teenhacks LI',
|
||||
location: 'Long Island, NY',
|
||||
organizer: 'Wesley Pergament',
|
||||
budget: 35,
|
||||
attendees: 300,
|
||||
testimonial:
|
||||
'For our hackathon, HCB has given us the tools to make sure our organization is professional with sponsors. HCB and their team have created an easily manageable resource to make sure any event is run successfully. We would highly recommend any organization be a part of the Hack Club ecosystem.'
|
||||
},
|
||||
{
|
||||
transparency: 'mahacks',
|
||||
name: 'MAHacks',
|
||||
location: 'Boston, MA',
|
||||
organizer: 'Kat Huang',
|
||||
budget: 10,
|
||||
attendees: 70,
|
||||
testimonial:
|
||||
'HCB removed the barriers to starting fundraising for MAHacks. In mere days, vs months of nonprofit paperwork, HCB enabled my team to invoice sponsors professionally and manage our finances on a clear, up-to-date dashboard. I highly recommend using HCB & joining the Hack Club community.'
|
||||
},
|
||||
{
|
||||
transparency: 'dv-hacks',
|
||||
name: 'DV Hacks',
|
||||
location: 'Santa Clara, CA',
|
||||
organizer: 'Khushi Wadhwa',
|
||||
budget: 12,
|
||||
attendees: 150,
|
||||
testimonial:
|
||||
'HCB is an essential platform for any hackathon organizer! It made us look both professional and credible in front of our sponsors and it relieved us of legal/financial burdens. HCB was there for us every step of the way and for a first-year hackathon, that support was priceless.'
|
||||
}
|
||||
]
|
||||
|
||||
export default function Testimonials() {
|
||||
return (
|
||||
<>
|
||||
<Box>
|
||||
<Container
|
||||
variant="copy"
|
||||
sx={{
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
justifyContent: 'center',
|
||||
textAlign: 'center'
|
||||
}}
|
||||
>
|
||||
<Heading variant="title">
|
||||
The best events across the country run on HCB.
|
||||
</Heading>
|
||||
<Text variant="lead" color="muted">
|
||||
Everywhere from Philadelphia to Phoenix to Portland, HCB powers
|
||||
events of all sizes.
|
||||
</Text>
|
||||
</Container>
|
||||
<Container
|
||||
sx={{
|
||||
color: 'smoke',
|
||||
px: [null, null, 4],
|
||||
mx: 'auto',
|
||||
mt: 2,
|
||||
borderRadius: 0,
|
||||
position: 'relative'
|
||||
}}
|
||||
>
|
||||
<Grid
|
||||
gap={4}
|
||||
sx={{
|
||||
gridTemplateColumns: ['100%', null, null, '1fr 1fr']
|
||||
}}
|
||||
>
|
||||
{events.map(event => {
|
||||
const id = kebabCase(event.name)
|
||||
return <Event {...event} img={`/hcb/events/${id}.jpg`} key={id} />
|
||||
})}
|
||||
</Grid>
|
||||
</Container>
|
||||
</Box>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
function Event({
|
||||
img,
|
||||
name,
|
||||
location,
|
||||
budget,
|
||||
attendees,
|
||||
organizer,
|
||||
testimonial,
|
||||
transparency
|
||||
}) {
|
||||
return (
|
||||
<Slide bottom>
|
||||
<Box
|
||||
sx={{
|
||||
backgroundColor: 'darkless',
|
||||
color: 'smoke',
|
||||
borderRadius: 'extra',
|
||||
mx: 'auto'
|
||||
}}
|
||||
>
|
||||
<Container sx={{ padding: 0, margin: 0 }}>
|
||||
<Image
|
||||
src={img}
|
||||
alt={location}
|
||||
sx={{
|
||||
maxHeight: '20rem',
|
||||
objectFit: 'cover',
|
||||
width: '100%',
|
||||
borderRadius: 'default',
|
||||
mb: -3
|
||||
}}
|
||||
/>
|
||||
<Box p={[3, null, 4]}>
|
||||
<Box
|
||||
sx={{
|
||||
display: 'flex',
|
||||
flexDirection: ['column', 'row', 'row'],
|
||||
alignItems: ['baseline', 'center'],
|
||||
justifyContent: 'space-between',
|
||||
marginBottom: -3
|
||||
}}
|
||||
>
|
||||
<Text
|
||||
color="white"
|
||||
variant="headline"
|
||||
sx={{ fontSize: [48, null, 30], letterSpacing: -0.1 }}
|
||||
>
|
||||
{name}
|
||||
</Text>
|
||||
<Box
|
||||
sx={{
|
||||
display: 'flex',
|
||||
flexDirection: 'row',
|
||||
justifyContent: 'flex-start',
|
||||
my: 0,
|
||||
ml: -2,
|
||||
pl: 0
|
||||
}}
|
||||
>
|
||||
<DetailStat value={attendees} label="attendees" />
|
||||
<DetailStat value={`$${budget}k`} label="budget" />
|
||||
</Box>
|
||||
</Box>
|
||||
<br />
|
||||
<Quote>"{testimonial}"</Quote>
|
||||
<Box
|
||||
sx={{
|
||||
display: 'flex',
|
||||
flexDirection: 'row',
|
||||
flexWrap: 'wrap',
|
||||
justifyContent: 'space-between',
|
||||
marginTop: ['0px', 3]
|
||||
}}
|
||||
>
|
||||
<Box
|
||||
sx={{
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
mt: ['16px', '0px']
|
||||
}}
|
||||
>
|
||||
<Avatar
|
||||
src={`/hackers/${organizer.split(' ')[0].toLowerCase()}.jpg`}
|
||||
size={48}
|
||||
mr={2}
|
||||
alt="Photo of ${organizer}"
|
||||
/>
|
||||
<Text
|
||||
color="white"
|
||||
sx={{
|
||||
fontSize: 19,
|
||||
display: 'flex',
|
||||
flexDirection: 'column'
|
||||
}}
|
||||
>
|
||||
<Text sx={{ fontWeight: 'bold', lineHeight: 1.125 }}>
|
||||
{organizer}
|
||||
</Text>
|
||||
<Text>Lead Organizer</Text>
|
||||
</Text>
|
||||
</Box>
|
||||
{transparency && (
|
||||
<Link
|
||||
href={`https://hcb.hackclub.com/${transparency}`}
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
sx={{ mt: ['16px', '0px'] }}
|
||||
>
|
||||
<Button
|
||||
mt={[null, null, 4, 0]}
|
||||
ml={[0, 'auto']}
|
||||
sx={{ textTransform: 'none' }}
|
||||
variant="primary"
|
||||
title="🎶 take a look, it's in our books 🎵"
|
||||
>
|
||||
See Finances
|
||||
</Button>
|
||||
</Link>
|
||||
)}
|
||||
</Box>
|
||||
</Box>
|
||||
</Container>
|
||||
</Box>
|
||||
</Slide>
|
||||
)
|
||||
}
|
||||
|
||||
function DetailStat({ value, label }) {
|
||||
return (
|
||||
<Box sx={{ px: 0, mb: [3, 0], ml: [-1, 0], mx: 3 }}>
|
||||
<Stat value={value} label={label} sm />
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
||||
function Quote({ children }) {
|
||||
return (
|
||||
<Text
|
||||
sx={{
|
||||
fontSize: 2,
|
||||
color: 'muted',
|
||||
textIndent: '-.375em',
|
||||
lineHeight: 'caption',
|
||||
fontSize: 18
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</Text>
|
||||
)
|
||||
}
|
||||
|
|
@ -1,72 +0,0 @@
|
|||
import { Flex, Text, Image, Box, Container } from 'theme-ui'
|
||||
import Slide from 'react-reveal'
|
||||
|
||||
function Step({ stepIndex, label }) {
|
||||
return (
|
||||
<Flex
|
||||
sx={{
|
||||
flexDirection: ['row', null, 'column'],
|
||||
flex: '1 0 0',
|
||||
alignItems: 'center',
|
||||
maxWidth: ['24rem', null, '12rem'],
|
||||
gap: 3
|
||||
}}
|
||||
>
|
||||
<Image
|
||||
src={`/hcb/timeline-steps/step${stepIndex}.svg`}
|
||||
sx={{ flexShrink: 0 }}
|
||||
alt=""
|
||||
/>
|
||||
<Text
|
||||
variant="lead"
|
||||
sx={{
|
||||
textAlign: ['left', null, 'center'],
|
||||
margin: '0px !important'
|
||||
}}
|
||||
>
|
||||
{label}
|
||||
</Text>
|
||||
</Flex>
|
||||
)
|
||||
}
|
||||
|
||||
export default function Timeline() {
|
||||
const labels = [
|
||||
'Register your organization for HCB',
|
||||
'Explore the interface in Playground mode',
|
||||
'Hop on an intro call with our team',
|
||||
'Start fundraising!'
|
||||
]
|
||||
const stepSideLength = 64
|
||||
|
||||
return (
|
||||
<Slide>
|
||||
<Flex
|
||||
sx={{
|
||||
flexDirection: ['column', null, 'row'],
|
||||
justifyContent: 'space-between',
|
||||
gap: 4,
|
||||
maxWidth: ['300px', null, '1200px'],
|
||||
mx: 'auto',
|
||||
position: 'relative'
|
||||
}}
|
||||
>
|
||||
{labels.map((label, idx) => (
|
||||
<Step stepIndex={idx + 1} label={label} key={idx} />
|
||||
))}
|
||||
<Box
|
||||
sx={{
|
||||
border: 'solid #8492a6',
|
||||
borderWidth: '3px 3px 0 0',
|
||||
position: 'absolute',
|
||||
top: stepSideLength / 2,
|
||||
left: '10%', // TODO: make this dynamic
|
||||
right: ['auto', null, '10%'],
|
||||
bottom: [stepSideLength / 2, null, 'auto'],
|
||||
zIndex: -1
|
||||
}}
|
||||
/>
|
||||
</Flex>
|
||||
</Slide>
|
||||
)
|
||||
}
|
||||
|
|
@ -8,7 +8,7 @@ Alongside the soccer players, theater kids, and band geeks, we aspire to create
|
|||
|
||||
**Job Description:**
|
||||
|
||||
[HCB](https://hackclub.com/hcb/) is our in-house financial software used by 1,500 Hack Clubbers to financially power their Hack Clubs, hackathons, and student-organized nonprofits. When teenagers use HCB, we act as their backing financial and legal entity, allowing them to leverage our 501(c)(3) nonprofit status to receive donations and use our beautiful in-house software to manage and spend their funds.
|
||||
[HCB](https://hackclub.com/fiscal-sponsorship/) is our in-house financial software used by 1,500 Hack Clubbers to financially power their Hack Clubs, hackathons, and student-organized nonprofits. When teenagers use HCB, we act as their backing financial and legal entity, allowing them to leverage our 501(c)(3) nonprofit status to receive donations and use our beautiful in-house software to manage and spend their funds.
|
||||
|
||||
As our 7th full-time staff member, your role will be to end-to-end own the human operations essential to HCB's success, including onboarding video calls with new Hack Clubbers signing up, daily backend transaction categorization and management through our custom software, and providing a world-class customer success experience over Slack and email to Hack Clubbers. In addition to yourself, in this role you will lead 3 current part-time Hack Clubbers - and grow this team - to help you accomplish HCB's human operations.
|
||||
|
||||
|
|
|
|||
|
|
@ -33,8 +33,8 @@ const fixed = props =>
|
|||
border-bottom: 1px solid rgba(48, 48, 48, 0.125);
|
||||
@supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) {
|
||||
background-color: ${props.transparent
|
||||
? 'transparent'
|
||||
: rgbaBgColor(props, 0.75)};
|
||||
? 'transparent'
|
||||
: rgbaBgColor(props, 0.75)};
|
||||
-webkit-backdrop-filter: saturate(180%) blur(20px);
|
||||
backdrop-filter: saturate(180%) blur(20px);
|
||||
/* {bg}; to support dark mode later */
|
||||
|
|
@ -139,7 +139,7 @@ const Navigation = props => (
|
|||
<NextLink href="/clubs" passHref>
|
||||
<Link>Clubs</Link>
|
||||
</NextLink>
|
||||
<NextLink href="/hcb" passHref>
|
||||
<NextLink href="/fiscal-sponsorship" passHref>
|
||||
<Link>Fiscal Sponsorship</Link>
|
||||
</NextLink>
|
||||
<NextLink href="/hackathons" passHref>
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ export default function Signup() {
|
|||
const handleSubmit = async e => {
|
||||
e.preventDefault()
|
||||
|
||||
await fetch('/api/hcb/demo', {
|
||||
await fetch('/api/fiscal-sponsorship/demo', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
eventName,
|
||||
|
|
@ -109,7 +109,7 @@ export default function Signup() {
|
|||
<Base
|
||||
id="form"
|
||||
method="POST"
|
||||
action="/api/hcb/demo"
|
||||
action="/api/fiscal-sponsorship/demo"
|
||||
onSubmit={handleSubmit}
|
||||
>
|
||||
<Field
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ const nextConfig = {
|
|||
'scrapbook.hackclub.com',
|
||||
'assets.hackclub.com',
|
||||
'v5.airtableusercontent.com',
|
||||
''
|
||||
'hcb.hackclub.com'
|
||||
],
|
||||
remotePatterns: [
|
||||
{
|
||||
|
|
@ -34,6 +34,16 @@ const nextConfig = {
|
|||
destination: '/hcb/:path*',
|
||||
permanent: true
|
||||
},
|
||||
{
|
||||
source: '/hcb/fiscal-sponsorship/',
|
||||
destination: '/fiscal-sponsorship/about/',
|
||||
permanent: false
|
||||
},
|
||||
{
|
||||
source: '/hcb/:path*',
|
||||
destination: '/fiscal-sponsorship/:path*',
|
||||
permanent: false
|
||||
},
|
||||
{ source: '/grant/', destination: '/hackathons/grant', permanent: false },
|
||||
{
|
||||
source: '/sprig/',
|
||||
|
|
|
|||
|
|
@ -508,7 +508,7 @@ const Page = () => (
|
|||
desc={
|
||||
<>
|
||||
Use our 501(c)(3) status and a restricted fund with{' '}
|
||||
<Link href="/hcb">HCB</Link> to fundraise, accept donations, and
|
||||
<Link href="/fiscal-sponsorship">HCB</Link> to fundraise, accept donations, and
|
||||
buy things!
|
||||
</>
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ _(To summarize: we’re a donor-supported nonprofit so outside of planned grant
|
|||
|
||||
[Hack Club](https://hackclub.com/) is an independent nonprofit, supported by donors, with a responsibility to our supporters to spend our budget directly on our core programs. Therefore, as much as we’d like to, **we’re not in a position to provide financial support to hackathons/other nonprofits**. We occasionally run grant programs, like the [$500 grant for IRL high school hackathons](https://hackclub.com/hackathons/grant). We wish you the best of luck in your sponsorship search—we recommend [Megan Cui’s “Meginar”](https://youtu.be/tOmXzA4reTY) and [Lachlan Campbell’s Flagship talk](https://notebook.lachlanjc.com/2020-01-19_how_to_start_your_first_hackathon/) if you’re looking for advice.
|
||||
|
||||
If you’re looking for [fiscal sponsorship](https://en.wikipedia.org/wiki/Fiscal_sponsorship) (aka becoming a legal nonprofit), we’ve got your back—[HCB](https://hackclub.com/hcb/) will set you up with a nonprofit fund, legal entity, debit cards for your team, automated taxes/accounting, G Suite, an online donation form, ACH/check sending/receiving, discounts on stickers & software for your team, and great support. There are no upfront fees. Sign up at <https://hackclub.com/hcb/>.
|
||||
If you’re looking for [fiscal sponsorship](https://en.wikipedia.org/wiki/Fiscal_sponsorship) (aka becoming a legal nonprofit), we’ve got your back—[HCB](https://hackclub.com/fiscal-sponsorship/) will set you up with a nonprofit fund, legal entity, debit cards for your team, automated taxes/accounting, G Suite, an online donation form, ACH/check sending/receiving, discounts on stickers & software for your team, and great support. There are no upfront fees. Sign up at <https://hackclub.com/fiscal-sponsorship/>.
|
||||
|
||||
## If you’re running a hackathon…
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ A totally transparent nonprofit not only shows others how to do it. It also incr
|
|||
|
||||
While a bunch of transactions in a bank account is great, I want to summarize Hack Club's spending in May 2020 publicly. This is something that I wish other nonprofits did when Hack Club was first getting started.
|
||||
|
||||
The below summary was calculated from HQ's export from [HCB](https://hackclub.com/hcb/). You can see our full current account at https://hcb.hackclub.com/hq/ using HCB's new [Transparency Mode](https://twitter.com/hackclub/status/1262471150963130374).
|
||||
The below summary was calculated from HQ's export from [HCB](https://hackclub.com/fiscal-sponsorship/). You can see our full current account at https://hcb.hackclub.com/hq/ using HCB's new [Transparency Mode](https://twitter.com/hackclub/status/1262471150963130374).
|
||||
|
||||
### Revenue (total $20,621.78)
|
||||
|
||||
|
|
|
|||
|
|
@ -46,9 +46,8 @@ function Bullet({ glow = true, icon, href, children }) {
|
|||
baseX * Math.sin((2 * Math.PI * c) / colours.length) +
|
||||
baseY * Math.cos((2 * Math.PI * c) / colours.length)
|
||||
|
||||
boxShadow += `${x * spread}px ${y * spread}px ${blur}px ${
|
||||
colours[c]
|
||||
}${hexOpacity},`
|
||||
boxShadow += `${x * spread}px ${y * spread}px ${blur}px ${colours[c]
|
||||
}${hexOpacity},`
|
||||
}
|
||||
|
||||
// Remove trailing comma
|
||||
|
|
@ -243,7 +242,7 @@ export default function FiscalSponsorship() {
|
|||
as={Head}
|
||||
title="Fiscal Sponsorship"
|
||||
description="What is fiscal sponsorship?"
|
||||
image="/hcb/og-image.png"
|
||||
image="/fiscal-sponsorship/og-image.png"
|
||||
>
|
||||
<title>Fiscal Sponsorship | HCB</title>
|
||||
</Meta>
|
||||
|
|
@ -447,7 +446,7 @@ export default function FiscalSponsorship() {
|
|||
Looking for nonprofit status and not a religious or political
|
||||
organization? We’d love to meet you and chat about working
|
||||
together. Feel free to apply
|
||||
<Link href="https://hackclub.com/hcb/#apply"> here </Link>or
|
||||
<Link href="https://hackclub.com/fiscal-sponsorship/#apply"> here </Link>or
|
||||
<Link href="mailto:hcb@hackclub.com"> email our team </Link>if you
|
||||
have more questions about fiscal sponsorship!
|
||||
</Text>
|
||||
|
|
@ -5,15 +5,15 @@ import ForceTheme from '../../../components/force-theme'
|
|||
import Head from 'next/head'
|
||||
import Meta from '@hackclub/meta'
|
||||
import FlexCol from '../../../components/flex-col'
|
||||
import Progress from '../../../components/hcb/apply/progress'
|
||||
import NavButton from '../../../components/hcb/apply/nav-button'
|
||||
import Watermark from '../../../components/hcb/apply/watermark'
|
||||
import FormContainer from '../../../components/hcb/apply/form-container'
|
||||
import HCBInfo from '../../../components/hcb/apply/hcb-info'
|
||||
import OrganizationInfoForm from '../../../components/hcb/apply/org-form'
|
||||
import PersonalInfoForm from '../../../components/hcb/apply/personal-form'
|
||||
import AlertModal from '../../../components/hcb/apply/alert-modal'
|
||||
import { geocode } from '../../../lib/hcb/apply/address-validation'
|
||||
import Progress from '../../../components/fiscal-sponsorship/apply/progress'
|
||||
import NavButton from '../../../components/fiscal-sponsorship/apply/nav-button'
|
||||
import Watermark from '../../../components/fiscal-sponsorship/apply/watermark'
|
||||
import FormContainer from '../../../components/fiscal-sponsorship/apply/form-container'
|
||||
import HCBInfo from '../../../components/fiscal-sponsorship/apply/hcb-info'
|
||||
import OrganizationInfoForm from '../../../components/fiscal-sponsorship/apply/org-form'
|
||||
import PersonalInfoForm from '../../../components/fiscal-sponsorship/apply/personal-form'
|
||||
import AlertModal from '../../../components/fiscal-sponsorship/apply/alert-modal'
|
||||
import { geocode } from '../../../lib/fiscal-sponsorship/apply/address-validation'
|
||||
|
||||
const valiadateAddress = async step => {
|
||||
// Validate the address
|
||||
|
|
@ -100,7 +100,7 @@ export default function Apply() {
|
|||
<Box sx={{ gridArea: 'title' }}>
|
||||
<FlexCol gap={[4, null, null, '20vh']}>
|
||||
<Text variant="title">
|
||||
Let's get you
|
||||
Let’s get you
|
||||
<br />
|
||||
set up on HCB.
|
||||
</Text>
|
||||
|
|
@ -110,7 +110,9 @@ export default function Apply() {
|
|||
<Box sx={{ gridArea: 'form', overflowY: 'auto' }}>
|
||||
<FormContainer ref={formContainer}>
|
||||
{step === 1 && <HCBInfo />}
|
||||
{step === 2 && <OrganizationInfoForm requiredFields={requiredFields} />}
|
||||
{step === 2 && (
|
||||
<OrganizationInfoForm requiredFields={requiredFields} />
|
||||
)}
|
||||
{step === 3 && <PersonalInfoForm requiredFields={requiredFields} />}
|
||||
</FormContainer>
|
||||
</Box>
|
||||
|
|
@ -77,7 +77,7 @@ export default function ApplicationSuccess() {
|
|||
>
|
||||
<FlexCol gap={4} alignItems="center">
|
||||
<Image
|
||||
src="/hcb/apply/party-orpheus.svg"
|
||||
src="/fiscal-sponsorship/apply/party-orpheus.svg"
|
||||
alt="Dinosaur partying"
|
||||
sx={{ width: '40%' }}
|
||||
/>
|
||||
|
|
@ -16,7 +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/fiscal-sponsorship/directory/card'
|
||||
import Zoom from 'react-reveal/Zoom'
|
||||
import fuzzysort from 'fuzzysort'
|
||||
import ScrollHint from '../../../components/scroll-hint'
|
||||
|
|
@ -25,7 +25,7 @@ import { useEffect, useState } from 'react'
|
|||
import NextLink from 'next/link'
|
||||
import { kebabCase, intersection } from 'lodash'
|
||||
import theme from '@hackclub/theme'
|
||||
import Tooltip from '../../../components/hcb/tooltip'
|
||||
import Tooltip from '../../../components/fiscal-sponsorship/tooltip'
|
||||
|
||||
const styles = `
|
||||
html {
|
||||
|
|
@ -153,8 +153,8 @@ const FilterPanel = ({ filter, mobile }) => {
|
|||
cursor: mobile ? 'pointer' : 'default',
|
||||
':hover': mobile
|
||||
? {
|
||||
color: 'blue'
|
||||
}
|
||||
color: 'blue'
|
||||
}
|
||||
: {}
|
||||
}}
|
||||
onClick={() => setHiddenOnMobile(!hiddenOnMobile)}
|
||||
|
|
@ -245,7 +245,7 @@ const FilterPanel = ({ filter, mobile }) => {
|
|||
textDecoration: 'none',
|
||||
color:
|
||||
currentSelections.length === baseData.length ||
|
||||
!currentSelections.includes(item.id)
|
||||
!currentSelections.includes(item.id)
|
||||
? 'black'
|
||||
: 'primary',
|
||||
transition: 'color 0.2s',
|
||||
|
|
@ -325,8 +325,8 @@ const RegionPanel = ({ currentRegion, mobile }) => {
|
|||
cursor: mobile ? 'pointer' : 'default',
|
||||
':hover': mobile
|
||||
? {
|
||||
color: 'blue'
|
||||
}
|
||||
color: 'blue'
|
||||
}
|
||||
: {}
|
||||
}}
|
||||
onClick={() => setHiddenOnMobile(!hiddenOnMobile)}
|
||||
|
|
@ -350,7 +350,7 @@ const RegionPanel = ({ currentRegion, mobile }) => {
|
|||
display: hiddenOnMobile ? 'none' : 'flex'
|
||||
}}
|
||||
>
|
||||
<NextLink scroll={false} href={'/hcb/climate'}>
|
||||
<NextLink scroll={false} href={'/fiscal-sponsorship/climate'}>
|
||||
<Flex
|
||||
sx={{
|
||||
alignItems: 'center',
|
||||
|
|
@ -403,7 +403,7 @@ const RegionPanel = ({ currentRegion, mobile }) => {
|
|||
<NextLink
|
||||
key={idx}
|
||||
scroll={false}
|
||||
href={`/hcb/climate/organizations-in-${kebabCase(item.label)}`}
|
||||
href={`/fiscal-sponsorship/climate/organizations-in-${kebabCase(item.label)}`}
|
||||
>
|
||||
<Flex
|
||||
sx={{
|
||||
|
|
@ -485,7 +485,7 @@ export default function ClimatePage({ rawOrganizations, pageRegion }) {
|
|||
const region = pageRegion
|
||||
|
||||
// useEffect(() => {
|
||||
// // history.pushState(null, null, `/hcb/climate/organizations-in-${region.toLowerCase().split(' ').join('-')}`);
|
||||
// // history.pushState(null, null, `/fiscal-sponsorship/climate/organizations-in-${region.toLowerCase().split(' ').join('-')}`);
|
||||
// }, [region]);
|
||||
const [modalOrganization, setModalOrganization] = useState(null)
|
||||
|
||||
|
|
@ -965,7 +965,7 @@ export default function ClimatePage({ rawOrganizations, pageRegion }) {
|
|||
viewBox="0 0 512 512"
|
||||
>
|
||||
<img
|
||||
src="/hcb/climate/earth-on-hcb.svg"
|
||||
src="/fiscal-sponsorship/climate/earth-on-hcb.svg"
|
||||
alt=""
|
||||
height="82px"
|
||||
/>
|
||||
|
|
@ -1135,7 +1135,7 @@ export default function ClimatePage({ rawOrganizations, pageRegion }) {
|
|||
return (
|
||||
currentBadges.length === badges.length ||
|
||||
intersection(organizationBadgeIds, currentBadges).length ===
|
||||
currentBadges.length
|
||||
currentBadges.length
|
||||
)
|
||||
})
|
||||
.map(organization => (
|
||||
|
|
@ -1401,7 +1401,7 @@ export async function fetchRawClimateOrganizations() {
|
|||
while (lastLength >= 100) {
|
||||
const json = await fetch(
|
||||
'https://hcb.hackclub.com/api/v3/directory/organizations?per_page=100&page=' +
|
||||
page
|
||||
page
|
||||
).then(res => res.json())
|
||||
lastLength = json.length
|
||||
page++
|
||||
|
|
@ -15,12 +15,12 @@ import ForceTheme from '../../components/force-theme'
|
|||
import Nav from '../../components/nav'
|
||||
import Footer from '../../components/footer'
|
||||
import Icon from '../../components/icon'
|
||||
import Features from '../../components/hcb/first/features'
|
||||
import Features from '../../components/fiscal-sponsorship/first/features'
|
||||
|
||||
import Form from '../../components/hcb/first/form'
|
||||
import Testimonials from '../../components/hcb/first/testimonials'
|
||||
import Steps from '../../components/hcb/first/steps'
|
||||
import Start from '../../components/hcb/start'
|
||||
import Form from '../../components/fiscal-sponsorship/first/form'
|
||||
import Testimonials from '../../components/fiscal-sponsorship/first/testimonials'
|
||||
import Steps from '../../components/fiscal-sponsorship/first/steps'
|
||||
import Start from '../../components/fiscal-sponsorship/first/start'
|
||||
import theme from '@hackclub/theme'
|
||||
|
||||
export default function First({ stats }) {
|
||||
|
|
@ -35,7 +35,7 @@ export default function First({ stats }) {
|
|||
as={Head}
|
||||
title="Finanical Toolkit for FIRST Teams"
|
||||
description="HCB is the ultimate financial tool for FRC, FTC, and FLL teams to receive grants, fundraise, make purchases, and so much more."
|
||||
image="/hcb/first/og-image.png"
|
||||
image="/fiscal-sponsorship/first/og-image.png"
|
||||
>
|
||||
<title>Financial Toolkit for FIRST Teams | HCB</title>
|
||||
</Meta>
|
||||
|
|
@ -123,10 +123,7 @@ export default function First({ stats }) {
|
|||
<Icon glyph="checkmark" size={28} color="#33d6A6" />
|
||||
<Text sx={{ ml: 1 }}>Receive grants</Text>
|
||||
</Box>
|
||||
<Box
|
||||
as="span"
|
||||
sx={{ display: 'flex', flexDirection: 'row' }}
|
||||
>
|
||||
<Box as="span" sx={{ display: 'flex', flexDirection: 'row' }}>
|
||||
<Icon glyph="checkmark" size={28} color="#33d6A6" />
|
||||
<Text sx={{ ml: 1 }}>Debit cards</Text>
|
||||
</Box>
|
||||
|
|
@ -165,7 +162,7 @@ export default function First({ stats }) {
|
|||
}}
|
||||
variant="ctaLg"
|
||||
as="a"
|
||||
href="/hcb/first/Hack_Club_Bank_for_FIRST_Teams.pdf"
|
||||
href="/fiscal-sponsorship/first/Hack_Club_Bank_for_FIRST_Teams.pdf"
|
||||
// @exu3: to edit this PDF, use this Figma file https://www.figma.com/file/LgadOH1lHUBOejA3vaNGgm/Hack-Club-Bank-for-FIRST-Teams-One-Pager?node-id=0%3A1&t=ZtkN2a3aw2IojFvi-1
|
||||
// message me on Slack if you need edit access
|
||||
target="_blank"
|
||||
563
pages/fiscal-sponsorship/index.js
Normal file
|
|
@ -0,0 +1,563 @@
|
|||
import {
|
||||
Box,
|
||||
Card,
|
||||
Container,
|
||||
Flex,
|
||||
Link as UILink,
|
||||
Heading,
|
||||
Text,
|
||||
Grid,
|
||||
Button
|
||||
} from 'theme-ui'
|
||||
import { Balancer } from 'react-wrap-balancer'
|
||||
import Meta from '@hackclub/meta'
|
||||
import Head from 'next/head'
|
||||
import ForceTheme from '../../components/force-theme'
|
||||
import Nav from '../../components/nav'
|
||||
import Footer from '../../components/footer'
|
||||
import Tilt from '../../components/tilt'
|
||||
import Photo from '../../components/photo'
|
||||
import Image from 'next/image'
|
||||
import Link from 'next/link'
|
||||
|
||||
import OuternetImgFile from '../../public/home/outernet-110.jpg'
|
||||
import Features from '../../components/fiscal-sponsorship/features'
|
||||
|
||||
const organizations = [
|
||||
{
|
||||
id: 'org_MpJurQ',
|
||||
object: 'directory_organization',
|
||||
name: 'Reboot',
|
||||
description:
|
||||
'Publishing techno-optimism, through newsletters, magazines, and events.',
|
||||
slug: 'reboot',
|
||||
website: '',
|
||||
transparent: true,
|
||||
location: {
|
||||
readable: 'Bay Area, CA, USA',
|
||||
country_code: 'US',
|
||||
country: 'United States',
|
||||
continent: 'North America'
|
||||
},
|
||||
category: 'nonprofit',
|
||||
missions: [],
|
||||
climate: false,
|
||||
partners: {},
|
||||
logo: '/fiscal-sponsorship/reboot.png',
|
||||
background_image: '/fiscal-sponsorship/reboot-bg.jpg',
|
||||
donation_link: 'https://hcb.hackclub.com/donations/start/reboot'
|
||||
},
|
||||
{
|
||||
id: 'org_raices',
|
||||
object: 'directory_organization',
|
||||
name: 'Raices Cyber',
|
||||
description:
|
||||
'Empowering the Hispanic and Latino cyber and technology community.',
|
||||
slug: 'raices-cyber-org',
|
||||
website: 'https://raicescyber.org',
|
||||
transparent: false,
|
||||
location: {
|
||||
readable: 'Philadelphia, PA, USA',
|
||||
country_code: 'US',
|
||||
country: 'United States',
|
||||
continent: 'North America'
|
||||
},
|
||||
category: 'nonprofit',
|
||||
logo: '/fiscal-sponsorship/raices.png',
|
||||
background_image: '/fiscal-sponsorship/raices-bg.jpg',
|
||||
donation_link: 'https://hcb.hackclub.com/donations/start/raices-cyber-org'
|
||||
},
|
||||
|
||||
{
|
||||
id: 'org_XDundl',
|
||||
object: 'directory_organization',
|
||||
name: 'Fridays For Future Uganda',
|
||||
description: 'Leading the environmental justice fight in Uganda.',
|
||||
slug: 'fridays-for-future-uganda',
|
||||
website: 'http://www.fridaysforfutureug.earth/',
|
||||
transparent: true,
|
||||
location: {
|
||||
readable: 'Uganda',
|
||||
country_code: 'UG',
|
||||
country: 'Uganda',
|
||||
continent: 'Africa'
|
||||
},
|
||||
category: 'nonprofit',
|
||||
missions: [],
|
||||
climate: true,
|
||||
partners: {
|
||||
'128_collective': {
|
||||
funded: false,
|
||||
recommended: true
|
||||
}
|
||||
},
|
||||
logo: '/fiscal-sponsorship/fff-uganda.png',
|
||||
background_image:
|
||||
'https://hcb.hackclub.com/storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBc3pJIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--854fedfb94c579a004bd6c8284e55db7b640fa4f/FFF%20Uganda%20photo.jpeg',
|
||||
donation_link:
|
||||
'https://hcb.hackclub.com/donations/start/fridays-for-future-uganda'
|
||||
},
|
||||
{
|
||||
id: 'org_a29uVj',
|
||||
object: 'directory_organization',
|
||||
name: 'Hack Club HQ',
|
||||
description: 'This is us! We run our operations on HCB.',
|
||||
slug: 'hq',
|
||||
website: 'https://hackclub.com',
|
||||
transparent: true,
|
||||
location: {
|
||||
readable: 'Vermont, USA',
|
||||
country_code: 'US',
|
||||
country: 'United States',
|
||||
continent: 'North America'
|
||||
},
|
||||
category: 'hack_club_hq',
|
||||
missions: [],
|
||||
climate: false,
|
||||
partners: {},
|
||||
logo: 'https://hcb.hackclub.com/storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBa3hFIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--2455b72ac87867a346ac5ef38ae2dfdb504af3eb/icon-rounded.png',
|
||||
background_image:
|
||||
'https://hcb.hackclub.com/storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBaDJrIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--84f67f8b9bd9b31e6703b5bf399f48dd2059e1ad/189933158-9f00ceaf-7f61-4bef-9911-4cf4a14e0e4d.png',
|
||||
donation_link: 'https://hcb.hackclub.com/donations/start/hq'
|
||||
}
|
||||
]
|
||||
|
||||
export default function Page() {
|
||||
return (
|
||||
<>
|
||||
<Meta
|
||||
as={Head}
|
||||
title="Fiscal Sponsorship"
|
||||
description="Start your nonprofit with our fiscal sponsorship program, HCB: a 501(c)(3) legal entity, bank account, automatic taxes & accounting, and best-in-class app."
|
||||
image="/fiscal-sponsorship/og-image.png"
|
||||
/>
|
||||
<ForceTheme theme="light" />
|
||||
<Nav />
|
||||
<Box
|
||||
as="header"
|
||||
sx={{
|
||||
position: 'relative',
|
||||
pt: [5, 6],
|
||||
pb: [4, 5],
|
||||
bg: 'rgb(104, 41, 205)',
|
||||
backgroundImage:
|
||||
'radial-gradient(ellipse at 5% 5%, #ec555c 0%, rgba(236,85,92,0) 75%),radial-gradient(ellipse at 95% 5%, #dc71a1 0%, rgba(220,113,161,0) 75%),radial-gradient(ellipse at 95% 95%, #fcc8bf 0%, rgba(252,200,191,0) 75%),radial-gradient(ellipse at 5% 95%, #ffce33 0%, rgba(255,206,51,0) 75%)'
|
||||
}}
|
||||
>
|
||||
<Box
|
||||
sx={{
|
||||
position: 'absolute',
|
||||
inset: 0,
|
||||
height: '100%',
|
||||
zIndex: 0,
|
||||
backgroundSize: '48px 48px',
|
||||
backgroundImage: `linear-gradient(to right, #fcc8bf 1px, transparent 1px),
|
||||
linear-gradient(to bottom, #fcc8bf 1px, transparent 1px)`,
|
||||
backgroundPosition: 'top left',
|
||||
maskImage: `linear-gradient(180deg, transparent 0%, white 3%)`,
|
||||
opacity: 0.1
|
||||
}}
|
||||
/>
|
||||
<Container
|
||||
sx={{
|
||||
color: 'white',
|
||||
position: 'relative',
|
||||
zIndex: 1,
|
||||
svg: {
|
||||
position: 'absolute',
|
||||
right: [3, 0],
|
||||
bottom: 0,
|
||||
width: [128, 300],
|
||||
height: [128, 300],
|
||||
opacity: 0.5
|
||||
}
|
||||
}}
|
||||
>
|
||||
<svg
|
||||
width="32"
|
||||
height="32"
|
||||
viewBox="0 0 32 32"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
aria-hidden
|
||||
>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M16 31C28 31 31 28 31 16C31 4 28 1 16 1C4 1 1 4 1 16C1 28 4 31 16 31Z"
|
||||
stroke="currentColor"
|
||||
strokeWidth="2"
|
||||
strokeLinecap="round"
|
||||
strokeDasharray="6 4"
|
||||
/>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M16.0003 8.018C15.9593 8.032 15.8963 8.056 15.8063 8.096C15.5673 8.199 15.2832 8.347 14.9183 8.556C14.1762 8.98 13.2473 9.579 12.2023 10.317C10.9954 11.1683 10.4485 11.5969 9.76695 12.1311L9.76693 12.1311L9.76692 12.1311C9.26201 12.5269 8.68316 12.9806 7.70725 13.707C7.31725 14.098 6.68325 14.098 6.29325 13.707C5.90225 13.317 5.90225 12.683 6.29325 12.293C8.5005 10.5 8.89925 10.201 11.0483 8.683C12.1283 7.921 13.1373 7.27 13.9263 6.819C14.3273 6.59 14.7063 6.394 15.0033 6.264C15.2653 6.149 15.6423 6 16.0003 6C16.3583 6 16.7353 6.149 16.9973 6.264C17.2943 6.394 17.6733 6.59 18.0743 6.819C18.8632 7.27 19.8723 7.921 20.9523 8.683C23.1012 10.201 23.5 10.5 25.7073 12.293C26.0983 12.683 26.0983 13.317 25.7073 13.707C25.3173 14.098 24.6833 14.098 24.2932 13.707C23.3173 12.9806 22.7385 12.5269 22.2336 12.1311C21.552 11.5969 21.0051 11.1683 19.7983 10.317C18.7533 9.579 17.8243 8.98 17.0823 8.556C16.7173 8.347 16.4333 8.199 16.1943 8.096C16.1043 8.056 16.0413 8.032 16.0003 8.018ZM7 24C7 23.448 7.448 23 8 23H24C24.552 23 25 23.448 25 24C25 24.552 24.552 25 24 25H8C7.448 25 7 24.552 7 24ZM15 21C15 21.552 15.448 22 16 22C16.552 22 17 21.552 17 21V14C17 13.448 16.552 13 16 13C15.448 13 15 13.448 15 14V21ZM21 22C20.448 22 20 21.552 20 21V14C20 13.448 20.448 13 21 13C21.552 13 22 13.448 22 14V21C22 21.552 21.552 22 21 22ZM10 21C10 21.552 10.448 22 11 22C11.552 22 12 21.552 12 21V14C12 13.448 11.552 13 11 13C10.448 13 10 13.448 10 14V21Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
<Heading
|
||||
as="h1"
|
||||
variant="title"
|
||||
sx={{
|
||||
fontSize: [5, 6, null, 7],
|
||||
span: {
|
||||
WebkitTextStroke: 'currentColor',
|
||||
WebkitTextStrokeWidth: ['2px', '3px'],
|
||||
WebkitTextFillColor: 'transparent',
|
||||
display: 'block'
|
||||
}
|
||||
}}
|
||||
>
|
||||
<span>The foundation</span> of your nonprofit.
|
||||
</Heading>
|
||||
<Text as="p" variant="lead" sx={{ mt: 4, mb: 4 }}>
|
||||
<Balancer>
|
||||
Start your nonprofit with{' '}
|
||||
<strong>our fiscal sponsorship program, HCB</strong>: a 501(c)(3)
|
||||
legal entity, bank account, automatic taxes & accounting, and
|
||||
best-in-class app.
|
||||
</Balancer>
|
||||
</Text>
|
||||
<Link href="/fiscal-sponsorship/apply" passHref legacyBehavior>
|
||||
<Button
|
||||
as="a"
|
||||
variant="lg"
|
||||
sx={{
|
||||
mt: 3,
|
||||
bg: 'white',
|
||||
color: '#ec555c',
|
||||
textTransform: 'none',
|
||||
fontSize: [3, 4],
|
||||
lineHeight: 0.9
|
||||
}}
|
||||
>
|
||||
Apply now
|
||||
</Button>
|
||||
</Link>
|
||||
</Container>
|
||||
</Box>
|
||||
<Box id="organizations" as="section" sx={{ py: 5 }}>
|
||||
<Container sx={{}}>
|
||||
<Text variant="headline" sx={{ fontWeight: 400 }}>
|
||||
<Balancer>
|
||||
The home of hackathons, mutual aid groups, climate and social
|
||||
justice organizations, and more.
|
||||
</Balancer>
|
||||
</Text>
|
||||
<Grid columns={[1, 2]} gap={[3, 4]} sx={{ mt: 4 }}>
|
||||
{organizations
|
||||
// .map(org => new Organization(org))
|
||||
.map(organization => (
|
||||
<Tilt key={organization.id}>
|
||||
<Card
|
||||
as="a"
|
||||
href={
|
||||
organization.transparent
|
||||
? `https://hcb.hackclub.com/${organization.slug}`
|
||||
: organization.donation_link
|
||||
}
|
||||
sx={{
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
minHeight: 128,
|
||||
color: 'white',
|
||||
cursor: 'pointer',
|
||||
textShadow: '0 1px 4px rgba(0, 0, 0, 0.375)',
|
||||
textDecoration: 'none',
|
||||
backgroundColor: 'black',
|
||||
backgroundSize: 'cover',
|
||||
backgroundPosition: 'center',
|
||||
backgroundRepeat: 'no-repeat',
|
||||
borderRadius: 'extra',
|
||||
overflow: 'hidden',
|
||||
position: 'relative',
|
||||
p: 3,
|
||||
height: '100%',
|
||||
display: 'grid',
|
||||
gridTemplateColumns: '64px 1fr',
|
||||
columnGap: 3,
|
||||
rowGap: 2
|
||||
}}
|
||||
style={{
|
||||
backgroundImage: `linear-gradient(rgba(0,0,0,0.25) 0%, rgba(0,0,0,0.5) 75%), url('${organization.background_image}')`
|
||||
}}
|
||||
>
|
||||
<Image
|
||||
src={organization.logo}
|
||||
alt={`${organization.name} logo`}
|
||||
loading="lazy"
|
||||
width={64}
|
||||
height={64}
|
||||
sx={{
|
||||
objectFit: 'contain',
|
||||
borderRadius: 'extra'
|
||||
}}
|
||||
/>
|
||||
<div>
|
||||
<Heading
|
||||
as={'h3'}
|
||||
itemProp="name"
|
||||
sx={{
|
||||
fontSize: [3, 4],
|
||||
m: 0,
|
||||
overflowWrap: 'anywhere',
|
||||
width: '100%',
|
||||
display: 'block'
|
||||
}}
|
||||
>
|
||||
{organization.name}
|
||||
</Heading>
|
||||
<Text
|
||||
variant="caption"
|
||||
sx={{
|
||||
color: 'white',
|
||||
opacity: 0.875
|
||||
}}
|
||||
>
|
||||
{organization.location.readable}
|
||||
</Text>
|
||||
</div>
|
||||
<Text as="p" sx={{ gridColumn: ['span 2', '2'] }}>
|
||||
<Balancer>{organization.description}</Balancer>
|
||||
</Text>
|
||||
</Card>
|
||||
</Tilt>
|
||||
))}
|
||||
</Grid>
|
||||
</Container>
|
||||
</Box>
|
||||
<Features />
|
||||
|
||||
<Box id="fees" as="section" sx={{ position: 'relative', py: 5 }}>
|
||||
<Container>
|
||||
<Grid columns={[null, 2]} gap={5}>
|
||||
<div>
|
||||
<Text
|
||||
variant="title"
|
||||
sx={{ color: 'blue', mb: 2, lineHeight: 0.96 }}
|
||||
>
|
||||
One simple, transparent fee:
|
||||
<br />
|
||||
7% of income.
|
||||
</Text>
|
||||
<Text
|
||||
as="p"
|
||||
variant="caption"
|
||||
color="slate"
|
||||
sx={{ maxWidth: '44ch' }}
|
||||
>
|
||||
This fee goes directly to our operations staff and software
|
||||
engineers. This allows us to pay our staff fairly, deliver
|
||||
best-in-class software and support, and grow sustainably.
|
||||
</Text>
|
||||
</div>
|
||||
<Text
|
||||
as="p"
|
||||
variant="headline"
|
||||
sx={{
|
||||
width: 'fit-content',
|
||||
gridRow: ['1', 'auto'],
|
||||
'@supports (-webkit-background-clip: text)': {
|
||||
backgroundRepeat: 'no-repeat',
|
||||
WebkitBackgroundClip: 'text',
|
||||
WebkitTextFillColor: 'transparent',
|
||||
backgroundImage:
|
||||
'linear-gradient(to right, #f06844 0%, #ee4c54 25%, #d45e95 50%, #9c6ca6 75%, #6583c1 100%) !important'
|
||||
},
|
||||
'@supports (-webkit-background-clip: text) and (background: linear-gradient(to right in oklch, white, black)':
|
||||
{
|
||||
backgroundImage:
|
||||
'linear-gradient(to right in oklch, #f06844 0%, #ee4c54 25%, #d45e95 50%, #9c6ca6 75%, #6583c1 100%) !important'
|
||||
}
|
||||
}}
|
||||
style={{ margin: 0 }}
|
||||
>
|
||||
No legal fees.
|
||||
<br />
|
||||
No transaction fees.
|
||||
<br />
|
||||
No card issuing fees.
|
||||
<br />
|
||||
No subscription fees.
|
||||
<br />
|
||||
No minimum balance.
|
||||
<br />
|
||||
No check deposit fees.
|
||||
<br />
|
||||
No credit card processing fees.
|
||||
</Text>
|
||||
</Grid>
|
||||
</Container>
|
||||
</Box>
|
||||
<Box as="section" bg="snow" sx={{ py: 5 }}>
|
||||
<Container>
|
||||
<Grid columns={[null, 2]} gap={[4, 5]}>
|
||||
<div>
|
||||
<Heading
|
||||
variant="headline"
|
||||
as="h2"
|
||||
sx={{ marginBlockStart: [null, 4] }}
|
||||
>
|
||||
<Balancer>
|
||||
The fiscal sponsor of choice for the best funders.
|
||||
</Balancer>
|
||||
</Heading>
|
||||
<Flex
|
||||
sx={{
|
||||
alignItems: 'center',
|
||||
gap: [3, 4],
|
||||
mt: 4,
|
||||
img: {
|
||||
width: [72, 128],
|
||||
height: [72, 128],
|
||||
objectFit: 'contain'
|
||||
}
|
||||
}}
|
||||
>
|
||||
{['128.png', 'ycjf.png', 'first.png'].map(file => (
|
||||
<img
|
||||
key={file}
|
||||
src={`/fiscal-sponsorship/${file}`}
|
||||
width={128}
|
||||
height={128}
|
||||
alt={file.split('.')[0].toUpperCase()}
|
||||
/>
|
||||
))}
|
||||
</Flex>
|
||||
</div>
|
||||
<Card sx={{ maxWidth: 'copy', ml: [null, -4], textAlign: 'left' }}>
|
||||
<Text
|
||||
as="blockquote"
|
||||
variant="lead"
|
||||
sx={{
|
||||
mt: '0 !important',
|
||||
color: 'slate',
|
||||
textIndent: '-0.33em'
|
||||
}}
|
||||
>
|
||||
“HCB’s Climate fiscal sponsorship program removes funding
|
||||
barriers with a blend of youth-centered, tech-savvy services and
|
||||
a deep commitment to authentic youth empowerment that resonates
|
||||
with 128 Collective’s mission to create a climate safe future.”
|
||||
</Text>
|
||||
<Text
|
||||
as="p"
|
||||
variant="caption"
|
||||
sx={{ color: 'muted', mt: 3, textIndent: '-1.5ch' }}
|
||||
>
|
||||
—
|
||||
<Text as="strong" color="slate">
|
||||
Kate Goss
|
||||
</Text>
|
||||
, Executive Director,{' '}
|
||||
<UILink href="https://128collective.org">
|
||||
128 Collective
|
||||
</UILink>
|
||||
</Text>
|
||||
</Card>
|
||||
</Grid>
|
||||
</Container>
|
||||
</Box>
|
||||
|
||||
<Container>
|
||||
<Grid
|
||||
columns={[null, 2]}
|
||||
gap={[4, 5]}
|
||||
sx={{ py: 5, p: { fontSize: 2 } }}
|
||||
>
|
||||
<Link href="https://outernet.hackclub.com/">
|
||||
<Photo
|
||||
src={OuternetImgFile}
|
||||
alt="High school hackers at Outernet in Vermont"
|
||||
showAlt
|
||||
/>
|
||||
</Link>
|
||||
<div>
|
||||
<Heading as="h2" variant="headline">
|
||||
Built by Hack Club
|
||||
</Heading>
|
||||
<p>
|
||||
As{' '}
|
||||
<Link href="/" passHref legacyBehavior>
|
||||
<UILink>Hack Club</UILink>
|
||||
</Link>{' '}
|
||||
grew, we needed a way to empower our members. We currently have
|
||||
over 30,000 high schoolers involved in Hack Club with over 400
|
||||
clubs around the world.
|
||||
</p>
|
||||
<p>
|
||||
We started HCB in 2018 to support our clubs and hackathons. After
|
||||
showing it to our educational partners, we knew we had tapped into
|
||||
something much larger. We designed the tool to remove financial
|
||||
and legal barriers for anyone trying to do good in their
|
||||
community.
|
||||
</p>
|
||||
</div>
|
||||
</Grid>
|
||||
</Container>
|
||||
|
||||
<Box
|
||||
as="section"
|
||||
id="apply"
|
||||
sx={{
|
||||
py: 6,
|
||||
px: 4,
|
||||
backgroundImage:
|
||||
'radial-gradient(ellipse at 5% 5%, #e86494 0%, rgba(232,100,148,0) 75%),radial-gradient(ellipse at 95% 5%, #e86494 0%, rgba(232,100,148,0) 75%),radial-gradient(ellipse at 95% 95%, #baa8d3 0%, rgba(186,168,211,0) 75%),radial-gradient(ellipse at 5% 95%, #fa9f69 0%, rgba(250,159,105,0) 75%)',
|
||||
position: 'relative'
|
||||
}}
|
||||
>
|
||||
<Box
|
||||
sx={{
|
||||
position: 'absolute',
|
||||
inset: 0,
|
||||
height: '100%',
|
||||
zIndex: 0,
|
||||
backgroundSize: '48px 48px',
|
||||
backgroundImage: `linear-gradient(to right, #fcc8bf 1px, transparent 1px),
|
||||
linear-gradient(to bottom, #fcc8bf 1px, transparent 1px)`,
|
||||
backgroundPosition: 'top left',
|
||||
maskImage: `linear-gradient(180deg, transparent 0%, white 3%)`,
|
||||
opacity: 0.1
|
||||
}}
|
||||
/>
|
||||
<Flex
|
||||
sx={{
|
||||
flexDirection: 'column',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
textAlign: 'center',
|
||||
gap: 3
|
||||
}}
|
||||
>
|
||||
<Link href="/fiscal-sponsorship/apply" passHref legacyBehavior>
|
||||
<Button
|
||||
as="a"
|
||||
variant="lg"
|
||||
sx={{
|
||||
bg: 'white',
|
||||
mixBlendMode: 'screen',
|
||||
color: 'black !important',
|
||||
fontSize: [72, 96],
|
||||
py: 4,
|
||||
px: [4, null, 6],
|
||||
lineHeight: 0.9,
|
||||
textTransform: 'none'
|
||||
}}
|
||||
>
|
||||
Apply now
|
||||
</Button>
|
||||
</Link>
|
||||
<Text as="p" variant="lead" sx={{ color: 'white' }}>
|
||||
<Balancer>
|
||||
1,500+ organizations on HCB have processed over $20,000,000.
|
||||
</Balancer>
|
||||
</Text>
|
||||
</Flex>
|
||||
</Box>
|
||||
<Footer />
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
|
@ -140,7 +140,7 @@ const HackathonGrant = () => {
|
|||
}}
|
||||
>
|
||||
Hack Club is providing $500 grants (and waiving{' '}
|
||||
<Link href="/hcb" target="_blank">
|
||||
<Link href="/fiscal-sponsorship" target="_blank">
|
||||
HCB
|
||||
</Link>{' '}
|
||||
fees) to <a sx={{ whiteSpace: 'nowrap' }}>in-person</a>{' '}
|
||||
|
|
@ -344,7 +344,7 @@ const HackathonGrant = () => {
|
|||
Transparency Mode
|
||||
</Link>
|
||||
. Sign up for{' '}
|
||||
<Link href="/hcb" target="_blank">
|
||||
<Link href="/fiscal-sponsorship" target="_blank">
|
||||
HCB
|
||||
</Link>{' '}
|
||||
before applying.
|
||||
|
|
|
|||
|
|
@ -1,71 +0,0 @@
|
|||
import { Box } from 'theme-ui'
|
||||
import Meta from '@hackclub/meta'
|
||||
import Head from 'next/head'
|
||||
import ForceTheme from '../../components/force-theme'
|
||||
import Nav from '../../components/nav'
|
||||
import Footer from '../../components/footer'
|
||||
import Landing from '../../components/hcb/landing'
|
||||
import Features from '../../components/hcb/features'
|
||||
import Testimonials from '../../components/hcb/testimonials'
|
||||
import Everything from '../../components/hcb/everything'
|
||||
import Start from '../../components/hcb/start'
|
||||
import Nonprofits from '../../components/hcb/nonprofits'
|
||||
|
||||
const styles = `
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
::selection {
|
||||
background-color: #e42d42;
|
||||
color: #ffffff;
|
||||
text-shadow: none;
|
||||
}
|
||||
input:-webkit-autofill {
|
||||
-webkit-text-fill-color: white;
|
||||
}
|
||||
`
|
||||
|
||||
export default function Bank({ stats }) {
|
||||
return (
|
||||
<>
|
||||
<Box as="main" key="main">
|
||||
<Nav dark />
|
||||
<ForceTheme theme="dark" />
|
||||
<Meta
|
||||
as={Head}
|
||||
title="Fiscal Sponsorship"
|
||||
description="HCB is the largest fiscal sponsor of teen-led organizations in the US. Get a 501(c)(3) status-backed fund optimized for events, nonprofits, and more."
|
||||
image="https://cloud-kfmemfbcm-hack-club-bot.vercel.app/0new_og_image.png"
|
||||
>
|
||||
<title>Fiscal Sponsorship — HCB</title>
|
||||
</Meta>
|
||||
<style>{styles}</style>
|
||||
<Box>
|
||||
<Landing eventsCount={stats.events_count} showButton />
|
||||
|
||||
<Features />
|
||||
|
||||
<Testimonials />
|
||||
<Nonprofits />
|
||||
|
||||
<Everything fee="7" />
|
||||
|
||||
<Start stats={stats} />
|
||||
</Box>
|
||||
</Box>
|
||||
<Footer dark key="footer" email="hcb@hackclub.com" />
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export async function getStaticProps(context) {
|
||||
const res = await fetch(`https://hcb.hackclub.com/stats`)
|
||||
const stats = await res.json()
|
||||
|
||||
return {
|
||||
props: {
|
||||
stats
|
||||
},
|
||||
revalidate: 10
|
||||
}
|
||||
}
|
||||
|
|
@ -11,7 +11,7 @@ const Page = () => (
|
|||
as={Head}
|
||||
title="HCB Operations Associate"
|
||||
description="Hack Club is a hiring a HCB Operations Associate as the 8th full-time member of our team in Burlington, Vermont."
|
||||
image="https://workshop-cards.hackclub.com/hcb%20Ops%20Associate%20%40%20Hack%20Club.png?fontSize=175px&brand=HQ"
|
||||
image="https://workshop-cards.hackclub.com/fiscal-sponsorship%20Ops%20Associate%20%40%20Hack%20Club.png?fontSize=175px&brand=HQ"
|
||||
/>
|
||||
<ForceTheme theme="light" />
|
||||
<Nav />
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ const Page = () => (
|
|||
as={Head}
|
||||
title="HCB Operations Lead"
|
||||
description="Hack Club is a hiring a HCB Operations Lead as the 7th full-time member of our team in Burlington, Vermont."
|
||||
image="https://workshop-cards.hackclub.com/hcb%20Ops%20Lead%20%40%20Hack%20Club.png?fontSize=175px&brand=HQ"
|
||||
image="https://workshop-cards.hackclub.com/fiscal-sponsorship%20Ops%20Lead%20%40%20Hack%20Club.png?fontSize=175px&brand=HQ"
|
||||
/>
|
||||
<ForceTheme theme="light" />
|
||||
<Nav />
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ const Page = () => (
|
|||
|
||||
<Text as="p" mb={4}>
|
||||
Starting a nonprofit is hard, so we built{' '}
|
||||
<Link href="/hcb" target="_blank">
|
||||
<Link href="/fiscal-sponsorship" target="_blank">
|
||||
HCB
|
||||
</Link>{' '}
|
||||
for our community of {formatted}+ teenage programmers. Within 24 hours
|
||||
|
|
|
|||
BIN
public/fiscal-sponsorship/128.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 273 B After Width: | Height: | Size: 273 B |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 5.4 MiB After Width: | Height: | Size: 5.4 MiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
BIN
public/fiscal-sponsorship/fff-uganda.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
public/fiscal-sponsorship/first.png
Normal file
|
After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 602 KiB After Width: | Height: | Size: 602 KiB |
|
Before Width: | Height: | Size: 157 KiB After Width: | Height: | Size: 157 KiB |
|
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 162 KiB |
BIN
public/fiscal-sponsorship/laptop.png
Normal file
|
After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
BIN
public/fiscal-sponsorship/og-image.png
Normal file
|
After Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 592 KiB After Width: | Height: | Size: 592 KiB |
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 7.7 KiB |
BIN
public/fiscal-sponsorship/raices-bg.jpg
Normal file
|
After Width: | Height: | Size: 134 KiB |
BIN
public/fiscal-sponsorship/raices.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
public/fiscal-sponsorship/reboot-bg.jpg
Normal file
|
After Width: | Height: | Size: 119 KiB |
BIN
public/fiscal-sponsorship/reboot.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 6.9 MiB After Width: | Height: | Size: 6.9 MiB |
BIN
public/fiscal-sponsorship/ycjf.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 404 KiB |
|
Before Width: | Height: | Size: 577 KiB |
|
Before Width: | Height: | Size: 456 KiB |
|
Before Width: | Height: | Size: 366 KiB |
|
Before Width: | Height: | Size: 689 KiB |
|
Before Width: | Height: | Size: 366 KiB |
|
Before Width: | Height: | Size: 708 KiB |
|
Before Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 181 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 1 MiB |
|
|
@ -1,4 +0,0 @@
|
|||
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M62.5 32C62.5 39.3388 62.331 44.8938 61.6443 49.1353C60.9591 53.3673 59.7873 56.0914 57.9393 57.9393C56.0914 59.7873 53.3673 60.9591 49.1353 61.6443C44.8938 62.331 39.3388 62.5 32 62.5C24.6612 62.5 19.1062 62.331 14.8647 61.6443C10.6327 60.9591 7.90865 59.7873 6.06066 57.9393C4.21267 56.0914 3.0409 53.3673 2.35572 49.1353C1.66901 44.8938 1.5 39.3388 1.5 32C1.5 24.6612 1.66901 19.1062 2.35572 14.8647C3.0409 10.6327 4.21267 7.90865 6.06066 6.06066C7.90865 4.21267 10.6327 3.0409 14.8647 2.35572C19.1062 1.66901 24.6612 1.5 32 1.5C39.3388 1.5 44.8938 1.66901 49.1353 2.35572C53.3673 3.0409 56.0914 4.21267 57.9393 6.06066C59.7873 7.90865 60.9591 10.6327 61.6443 14.8647C62.331 19.1062 62.5 24.6612 62.5 32Z" fill="#17171D" stroke="#8492A6" stroke-width="3"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.0683 19.9519V27.7557L30.8901 29.9623C31.8535 30.1587 32.372 30.9439 32.4073 31.6804C32.4073 31.6937 32.4088 31.7129 32.4088 31.7306C32.4088 31.7365 32.4088 31.7424 32.4088 31.7483C32.4088 31.7557 32.4088 31.7616 32.4088 31.7675C32.4088 31.7852 32.4073 31.8044 32.4073 31.8177C32.372 32.5528 31.8535 33.3395 30.8901 33.5358L20.0683 35.7425V44.0481C20.099 44.0496 20.1434 44.0451 20.2063 44.023C26.9351 41.7735 43.8474 32.4982 43.8474 31.7601C43.8474 31.0221 26.8568 22.2058 20.2063 19.9755C20.1434 19.9549 20.099 19.9504 20.0683 19.9519ZM47 31.7483V31.7321V31.7277C46.9831 30.6974 46.4017 29.8251 45.5809 29.2406C40.0105 25.273 27.92 19.4368 21.2158 17.1888C20.2585 16.867 19.2214 16.9556 18.3884 17.4619C17.5385 17.977 17 18.8759 17 19.9224V28.3535C17 29.3985 17.7609 30.3018 18.8241 30.5188L24.8548 31.7483L18.8241 32.9793C17.7609 33.1948 17 34.0982 17 35.1447V44.0776C17 45.1241 17.5385 46.0215 18.3884 46.5381C19.2214 47.0444 20.2585 47.133 21.2158 46.8112C27.9215 44.5573 40.0703 38.1764 45.5794 34.2576C46.4017 33.6716 46.9831 32.8007 46.9985 31.7705V31.766L47 31.7483Z" fill="white"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2 KiB |
|
|
@ -1,8 +0,0 @@
|
|||
<svg width="65" height="64" viewBox="0 0 65 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M62.8333 32C62.8333 39.3388 62.6642 44.8938 61.9775 49.1353C61.2924 53.3673 60.1206 56.0914 58.2726 57.9393C56.4246 59.7873 53.7005 60.9591 49.4685 61.6443C45.2271 62.331 39.672 62.5 32.3333 62.5C24.9945 62.5 19.4394 62.331 15.198 61.6443C10.966 60.9591 8.2419 59.7873 6.39391 57.9393C4.54593 56.0914 3.37415 53.3673 2.68897 49.1353C2.00226 44.8938 1.83325 39.3388 1.83325 32C1.83325 24.6612 2.00226 19.1062 2.68897 14.8647C3.37415 10.6327 4.54593 7.90865 6.39391 6.06066C8.2419 4.21267 10.966 3.0409 15.198 2.35572C19.4394 1.66901 24.9945 1.5 32.3333 1.5C39.672 1.5 45.2271 1.66901 49.4685 2.35572C53.7005 3.0409 56.4246 4.21267 58.2726 6.06066C60.1206 7.90865 61.2924 10.6327 61.9775 14.8647C62.6642 19.1062 62.8333 24.6612 62.8333 32Z" fill="#17171D" stroke="#8492A6" stroke-width="3"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M44.954 32.0669C43.2604 33.0422 42.1883 33.6596 40.89 32.849L36.6569 35.2875C33.726 36.9761 32.0907 37.5273 30.8506 37.072L28.3597 38.5081C23.6704 41.2099 21.4516 38.8944 20.3767 36.868C19.3005 34.8417 18.2554 31.8494 22.9448 29.1475L25.4356 27.7128C25.6604 26.4132 26.9573 25.2757 29.8881 23.5871L34.2919 21.05C34.3189 19.4749 35.4195 18.8399 36.8315 18.0267C39.3955 16.5501 40.9347 15.6626 44.9959 22.6833C49.0572 29.7027 48.0311 30.2931 44.954 32.0669ZM41.4708 29.6744C40.8332 28.8746 40.1157 27.7588 39.1342 26.0606C37.2227 22.7549 36.9939 21.4837 36.9967 21.1257C37.1808 20.942 37.4502 20.788 37.9186 20.5205L37.9348 20.511C38.012 20.4664 38.0959 20.4192 38.1852 20.3665C38.2814 20.3124 38.3694 20.2611 38.4519 20.2125C38.9176 19.9423 39.1857 19.7869 39.4375 19.7194C39.7502 19.8964 40.7398 20.7285 42.6513 24.0342C43.6341 25.731 44.2446 26.909 44.6196 27.8601C44.8132 28.3288 44.8795 28.7139 44.9107 28.926C44.6941 29.0989 44.38 29.2799 43.8913 29.5595L43.8899 29.5609C43.7992 29.6122 43.7031 29.6676 43.6002 29.727C43.4974 29.7851 43.4012 29.8419 43.3119 29.8932C42.8232 30.1769 42.5091 30.3579 42.2505 30.4579C42.0827 30.3269 41.7808 30.0756 41.4708 29.6744ZM38.8202 30.9213L38.9596 30.8402C38.3355 29.9837 37.6275 28.8584 36.7895 27.4116C35.9516 25.9634 35.3518 24.7759 34.9511 23.7911L34.7589 23.9005L31.2419 25.9269C29.8529 26.7253 29.0393 27.263 28.4775 27.7871C28.2636 27.9668 28.1729 28.0951 28.135 28.1654V28.1667C28.1404 28.2397 28.1553 28.4437 28.3191 28.8084C28.5912 29.4515 29.0339 30.2174 29.6593 31.2982L29.8502 31.6292C30.477 32.7112 30.9183 33.4759 31.3407 34.0325C31.5762 34.3567 31.7455 34.4715 31.8064 34.5134H31.8077C31.8876 34.5161 32.0433 34.5012 32.3073 34.4067C33.0437 34.1838 33.9169 33.7474 35.3031 32.9477L38.8202 30.9213ZM26.099 30.4498L26.057 30.4741L24.2985 31.4887C22.406 32.5775 22.2151 33.3867 22.1785 33.6407C22.1176 34.077 22.2746 34.6714 22.7688 35.6036C23.183 36.3844 23.6081 36.7924 23.9926 36.9424C24.2579 37.045 25.1067 37.2612 27.006 36.1683L28.7645 35.1551L28.8065 35.1294C28.3828 34.4958 27.936 33.7217 27.4121 32.818L27.4108 32.8153C26.8869 31.9088 26.4388 31.1347 26.099 30.4498Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.3844 40.5588C18.7373 40.9316 17.9102 40.7101 17.5352 40.0643L16.1814 37.7245C15.8078 37.0774 16.0298 36.252 16.6769 35.8778C17.3253 35.505 18.1525 35.7265 18.5275 36.3736L19.8812 38.7134C20.2549 39.3592 20.0328 40.1846 19.3844 40.5588Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M36.2968 37.892C35.5739 38.0852 35.1461 38.8269 35.3397 39.5469L37.0711 45.9976C37.2295 46.5893 37.7656 47 38.3788 47C39.2696 47 39.9167 46.157 39.6866 45.2992L37.9538 38.8485C37.7615 38.1271 37.0183 37.6989 36.2968 37.892Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.2816 45.6491C32.2816 46.3948 31.6751 47 30.9278 47C30.1792 47 29.5741 46.3948 29.5741 45.6491V41.5963C29.5741 40.8492 30.1792 40.2454 30.9278 40.2454C31.6751 40.2454 32.2816 40.8492 32.2816 41.5963V45.6491Z" fill="white"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M25.8756 45.9976C25.7172 46.5893 25.1798 47 24.5679 47C23.6771 47 23.03 46.157 23.2602 45.2992L23.9032 42.9013C24.0968 42.1799 24.84 41.7516 25.5615 41.9448C26.2844 42.138 26.7122 42.8797 26.5186 43.5997L25.8756 45.9976Z" fill="white"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 4.2 KiB |
|
|
@ -1,4 +0,0 @@
|
|||
<svg width="65" height="64" viewBox="0 0 65 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M63.1665 32C63.1665 39.3388 62.9975 44.8938 62.3108 49.1353C61.6256 53.3673 60.4538 56.0914 58.6058 57.9393C56.7579 59.7873 54.0338 60.9591 49.8018 61.6443C45.5604 62.331 40.0053 62.5 32.6665 62.5C25.3278 62.5 19.7727 62.331 15.5312 61.6443C11.2992 60.9591 8.57515 59.7873 6.72716 57.9393C4.87918 56.0914 3.70741 53.3673 3.02222 49.1353C2.33552 44.8938 2.1665 39.3388 2.1665 32C2.1665 24.6612 2.33552 19.1062 3.02222 14.8647C3.70741 10.6327 4.87918 7.90865 6.72716 6.06066C8.57515 4.21267 11.2992 3.0409 15.5312 2.35572C19.7727 1.66901 25.3278 1.5 32.6665 1.5C40.0053 1.5 45.5604 1.66901 49.8018 2.35572C54.0338 3.0409 56.7579 4.21267 58.6058 6.06066C60.4538 7.90865 61.6256 10.6327 62.3108 14.8647C62.9975 19.1062 63.1665 24.6612 63.1665 32Z" fill="#17171D" stroke="#8492A6" stroke-width="3"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M43.1196 22.6893C43.4497 23.2656 43.1882 23.9851 42.5847 24.262L42.4628 24.3176C41.9457 24.5554 41.3351 24.333 41.0499 23.8395C39.6311 21.3806 37.5851 19.5097 35.2315 18.3098C34.6481 18.0128 34.3547 17.3229 34.6055 16.7171C34.854 16.1148 35.5451 15.8237 36.1296 16.1124C38.9519 17.5075 41.4073 19.7251 43.0994 22.6562L43.1196 22.6893ZM40.1151 24.3791C40.3695 24.8181 40.1695 25.3696 39.7092 25.5814L39.0371 25.889C38.6809 26.0523 38.262 25.9021 38.0656 25.5624C37.042 23.7886 35.5877 22.4195 33.9109 21.5095C33.3346 21.196 33.04 20.5084 33.2908 19.9026C33.5393 19.3003 34.2304 19.008 34.809 19.3062C36.9544 20.4161 38.8182 22.132 40.1151 24.3791ZM43.9313 30.8448C43.7775 31.1856 43.6189 31.5382 43.5337 31.898C43.2024 33.2931 43.5337 35.0125 43.5337 35.0125C43.5337 35.0125 44.1408 38.3672 43.5337 40.0878C42.522 42.955 40.6097 45.1205 37.4834 45.1205C35.9663 45.1205 34.2115 43.6922 32.8021 42.5444L32.7998 42.5432C32.3406 42.1693 31.9194 41.8261 31.5537 41.5717C30.5988 40.9055 28.5883 39.747 27.1624 38.9246C26.3696 38.4678 25.7578 38.1152 25.6099 38.0099C24.8632 37.4797 24.7448 36.4644 25.1602 35.8006C25.5755 35.1367 26.6334 34.7238 27.4428 35.3628C28.2522 36.0018 30.9289 37.6596 30.9289 37.6596C30.9289 37.6596 26.6216 33.3073 25.8607 32.6648C25.0987 32.021 25.0004 30.8898 25.6099 30.2816C26.2181 29.6733 27.1766 29.6449 27.7387 30.1029C28.3007 30.5608 32.9027 35.0125 32.9027 35.0125C32.9027 35.0125 28.1848 29.0604 27.7387 28.5101C27.2937 27.9599 27.1671 26.9943 27.7387 26.4227C28.3114 25.85 29.3066 25.8476 29.8994 26.4227C30.4911 26.9978 35.08 32.5453 35.08 32.5453C35.08 32.5453 31.9217 27.2463 31.5537 26.4227C31.1869 25.5991 31.5182 24.5329 32.2838 24.2454C33.0506 23.959 33.9216 24.1815 34.4162 24.8726C34.5523 25.0607 34.9286 25.753 35.422 26.6606C36.7379 29.0793 38.8868 33.0292 39.508 33.0292C40.0725 33.0292 40.1127 32.7074 40.1908 32.0767C40.2311 31.7524 40.2819 31.3454 40.4192 30.8602C40.7825 29.5751 42.8722 27.4061 44.0532 28.7835C44.581 29.4 44.2674 30.0958 43.9313 30.8448ZM44.8804 45.7488C42.2534 48.6149 40.8902 48.1687 39.9944 47.5096C38.0774 46.1003 38.3306 46.0068 39.3944 45.6104C40.1612 45.3264 41.3469 44.8862 42.4462 43.6863C43.4438 42.5976 43.8982 41.5906 44.2047 40.9102C44.7064 39.7991 44.8153 39.5588 46.2566 41.2569C46.9772 42.1042 47.5085 42.8828 44.8804 45.7488ZM20.1914 35.4196C19.6317 35.5154 19.2554 36.0526 19.4021 36.6017C20.1441 39.3707 21.6516 41.7291 23.6361 43.5112C24.1201 43.9466 24.8644 43.8437 25.2608 43.3254C25.6584 42.8059 25.5531 42.0639 25.0726 41.6178C23.4905 40.1481 22.2894 38.23 21.6883 35.9899C21.5712 35.5521 21.1487 35.2574 20.7014 35.3332L20.1914 35.4196ZM16.9858 35.9639C17.6082 35.8586 18.1963 36.2716 18.3596 36.881C19.1655 39.8854 20.8079 42.4414 22.971 44.3643C23.4609 44.7998 23.5639 45.5417 23.1663 46.0612C22.7699 46.5795 22.0267 46.6825 21.5345 46.2541C18.9702 44.0212 17.0201 41.0262 16.0734 37.4939C16.0604 37.4454 16.0486 37.3969 16.0356 37.3472C15.8687 36.7058 16.3077 36.0799 16.9621 35.9686L16.9858 35.9639Z" fill="white"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.9 KiB |
|
|
@ -1,4 +0,0 @@
|
|||
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M62.5 32C62.5 39.3388 62.331 44.8938 61.6443 49.1353C60.9591 53.3673 59.7873 56.0914 57.9393 57.9393C56.0914 59.7873 53.3673 60.9591 49.1353 61.6443C44.8938 62.331 39.3388 62.5 32 62.5C24.6612 62.5 19.1062 62.331 14.8647 61.6443C10.6327 60.9591 7.90865 59.7873 6.06066 57.9393C4.21267 56.0914 3.0409 53.3673 2.35572 49.1353C1.66901 44.8938 1.5 39.3388 1.5 32C1.5 24.6612 1.66901 19.1062 2.35572 14.8647C3.0409 10.6327 4.21267 7.90865 6.06066 6.06066C7.90865 4.21267 10.6327 3.0409 14.8647 2.35572C19.1062 1.66901 24.6612 1.5 32 1.5C39.3388 1.5 44.8938 1.66901 49.1353 2.35572C53.3673 3.0409 56.0914 4.21267 57.9393 6.06066C59.7873 7.90865 60.9591 10.6327 61.6443 14.8647C62.331 19.1062 62.5 24.6612 62.5 32Z" fill="#17171D" stroke="#8492A6" stroke-width="3"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M36.9875 32.3894C38.4527 31.0109 38.9301 28.782 38.9301 25.5714C38.9301 20.8376 35.1989 17 30.5964 17C25.9938 17 22.2627 20.8376 22.2627 25.5714C22.2627 28.782 22.74 31.0109 24.2052 32.3894C21.4967 33.9137 19.3588 36.3767 18.2054 39.3531C17.9343 40.0527 17.8489 40.9616 18.4735 41.3549C19.7935 42.1863 21.1943 40.5711 21.9822 39.2007C23.7228 36.1733 26.929 34.1429 30.5964 34.1429C30.7711 34.1429 30.9447 34.1475 31.1172 34.1566C33.003 34.256 35.0718 34.0619 36.5172 32.8123C36.6787 32.6728 36.8365 32.5316 36.9875 32.3894ZM35.5966 25.5714C35.5966 28.4559 35.1444 29.4133 34.8139 29.7816C34.5427 30.0836 33.6811 30.7143 30.5964 30.7143C27.5117 30.7143 26.6499 30.0836 26.3789 29.7816C26.0484 29.4133 25.5962 28.4559 25.5962 25.5714C25.5962 22.7311 27.8348 20.4286 30.5964 20.4286C33.3579 20.4286 35.5966 22.7311 35.5966 25.5714ZM38.9301 37.3657C41.0943 35.1714 43.2586 35.72 44.3406 36.8171C48.6691 41.2057 40.2575 47 38.9301 47C37.6025 47 29.1909 41.2057 33.5194 36.8171C34.6016 35.72 36.7658 35.1714 38.9301 37.3657Z" fill="white"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.9 KiB |