-
Notifications
You must be signed in to change notification settings - Fork 3
/
component---src-pages-index-js-0365e6b4251650aedcf3.js.map
1 lines (1 loc) · 53.4 KB
/
component---src-pages-index-js-0365e6b4251650aedcf3.js.map
1
{"version":3,"sources":["webpack:https:///./src/components/hero.js","webpack:https:///./src/components/about.js","webpack:https:///./src/components/jobs.js","webpack:https:///./src/components/featured.js","webpack:https:///./src/components/projects.js","webpack:https:///./src/components/contact.js","webpack:https:///./src/pages/index.js"],"names":["HeroContainer","styled","Section","withConfig","displayName","componentId","mixins","flexCenter","media","tablet","_templateObject","Hi","h1","theme","colors","green","fontSizes","medium","fonts","SFMono","desktop","_templateObject2","small","_templateObject3","smallish","Name","h2","_templateObject4","_templateObject5","phablet","_templateObject6","phone","_templateObject7","Subtitle","h3","slate","_templateObject8","_templateObject9","_templateObject10","_templateObject11","Blurb","div","inlineLink","EmailButton","EmailLink","A","bigButton","Hero","state","isMounted","componentDidMount","_this2","this","setTimeout","setState","render","data","props","_data$0$node","node","frontmatter","html","items","react_default","a","createElement","style","transitionDelay","title","name","subtitle","dangerouslySetInnerHTML","__html","href","email","react_transition_group","map","item","i","key","classNames","timeout","Component","propTypes","PropTypes","array","isRequired","AboutContainer","FlexContainer","flexBetween","about_templateObject","ContentContainer","about_templateObject2","SkillsContainer","Ul","Skill","li","PicContainer","about_templateObject3","about_templateObject4","Avatar","Img","borderRadius","transition","AvatarContainer","navy","About","ScrollReveal","reveal","about","srConfig","_this","id","innerRef","el","styles","skills","skill","fluid","avatar","childImageSharp","alt","JobsContainer","TabsContainer","thone","jobs_templateObject","Tabs","jobs_templateObject2","Tab","button","link","tabHeight","darkGrey","isActive","lightGrey","jobs_templateObject3","jobs_templateObject4","lightNavy","Highlighter","span","activeTabId","jobs_templateObject5","tabWidth","jobs_templateObject6","jobs_templateObject7","TabContent","large","xlarge","JobTitle","h4","lightestSlate","xxlarge","Company","JobDetails","h5","lightSlate","Jobs","setActiveTab","jobs","role","_ref","onClick","e","aria-selected","aria-controls","tabindex","company","jobs_ContentContainer","_ref2","aria-labelledby","aria-hidden","url","target","rel","range","FeaturedContainer","FeaturedGrid","featured_templateObject","featured_templateObject2","FeaturedLabel","ProjectName","featured_templateObject3","featured_templateObject4","ProjectDescription","featured_templateObject5","white","TechList","margin","featured_templateObject6","Links","FeaturedImg","featured_templateObject7","ImgContainer","featured_templateObject8","featured_templateObject9","Project","featured_templateObject10","featured_templateObject11","_templateObject12","_templateObject13","_templateObject14","Featured","_Component","call","revealRefs","featured","forEach","ref","featured_ContentContainer","external","aria-label","tech","github","icons","cover","ProjectsContainer","ProjectsTitle","projects_templateObject","ProjectsGrid","projects_templateObject2","ProjectInner","shadowNavy","darkestNavy","ProjectTop","ProjectBottom","ProjectHeader","Folder","IconLink","ProjectLink","xsmall","ShowMoreButton","Button","Projects","showMore","showMoreToggle","restRefs","projects","filter","show","firstSix","slice","projectsToShow","className","exit","projects_Project","projects_Links","projects_ProjectName","projects_ProjectDescription","projects_TechList","ContactContainer","Header","H3","contact_templateObject","contact_templateObject2","Title","contact_templateObject3","contact_templateObject4","Contact","contact","contact_EmailLink","__webpack_require__","d","__webpack_exports__","query","MainContainer","Main","sidePadding","IndexPage","location","layout","hero","edges","components_projects","object"],"mappings":"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","file":"component---src-pages-index-js-0365e6b4251650aedcf3.js","sourcesContent":["import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\r\n\r\nimport { email } from '../config';\r\n\r\nimport styled from 'styled-components';\r\nimport { theme, mixins, media, Section, A } from '../styles';\r\n\r\nconst HeroContainer = styled(Section)`\r\n ${mixins.flexCenter};\r\n flex-direction: column;\r\n align-items: flex-start;\r\n min-height: 100vh;\r\n ${media.tablet`padding-top: 150px;`};\r\n div {\r\n width: 100%;\r\n }\r\n`;\r\nconst Hi = styled.h1`\r\n color: ${theme.colors.green};\r\n margin: 0 0 20px 3px;\r\n font-size: ${theme.fontSizes.medium};\r\n font-family: ${theme.fonts.SFMono};\r\n font-weight: normal;\r\n ${media.desktop`font-size: ${theme.fontSizes.small};`};\r\n ${media.tablet`font-size: ${theme.fontSizes.smallish};`};\r\n`;\r\nconst Name = styled.h2`\r\n font-size: 80px;\r\n line-height: 1.1;\r\n margin: 0;\r\n ${media.desktop`font-size: 70px;`};\r\n ${media.tablet`font-size: 60px;`};\r\n ${media.phablet`font-size: 50px;`};\r\n ${media.phone`font-size: 40px;`};\r\n`;\r\nconst Subtitle = styled.h3`\r\n font-size: 80px;\r\n line-height: 1.1;\r\n color: ${theme.colors.slate};\r\n ${media.desktop`font-size: 70px;`};\r\n ${media.tablet`font-size: 60px;`};\r\n ${media.phablet`font-size: 50px;`};\r\n ${media.phone`font-size: 40px;`};\r\n`;\r\nconst Blurb = styled.div`\r\n margin-top: 25px;\r\n width: 50%;\r\n max-width: 500px;\r\n a {\r\n ${mixins.inlineLink};\r\n }\r\n`;\r\nconst EmailButton = styled.div``;\r\nconst EmailLink = styled(A)`\r\n ${mixins.bigButton};\r\n font-size: ${theme.fontSizes.smallish};\r\n margin-top: 50px;\r\n`;\r\n\r\nclass Hero extends Component {\r\n static propTypes = {\r\n data: PropTypes.array.isRequired,\r\n };\r\n\r\n state = {\r\n isMounted: false,\r\n };\r\n\r\n componentDidMount() {\r\n setTimeout(() => this.setState({ isMounted: true }), 1000);\r\n }\r\n\r\n render() {\r\n const { data } = this.props;\r\n const { isMounted } = this.state;\r\n const { frontmatter, html } = data[0].node;\r\n\r\n const one = () => <Hi style={{ transitionDelay: '100ms' }}>{frontmatter.title}</Hi>;\r\n const two = () => <Name style={{ transitionDelay: '200ms' }}>{frontmatter.name}.</Name>;\r\n const three = () => (\r\n <Subtitle style={{ transitionDelay: '300ms' }}>{frontmatter.subtitle}</Subtitle>\r\n );\r\n const four = () => (\r\n <Blurb style={{ transitionDelay: '400ms' }} dangerouslySetInnerHTML={{ __html: html }} />\r\n );\r\n const five = () => (\r\n <EmailButton style={{ transitionDelay: '500ms' }}>\r\n <EmailLink href={`mailto:${email}`}>Get In Touch</EmailLink>\r\n </EmailButton>\r\n );\r\n\r\n const items = [one, two, three, four, five];\r\n\r\n return (\r\n <HeroContainer>\r\n <TransitionGroup>\r\n {isMounted &&\r\n items.map((item, i) => (\r\n <CSSTransition key={i} classNames=\"fadeup\" timeout={3000}>\r\n {item}\r\n </CSSTransition>\r\n ))}\r\n </TransitionGroup>\r\n </HeroContainer>\r\n );\r\n }\r\n}\r\n\r\nexport default Hero;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Img from 'gatsby-image';\r\n\r\nimport { srConfig } from '../config';\r\n\r\nimport styled from 'styled-components';\r\nimport { theme, mixins, media, Section, H3, P, Ul } from '../styles';\r\n\r\nimport ScrollReveal from 'scrollreveal';\r\n\r\nconst AboutContainer = styled(Section)`\r\n position: relative;\r\n`;\r\nconst FlexContainer = styled.div`\r\n ${mixins.flexBetween};\r\n align-items: flex-start;\r\n ${media.tablet`display: block;`};\r\n`;\r\nconst ContentContainer = styled.div`\r\n width: 60%;\r\n max-width: 480px;\r\n ${media.tablet`width: 100%;`};\r\n a {\r\n ${mixins.inlineLink};\r\n }\r\n`;\r\nconst SkillsContainer = styled(Ul)`\r\n margin-top: 20px;\r\n display: grid;\r\n overflow: hidden;\r\n grid-template-columns: repeat(2, minmax(140px, 200px));\r\n`;\r\nconst Skill = styled.li`\r\n position: relative;\r\n margin-bottom: 10px;\r\n padding-left: 20px;\r\n font-family: ${theme.fonts.SFMono};\r\n font-size: ${theme.fontSizes.smallish};\r\n color: ${theme.colors.slate};\r\n &:before {\r\n content: '▹';\r\n position: absolute;\r\n left: 0;\r\n color: ${theme.colors.green};\r\n font-size: ${theme.fontSizes.small};\r\n line-height: 12px;\r\n }\r\n`;\r\nconst PicContainer = styled.div`\r\n position: relative;\r\n width: 40%;\r\n max-width: 300px;\r\n margin-left: 60px;\r\n ${media.tablet`margin: 60px auto 0;`};\r\n ${media.phablet`width: 70%;`};\r\n`;\r\nconst Avatar = styled(Img)`\r\n width: 100%;\r\n max-width: 100%;\r\n vertical-align: middle;\r\n position: relative;\r\n mix-blend-mode: multiply;\r\n filter: grayscale(100%) contrast(1);\r\n border-radius: ${theme.borderRadius};\r\n transition: ${theme.transition};\r\n`;\r\nconst AvatarContainer = styled.div`\r\n width: 100%;\r\n position: relative;\r\n border-radius: ${theme.borderRadius};\r\n background-color: ${theme.colors.green};\r\n margin-left: -20px;\r\n &:hover,\r\n &:focus {\r\n background: transparent;\r\n &:after {\r\n top: 15px;\r\n left: 15px;\r\n }\r\n ${Avatar} {\r\n filter: none;\r\n mix-blend-mode: normal;\r\n }\r\n }\r\n &:before {\r\n content: '';\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n transition: ${theme.transition};\r\n background-color: ${theme.colors.navy};\r\n mix-blend-mode: screen;\r\n border-radius: ${theme.borderRadius};\r\n }\r\n &:after {\r\n content: '';\r\n display: block;\r\n width: 100%;\r\n height: 100%;\r\n border: 2px solid ${theme.colors.green};\r\n position: absolute;\r\n top: 20px;\r\n left: 20px;\r\n z-index: -1;\r\n transition: ${theme.transition};\r\n border-radius: ${theme.borderRadius};\r\n }\r\n`;\r\n\r\nclass About extends Component {\r\n static propTypes = {\r\n data: PropTypes.array.isRequired,\r\n };\r\n\r\n componentDidMount() {\r\n ScrollReveal().reveal(this.about, srConfig());\r\n }\r\n\r\n render() {\r\n const { data } = this.props;\r\n const { frontmatter, html } = data[0].node;\r\n\r\n return (\r\n <AboutContainer id=\"about\" innerRef={el => (this.about = el)}>\r\n <H3>{frontmatter.title}</H3>\r\n <FlexContainer>\r\n <ContentContainer>\r\n <P dangerouslySetInnerHTML={{ __html: html }} />\r\n <SkillsContainer>\r\n {frontmatter.skills &&\r\n frontmatter.skills.map((skill, i) => <Skill key={i}>{skill}</Skill>)}\r\n </SkillsContainer>\r\n </ContentContainer>\r\n <PicContainer>\r\n <AvatarContainer>\r\n <Avatar fluid={frontmatter.avatar.childImageSharp.fluid} alt=\"Avatar\" />\r\n </AvatarContainer>\r\n </PicContainer>\r\n </FlexContainer>\r\n </AboutContainer>\r\n );\r\n }\r\n}\r\n\r\nexport default About;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { srConfig } from '../config';\r\n\r\nimport styled from 'styled-components';\r\nimport { theme, mixins, media, Section, H3, P } from '../styles';\r\n\r\nimport ScrollReveal from 'scrollreveal';\r\n\r\nconst JobsContainer = styled(Section)`\r\n position: relative;\r\n max-width: 700px;\r\n`;\r\nconst TabsContainer = styled.div`\r\n display: flex;\r\n align-items: flex-start;\r\n position: relative;\r\n ${media.thone`display: block;`};\r\n`;\r\nconst Tabs = styled.div`\r\n display: block;\r\n position: relative;\r\n width: max-content;\r\n z-index: 3;\r\n ${media.thone`\r\n display: flex;\r\n margin-bottom: 30px;\r\n width: 100%;\r\n overflow-x: scroll;\r\n `};\r\n`;\r\nconst Tab = styled.button`\r\n ${mixins.link};\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n background-color: transparent;\r\n height: ${theme.tabHeight}px;\r\n padding: 0 20px 2px;\r\n transition: ${theme.transition};\r\n border-left: 2px solid ${theme.colors.darkGrey};\r\n text-align: left;\r\n white-space: nowrap;\r\n font-family: ${theme.fonts.SFMono};\r\n font-size: ${theme.fontSizes.smallish};\r\n color: ${props => (props.isActive ? theme.colors.green : theme.colors.lightGrey)};\r\n ${media.tablet`padding: 0 15px 2px;`};\r\n ${media.thone`\r\n ${mixins.flexCenter};\r\n padding: 0 15px;\r\n text-align: center;\r\n border-left: 0;\r\n border-bottom: 2px solid ${theme.colors.darkGrey};\r\n min-width: 120px;\r\n `};\r\n &:hover,\r\n &:focus {\r\n background-color: ${theme.colors.lightNavy};\r\n }\r\n`;\r\nconst Highlighter = styled.span`\r\n display: block;\r\n background: ${theme.colors.green};\r\n width: 2px;\r\n height: ${theme.tabHeight}px;\r\n border-radius: ${theme.borderRadius};\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n transition: ${theme.transition};\r\n transition-delay: 0.1s;\r\n z-index: 10;\r\n transform: translateY(\r\n ${props => (props.activeTabId > 0 ? props.activeTabId * theme.tabHeight : 0)}px\r\n );\r\n ${media.thone`\r\n width: 100%;\r\n max-width: ${theme.tabWidth}px;\r\n height: 2px;\r\n top: auto;\r\n bottom: 0;\r\n transform: translateX(\r\n ${props => (props.activeTabId > 0 ? props.activeTabId * theme.tabWidth : 0)}px\r\n );\r\n `};\r\n`;\r\nconst ContentContainer = styled.div`\r\n position: relative;\r\n padding-top: 14px;\r\n padding-left: 30px;\r\n flex-grow: 1;\r\n ${media.tablet`padding-left: 20px;`};\r\n ${media.thone`padding-left: 0;`};\r\n`;\r\nconst TabContent = styled.div`\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: auto;\r\n opacity: ${props => (props.isActive ? 1 : 0)};\r\n z-index: ${props => (props.isActive ? 2 : -1)};\r\n position: ${props => (props.isActive ? 'relative' : 'absolute')};\r\n visibility: ${props => (props.isActive ? 'visible' : 'hidden')};\r\n transition: ${theme.transition};\r\n transition-duration: ${props => (props.isActive ? '0.5s' : '0s')};\r\n ul {\r\n padding: 0;\r\n margin: 0;\r\n list-style: none;\r\n font-size: ${theme.fontSizes.large};\r\n li {\r\n position: relative;\r\n padding-left: 30px;\r\n margin-bottom: 5px;\r\n &:before {\r\n content: '▹';\r\n position: absolute;\r\n left: 0;\r\n color: ${theme.colors.green};\r\n line-height: ${theme.fontSizes.xlarge};\r\n }\r\n }\r\n }\r\n a {\r\n ${mixins.inlineLink};\r\n }\r\n`;\r\nconst JobTitle = styled.h4`\r\n color: ${theme.colors.lightestSlate};\r\n font-size: ${theme.fontSizes.xxlarge};\r\n font-weight: 500;\r\n margin-bottom: 5px;\r\n`;\r\nconst Company = styled.span`\r\n color: ${theme.colors.green};\r\n`;\r\nconst JobDetails = styled.h5`\r\n font-family: ${theme.fonts.SFMono};\r\n font-size: ${theme.fontSizes.smallish};\r\n font-weight: normal;\r\n letter-spacing: 0.5px;\r\n color: ${theme.colors.lightSlate};\r\n margin-bottom: 30px;\r\n svg {\r\n width: 15px;\r\n }\r\n`;\r\n\r\nclass Jobs extends Component {\r\n static propTypes = {\r\n data: PropTypes.array.isRequired,\r\n };\r\n\r\n state = {\r\n activeTabId: 0,\r\n };\r\n\r\n componentDidMount() {\r\n ScrollReveal().reveal(this.jobs, srConfig());\r\n }\r\n\r\n isActive = id => this.state.activeTabId === id;\r\n\r\n setActiveTab = activeTabId => this.setState({ activeTabId });\r\n\r\n render() {\r\n const { activeTabId } = this.state;\r\n const { data } = this.props;\r\n\r\n return (\r\n <JobsContainer id=\"jobs\" innerRef={el => (this.jobs = el)}>\r\n <H3>Where I've Worked</H3>\r\n <TabsContainer>\r\n <Tabs role=\"tablist\">\r\n {data &&\r\n data.map(({ node }, i) => (\r\n <Tab\r\n key={i}\r\n isActive={this.isActive(i)}\r\n onClick={e => this.setActiveTab(i, e)}\r\n role=\"tab\"\r\n aria-selected={this.isActive(i) ? 'true' : 'false'}\r\n aria-controls={`tab${i}`}\r\n id={`tab${i}`}\r\n tabindex={this.isActive(i) ? '0' : '-1'}>\r\n <span>{node.frontmatter.company}</span>\r\n </Tab>\r\n ))}\r\n <Highlighter activeTabId={activeTabId} />\r\n </Tabs>\r\n <ContentContainer>\r\n {data &&\r\n data.map(({ node }, i) => (\r\n <TabContent\r\n key={i}\r\n isActive={this.isActive(i)}\r\n id={`job${i}`}\r\n role=\"tabpanel\"\r\n tabindex=\"0\"\r\n aria-labelledby={`job${i}`}\r\n aria-hidden={!this.isActive(i)}>\r\n <JobTitle>\r\n <span>{node.frontmatter.title}</span>\r\n <Company>\r\n @ \r\n <a\r\n href={node.frontmatter.url}\r\n target=\"_blank\"\r\n rel=\" noopener noreferrer\">\r\n {node.frontmatter.company}\r\n </a>\r\n </Company>\r\n </JobTitle>\r\n <JobDetails>\r\n <span>{node.frontmatter.range}</span>\r\n </JobDetails>\r\n <P dangerouslySetInnerHTML={{ __html: node.html }} />\r\n </TabContent>\r\n ))}\r\n </ContentContainer>\r\n </TabsContainer>\r\n </JobsContainer>\r\n );\r\n }\r\n}\r\n\r\nexport default Jobs;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Img from 'gatsby-image';\r\n\r\nimport { srConfig } from '../config';\r\n\r\nimport { IconGithub, IconExternal } from './icons';\r\n\r\nimport styled from 'styled-components';\r\nimport { theme, mixins, media, Section, H3, Ul, A } from '../styles';\r\n\r\nimport ScrollReveal from 'scrollreveal';\r\n\r\nconst FeaturedContainer = styled(Section)`\r\n ${mixins.flexCenter};\r\n flex-direction: column;\r\n align-items: flex-start;\r\n`;\r\nconst FeaturedGrid = styled.div`\r\n position: relative;\r\n`;\r\nconst ContentContainer = styled.div`\r\n position: relative;\r\n z-index: 2;\r\n grid-column: 1 / 7;\r\n grid-row: 1 / -1;\r\n ${media.thone`\r\n grid-column: 1 / -1;\r\n padding: 40px 40px 30px;\r\n `};\r\n ${media.phablet`padding: 30px 25px 20px;`};\r\n`;\r\nconst FeaturedLabel = styled.h4`\r\n font-size: ${theme.fontSizes.smallish};\r\n font-weight: normal;\r\n color: ${theme.colors.green};\r\n font-family: ${theme.fonts.SFMono};\r\n margin-top: 10px;\r\n padding-top: 0;\r\n`;\r\nconst ProjectName = styled.h5`\r\n font-size: 28px;\r\n font-weight: 600;\r\n margin: 0 0 20px;\r\n color: ${theme.colors.lightestSlate};\r\n ${media.tablet`font-size: 24px;`};\r\n a {\r\n ${media.tablet`display: block;`};\r\n }\r\n`;\r\nconst ProjectDescription = styled.div`\r\n background-color: ${theme.colors.lightNavy};\r\n color: ${theme.colors.lightSlate};\r\n padding: 20px;\r\n border-radius: ${theme.borderRadius};\r\n font-size: 17px;\r\n line-height: 1.3;\r\n ${media.thone`\r\n background-color: transparent;\r\n padding: 20px 0;\r\n `};\r\n p {\r\n margin: 0;\r\n }\r\n a {\r\n ${mixins.inlineLink};\r\n color: ${theme.colors.white};\r\n }\r\n`;\r\nconst TechList = styled(Ul)`\r\n display: flex;\r\n flex-wrap: wrap;\r\n margin: 25px 0 10px;\r\n li {\r\n font-family: ${theme.fonts.SFMono};\r\n font-size: ${theme.fontSizes.smallish};\r\n color: ${theme.colors.lightSlate};\r\n margin-right: ${theme.margin};\r\n margin-bottom: 7px;\r\n white-space: nowrap;\r\n &:last-of-type {\r\n margin-right: 0;\r\n }\r\n ${media.thone`\r\n color: ${theme.colors.lightestSlate};\r\n margin-right: 10px;\r\n `};\r\n }\r\n`;\r\nconst Links = styled.div`\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n margin-top: 10px;\r\n margin-left: -10px;\r\n a {\r\n padding: 10px;\r\n svg {\r\n width: 22px;\r\n height: 22px;\r\n }\r\n }\r\n`;\r\nconst FeaturedImg = styled(Img)`\r\n width: 100%;\r\n max-width: 100%;\r\n vertical-align: middle;\r\n border-radius: ${theme.borderRadius};\r\n position: relative;\r\n mix-blend-mode: multiply;\r\n filter: grayscale(100%) contrast(1) brightness(90%);\r\n ${media.tablet`\r\n object-fit: cover;\r\n width: auto;\r\n height: 100%;\r\n filter: grayscale(100%) contrast(1) brightness(80%);\r\n `};\r\n }\r\n`;\r\nconst ImgContainer = styled.div`\r\n position: relative;\r\n z-index: 1;\r\n border-radius: ${theme.borderRadius};\r\n background-color: ${theme.colors.green};\r\n border-radius: 2px;\r\n grid-column: 6 / -1;\r\n grid-row: 1 / -1;\r\n transition: ${theme.transition};\r\n ${media.tablet`height: 100%;`};\r\n ${media.thone`\r\n grid-column: 1 / -1;\r\n opacity: 0.25;\r\n `};\r\n &:hover,\r\n &:focus {\r\n background: transparent;\r\n &:before,\r\n ${FeaturedImg} {\r\n background: transparent;\r\n filter: none;\r\n }\r\n }\r\n &:before {\r\n content: '';\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n z-index: 3;\r\n transition: ${theme.transition};\r\n background-color: ${theme.colors.navy};\r\n mix-blend-mode: screen;\r\n }\r\n`;\r\nconst Project = styled.div`\r\n display: grid;\r\n grid-gap: 10px;\r\n grid-template-columns: repeat(12, 1fr);\r\n align-items: center;\r\n margin-bottom: 100px;\r\n ${media.thone`margin-bottom: 70px;`};\r\n &:last-of-type {\r\n margin-bottom: 0;\r\n }\r\n &:nth-of-type(odd) {\r\n ${ContentContainer} {\r\n grid-column: 7 / -1;\r\n text-align: right;\r\n ${media.thone`\r\n grid-column: 1 / -1;\r\n padding: 40px 40px 30px;\r\n `};\r\n ${media.phablet`padding: 30px 25px 20px;`};\r\n }\r\n ${TechList} {\r\n justify-content: flex-end;\r\n li {\r\n margin-left: ${theme.margin};\r\n margin-right: 0;\r\n }\r\n }\r\n ${Links} {\r\n justify-content: flex-end;\r\n margin-left: 0;\r\n margin-right: -10px;\r\n }\r\n ${ImgContainer} {\r\n grid-column: 1 / 8;\r\n ${media.tablet`height: 100%;`};\r\n ${media.thone`\r\n grid-column: 1 / -1;\r\n opacity: 0.25;\r\n `};\r\n }\r\n }\r\n`;\r\n\r\nclass Featured extends Component {\r\n static propTypes = {\r\n data: PropTypes.array.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.revealRefs = [];\r\n }\r\n\r\n componentDidMount() {\r\n ScrollReveal().reveal(this.featured, srConfig());\r\n this.revealRefs.forEach(ref => ScrollReveal().reveal(ref, srConfig()));\r\n }\r\n\r\n render() {\r\n const { data } = this.props;\r\n\r\n return (\r\n <FeaturedContainer id=\"projects\">\r\n <H3 innerRef={el => (this.featured = el)}>Some Things I've Built</H3>\r\n <FeaturedGrid>\r\n {data &&\r\n data.map(({ node }, i) => (\r\n <Project key={i} innerRef={el => (this.revealRefs[i] = el)}>\r\n <ContentContainer>\r\n <FeaturedLabel>Featured Project</FeaturedLabel>\r\n <ProjectName>\r\n {node.frontmatter.external ? (\r\n <A\r\n href={node.frontmatter.external}\r\n target=\"_blank\"\r\n rel=\" noopener noreferrer\"\r\n aria-label=\"External Link\">\r\n {node.frontmatter.title}\r\n </A>\r\n ) : (\r\n node.frontmatter.title\r\n )}\r\n </ProjectName>\r\n <ProjectDescription dangerouslySetInnerHTML={{ __html: node.html }} />\r\n {node.frontmatter.tech && (\r\n <TechList>\r\n {node.frontmatter.tech.map((tech, i) => (\r\n <li key={i}>{tech}</li>\r\n ))}\r\n </TechList>\r\n )}\r\n <Links>\r\n {node.frontmatter.github && (\r\n <A\r\n href={node.frontmatter.github}\r\n target=\"_blank\"\r\n rel=\" noopener noreferrer\"\r\n aria-label=\"Github Link\">\r\n <IconGithub />\r\n </A>\r\n )}\r\n {node.frontmatter.external && (\r\n <A\r\n href={node.frontmatter.external}\r\n target=\"_blank\"\r\n rel=\" noopener noreferrer\"\r\n aria-label=\"External Link\">\r\n <IconExternal />\r\n </A>\r\n )}\r\n </Links>\r\n </ContentContainer>\r\n\r\n <ImgContainer>\r\n <FeaturedImg fluid={node.frontmatter.cover.childImageSharp.fluid} />\r\n </ImgContainer>\r\n </Project>\r\n ))}\r\n </FeaturedGrid>\r\n </FeaturedContainer>\r\n );\r\n }\r\n}\r\n\r\nexport default Featured;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\r\n\r\nimport { srConfig } from '../config';\r\n\r\nimport { IconGithub, IconExternal, IconFolder } from './icons';\r\n\r\nimport styled from 'styled-components';\r\nimport { theme, mixins, media, Section, Ul, A, Button } from '../styles';\r\n\r\nimport ScrollReveal from 'scrollreveal';\r\n\r\nconst ProjectsContainer = styled(Section)`\r\n ${mixins.flexCenter};\r\n flex-direction: column;\r\n align-items: flex-start;\r\n`;\r\nconst ProjectsTitle = styled.h4`\r\n margin: 0 auto 50px;\r\n font-size: ${theme.fontSizes.h3};\r\n ${media.tablet`font-size: 24px;`};\r\n a {\r\n display: block;\r\n }\r\n`;\r\nconst ProjectsGrid = styled.div`\r\n .projects {\r\n display: grid;\r\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\r\n grid-gap: 15px;\r\n position: relative;\r\n ${media.desktop`grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));`};\r\n }\r\n`;\r\nconst ProjectInner = styled.div`\r\n ${mixins.flexBetween};\r\n flex-direction: column;\r\n align-items: flex-start;\r\n position: relative;\r\n padding: 25px;\r\n height: 100%;\r\n border-radius: ${theme.borderRadius};\r\n transition: ${theme.transition};\r\n background-color: ${theme.colors.lightNavy};\r\n`;\r\nconst Project = styled.div`\r\n transition: ${theme.transition};\r\n &:hover,\r\n &:focus {\r\n ${ProjectInner} {\r\n transform: translateY(-5px);\r\n box-shadow: 0 2px 4px ${theme.colors.shadowNavy};\r\n box-shadow: 0 19px 38px ${theme.colors.darkestNavy} 0 15px 12px ${theme.colors.shadowNavy};\r\n }\r\n }\r\n`;\r\nconst ProjectTop = styled.div``;\r\nconst ProjectBottom = styled.div``;\r\nconst ProjectHeader = styled.div`\r\n ${mixins.flexBetween};\r\n margin-bottom: 30px;\r\n`;\r\nconst Folder = styled.div`\r\n color: ${theme.colors.green};\r\n svg {\r\n width: 40px;\r\n height: 40px;\r\n }\r\n`;\r\nconst Links = styled.div`\r\n margin-right: -10px;\r\n color: ${theme.colors.lightSlate};\r\n`;\r\nconst IconLink = styled(A)`\r\n padding: 10px;\r\n svg {\r\n width: 22px;\r\n height: 22px;\r\n }\r\n`;\r\nconst ProjectName = styled.h5`\r\n margin: 0 0 10px;\r\n font-size: ${theme.fontSizes.xxlarge};\r\n color: ${theme.colors.lightestSlate};\r\n`;\r\nconst ProjectLink = styled(A)``;\r\nconst ProjectDescription = styled.div`\r\n font-size: 17px;\r\n line-height: 1.25;\r\n a {\r\n ${mixins.inlineLink};\r\n }\r\n`;\r\nconst TechList = styled(Ul)`\r\n flex-grow: 1;\r\n display: flex;\r\n align-items: flex-end;\r\n flex-wrap: wrap;\r\n margin-top: 20px;\r\n li {\r\n font-family: ${theme.fonts.SFMono};\r\n font-size: ${theme.fontSizes.xsmall};\r\n color: ${theme.colors.lightSlate};\r\n line-height: 2;\r\n margin-right: 15px;\r\n &:last-of-type {\r\n margin-right: 0;\r\n }\r\n }\r\n`;\r\nconst ShowMoreButton = styled(Button)`\r\n ${mixins.bigButton};\r\n margin: 100px auto 0;\r\n`;\r\n\r\nclass Projects extends Component {\r\n static propTypes = {\r\n data: PropTypes.array.isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.revealRefs = [];\r\n this.restRefs = [];\r\n }\r\n\r\n state = {\r\n showMore: false,\r\n };\r\n\r\n componentDidMount() {\r\n ScrollReveal().reveal(this.projects, srConfig());\r\n this.revealRefs.forEach((ref, i) => ScrollReveal().reveal(ref, srConfig(i * 100)));\r\n }\r\n\r\n showMoreToggle = () => this.setState({ showMore: !this.state.showMore });\r\n\r\n render() {\r\n const GRID_LIMIT = 6;\r\n const { showMore } = this.state;\r\n const { data } = this.props;\r\n const projects = data.filter(({ node }) => node.frontmatter.show === 'true');\r\n const firstSix = projects.slice(0, GRID_LIMIT);\r\n const projectsToShow = showMore ? projects : firstSix;\r\n\r\n return (\r\n <ProjectsContainer>\r\n <ProjectsTitle innerRef={el => (this.projects = el)}>Other Projects</ProjectsTitle>\r\n <ProjectsGrid>\r\n <TransitionGroup className=\"projects\">\r\n {projectsToShow &&\r\n projectsToShow.map(({ node }, i) => (\r\n <CSSTransition\r\n key={i}\r\n classNames=\"fadeup\"\r\n timeout={i >= GRID_LIMIT ? (i - GRID_LIMIT) * 300 : 300}\r\n exit={false}>\r\n <Project\r\n key={i}\r\n innerRef={el => (this.revealRefs[i] = el)}\r\n style={{\r\n transitionDelay: `${i >= GRID_LIMIT ? (i - GRID_LIMIT) * 100 : 0}ms`,\r\n }}>\r\n <ProjectInner>\r\n <ProjectTop>\r\n <ProjectHeader>\r\n <Folder>\r\n <IconFolder />\r\n </Folder>\r\n <Links>\r\n {node.frontmatter.github && (\r\n <IconLink\r\n href={node.frontmatter.github}\r\n target=\"_blank\"\r\n rel=\" noopener noreferrer\"\r\n aria-label=\"Github Link\">\r\n <IconGithub />\r\n </IconLink>\r\n )}\r\n {node.frontmatter.external && (\r\n <IconLink\r\n href={node.frontmatter.external}\r\n target=\"_blank\"\r\n rel=\" noopener noreferrer\"\r\n aria-label=\"External Link\">\r\n <IconExternal />\r\n </IconLink>\r\n )}\r\n </Links>\r\n </ProjectHeader>\r\n <ProjectName>\r\n {node.frontmatter.external ? (\r\n <ProjectLink\r\n href={node.frontmatter.external}\r\n target=\"_blank\"\r\n rel=\" noopener noreferrer\"\r\n aria-label=\"Visit Website\">\r\n {node.frontmatter.title}\r\n </ProjectLink>\r\n ) : (\r\n node.frontmatter.title\r\n )}\r\n </ProjectName>\r\n <ProjectDescription dangerouslySetInnerHTML={{ __html: node.html }} />\r\n </ProjectTop>\r\n <ProjectBottom>\r\n <TechList>\r\n {node.frontmatter.tech.map((tech, i) => (\r\n <li key={i}>{tech}</li>\r\n ))}\r\n </TechList>\r\n </ProjectBottom>\r\n </ProjectInner>\r\n </Project>\r\n </CSSTransition>\r\n ))}\r\n </TransitionGroup>\r\n </ProjectsGrid>\r\n\r\n <ShowMoreButton onClick={this.showMoreToggle}>\r\n {showMore ? 'Fewer' : 'More'} Projects\r\n </ShowMoreButton>\r\n </ProjectsContainer>\r\n );\r\n }\r\n}\r\n\r\nexport default Projects;\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { srConfig, email } from '../config';\r\n\r\nimport styled from 'styled-components';\r\nimport { theme, mixins, media, Section, H3, A, P } from '../styles';\r\n\r\nimport ScrollReveal from 'scrollreveal';\r\n\r\nconst ContactContainer = styled(Section)`\r\n text-align: center;\r\n max-width: 600px;\r\n margin: 0 auto 100px;\r\n a {\r\n ${mixins.inlineLink};\r\n }\r\n`;\r\nconst Header = styled(H3)`\r\n display: block;\r\n color: ${theme.colors.green};\r\n font-size: ${theme.fontSizes.medium};\r\n font-family: ${theme.fonts.SFMono};\r\n font-weight: normal;\r\n margin-bottom: 20px;\r\n justify-content: center;\r\n ${media.desktop`font-size: ${theme.fontSizes.small};`};\r\n &:before {\r\n bottom: 0;\r\n font-size: ${theme.fontSizes.small};\r\n ${media.desktop`font-size: ${theme.fontSizes.smallish};`};\r\n }\r\n &:after {\r\n display: none;\r\n }\r\n`;\r\nconst Title = styled.h4`\r\n margin: 0 0 20px;\r\n font-size: 60px;\r\n ${media.desktop`font-size: 50px;`};\r\n ${media.tablet`font-size: 40px;`};\r\n`;\r\nconst EmailLink = styled(A)`\r\n ${mixins.bigButton};\r\n margin-top: 50px;\r\n`;\r\n\r\nclass Contact extends Component {\r\n static propTypes = {\r\n data: PropTypes.array.isRequired,\r\n };\r\n\r\n componentDidMount() {\r\n ScrollReveal().reveal(this.contact, srConfig());\r\n }\r\n\r\n render() {\r\n const { data } = this.props;\r\n const { frontmatter, html } = data[0].node;\r\n\r\n return (\r\n <ContactContainer id=\"contact\" innerRef={el => (this.contact = el)}>\r\n <Header>What's Next?</Header>\r\n <Title>{frontmatter.title}</Title>\r\n <P dangerouslySetInnerHTML={{ __html: html }} />\r\n <EmailLink href={`mailto:${email}`} target=\"_blank\" rel=\" noopener noreferrer\">\r\n Say Hello\r\n </EmailLink>\r\n </ContactContainer>\r\n );\r\n }\r\n}\r\n\r\nexport default Contact;\r\n","import React from 'react';\r\nimport { graphql } from 'gatsby';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Layout from '../components/layout';\r\nimport Hero from '../components/hero';\r\nimport About from '../components/about';\r\nimport Jobs from '../components/jobs';\r\nimport Featured from '../components/featured';\r\nimport Projects from '../components/projects';\r\nimport Contact from '../components/contact';\r\n\r\nimport styled from 'styled-components';\r\nimport { mixins, Main } from '../styles';\r\n\r\nconst MainContainer = styled(Main)`\r\n ${mixins.sidePadding};\r\n counter-reset: section;\r\n`;\r\n\r\nconst IndexPage = ({ data, location }) => (\r\n <Layout location={location}>\r\n <MainContainer id=\"content\">\r\n <Hero data={data.hero.edges} />\r\n <About data={data.about.edges} />\r\n <Jobs data={data.jobs.edges} />\r\n <Featured data={data.featured.edges} />\r\n <Projects data={data.projects.edges} />\r\n <Contact data={data.contact.edges} />\r\n </MainContainer>\r\n </Layout>\r\n);\r\n\r\nIndexPage.propTypes = {\r\n data: PropTypes.object.isRequired,\r\n location: PropTypes.object,\r\n};\r\n\r\nexport default IndexPage;\r\n\r\nexport const query = graphql`\r\n query IndexQuery {\r\n hero: allMarkdownRemark(filter: { fileAbsolutePath: { regex: \"/hero/\" } }) {\r\n edges {\r\n node {\r\n frontmatter {\r\n title\r\n name\r\n subtitle\r\n contactText\r\n }\r\n html\r\n }\r\n }\r\n }\r\n about: allMarkdownRemark(filter: { fileAbsolutePath: { regex: \"/about/\" } }) {\r\n edges {\r\n node {\r\n frontmatter {\r\n title\r\n avatar {\r\n childImageSharp {\r\n fluid(maxWidth: 700, quality: 90, traceSVG: { color: \"#64ffda\" }) {\r\n ...GatsbyImageSharpFluid_withWebp_tracedSVG\r\n }\r\n }\r\n }\r\n skills\r\n }\r\n html\r\n }\r\n }\r\n }\r\n jobs: allMarkdownRemark(\r\n filter: { fileAbsolutePath: { regex: \"/jobs/\" } }\r\n sort: { fields: [frontmatter___date], order: DESC }\r\n ) {\r\n edges {\r\n node {\r\n frontmatter {\r\n title\r\n company\r\n location\r\n range\r\n url\r\n }\r\n html\r\n }\r\n }\r\n }\r\n featured: allMarkdownRemark(\r\n filter: { fileAbsolutePath: { regex: \"/featured/\" } }\r\n sort: { fields: [frontmatter___date], order: DESC }\r\n ) {\r\n edges {\r\n node {\r\n frontmatter {\r\n title\r\n cover {\r\n childImageSharp {\r\n fluid(maxWidth: 700, quality: 90, traceSVG: { color: \"#64ffda\" }) {\r\n ...GatsbyImageSharpFluid_withWebp_tracedSVG\r\n }\r\n }\r\n }\r\n tech\r\n github\r\n external\r\n }\r\n html\r\n }\r\n }\r\n }\r\n projects: allMarkdownRemark(\r\n filter: { fileAbsolutePath: { regex: \"/projects/\" } }\r\n sort: { fields: [frontmatter___date], order: DESC }\r\n ) {\r\n edges {\r\n node {\r\n frontmatter {\r\n title\r\n image\r\n tech\r\n github\r\n external\r\n show\r\n }\r\n html\r\n }\r\n }\r\n }\r\n contact: allMarkdownRemark(filter: { fileAbsolutePath: { regex: \"/contact/\" } }) {\r\n edges {\r\n node {\r\n frontmatter {\r\n title\r\n }\r\n html\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n"],"sourceRoot":""}