Skip to content

Commit 34aafc4

Browse files
authored
Merge pull request #81 from build-umass/template-cleanup
2 parents 19d78ca + d46bb77 commit 34aafc4

File tree

8 files changed

+239
-176
lines changed

8 files changed

+239
-176
lines changed

src/components/ApplicationCard.jsx src/components/apply/ApplicationCard.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
export default function ApplicationCard ({
2+
export default function ApplicationCard({
33
title,
44
description,
55
applicationLink,

src/components/apply/LookForCard.jsx

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import Col from 'react-bootstrap/Col';
2+
3+
export default function LookForCard({
4+
title,
5+
description,
6+
imgSrc
7+
}) {
8+
return (
9+
<Col md={4}>
10+
<div className="center-horizontal">
11+
<img
12+
src={imgSrc}
13+
alt={title}
14+
className="thumbnail"
15+
/>
16+
<h5>
17+
{title}
18+
</h5>
19+
<p className="light">
20+
{description}
21+
</p>
22+
</div>
23+
</Col>
24+
);
25+
}

src/content/apply.js

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
export const content = {
2+
roles: [
3+
{
4+
title: 'Software Developer',
5+
description: 'Work alongside other developers in a team to design, implement, and review code for a product. Ensure smooth feature integration and deliver exceptional solutions.',
6+
applicationLink: 'https://forms.gle/nZR43PcqQNQbgtCg8'
7+
},
8+
{
9+
title: 'Product Manager',
10+
description: 'Collaborate closely with clients to optimize their utilization of BUILD\'s services. Effectively convey client requirements to a team of developers.',
11+
applicationLink: 'https://forms.gle/hjPdzXopGWTWJY4m8'
12+
}
13+
],
14+
lookingFor: [
15+
{
16+
title: 'Teamwork',
17+
description: 'Are you a team player? Do you work well with others and value a collaborative environment?',
18+
img: '/img/illustrations/teamwork.svg'
19+
},
20+
{
21+
title: 'Passion',
22+
description: 'Are you passionate about technology and its potential to make a positive impact?',
23+
img: '/img/illustrations/passion.svg'
24+
},
25+
{
26+
title: 'Growth',
27+
description: 'Do you challenge yourself and actively explore opportunities for improvement?',
28+
img: '/img/illustrations/growth.svg'
29+
},
30+
{
31+
title: 'Culture',
32+
description: 'Do you value empowering non-profits to achieve their missions through tech?',
33+
img: '/img/illustrations/culture.svg'
34+
}
35+
],
36+
faqs: [
37+
{
38+
question: 'How much of a time commitment is BUILD?',
39+
answer: 'We expect members to contribute a minimum of 2 hours per week. We take it easy during exam weeks.'
40+
},
41+
{
42+
question: 'Do we get paid?',
43+
answer: 'BUILD provides students with an opportunity to volunteer their time and skills to make a difference by help non-profits in the community.'
44+
},
45+
{
46+
question: 'How much experience do I need to join?',
47+
answer: 'BUILD is open to all years and majors. We do expect software developers to be familiar with basic data structures and programming methodologies.'
48+
},
49+
{
50+
question: 'What is the application process like?',
51+
answer: 'After filling out our application form, if selected for an interview, we\'ll reach out to schedule a single 40 minute virtual interview which will consist of a behavioral and technical portion.'
52+
}
53+
]
54+
}

src/hooks/useBreakpoint.js

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
2+
import { useState, useEffect } from 'react';
3+
import { debounce } from 'lodash';
4+
5+
/**
6+
* @typedef {"xs" | "sm" | "md" | "lg" | "xl" | "xxl"} Breakpoint
7+
*/
8+
9+
/**
10+
* @type {Record<Breakpoint, number>}
11+
* @description enum for the different breakpoint sizes
12+
* @example BreakpointSize.xs === 576
13+
*/
14+
export const BreakpointSize = {
15+
xs: 576,
16+
sm: 768,
17+
md: 992,
18+
lg: 1200,
19+
xl: 1440,
20+
xxl: 9999,
21+
};
22+
23+
/**
24+
* @type {Record<Breakpoint, string>}
25+
* @description enum for the different breakpoints
26+
* @example Breakpoint.xs === 'xs'
27+
*/
28+
export const Breakpoint = {
29+
xs: 'xs',
30+
sm: 'sm',
31+
md: 'md',
32+
lg: 'lg',
33+
xl: 'xl',
34+
xxl: 'xxl',
35+
};
36+
37+
/**
38+
* @param {number} width
39+
* @returns {Breakpoint}
40+
*/
41+
const resolveBreakpoint = (width) => {
42+
const breakpoints = Object.entries(BreakpointSize);
43+
const [breakpoint] = breakpoints.find(([_, value]) => width < value);
44+
return breakpoint;
45+
};
46+
47+
/**
48+
* @returns {Breakpoint}
49+
*/
50+
export const useBreakpoint = () => {
51+
const [size, setSize] = useState(() => resolveBreakpoint(window.innerWidth));
52+
53+
const setBreakpoint = () => {
54+
setSize(resolveBreakpoint(window.innerWidth));
55+
};
56+
57+
useEffect(() => {
58+
const calcInnerWidth = debounce(setBreakpoint, 200);
59+
window.addEventListener('resize', calcInnerWidth);
60+
return () => window.removeEventListener('resize', calcInnerWidth);
61+
}, []);
62+
63+
return size;
64+
};

0 commit comments

Comments
 (0)