diff --git a/src/images/Winston.jpg b/src/images/Winston.jpg new file mode 100644 index 000000000..734ea0b33 Binary files /dev/null and b/src/images/Winston.jpg differ diff --git a/src/scenes/home/history/timelineEvent/timelineEvent.js b/src/scenes/home/history/timelineEvent/timelineEvent.js index 2926cb0be..439ea8ee8 100644 --- a/src/scenes/home/history/timelineEvent/timelineEvent.js +++ b/src/scenes/home/history/timelineEvent/timelineEvent.js @@ -4,21 +4,15 @@ import styles from './timelineEvent.css'; const TimelineEvent = ({ title, content }) => (
-

- {title} -

+

{title}

-
-

- {content} -

-
+
{content}
); TimelineEvent.propTypes = { title: PropTypes.string.isRequired, - content: PropTypes.string.isRequired, + content: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.node]).isRequired, }; export default TimelineEvent; diff --git a/src/scenes/home/home.css b/src/scenes/home/home.css index 6f226d380..69708fe6a 100644 --- a/src/scenes/home/home.css +++ b/src/scenes/home/home.css @@ -1,27 +1,27 @@ .home { - display: flex; - flex-direction: column; - min-height: 100vh; - overflow: hidden; + display: flex; + flex-direction: column; + min-height: 100vh; + overflow: hidden; } .main { - display: flex; - flex: 1; + display: flex; + flex: 1; } .main > div { - width: 100%; + width: 100%; } .homeImage { - height:300px; + height: 300px; } .backgroundImageHome { - background-size: 100%; - background-position: center top; - background-repeat: no-repeat; + background-size: 100%; + background-position: center top; + background-repeat: no-repeat; } @media screen and (max-width: 1200px) { @@ -48,6 +48,12 @@ } } +.backgroundImageGettingStarted { + background-size: 100%; + background-position: right top; + background-repeat: no-repeat; +} + .backgroundImageTeam { background-size: 100%; background-position: right top; @@ -58,6 +64,22 @@ .backgroundImageTeam { background-size: auto 9%; } + .backgroundImageGettingStarted { + background-size: auto 30%; + } +} + +@media screen and (max-width: 950px) { + .backgroundImageGettingStarted { + background-size: auto 25%; + background-position: top; + } +} + +@media screen and (max-width: 840px) { + .backgroundImageGettingStarted { + background-size: auto 20%; + } } @media screen and (max-width: 650px) { diff --git a/src/scenes/home/home.js b/src/scenes/home/home.js index f311377d4..a79fd6482 100644 --- a/src/scenes/home/home.js +++ b/src/scenes/home/home.js @@ -8,6 +8,7 @@ import IdmeVerify from 'shared/components/idme/idmeverify/idmeverify'; import AuthenticatedRoute from 'shared/components/authenticatedRoute/authenticatedRoute'; import familyImage from 'images/Family-2.jpg'; import lincolnImage from 'images/lincoln.jpg'; +import winstonImage from 'images/Winston.jpg'; import colinPowellImage from 'images/colin-powell.jpg'; import Profile from './profile/profile'; import SignUp from './signup/signup'; @@ -33,6 +34,7 @@ import Challenge from './challenge/challenge'; import SignupInformation from './informationForm/informationForm'; import Benefit from './benefit/benefit'; import Terms from './termsOfService/termsOfService'; +import OurPrograms from './ourPrograms/ourPrograms'; import ChapterLeader from './chapterLeader/chapterLeader'; import styles from './home.css'; @@ -73,6 +75,13 @@ class Home extends Component { bgImageUrl: lincolnImage, bgImageStyle: 'backgroundImageTeam', }); + } else if (location.pathname === '/our_programs') { + this.setState({ + bgChanged: !(this.state.bgImage), + bgImage: true, + bgImageUrl: winstonImage, + bgImageStyle: "backgroundImageGettingStarted" + }); } else if (location.pathname === '/history') { this.setState({ bgChanged: !this.state.bgImage, @@ -200,6 +209,10 @@ class Home extends Component { )} /> + } /> } /> diff --git a/src/scenes/home/ourPrograms/gettingStarted/gettingStarted.css b/src/scenes/home/ourPrograms/gettingStarted/gettingStarted.css new file mode 100644 index 000000000..01a064c6e --- /dev/null +++ b/src/scenes/home/ourPrograms/gettingStarted/gettingStarted.css @@ -0,0 +1,61 @@ +.timeline { + width: 90%; + margin: 50px auto; +} + +.segment { + display: flex; +} + +/* Step Number (left column) */ +.stepNumber { + flex: 1; + position: relative; + text-align: right; + white-space: nowrap; +} + +.stepNumber > h3 { + position: absolute; + width: 100%; + top: 14px; + padding-right: 10px; +} + +/* Vertical Line w/ Bubbles (middle column) */ +.vertLine { + position: relative; + padding: 0 20px; +} + +.line { + position: absolute; + transform: translateX(-50%); + width: 2px; + top: 0; + height: 100%; + background-color: #d7d7d7; +} + +.bubble { + width: 15px; + height: 15px; + border-radius: 50%; + border: 2px solid #7d7d7d; + background-color: white; + position: absolute; + transform: translateX(-50%); + top: 25px; +} + +/* Events (right column) */ +.timelineEvent { + flex: 8; +} + +@media screen and (max-width: 680px) { + .stepNumber > h3 { + top: 24px; + font-size: 1.1rem; + } +} diff --git a/src/scenes/home/ourPrograms/gettingStarted/gettingStarted.js b/src/scenes/home/ourPrograms/gettingStarted/gettingStarted.js new file mode 100644 index 000000000..6b640e64d --- /dev/null +++ b/src/scenes/home/ourPrograms/gettingStarted/gettingStarted.js @@ -0,0 +1,84 @@ +import React from 'react'; +import Section from 'shared/components/section/section'; +import TimelineEvent from '../../history/timelineEvent/timelineEvent'; +import styles from './gettingStarted.css'; + +const step1 = ( +

+ The first step to getting a mentor is to decide that you need one. If you + have a specific question, perhaps try asking in our Slack. You can also turn + to stackoverflow.com. If you need something a little more involved, move on + to Step 1. +

+); + +const step2 = ( +

+ Navigate over to your profile in Operation Code and get verified as a + Veteran using our ID.ME system. Once verified, click the 'Request a + Mentor' button. You'll be asked for a bit of information so we can + best pair you up with the right mentor. Once your mentor contacts you, agree + upon a time and method for a 30 minute meeting. +

+); + +const step3 = ( +
+

Your first meeting will accomplish a few things

+
    +
  1. Determine if you and your mentor are good culture fit.
  2. +
  3. Outline a problem and determine your action
  4. +
+
+); + +const GettingStarted = () => ( +
+
+
+
+

1

+
+ +
+
+
+
+ +
+ +
+
+
+
+

2

+
+ +
+
+
+
+ +
+ +
+
+
+
+

3

+
+ +
+
+
+
+ +
+ +
+
+
+
+); + +export default GettingStarted; diff --git a/src/scenes/home/ourPrograms/mentorVolunteers/mentorVolunteers.css b/src/scenes/home/ourPrograms/mentorVolunteers/mentorVolunteers.css new file mode 100644 index 000000000..cb447ba0c --- /dev/null +++ b/src/scenes/home/ourPrograms/mentorVolunteers/mentorVolunteers.css @@ -0,0 +1,18 @@ +.iconList { + align-items: flex-start; + display: flex; + flex-flow: column nowrap; + justify-content: space-between; +} + +.characteristics { + align-items: center; + display: flex; + justify-content: flex-start; + margin: 1rem 0; +} + +.iconContainer { + padding: 0 25px 0 0; + width: 75px; +} diff --git a/src/scenes/home/ourPrograms/mentorVolunteers/mentorVolunteers.js b/src/scenes/home/ourPrograms/mentorVolunteers/mentorVolunteers.js new file mode 100644 index 000000000..9cf18c845 --- /dev/null +++ b/src/scenes/home/ourPrograms/mentorVolunteers/mentorVolunteers.js @@ -0,0 +1,48 @@ +import React from 'react'; +import { FaClockO, FaGroup, FaHandPeaceO } from 'react-icons/lib/fa'; +import Section from 'shared/components/section/section'; +import styles from './mentorVolunteers.css'; + +const MentorVolunteers = () => ( +
+

+ All of our mentors possess 3 characteristics: +

+ +
+
+
+ +
+

+ Availability: They are willing to set aside time to + help you. +

+
+ +
+
+ +
+

+ Expert Knowledge: Each mentor is a subject matter + expert in their choosen field with years of experience. We will curate + your specific request to a mentor that knows your field. +

+
+ +
+
+ +
+

+ Trustworthiness: Our mentors are honest with you, + even when it's the hard truth. Expect a helpful and critical + leader, not a cheerleader. +

+
+
+
+); + +export default MentorVolunteers; diff --git a/src/scenes/home/ourPrograms/mentorshipProgram/mentorshipProgram.css b/src/scenes/home/ourPrograms/mentorshipProgram/mentorshipProgram.css new file mode 100644 index 000000000..79f039a38 --- /dev/null +++ b/src/scenes/home/ourPrograms/mentorshipProgram/mentorshipProgram.css @@ -0,0 +1,42 @@ +.flexContainer { + width: 100%; + display: flex; + flex-flow: row; + justify-content: space-around; + padding: 15px 0 0 0; +} + +.featureHeading { + width: 30%; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + font-weight: 700; +} + +.featureHeading > p { + margin-left: 20px; +} + +.iconStyle { + color: #000; +} + +.featureDescription { + width: 70%; +} + +@media screen and (max-width: 768px) { + .flexContainer { + flex-flow: column; + } + + .featureHeading { + width: 100%; + } + + .featureDescription { + width: 100%; + } +} diff --git a/src/scenes/home/ourPrograms/mentorshipProgram/mentorshipProgram.js b/src/scenes/home/ourPrograms/mentorshipProgram/mentorshipProgram.js new file mode 100644 index 000000000..1217f75af --- /dev/null +++ b/src/scenes/home/ourPrograms/mentorshipProgram/mentorshipProgram.js @@ -0,0 +1,67 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { FaCheck, FaBan } from 'react-icons/lib/fa'; +import Section from 'shared/components/section/section'; +import styles from './mentorshipProgram.css'; + +const MentorshipProgram = ({ fontSize }) => ( +
+
+
+ +

What It Is

+
+
+
    +
  • + A one-on-one session via phone call or Slack aimed at having professional developers + guide your next steps. +
  • +
  • + Friendly monitoring from a volunteer staff member, encouraging you to keep working + towards your goal. +
  • +
  • An environment of friendly support from developers of many experience levels.
  • +
  • A phenomenal tool for growth in your journey into the tech industry.
  • +
+
+
+
+
+ +

What It Isn't

+
+
+
    +
  • + A live "Ask Jeeves" alternative. Mentors are happy to help you, but also + expert a certain degree of individual effort. Please spend time{' '} + + learning how to ask questions + {' '} + and Googling for yourself before going to our volunteers for aid. +
  • +
  • + A guarantee that someone will work with you for at least 30 minutes - potentially + on a long-term basis. All our mentors are volunteers taking on mentees as their + schedule allows. +
  • +
+
+
+
+); + +MentorshipProgram.propTypes = { + fontSize: PropTypes.number, +}; + +MentorshipProgram.defaultProps = { + fontSize: 36, +}; + +export default MentorshipProgram; diff --git a/src/scenes/home/ourPrograms/ourPrograms.js b/src/scenes/home/ourPrograms/ourPrograms.js new file mode 100644 index 000000000..a43f96a34 --- /dev/null +++ b/src/scenes/home/ourPrograms/ourPrograms.js @@ -0,0 +1,19 @@ +import React from 'react'; +import QuoteBanner from 'shared/components/quoteBanner/quoteBanner'; +import MentorshipProgram from './mentorshipProgram/mentorshipProgram'; +import MentorVolunteers from './mentorVolunteers/mentorVolunteers'; +import GettingStarted from './gettingStarted/gettingStarted'; + +const OurPrograms = () => ( +
+ + + + +
+); + +export default OurPrograms;