diff --git a/gatsby-browser.js b/gatsby-browser.js new file mode 100644 index 0000000..608d97e --- /dev/null +++ b/gatsby-browser.js @@ -0,0 +1 @@ +import './src/css/global.css'; \ No newline at end of file diff --git a/src/components/sections/faq/FAQ.jsx b/src/components/sections/faq/FAQ.jsx new file mode 100644 index 0000000..2fbce0e --- /dev/null +++ b/src/components/sections/faq/FAQ.jsx @@ -0,0 +1,63 @@ +import React from 'react'; +import styled from 'styled-components'; + +import { Heading2, Heading3 } from '../../styled/headings'; + +const faq = { + "What is a hackathon?": "A hackathon is an event where students with common interests from all over the nation come together and collaborate on a project over a 36-hour period.", + "Who can come?": "All college students (both graduate and undergraduate) are welcome! No prior experience is necessary.", + "What can I build?": "If you can think it, you can build it. We encourage students to build technological projects, whether they be software or hardware.", + "What if I don't have a team or idea?": "Not a problem. There will be time at the beginning of the hackathon to find other students who don't have a team yet!", + "What should I bring?": "Bring your ID, computer, and sleeping bag (optional). All the necessary equipment for hardware projects will be provided. We'll also have a hardware lab with a variety of devices and parts.", + "How much does it cost?": "Food and admission are absolutely FREE! Buses will be provided for students traveling within California.", + "Is there a code of conduct?": "Please refer to the MLH code of conduct.", + "How will I get there?": "We will be providing buses for Californian hackers, and case-by-case flight reimbursements for out-of-state hackers. Check your email upon acceptance for more details!", + "Still have questions?": "Feel free to shoot us an email at team@slohacks.com or contact us on Facebook." +}; + +export const FAQSection = () => ( + +
+ FAQ + + {Object.entries(faq).map(([question, answer]) => ( + + ))} + +
+
+); + +const FAQItem = (({question, answer}) => ( + +
+ {question} +
{answer}
+
+
+)); + +const FAQSectionWrapper = styled.section` + display: flex; + justify-content: flex-end; + + & > div { + flex: 0 30rem; + } +`; + +const FAQItems = styled.div` + display: flex; + flex-direction: column; +`; + +const FAQItemStyle = styled.div` + border-top: 2px solid; + + & summary { + padding: 1rem; + } + & summary + div { + padding: 0 1rem 1rem 1rem; + } +`; \ No newline at end of file diff --git a/src/components/sections/schedule/Schedule.jsx b/src/components/sections/schedule/Schedule.jsx new file mode 100644 index 0000000..a8d3db9 --- /dev/null +++ b/src/components/sections/schedule/Schedule.jsx @@ -0,0 +1,131 @@ +import React from 'react'; +import styled from 'styled-components'; + +import { Heading2, Heading3 } from '../../styled/headings'; + +const schedule = { + "Friday 1/10": [{ + event: "Attendee Check-in", + location: "MAC Lobby", + time: "4:00pm" + }, { + event: "Dinner", + location: "MAC", + time: "5:30pm" + }, { + event: "Opening Ceremony", + location: "Spanos Theater", + time: "6:00pm" + }, { + event: "Hacking Begins", + location: "MAC", + time: "7:30pm" + }, { + event: "Workshop 1", + location: "Phillips Hall", + time: "8:30pm" + }, { + event: "Workshop 2", + location: "Phillips Hall", + time: "9:30pm" + }, { + event: "Workshop 3", + location: "Phillips Hall", + time: "10:30pm" + }, { + event: "Late Night Snack", + location: "MAC", + time: "12:00am" + }], + "Saturday 1/11": [{ + event: "Breakfast", + location: "MAC", + time: "8:00am" + }], + "Sunday 1/12": [{ + event: "Breakfast", + location: "MAC", + time: "8:00am" + }] +} + +export const ScheduleSection = () => ( + + Schedule + + {Object.entries(schedule).map(([day, events]) => ( + + ))} + + +); + +const ScheduleDay = ({day, events}) => ( +
+ {day} + {events.map(Event)} +
+); + +const Event = (({event, location, time}) => ( + +
+ {event} + {time} +
+
+ {location} +
+
+)); + +const ScheduleSectionStyle = styled.section` + +`; + +const Schedule = styled.div` + display: grid; + grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); + grid-gap: 2rem; +`; + +/*const Schedule = styled.div` + display: flex; + margin: -1rem; + flex-wrap: wrap; + + & > * { + padding: 1rem; + flex: 1 10rem; + + display: flex; + flex-direction: column; + } +`;*/ + +const EventStyleWrapper = styled.div` + display: flex; + flex-direction: column; + + > * { + display: flex; + justify-content: space-between; + } + + > * + * { + margin-bottom: 0.5rem; + } +`; + +const EventName = styled.span` + font-weight: 700; +`; + +const EventTime = styled.span` + font-weight: 700; + opacity: 0.5; +`; + +const EventLocation = styled.span` + +`; diff --git a/src/components/styled/headings.jsx b/src/components/styled/headings.jsx new file mode 100644 index 0000000..42ef36a --- /dev/null +++ b/src/components/styled/headings.jsx @@ -0,0 +1,13 @@ +import styled from 'styled-components'; + +export const Heading2 = styled.h2` + font-size: 2em; + font-weight: 900; + margin-bottom: 1.5rem; +`; + +export const Heading3 = styled.h3` + font-size: 1.43em; + font-weight: 900; + margin-bottom: 1rem; +`; diff --git a/src/css/global.css b/src/css/global.css new file mode 100644 index 0000000..ffa5a62 --- /dev/null +++ b/src/css/global.css @@ -0,0 +1,9 @@ +@import 'https://fonts.googleapis.com/css?family=Proxima+Nova:300,400,500,600,900'; + +* { + margin: 0; +} +:root { + font-family: "Proxima Nova", sans-serif; + color: #2A34B1; +} \ No newline at end of file diff --git a/src/pages/index.jsx b/src/pages/index.jsx index abb28a0..c60fbfb 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -1,14 +1,18 @@ import React from 'react'; import styled from 'styled-components'; +import { ScheduleSection } from '../components/sections/schedule/Schedule'; +import { FAQSection } from '../components/sections/faq/FAQ'; + const IndexPage = () => ( -

Hello World

+ +
); const WrapperContainer = styled.div` - color: red; + `; export default IndexPage;