-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcomponent---src-pages-index-js-40e1e1a61483b7efd55e.js.map
1 lines (1 loc) · 51 KB
/
component---src-pages-index-js-40e1e1a61483b7efd55e.js.map
1
{"version":3,"sources":["webpack:///./src/components/hero.js","webpack:///./src/components/about.js","webpack:///./src/components/jobs.js","webpack:///./src/components/featured.js","webpack:///./src/components/projects.js","webpack:///./src/components/contact.js","webpack:///./src/pages/index.js"],"names":["HeroContainer","styled","Section","withConfig","displayName","componentId","mixins","flexCenter","media","tablet","_templateObject","Hi","h3","theme","colors","green","fontSizes","medium","fonts","SFMono","desktop","_templateObject2","small","_templateObject3","smallish","Name","h1","_templateObject4","_templateObject5","phablet","_templateObject6","phone","_templateObject7","Subtitle","h2","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","lightAmber","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":"4jCASA,IAAMA,EAAgBC,YAAOC,KAAVC,WAAA,CAAAC,YAAA,sBAAAC,YAAA,eAAGJ,CAAH,2FACfK,IAAOC,WAIPC,IAAMC,OALSC,MAUbC,EAAKV,IAAOW,GAAVT,WAAA,CAAAC,YAAA,WAAAC,YAAA,eAAGJ,CAAH,4FACGY,IAAMC,OAAOC,MAETF,IAAMG,UAAUC,OACdJ,IAAMK,MAAMC,OAEzBX,IAAMY,QANFC,IAMuBR,IAAMG,UAAUM,OAC3Cd,IAAMC,OAPFc,IAOsBV,IAAMG,UAAUQ,WAExCC,EAAOxB,IAAOyB,GAAVvB,WAAA,CAAAC,YAAA,aAAAC,YAAA,eAAGJ,CAAH,6DAINO,IAAMY,QAJAO,KAKNnB,IAAMC,OALAmB,KAMNpB,IAAMqB,QANAC,KAONtB,IAAMuB,MAPAC,MASJC,EAAWhC,IAAOiC,GAAV/B,WAAA,CAAAC,YAAA,iBAAAC,YAAA,eAAGJ,CAAH,8DAGHY,IAAMC,OAAOqB,MACpB3B,IAAMY,QAJIgB,KAKV5B,IAAMC,OALI4B,KAMV7B,IAAMqB,QANIS,KAOV9B,IAAMuB,MAPIQ,MASRC,EAAQvC,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,cAAAC,YAAA,eAAGJ,CAAH,sDAKLK,IAAOoC,YAGPC,EAAc1C,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,oBAAAC,YAAA,eAAGJ,CAAH,MACX2C,EAAY3C,YAAO4C,KAAV1C,WAAA,CAAAC,YAAA,kBAAAC,YAAA,eAAGJ,CAAH,uCACXK,IAAOwC,UACIjC,IAAMG,UAAUQ,UAIzBuB,sJAKJC,MAAQ,CACNC,WAAW,yCAGbC,6BAAoB,IAAAC,EAAAC,KAClBC,WAAW,kBAAMF,EAAKG,SAAS,CAAEL,WAAW,KAAS,QAGvDM,kBAAS,IACCC,EAASJ,KAAKK,MAAdD,KACAP,EAAcG,KAAKJ,MAAnBC,UAFDS,EAGuBF,EAAK,GAAGG,KAA9BC,EAHDF,EAGCE,YAAaC,EAHdH,EAGcG,KAgBfC,EAAQ,CAdF,kBAAMC,EAAAC,EAAAC,cAACtD,EAAD,CAAIuD,MAAO,CAAEC,gBAAiB,UAAYP,EAAYQ,QAC5D,kBAAML,EAAAC,EAAAC,cAACxC,EAAD,CAAMyC,MAAO,CAAEC,gBAAiB,UAAYP,EAAYS,KAAxD,MACJ,kBACZN,EAAAC,EAAAC,cAAChC,EAAD,CAAUiC,MAAO,CAAEC,gBAAiB,UAAYP,EAAYU,WAEjD,kBACXP,EAAAC,EAAAC,cAACzB,EAAD,CAAO0B,MAAO,CAAEC,gBAAiB,SAAWI,wBAAyB,CAAEC,OAAQX,MAEpE,kBACXE,EAAAC,EAAAC,cAACtB,EAAD,CAAauB,MAAO,CAAEC,gBAAiB,UACrCJ,EAAAC,EAAAC,cAACrB,EAAD,CAAW6B,KAAI,UAAYC,SAA3B,mBAMJ,OACEX,EAAAC,EAAAC,cAACjE,EAAD,KACE+D,EAAAC,EAAAC,cAACU,EAAA,gBAAD,KACG1B,GACCa,EAAMc,IAAI,SAACC,EAAMC,GAAP,OACRf,EAAAC,EAAAC,cAACU,EAAA,cAAD,CAAeI,IAAKD,EAAGE,WAAW,SAASC,QAAS,KACjDJ,WAxCEK,aAAbnC,EACGoC,UAAY,CACjB3B,KAAM4B,IAAUC,MAAMC,YA+CXvC,iVCnGf,IAAMwC,EAAiBtF,YAAOC,KAAVC,WAAA,CAAAC,YAAA,wBAAAC,YAAA,YAAGJ,CAAH,wBAGduF,EAAgBvF,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,uBAAAC,YAAA,YAAGJ,CAAH,oCACfK,IAAOmF,YAEPjF,IAAMC,OAHSiF,MAKbC,EAAmB1F,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,0BAAAC,YAAA,YAAGJ,CAAH,0CAGlBO,IAAMC,OAHYmF,KAKhBtF,IAAOoC,YAGPmD,EAAkB5F,YAAO6F,KAAV3F,WAAA,CAAAC,YAAA,yBAAAC,YAAA,YAAGJ,CAAH,uGAMf8F,EAAQ9F,IAAO+F,GAAV7F,WAAA,CAAAC,YAAA,eAAAC,YAAA,YAAGJ,CAAH,4LAIMY,IAAMK,MAAMC,OACdN,IAAMG,UAAUQ,SACpBX,IAAMC,OAAOqB,MAKXtB,IAAMC,OAAOC,MACTF,IAAMG,UAAUM,OAI3B2E,EAAehG,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,sBAAAC,YAAA,YAAGJ,CAAH,0EAKdO,IAAMC,OALQyF,KAMd1F,IAAMqB,QANQsE,MAQZC,EAASnG,YAAOoG,KAAVlG,WAAA,CAAAC,YAAA,gBAAAC,YAAA,YAAGJ,CAAH,mKAOOY,IAAMyF,aACTzF,IAAM0F,YAEhBC,EAAkBvG,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,yBAAAC,YAAA,YAAGJ,CAAH,6gBAGFY,IAAMyF,aACHzF,IAAMC,OAAO2F,WAS7BL,EAcYvF,IAAM0F,WACA1F,IAAMC,OAAO4F,KAEhB7F,IAAMyF,aAOHzF,IAAMC,OAAO2F,WAKnB5F,IAAM0F,WACH1F,IAAMyF,cAIrBK,oGAKJzD,6BACE0D,cAAeC,OAAOzD,KAAK0D,MAAOC,yBAGpCxD,kBAAS,IAAAyD,EAAA5D,KAAAM,EACUN,KAAKK,MAAdD,KAC2B,GAAGG,KAA9BC,EAFDF,EAECE,YAAaC,EAFdH,EAEcG,KAErB,OACEE,EAAAC,EAAAC,cAACsB,EAAD,CAAgB0B,GAAG,QAAQC,SAAU,SAAAC,GAAE,OAAKH,EAAKF,MAAQK,IACvDpD,EAAAC,EAAAC,cAACmD,EAAA,EAAD,KAAKxD,EAAYQ,OACjBL,EAAAC,EAAAC,cAACuB,EAAD,KACEzB,EAAAC,EAAAC,cAAC0B,EAAD,KACE5B,EAAAC,EAAAC,cAACmD,EAAA,EAAD,CAAG7C,wBAAyB,CAAEC,OAAQX,KACtCE,EAAAC,EAAAC,cAAC4B,EAAD,KACGjC,EAAYyD,QACXzD,EAAYyD,OAAOzC,IAAI,SAAC0C,EAAOxC,GAAR,OAAcf,EAAAC,EAAAC,cAAC8B,EAAD,CAAOhB,IAAKD,GAAIwC,OAG3DvD,EAAAC,EAAAC,cAACgC,EAAD,KACElC,EAAAC,EAAAC,cAACuC,EAAD,KACEzC,EAAAC,EAAAC,cAACmC,EAAD,CAAQmB,MAAO3D,EAAY4D,OAAOC,gBAAgBF,MAAOG,IAAI,mBA1BvDxC,aAAdyB,EACGxB,UAAY,CACjB3B,KAAM4B,IAAUC,MAAMC,YAiCXqB,q4BC3If,IAAMgB,GAAgB1H,YAAOC,KAAVC,WAAA,CAAAC,YAAA,sBAAAC,YAAA,eAAGJ,CAAH,wCAIb2H,GAAgB3H,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,sBAAAC,YAAA,eAAGJ,CAAH,+DAIfO,IAAMqH,MAJSC,OAMbC,GAAO9H,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,aAAAC,YAAA,eAAGJ,CAAH,qEAKNO,IAAMqH,MALAG,OAYJC,GAAMhI,IAAOiI,OAAV/H,WAAA,CAAAC,YAAA,YAAAC,YAAA,eAAGJ,CAAH,mRACLK,IAAO6H,KAKCtH,IAAMuH,UAEFvH,IAAM0F,WACK1F,IAAMC,OAAOuH,SAGvBxH,IAAMK,MAAMC,OACdN,IAAMG,UAAUQ,SACpB,SAAAiC,GAAK,OAAKA,EAAM6E,SAAWzH,IAAMC,OAAOC,MAAQF,IAAMC,OAAOyH,WACpE/H,IAAMC,OAfD+H,MAgBLhI,IAAMqH,MAhBDY,KAiBHnI,IAAOC,WAIkBM,IAAMC,OAAOuH,UAKpBxH,IAAMC,OAAO4H,WAG/BC,GAAc1I,IAAO2I,KAAVzI,WAAA,CAAAC,YAAA,oBAAAC,YAAA,eAAGJ,CAAH,4LAEDY,IAAMC,OAAOC,MAEjBF,IAAMuH,UACCvH,IAAMyF,aAITzF,IAAM0F,WAIhB,SAAA9C,GAAK,OAAKA,EAAMoF,YAAc,EAAIpF,EAAMoF,YAAchI,IAAMuH,UAAY,GAE1E5H,IAAMqH,MAfOiB,KAiBAjI,IAAMkI,SAKf,SAAAtF,GAAK,OAAKA,EAAMoF,YAAc,EAAIpF,EAAMoF,YAAchI,IAAMkI,SAAW,KAIzEpD,GAAmB1F,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,yBAAAC,YAAA,eAAGJ,CAAH,8EAKlBO,IAAMC,OALYuI,MAMlBxI,IAAMqH,MANYoB,MAQhBC,GAAajJ,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,mBAAAC,YAAA,eAAGJ,CAAH,mUAKH,SAAAwD,GAAK,OAAKA,EAAM6E,SAAW,EAAI,GAC/B,SAAA7E,GAAK,OAAKA,EAAM6E,SAAW,GAAK,GAC/B,SAAA7E,GAAK,OAAKA,EAAM6E,SAAW,WAAa,YACtC,SAAA7E,GAAK,OAAKA,EAAM6E,SAAW,UAAY,UACvCzH,IAAM0F,WACG,SAAA9C,GAAK,OAAKA,EAAM6E,SAAW,OAAS,MAK5CzH,IAAMG,UAAUmI,MAShBtI,IAAMC,OAAOC,MACPF,IAAMG,UAAUoI,OAKjC9I,IAAOoC,YAGP2G,GAAWpJ,IAAOqJ,GAAVnJ,WAAA,CAAAC,YAAA,iBAAAC,YAAA,eAAGJ,CAAH,+DACHY,IAAMC,OAAOyI,cACT1I,IAAMG,UAAUwI,SAIzBC,GAAUxJ,IAAO2I,KAAVzI,WAAA,CAAAC,YAAA,gBAAAC,YAAA,eAAGJ,CAAH,eACFY,IAAMC,OAAOC,OAElB2I,GAAazJ,IAAO0J,GAAVxJ,WAAA,CAAAC,YAAA,mBAAAC,YAAA,eAAGJ,CAAH,wHACCY,IAAMK,MAAMC,OACdN,IAAMG,UAAUQ,SAGpBX,IAAMC,OAAO8I,YAOlBC,uJAKJ7G,MAAQ,CACN6F,YAAa,KAOfP,SAAW,SAAArB,GAAE,OAAID,EAAKhE,MAAM6F,cAAgB5B,KAE5C6C,aAAe,SAAAjB,GAAW,OAAI7B,EAAK1D,SAAS,CAAEuF,uDAN9C3F,6BACE0D,cAAeC,OAAOzD,KAAK2G,KAAMhD,yBAOnCxD,kBAAS,IAAAJ,EAAAC,KACCyF,EAAgBzF,KAAKJ,MAArB6F,YACArF,EAASJ,KAAKK,MAAdD,KAER,OACEO,EAAAC,EAAAC,cAAC0D,GAAD,CAAeV,GAAG,OAAOC,SAAU,SAAAC,GAAE,OAAKhE,EAAK4G,KAAO5C,IACpDpD,EAAAC,EAAAC,cAACmD,EAAA,EAAD,0BACArD,EAAAC,EAAAC,cAAC2D,GAAD,KACE7D,EAAAC,EAAAC,cAAC8D,GAAD,CAAMiC,KAAK,WACRxG,GACCA,EAAKoB,IAAI,SAAAqF,EAAWnF,GAAX,IAAGnB,EAAHsG,EAAGtG,KAAH,OACPI,EAAAC,EAAAC,cAACgE,GAAD,CACElD,IAAKD,EACLwD,SAAUnF,EAAKmF,SAASxD,GACxBoF,QAAS,SAAAC,GAAC,OAAIhH,EAAK2G,aAAahF,EAAGqF,IACnCH,KAAK,MACLI,gBAAejH,EAAKmF,SAASxD,GAAK,OAAS,QAC3CuF,gBAAA,MAAqBvF,EACrBmC,GAAE,MAAQnC,EACVwF,SAAUnH,EAAKmF,SAASxD,GAAK,IAAM,MACnCf,EAAAC,EAAAC,cAAA,YAAON,EAAKC,YAAY2G,YAG9BxG,EAAAC,EAAAC,cAAC0E,GAAD,CAAaE,YAAaA,KAE5B9E,EAAAC,EAAAC,cAACuG,GAAD,KACGhH,GACCA,EAAKoB,IAAI,SAAA6F,EAAW3F,GAAX,IAAGnB,EAAH8G,EAAG9G,KAAH,OACPI,EAAAC,EAAAC,cAACiF,GAAD,CACEnE,IAAKD,EACLwD,SAAUnF,EAAKmF,SAASxD,GACxBmC,GAAE,MAAQnC,EACVkF,KAAK,WACLM,SAAS,IACTI,kBAAA,MAAuB5F,EACvB6F,eAAcxH,EAAKmF,SAASxD,IAC5Bf,EAAAC,EAAAC,cAACoF,GAAD,KACEtF,EAAAC,EAAAC,cAAA,YAAON,EAAKC,YAAYQ,OACxBL,EAAAC,EAAAC,cAACwF,GAAD,WAEE1F,EAAAC,EAAAC,cAAA,KACEQ,KAAMd,EAAKC,YAAYgH,IACvBC,OAAO,SACPC,IAAI,gCACHnH,EAAKC,YAAY2G,WAIxBxG,EAAAC,EAAAC,cAACyF,GAAD,KACE3F,EAAAC,EAAAC,cAAA,YAAON,EAAKC,YAAYmH,QAE1BhH,EAAAC,EAAAC,cAACmD,EAAA,EAAD,CAAG7C,wBAAyB,CAAEC,OAAQb,EAAKE,kBApE1CqB,aAAb2E,GACG1E,UAAY,CACjB3B,KAAM4B,IAAUC,MAAMC,YA4EXuE,k/CCtNf,IAAMmB,GAAoB/K,YAAOC,KAAVC,WAAA,CAAAC,YAAA,8BAAAC,YAAA,eAAGJ,CAAH,sDACnBK,IAAOC,YAIL0K,GAAehL,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,yBAAAC,YAAA,eAAGJ,CAAH,wBAGZ0F,GAAmB1F,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,6BAAAC,YAAA,eAAGJ,CAAH,2EAKlBO,IAAMqH,MALYqD,MASlB1K,IAAMqB,QATYsJ,OAWhBC,GAAgBnL,IAAOqJ,GAAVnJ,WAAA,CAAAC,YAAA,0BAAAC,YAAA,eAAGJ,CAAH,8FACJY,IAAMG,UAAUQ,SAEpBX,IAAMC,OAAOC,MACPF,IAAMK,MAAMC,QAIvBkK,GAAcpL,IAAO0J,GAAVxJ,WAAA,CAAAC,YAAA,wBAAAC,YAAA,eAAGJ,CAAH,yEAINY,IAAMC,OAAOyI,cACpB/I,IAAMC,OALO6K,MAOX9K,IAAMC,OAPK8K,OAUXC,GAAqBvL,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,+BAAAC,YAAA,eAAGJ,CAAH,mIACFY,IAAMC,OAAO4H,UACxB7H,IAAMC,OAAO8I,WAEL/I,IAAMyF,aAGrB9F,IAAMqH,MAPc4D,MAelBnL,IAAOoC,WACA7B,IAAMC,OAAO4K,OAGpBC,GAAW1L,YAAO6F,KAAV3F,WAAA,CAAAC,YAAA,qBAAAC,YAAA,eAAGJ,CAAH,yLAKKY,IAAMK,MAAMC,OACdN,IAAMG,UAAUQ,SACpBX,IAAMC,OAAO8I,WACN/I,IAAM+K,OAMpBpL,IAAMqH,MAdEgE,KAeChL,IAAMC,OAAOyI,gBAKtBuC,GAAQ7L,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,kBAAAC,YAAA,eAAGJ,CAAH,sIAcL8L,GAAc9L,YAAOoG,KAAVlG,WAAA,CAAAC,YAAA,wBAAAC,YAAA,eAAGJ,CAAH,yKAIEY,IAAMyF,aAIrB9F,IAAMC,OAROuL,OAgBXC,GAAehM,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,yBAAAC,YAAA,eAAGJ,CAAH,6YAGCY,IAAMyF,aACHzF,IAAMC,OAAO2F,WAInB5F,IAAM0F,WAClB/F,IAAMC,OATQyL,MAUd1L,IAAMqH,MAVQsE,MAkBZJ,GAeYlL,IAAM0F,WACA1F,IAAMC,OAAO4F,MAI/B0F,GAAUnM,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,oBAAAC,YAAA,gBAAGJ,CAAH,oXAMTO,IAAMqH,MANGwE,MAWP1G,GAGEnF,IAAMqH,MAdDyE,MAkBL9L,IAAMqB,QAlBD0K,MAoBPZ,GAGiB9K,IAAM+K,OAIvBE,GAKAG,GAEEzL,IAAMC,OAlCD+L,MAmCLhM,IAAMqH,MAnCD4E,OA2CPC,eAKJ,SAAAA,EAAYjJ,GAAO,IAAAuD,EAAA,OACjBA,EAAA2F,EAAAC,KAAAxJ,KAAMK,IAANL,MACKyJ,WAAa,GAFD7F,sCAKnB9D,6BACE0D,cAAeC,OAAOzD,KAAK0J,SAAU/F,sBACrC3D,KAAKyJ,WAAWE,QAAQ,SAAAC,GAAG,OAAIpG,cAAeC,OAAOmG,EAAKjG,2BAG5DxD,kBAAS,IAAAJ,EAAAC,KACCI,EAASJ,KAAKK,MAAdD,KAER,OACEO,EAAAC,EAAAC,cAAC+G,GAAD,CAAmB/D,GAAG,YACpBlD,EAAAC,EAAAC,cAACmD,EAAA,EAAD,CAAIF,SAAU,SAAAC,GAAE,OAAKhE,EAAK2J,SAAW3F,IAArC,0BACApD,EAAAC,EAAAC,cAACgH,GAAD,KACGzH,GACCA,EAAKoB,IAAI,SAAAqF,EAAWnF,GAAX,IAAGnB,EAAHsG,EAAGtG,KAAH,OACPI,EAAAC,EAAAC,cAACmI,GAAD,CAASrH,IAAKD,EAAGoC,SAAU,SAAAC,GAAE,OAAKhE,EAAK0J,WAAW/H,GAAKqC,IACrDpD,EAAAC,EAAAC,cAACgJ,GAAD,KACElJ,EAAAC,EAAAC,cAACmH,GAAD,yBACArH,EAAAC,EAAAC,cAACoH,GAAD,KACG1H,EAAKC,YAAYsJ,SAChBnJ,EAAAC,EAAAC,cAACmD,EAAA,EAAD,CACE3C,KAAMd,EAAKC,YAAYsJ,SACvBrC,OAAO,SACPC,IAAI,+BACJqC,aAAW,iBACVxJ,EAAKC,YAAYQ,OAGpBT,EAAKC,YAAYQ,OAGrBL,EAAAC,EAAAC,cAACuH,GAAD,CAAoBjH,wBAAyB,CAAEC,OAAQb,EAAKE,QAC3DF,EAAKC,YAAYwJ,MAChBrJ,EAAAC,EAAAC,cAAC0H,GAAD,KACGhI,EAAKC,YAAYwJ,KAAKxI,IAAI,SAACwI,EAAMtI,GAAP,OACzBf,EAAAC,EAAAC,cAAA,MAAIc,IAAKD,GAAIsI,MAInBrJ,EAAAC,EAAAC,cAAC6H,GAAD,KACGnI,EAAKC,YAAYyJ,QAChBtJ,EAAAC,EAAAC,cAACmD,EAAA,EAAD,CACE3C,KAAMd,EAAKC,YAAYyJ,OACvBxC,OAAO,SACPC,IAAI,+BACJqC,aAAW,eACXpJ,EAAAC,EAAAC,cAACqJ,GAAA,EAAD,OAGH3J,EAAKC,YAAYsJ,UAChBnJ,EAAAC,EAAAC,cAACmD,EAAA,EAAD,CACE3C,KAAMd,EAAKC,YAAYsJ,SACvBrC,OAAO,SACPC,IAAI,+BACJqC,aAAW,iBACXpJ,EAAAC,EAAAC,cAACqJ,GAAA,EAAD,SAMRvJ,EAAAC,EAAAC,cAACgI,GAAD,KACElI,EAAAC,EAAAC,cAAC8H,GAAD,CAAaxE,MAAO5D,EAAKC,YAAY2J,MAAM9F,gBAAgBF,kBAvEtDrC,aAAjBwH,GACGvH,UAAY,CACjB3B,KAAM4B,IAAUC,MAAMC,YA+EXoH,2NC5Qf,IAAMc,GAAoBvN,YAAOC,KAAVC,WAAA,CAAAC,YAAA,8BAAAC,YAAA,eAAGJ,CAAH,sDACnBK,IAAOC,YAILkN,GAAgBxN,IAAOqJ,GAAVnJ,WAAA,CAAAC,YAAA,0BAAAC,YAAA,eAAGJ,CAAH,2DAEJY,IAAMG,UAAUJ,GAC3BJ,IAAMC,OAHSiN,OAQbC,GAAe1N,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,yBAAAC,YAAA,eAAGJ,CAAH,2HAMZO,IAAMY,QANMwM,OASZC,GAAe5N,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,yBAAAC,YAAA,eAAGJ,CAAH,uJACdK,IAAOmF,YAMQ5E,IAAMyF,aACTzF,IAAM0F,WACA1F,IAAMC,OAAO4H,WAE7B0D,GAAUnM,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,oBAAAC,YAAA,eAAGJ,CAAH,yIACGY,IAAM0F,WAGhBsH,GAEwBhN,IAAMC,OAAOgN,WACXjN,IAAMC,OAAOiN,YAA2BlN,IAAMC,OAAOgN,YAI/EE,GAAa/N,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,uBAAAC,YAAA,eAAGJ,CAAH,MACVgO,GAAgBhO,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,0BAAAC,YAAA,eAAGJ,CAAH,MACbiO,GAAgBjO,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,0BAAAC,YAAA,eAAGJ,CAAH,4BACfK,IAAOmF,aAGL0I,GAASlO,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,mBAAAC,YAAA,eAAGJ,CAAH,2CACDY,IAAMC,OAAOC,OAMlB+K,GAAQ7L,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,kBAAAC,YAAA,eAAGJ,CAAH,kCAEAY,IAAMC,OAAO8I,YAElBwE,GAAWnO,YAAO4C,KAAV1C,WAAA,CAAAC,YAAA,qBAAAC,YAAA,gBAAGJ,CAAH,+CAORoL,GAAcpL,IAAO0J,GAAVxJ,WAAA,CAAAC,YAAA,wBAAAC,YAAA,gBAAGJ,CAAH,6CAEFY,IAAMG,UAAUwI,QACpB3I,IAAMC,OAAOyI,eAElB8E,GAAcpO,YAAO4C,KAAV1C,WAAA,CAAAC,YAAA,wBAAAC,YAAA,gBAAGJ,CAAH,MACXuL,GAAqBvL,IAAOwC,IAAVtC,WAAA,CAAAC,YAAA,+BAAAC,YAAA,gBAAGJ,CAAH,4CAIlBK,IAAOoC,YAGPiJ,GAAW1L,YAAO6F,KAAV3F,WAAA,CAAAC,YAAA,qBAAAC,YAAA,gBAAGJ,CAAH,6LAOKY,IAAMK,MAAMC,OACdN,IAAMG,UAAUsN,OACpBzN,IAAMC,OAAO8I,YAQpB2E,GAAiBtO,YAAOuO,KAAVrO,WAAA,CAAAC,YAAA,2BAAAC,YAAA,gBAAGJ,CAAH,6BAChBK,IAAOwC,WAIL2L,eAKJ,SAAAA,EAAYhL,GAAO,IAAAuD,EAAA,OACjBA,EAAA2F,EAAAC,KAAAxJ,KAAMK,IAANL,MAKFJ,MAAQ,CACN0L,UAAU,GAPO1H,EAenB2H,eAAiB,kBAAM3H,EAAK1D,SAAS,CAAEoL,UAAW1H,EAAKhE,MAAM0L,YAb3D1H,EAAK6F,WAAa,GAClB7F,EAAK4H,SAAW,GAHC5H,sCAUnB9D,6BACE0D,cAAeC,OAAOzD,KAAKyL,SAAU9H,sBACrC3D,KAAKyJ,WAAWE,QAAQ,SAACC,EAAKlI,GAAN,OAAY8B,cAAeC,OAAOmG,EAAKjG,mBAAa,IAAJjC,SAK1EvB,kBAAS,IAAAJ,EAAAC,KAECsL,EAAatL,KAAKJ,MAAlB0L,SAEFG,EADWzL,KAAKK,MAAdD,KACcsL,OAAO,SAAA7E,GAAA,MAAwC,SAAxCA,EAAGtG,KAAgBC,YAAYmL,OACtDC,EAAWH,EAASI,MAAM,EAJb,GAKbC,EAAiBR,EAAWG,EAAWG,EAE7C,OACEjL,EAAAC,EAAAC,cAACuJ,GAAD,KACEzJ,EAAAC,EAAAC,cAACwJ,GAAD,CAAevG,SAAU,SAAAC,GAAE,OAAKhE,EAAK0L,SAAW1H,IAAhD,kBACApD,EAAAC,EAAAC,cAAC0J,GAAD,KACE5J,EAAAC,EAAAC,cAACU,EAAA,gBAAD,CAAiBwK,UAAU,YACxBD,GACCA,EAAetK,IAAI,SAAA6F,EAAW3F,GAAX,IAAGnB,EAAH8G,EAAG9G,KAAH,OACjBI,EAAAC,EAAAC,cAACU,EAAA,cAAD,CACEI,IAAKD,EACLE,WAAW,SACXC,QAASH,GAjBJ,EAiByC,KAAlBA,EAjBvB,GAiB+C,IACpDsK,MAAM,GACNrL,EAAAC,EAAAC,cAACoL,GAAD,CACEtK,IAAKD,EACLoC,SAAU,SAAAC,GAAE,OAAKhE,EAAK0J,WAAW/H,GAAKqC,GACtCjD,MAAO,CACLC,iBAAoBW,GAvBnB,EAuBwD,KAAlBA,EAvBtC,GAuB8D,GAAhD,OAEjBf,EAAAC,EAAAC,cAAC4J,GAAD,KACE9J,EAAAC,EAAAC,cAAC+J,GAAD,KACEjK,EAAAC,EAAAC,cAACiK,GAAD,KACEnK,EAAAC,EAAAC,cAACkK,GAAD,KACEpK,EAAAC,EAAAC,cAACqJ,GAAA,EAAD,OAEFvJ,EAAAC,EAAAC,cAACqL,GAAD,KACG3L,EAAKC,YAAYyJ,QAChBtJ,EAAAC,EAAAC,cAACmK,GAAD,CACE3J,KAAMd,EAAKC,YAAYyJ,OACvBxC,OAAO,SACPC,IAAI,+BACJqC,aAAW,eACXpJ,EAAAC,EAAAC,cAACqJ,GAAA,EAAD,OAGH3J,EAAKC,YAAYsJ,UAChBnJ,EAAAC,EAAAC,cAACmK,GAAD,CACE3J,KAAMd,EAAKC,YAAYsJ,SACvBrC,OAAO,SACPC,IAAI,+BACJqC,aAAW,iBACXpJ,EAAAC,EAAAC,cAACqJ,GAAA,EAAD,SAKRvJ,EAAAC,EAAAC,cAACsL,GAAD,KACG5L,EAAKC,YAAYsJ,SAChBnJ,EAAAC,EAAAC,cAACoK,GAAD,CACE5J,KAAMd,EAAKC,YAAYsJ,SACvBrC,OAAO,SACPC,IAAI,+BACJqC,aAAW,iBACVxJ,EAAKC,YAAYQ,OAGpBT,EAAKC,YAAYQ,OAGrBL,EAAAC,EAAAC,cAACuL,GAAD,CAAoBjL,wBAAyB,CAAEC,OAAQb,EAAKE,SAE9DE,EAAAC,EAAAC,cAACgK,GAAD,KACElK,EAAAC,EAAAC,cAACwL,GAAD,KACG9L,EAAKC,YAAYwJ,KAAKxI,IAAI,SAACwI,EAAMtI,GAAP,OACzBf,EAAAC,EAAAC,cAAA,MAAIc,IAAKD,GAAIsI,cAWjCrJ,EAAAC,EAAAC,cAACsK,GAAD,CAAgBrE,QAAS9G,KAAKuL,gBAC3BD,EAAW,QAAU,OADxB,kBAxGexJ,aAAjBuJ,GACGtJ,UAAY,CACjB3B,KAAM4B,IAAUC,MAAMC,YA8GXmJ,oUC1Nf,IAAMiB,GAAmBzP,YAAOC,KAAVC,WAAA,CAAAC,YAAA,4BAAAC,YAAA,YAAGJ,CAAH,kEAKhBK,IAAOoC,YAGPiN,GAAS1P,YAAO2P,KAAVzP,WAAA,CAAAC,YAAA,kBAAAC,YAAA,YAAGJ,CAAH,uLAEDY,IAAMC,OAAOC,MACTF,IAAMG,UAAUC,OACdJ,IAAMK,MAAMC,OAIzBX,IAAMY,QAREyO,KAQmBhP,IAAMG,UAAUM,OAG9BT,IAAMG,UAAUM,MAC3Bd,IAAMY,QAZA0O,KAYqBjP,IAAMG,UAAUQ,WAM3CuO,GAAQ9P,IAAOqJ,GAAVnJ,WAAA,CAAAC,YAAA,iBAAAC,YAAA,YAAGJ,CAAH,4CAGPO,IAAMY,QAHC4O,MAIPxP,IAAMC,OAJCwP,OAMLrN,GAAY3C,YAAO4C,KAAV1C,WAAA,CAAAC,YAAA,qBAAAC,YAAA,YAAGJ,CAAH,yBACXK,IAAOwC,WAILoN,qGAKJhN,6BACE0D,cAAeC,OAAOzD,KAAK+M,QAASpJ,yBAGtCxD,kBAAS,IAAAyD,EAAA5D,KAAAM,EACUN,KAAKK,MAAdD,KAC2B,GAAGG,KAA9BC,EAFDF,EAECE,YAAaC,EAFdH,EAEcG,KAErB,OACEE,EAAAC,EAAAC,cAACyL,GAAD,CAAkBzI,GAAG,UAAUC,SAAU,SAAAC,GAAE,OAAKH,EAAKmJ,QAAUhJ,IAC7DpD,EAAAC,EAAAC,cAAC0L,GAAD,qBACA5L,EAAAC,EAAAC,cAAC8L,GAAD,KAAQnM,EAAYQ,OACpBL,EAAAC,EAAAC,cAACmD,EAAA,EAAD,CAAG7C,wBAAyB,CAAEC,OAAQX,KACtCE,EAAAC,EAAAC,cAACmM,GAAD,CAAW3L,KAAI,UAAYC,QAASmG,OAAO,SAASC,IAAI,gCAAxD,kBAlBc5F,aAAhBgL,GACG/K,UAAY,CACjB3B,KAAM4B,IAAUC,MAAMC,YAwBX4K,UCzEfG,EAAAC,EAAAC,EAAA,0BAAAC,KAeA,IAAMC,GAAgBxQ,YAAOyQ,KAAVvQ,WAAA,CAAAC,YAAA,uBAAAC,YAAA,gBAAGJ,CAAH,+BACfK,IAAOqQ,aAILC,GAAY,SAAA3G,GAAA,IAAGzG,EAAHyG,EAAGzG,KAAMqN,EAAT5G,EAAS4G,SAAT,OAChB9M,EAAAC,EAAAC,cAAC6M,EAAA,EAAD,CAAQD,SAAUA,GAChB9M,EAAAC,EAAAC,cAACwM,GAAD,CAAexJ,GAAG,WAChBlD,EAAAC,EAAAC,cAAC8M,EAAD,CAAMvN,KAAMA,EAAKuN,KAAKC,QACtBjN,EAAAC,EAAAC,cAAC6C,EAAD,CAAOtD,KAAMA,EAAKsD,MAAMkK,QACxBjN,EAAAC,EAAAC,cAAC8F,GAAD,CAAMvG,KAAMA,EAAKuG,KAAKiH,QACtBjN,EAAAC,EAAAC,cAAC6I,GAAD,CAAUtJ,KAAMA,EAAKsJ,SAASkE,QAC9BjN,EAAAC,EAAAC,cAACgN,GAAD,CAAUzN,KAAMA,EAAKqL,SAASmC,QAC9BjN,EAAAC,EAAAC,cAACkM,GAAD,CAAS3M,KAAMA,EAAK2M,QAAQa,WAKlCJ,GAAUzL,UAAY,CACpB3B,KAAM4B,IAAU8L,OAAO5L,WACvBuL,SAAUzL,IAAU8L,QAGtBX,EAAA,eAEaC,GAAK","file":"component---src-pages-index-js-40e1e1a61483b7efd55e.js","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\n\nimport { email } from '../config';\n\nimport styled from 'styled-components';\nimport { theme, mixins, media, Section, A } from '../styles';\n\nconst HeroContainer = styled(Section)`\n ${mixins.flexCenter};\n flex-direction: column;\n align-items: flex-start;\n min-height: 100vh;\n ${media.tablet`padding-top: 150px;`};\n div {\n width: 100%;\n }\n`;\nconst Hi = styled.h3`\n color: ${theme.colors.green};\n margin: 0 0 20px 3px;\n font-size: ${theme.fontSizes.medium};\n font-family: ${theme.fonts.SFMono};\n font-weight: normal;\n ${media.desktop`font-size: ${theme.fontSizes.small};`};\n ${media.tablet`font-size: ${theme.fontSizes.smallish};`};\n`;\nconst Name = styled.h1`\n font-size: 80px;\n line-height: 1.1;\n margin: 0;\n ${media.desktop`font-size: 70px;`};\n ${media.tablet`font-size: 60px;`};\n ${media.phablet`font-size: 50px;`};\n ${media.phone`font-size: 40px;`};\n`;\nconst Subtitle = styled.h2`\n font-size: 80px;\n line-height: 1.1;\n color: ${theme.colors.slate};\n ${media.desktop`font-size: 70px;`};\n ${media.tablet`font-size: 60px;`};\n ${media.phablet`font-size: 50px;`};\n ${media.phone`font-size: 40px;`};\n`;\nconst Blurb = styled.div`\n margin-top: 25px;\n width: 50%;\n max-width: 500px;\n a {\n ${mixins.inlineLink};\n }\n`;\nconst EmailButton = styled.div``;\nconst EmailLink = styled(A)`\n ${mixins.bigButton};\n font-size: ${theme.fontSizes.smallish};\n margin-top: 50px;\n`;\n\nclass Hero extends Component {\n static propTypes = {\n data: PropTypes.array.isRequired,\n };\n\n state = {\n isMounted: false,\n };\n\n componentDidMount() {\n setTimeout(() => this.setState({ isMounted: true }), 1000);\n }\n\n render() {\n const { data } = this.props;\n const { isMounted } = this.state;\n const { frontmatter, html } = data[0].node;\n\n const one = () => <Hi style={{ transitionDelay: '100ms' }}>{frontmatter.title}</Hi>;\n const two = () => <Name style={{ transitionDelay: '200ms' }}>{frontmatter.name}.</Name>;\n const three = () => (\n <Subtitle style={{ transitionDelay: '300ms' }}>{frontmatter.subtitle}</Subtitle>\n );\n const four = () => (\n <Blurb style={{ transitionDelay: '400ms' }} dangerouslySetInnerHTML={{ __html: html }} />\n );\n const five = () => (\n <EmailButton style={{ transitionDelay: '500ms' }}>\n <EmailLink href={`mailto:${email}`}>Get In Touch</EmailLink>\n </EmailButton>\n );\n\n const items = [one, two, three, four, five];\n\n return (\n <HeroContainer>\n <TransitionGroup>\n {isMounted &&\n items.map((item, i) => (\n <CSSTransition key={i} classNames=\"fadeup\" timeout={3000}>\n {item}\n </CSSTransition>\n ))}\n </TransitionGroup>\n </HeroContainer>\n );\n }\n}\n\nexport default Hero;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Img from 'gatsby-image';\n\nimport { srConfig } from '../config';\n\nimport styled from 'styled-components';\nimport { theme, mixins, media, Section, H3, P, Ul } from '../styles';\n\nimport ScrollReveal from 'scrollreveal';\n\nconst AboutContainer = styled(Section)`\n position: relative;\n`;\nconst FlexContainer = styled.div`\n ${mixins.flexBetween};\n align-items: flex-start;\n ${media.tablet`display: block;`};\n`;\nconst ContentContainer = styled.div`\n width: 60%;\n max-width: 480px;\n ${media.tablet`width: 100%;`};\n a {\n ${mixins.inlineLink};\n }\n`;\nconst SkillsContainer = styled(Ul)`\n margin-top: 20px;\n display: grid;\n overflow: hidden;\n grid-template-columns: repeat(2, minmax(140px, 200px));\n`;\nconst Skill = styled.li`\n position: relative;\n margin-bottom: 10px;\n padding-left: 20px;\n font-family: ${theme.fonts.SFMono};\n font-size: ${theme.fontSizes.smallish};\n color: ${theme.colors.slate};\n &:before {\n content: '▹';\n position: absolute;\n left: 0;\n color: ${theme.colors.green};\n font-size: ${theme.fontSizes.small};\n line-height: 12px;\n }\n`;\nconst PicContainer = styled.div`\n position: relative;\n width: 40%;\n max-width: 300px;\n margin-left: 60px;\n ${media.tablet`margin: 60px auto 0;`};\n ${media.phablet`width: 70%;`};\n`;\nconst Avatar = styled(Img)`\n width: 100%;\n max-width: 100%;\n vertical-align: middle;\n position: relative;\n mix-blend-mode: multiply;\n filter: grayscale(100%) contrast(1);\n border-radius: ${theme.borderRadius};\n transition: ${theme.transition};\n`;\nconst AvatarContainer = styled.div`\n width: 100%;\n position: relative;\n border-radius: ${theme.borderRadius};\n background-color: ${theme.colors.lightAmber};\n margin-left: -20px;\n &:hover,\n &:focus {\n background: transparent;\n &:after {\n top: 15px;\n left: 15px;\n }\n ${Avatar} {\n filter: none;\n mix-blend-mode: normal;\n }\n }\n &:before {\n content: '';\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n transition: ${theme.transition};\n background-color: ${theme.colors.navy};\n mix-blend-mode: screen;\n border-radius: ${theme.borderRadius};\n }\n &:after {\n content: '';\n display: block;\n width: 100%;\n height: 100%;\n border: 2px solid ${theme.colors.lightAmber};\n position: absolute;\n top: 20px;\n left: 20px;\n z-index: -1;\n transition: ${theme.transition};\n border-radius: ${theme.borderRadius};\n }\n`;\n\nclass About extends Component {\n static propTypes = {\n data: PropTypes.array.isRequired,\n };\n\n componentDidMount() {\n ScrollReveal().reveal(this.about, srConfig());\n }\n\n render() {\n const { data } = this.props;\n const { frontmatter, html } = data[0].node;\n\n return (\n <AboutContainer id=\"about\" innerRef={el => (this.about = el)}>\n <H3>{frontmatter.title}</H3>\n <FlexContainer>\n <ContentContainer>\n <P dangerouslySetInnerHTML={{ __html: html }} />\n <SkillsContainer>\n {frontmatter.skills &&\n frontmatter.skills.map((skill, i) => <Skill key={i}>{skill}</Skill>)}\n </SkillsContainer>\n </ContentContainer>\n <PicContainer>\n <AvatarContainer>\n <Avatar fluid={frontmatter.avatar.childImageSharp.fluid} alt=\"Avatar\" />\n </AvatarContainer>\n </PicContainer>\n </FlexContainer>\n </AboutContainer>\n );\n }\n}\n\nexport default About;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { srConfig } from '../config';\n\nimport styled from 'styled-components';\nimport { theme, mixins, media, Section, H3, P } from '../styles';\n\nimport ScrollReveal from 'scrollreveal';\n\nconst JobsContainer = styled(Section)`\n position: relative;\n max-width: 700px;\n`;\nconst TabsContainer = styled.div`\n display: flex;\n align-items: flex-start;\n position: relative;\n ${media.thone`display: block;`};\n`;\nconst Tabs = styled.div`\n display: block;\n position: relative;\n width: max-content;\n z-index: 3;\n ${media.thone`\n display: flex;\n margin-bottom: 30px;\n width: 100%;\n overflow-x: scroll;\n `};\n`;\nconst Tab = styled.button`\n ${mixins.link};\n display: flex;\n align-items: center;\n width: 100%;\n background-color: transparent;\n height: ${theme.tabHeight}px;\n padding: 0 20px 2px;\n transition: ${theme.transition};\n border-left: 2px solid ${theme.colors.darkGrey};\n text-align: left;\n white-space: nowrap;\n font-family: ${theme.fonts.SFMono};\n font-size: ${theme.fontSizes.smallish};\n color: ${props => (props.isActive ? theme.colors.green : theme.colors.lightGrey)};\n ${media.tablet`padding: 0 15px 2px;`};\n ${media.thone`\n ${mixins.flexCenter};\n padding: 0 15px;\n text-align: center;\n border-left: 0;\n border-bottom: 2px solid ${theme.colors.darkGrey};\n min-width: 120px;\n `};\n &:hover,\n &:focus {\n background-color: ${theme.colors.lightNavy};\n }\n`;\nconst Highlighter = styled.span`\n display: block;\n background: ${theme.colors.green};\n width: 2px;\n height: ${theme.tabHeight}px;\n border-radius: ${theme.borderRadius};\n position: absolute;\n top: 0;\n left: 0;\n transition: ${theme.transition};\n transition-delay: 0.1s;\n z-index: 10;\n transform: translateY(\n ${props => (props.activeTabId > 0 ? props.activeTabId * theme.tabHeight : 0)}px\n );\n ${media.thone`\n width: 100%;\n max-width: ${theme.tabWidth}px;\n height: 2px;\n top: auto;\n bottom: 0;\n transform: translateX(\n ${props => (props.activeTabId > 0 ? props.activeTabId * theme.tabWidth : 0)}px\n );\n `};\n`;\nconst ContentContainer = styled.div`\n position: relative;\n padding-top: 14px;\n padding-left: 30px;\n flex-grow: 1;\n ${media.tablet`padding-left: 20px;`};\n ${media.thone`padding-left: 0;`};\n`;\nconst TabContent = styled.div`\n top: 0;\n left: 0;\n width: 100%;\n height: auto;\n opacity: ${props => (props.isActive ? 1 : 0)};\n z-index: ${props => (props.isActive ? 2 : -1)};\n position: ${props => (props.isActive ? 'relative' : 'absolute')};\n visibility: ${props => (props.isActive ? 'visible' : 'hidden')};\n transition: ${theme.transition};\n transition-duration: ${props => (props.isActive ? '0.5s' : '0s')};\n ul {\n padding: 0;\n margin: 0;\n list-style: none;\n font-size: ${theme.fontSizes.large};\n li {\n position: relative;\n padding-left: 30px;\n margin-bottom: 5px;\n &:before {\n content: '▹';\n position: absolute;\n left: 0;\n color: ${theme.colors.green};\n line-height: ${theme.fontSizes.xlarge};\n }\n }\n }\n a {\n ${mixins.inlineLink};\n }\n`;\nconst JobTitle = styled.h4`\n color: ${theme.colors.lightestSlate};\n font-size: ${theme.fontSizes.xxlarge};\n font-weight: 500;\n margin-bottom: 5px;\n`;\nconst Company = styled.span`\n color: ${theme.colors.green};\n`;\nconst JobDetails = styled.h5`\n font-family: ${theme.fonts.SFMono};\n font-size: ${theme.fontSizes.smallish};\n font-weight: normal;\n letter-spacing: 0.5px;\n color: ${theme.colors.lightSlate};\n margin-bottom: 30px;\n svg {\n width: 15px;\n }\n`;\n\nclass Jobs extends Component {\n static propTypes = {\n data: PropTypes.array.isRequired,\n };\n\n state = {\n activeTabId: 0,\n };\n\n componentDidMount() {\n ScrollReveal().reveal(this.jobs, srConfig());\n }\n\n isActive = id => this.state.activeTabId === id;\n\n setActiveTab = activeTabId => this.setState({ activeTabId });\n\n render() {\n const { activeTabId } = this.state;\n const { data } = this.props;\n\n return (\n <JobsContainer id=\"jobs\" innerRef={el => (this.jobs = el)}>\n <H3>Where I've Worked</H3>\n <TabsContainer>\n <Tabs role=\"tablist\">\n {data &&\n data.map(({ node }, i) => (\n <Tab\n key={i}\n isActive={this.isActive(i)}\n onClick={e => this.setActiveTab(i, e)}\n role=\"tab\"\n aria-selected={this.isActive(i) ? 'true' : 'false'}\n aria-controls={`tab${i}`}\n id={`tab${i}`}\n tabindex={this.isActive(i) ? '0' : '-1'}>\n <span>{node.frontmatter.company}</span>\n </Tab>\n ))}\n <Highlighter activeTabId={activeTabId} />\n </Tabs>\n <ContentContainer>\n {data &&\n data.map(({ node }, i) => (\n <TabContent\n key={i}\n isActive={this.isActive(i)}\n id={`job${i}`}\n role=\"tabpanel\"\n tabindex=\"0\"\n aria-labelledby={`job${i}`}\n aria-hidden={!this.isActive(i)}>\n <JobTitle>\n <span>{node.frontmatter.title}</span>\n <Company>\n @ \n <a\n href={node.frontmatter.url}\n target=\"_blank\"\n rel=\"nofollow noopener noreferrer\">\n {node.frontmatter.company}\n </a>\n </Company>\n </JobTitle>\n <JobDetails>\n <span>{node.frontmatter.range}</span>\n </JobDetails>\n <P dangerouslySetInnerHTML={{ __html: node.html }} />\n </TabContent>\n ))}\n </ContentContainer>\n </TabsContainer>\n </JobsContainer>\n );\n }\n}\n\nexport default Jobs;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Img from 'gatsby-image';\n\nimport { srConfig } from '../config';\n\nimport { IconGithub, IconExternal } from './icons';\n\nimport styled from 'styled-components';\nimport { theme, mixins, media, Section, H3, Ul, A } from '../styles';\n\nimport ScrollReveal from 'scrollreveal';\n\nconst FeaturedContainer = styled(Section)`\n ${mixins.flexCenter};\n flex-direction: column;\n align-items: flex-start;\n`;\nconst FeaturedGrid = styled.div`\n position: relative;\n`;\nconst ContentContainer = styled.div`\n position: relative;\n z-index: 2;\n grid-column: 1 / 7;\n grid-row: 1 / -1;\n ${media.thone`\n grid-column: 1 / -1;\n padding: 40px 40px 30px;\n `};\n ${media.phablet`padding: 30px 25px 20px;`};\n`;\nconst FeaturedLabel = styled.h4`\n font-size: ${theme.fontSizes.smallish};\n font-weight: normal;\n color: ${theme.colors.green};\n font-family: ${theme.fonts.SFMono};\n margin-top: 10px;\n padding-top: 0;\n`;\nconst ProjectName = styled.h5`\n font-size: 28px;\n font-weight: 600;\n margin: 0 0 20px;\n color: ${theme.colors.lightestSlate};\n ${media.tablet`font-size: 24px;`};\n a {\n ${media.tablet`display: block;`};\n }\n`;\nconst ProjectDescription = styled.div`\n background-color: ${theme.colors.lightNavy};\n color: ${theme.colors.lightSlate};\n padding: 20px;\n border-radius: ${theme.borderRadius};\n font-size: 17px;\n line-height: 1.3;\n ${media.thone`\n background-color: transparent;\n padding: 20px 0;\n `};\n p {\n margin: 0;\n }\n a {\n ${mixins.inlineLink};\n color: ${theme.colors.white};\n }\n`;\nconst TechList = styled(Ul)`\n display: flex;\n flex-wrap: wrap;\n margin: 25px 0 10px;\n li {\n font-family: ${theme.fonts.SFMono};\n font-size: ${theme.fontSizes.smallish};\n color: ${theme.colors.lightSlate};\n margin-right: ${theme.margin};\n margin-bottom: 7px;\n white-space: nowrap;\n &:last-of-type {\n margin-right: 0;\n }\n ${media.thone`\n color: ${theme.colors.lightestSlate};\n margin-right: 10px;\n `};\n }\n`;\nconst Links = styled.div`\n display: flex;\n align-items: center;\n position: relative;\n margin-top: 10px;\n margin-left: -10px;\n a {\n padding: 10px;\n svg {\n width: 22px;\n height: 22px;\n }\n }\n`;\nconst FeaturedImg = styled(Img)`\n width: 100%;\n max-width: 100%;\n vertical-align: middle;\n border-radius: ${theme.borderRadius};\n position: relative;\n mix-blend-mode: multiply;\n filter: grayscale(100%) contrast(1) brightness(90%);\n ${media.tablet`\n object-fit: cover;\n width: auto;\n height: 100%;\n filter: grayscale(100%) contrast(1) brightness(80%);\n `};\n }\n`;\nconst ImgContainer = styled.div`\n position: relative;\n z-index: 1;\n border-radius: ${theme.borderRadius};\n background-color: ${theme.colors.lightAmber};\n border-radius: 2px;\n grid-column: 6 / -1;\n grid-row: 1 / -1;\n transition: ${theme.transition};\n ${media.tablet`height: 100%;`};\n ${media.thone`\n grid-column: 1 / -1;\n opacity: 0.25;\n `};\n &:hover,\n &:focus {\n background: transparent;\n &:before,\n ${FeaturedImg} {\n background: transparent;\n filter: none;\n }\n }\n &:before {\n content: '';\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 3;\n transition: ${theme.transition};\n background-color: ${theme.colors.navy};\n mix-blend-mode: screen;\n }\n`;\nconst Project = styled.div`\n display: grid;\n grid-gap: 10px;\n grid-template-columns: repeat(12, 1fr);\n align-items: center;\n margin-bottom: 100px;\n ${media.thone`margin-bottom: 70px;`};\n &:last-of-type {\n margin-bottom: 0;\n }\n &:nth-of-type(odd) {\n ${ContentContainer} {\n grid-column: 7 / -1;\n text-align: right;\n ${media.thone`\n grid-column: 1 / -1;\n padding: 40px 40px 30px;\n `};\n ${media.phablet`padding: 30px 25px 20px;`};\n }\n ${TechList} {\n justify-content: flex-end;\n li {\n margin-left: ${theme.margin};\n margin-right: 0;\n }\n }\n ${Links} {\n justify-content: flex-end;\n margin-left: 0;\n margin-right: -10px;\n }\n ${ImgContainer} {\n grid-column: 1 / 8;\n ${media.tablet`height: 100%;`};\n ${media.thone`\n grid-column: 1 / -1;\n opacity: 0.25;\n `};\n }\n }\n`;\n\nclass Featured extends Component {\n static propTypes = {\n data: PropTypes.array.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.revealRefs = [];\n }\n\n componentDidMount() {\n ScrollReveal().reveal(this.featured, srConfig());\n this.revealRefs.forEach(ref => ScrollReveal().reveal(ref, srConfig()));\n }\n\n render() {\n const { data } = this.props;\n\n return (\n <FeaturedContainer id=\"projects\">\n <H3 innerRef={el => (this.featured = el)}>Some Things I've Built</H3>\n <FeaturedGrid>\n {data &&\n data.map(({ node }, i) => (\n <Project key={i} innerRef={el => (this.revealRefs[i] = el)}>\n <ContentContainer>\n <FeaturedLabel>Featured Project</FeaturedLabel>\n <ProjectName>\n {node.frontmatter.external ? (\n <A\n href={node.frontmatter.external}\n target=\"_blank\"\n rel=\"nofollow noopener noreferrer\"\n aria-label=\"External Link\">\n {node.frontmatter.title}\n </A>\n ) : (\n node.frontmatter.title\n )}\n </ProjectName>\n <ProjectDescription dangerouslySetInnerHTML={{ __html: node.html }} />\n {node.frontmatter.tech && (\n <TechList>\n {node.frontmatter.tech.map((tech, i) => (\n <li key={i}>{tech}</li>\n ))}\n </TechList>\n )}\n <Links>\n {node.frontmatter.github && (\n <A\n href={node.frontmatter.github}\n target=\"_blank\"\n rel=\"nofollow noopener noreferrer\"\n aria-label=\"Github Link\">\n <IconGithub />\n </A>\n )}\n {node.frontmatter.external && (\n <A\n href={node.frontmatter.external}\n target=\"_blank\"\n rel=\"nofollow noopener noreferrer\"\n aria-label=\"External Link\">\n <IconExternal />\n </A>\n )}\n </Links>\n </ContentContainer>\n\n <ImgContainer>\n <FeaturedImg fluid={node.frontmatter.cover.childImageSharp.fluid} />\n </ImgContainer>\n </Project>\n ))}\n </FeaturedGrid>\n </FeaturedContainer>\n );\n }\n}\n\nexport default Featured;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\n\nimport { srConfig } from '../config';\n\nimport { IconGithub, IconExternal, IconFolder } from './icons';\n\nimport styled from 'styled-components';\nimport { theme, mixins, media, Section, Ul, A, Button } from '../styles';\n\nimport ScrollReveal from 'scrollreveal';\n\nconst ProjectsContainer = styled(Section)`\n ${mixins.flexCenter};\n flex-direction: column;\n align-items: flex-start;\n`;\nconst ProjectsTitle = styled.h4`\n margin: 0 auto 50px;\n font-size: ${theme.fontSizes.h3};\n ${media.tablet`font-size: 24px;`};\n a {\n display: block;\n }\n`;\nconst ProjectsGrid = styled.div`\n .projects {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n grid-gap: 15px;\n position: relative;\n ${media.desktop`grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));`};\n }\n`;\nconst ProjectInner = styled.div`\n ${mixins.flexBetween};\n flex-direction: column;\n align-items: flex-start;\n position: relative;\n padding: 25px;\n height: 100%;\n border-radius: ${theme.borderRadius};\n transition: ${theme.transition};\n background-color: ${theme.colors.lightNavy};\n`;\nconst Project = styled.div`\n transition: ${theme.transition};\n &:hover,\n &:focus {\n ${ProjectInner} {\n transform: translateY(-5px);\n box-shadow: 0 2px 4px ${theme.colors.shadowNavy};\n box-shadow: 0 19px 38px ${theme.colors.darkestNavy} 0 15px 12px ${theme.colors.shadowNavy};\n }\n }\n`;\nconst ProjectTop = styled.div``;\nconst ProjectBottom = styled.div``;\nconst ProjectHeader = styled.div`\n ${mixins.flexBetween};\n margin-bottom: 30px;\n`;\nconst Folder = styled.div`\n color: ${theme.colors.green};\n svg {\n width: 40px;\n height: 40px;\n }\n`;\nconst Links = styled.div`\n margin-right: -10px;\n color: ${theme.colors.lightSlate};\n`;\nconst IconLink = styled(A)`\n padding: 10px;\n svg {\n width: 22px;\n height: 22px;\n }\n`;\nconst ProjectName = styled.h5`\n margin: 0 0 10px;\n font-size: ${theme.fontSizes.xxlarge};\n color: ${theme.colors.lightestSlate};\n`;\nconst ProjectLink = styled(A)``;\nconst ProjectDescription = styled.div`\n font-size: 17px;\n line-height: 1.25;\n a {\n ${mixins.inlineLink};\n }\n`;\nconst TechList = styled(Ul)`\n flex-grow: 1;\n display: flex;\n align-items: flex-end;\n flex-wrap: wrap;\n margin-top: 20px;\n li {\n font-family: ${theme.fonts.SFMono};\n font-size: ${theme.fontSizes.xsmall};\n color: ${theme.colors.lightSlate};\n line-height: 2;\n margin-right: 15px;\n &:last-of-type {\n margin-right: 0;\n }\n }\n`;\nconst ShowMoreButton = styled(Button)`\n ${mixins.bigButton};\n margin: 100px auto 0;\n`;\n\nclass Projects extends Component {\n static propTypes = {\n data: PropTypes.array.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.revealRefs = [];\n this.restRefs = [];\n }\n\n state = {\n showMore: false,\n };\n\n componentDidMount() {\n ScrollReveal().reveal(this.projects, srConfig());\n this.revealRefs.forEach((ref, i) => ScrollReveal().reveal(ref, srConfig(i * 100)));\n }\n\n showMoreToggle = () => this.setState({ showMore: !this.state.showMore });\n\n render() {\n const GRID_LIMIT = 6;\n const { showMore } = this.state;\n const { data } = this.props;\n const projects = data.filter(({ node }) => node.frontmatter.show === 'true');\n const firstSix = projects.slice(0, GRID_LIMIT);\n const projectsToShow = showMore ? projects : firstSix;\n\n return (\n <ProjectsContainer>\n <ProjectsTitle innerRef={el => (this.projects = el)}>Other Projects</ProjectsTitle>\n <ProjectsGrid>\n <TransitionGroup className=\"projects\">\n {projectsToShow &&\n projectsToShow.map(({ node }, i) => (\n <CSSTransition\n key={i}\n classNames=\"fadeup\"\n timeout={i >= GRID_LIMIT ? (i - GRID_LIMIT) * 300 : 300}\n exit={false}>\n <Project\n key={i}\n innerRef={el => (this.revealRefs[i] = el)}\n style={{\n transitionDelay: `${i >= GRID_LIMIT ? (i - GRID_LIMIT) * 100 : 0}ms`,\n }}>\n <ProjectInner>\n <ProjectTop>\n <ProjectHeader>\n <Folder>\n <IconFolder />\n </Folder>\n <Links>\n {node.frontmatter.github && (\n <IconLink\n href={node.frontmatter.github}\n target=\"_blank\"\n rel=\"nofollow noopener noreferrer\"\n aria-label=\"Github Link\">\n <IconGithub />\n </IconLink>\n )}\n {node.frontmatter.external && (\n <IconLink\n href={node.frontmatter.external}\n target=\"_blank\"\n rel=\"nofollow noopener noreferrer\"\n aria-label=\"External Link\">\n <IconExternal />\n </IconLink>\n )}\n </Links>\n </ProjectHeader>\n <ProjectName>\n {node.frontmatter.external ? (\n <ProjectLink\n href={node.frontmatter.external}\n target=\"_blank\"\n rel=\"nofollow noopener noreferrer\"\n aria-label=\"Visit Website\">\n {node.frontmatter.title}\n </ProjectLink>\n ) : (\n node.frontmatter.title\n )}\n </ProjectName>\n <ProjectDescription dangerouslySetInnerHTML={{ __html: node.html }} />\n </ProjectTop>\n <ProjectBottom>\n <TechList>\n {node.frontmatter.tech.map((tech, i) => (\n <li key={i}>{tech}</li>\n ))}\n </TechList>\n </ProjectBottom>\n </ProjectInner>\n </Project>\n </CSSTransition>\n ))}\n </TransitionGroup>\n </ProjectsGrid>\n\n <ShowMoreButton onClick={this.showMoreToggle}>\n {showMore ? 'Fewer' : 'More'} Projects\n </ShowMoreButton>\n </ProjectsContainer>\n );\n }\n}\n\nexport default Projects;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { srConfig, email } from '../config';\n\nimport styled from 'styled-components';\nimport { theme, mixins, media, Section, H3, A, P } from '../styles';\n\nimport ScrollReveal from 'scrollreveal';\n\nconst ContactContainer = styled(Section)`\n text-align: center;\n max-width: 600px;\n margin: 0 auto 100px;\n a {\n ${mixins.inlineLink};\n }\n`;\nconst Header = styled(H3)`\n display: block;\n color: ${theme.colors.green};\n font-size: ${theme.fontSizes.medium};\n font-family: ${theme.fonts.SFMono};\n font-weight: normal;\n margin-bottom: 20px;\n justify-content: center;\n ${media.desktop`font-size: ${theme.fontSizes.small};`};\n &:before {\n bottom: 0;\n font-size: ${theme.fontSizes.small};\n ${media.desktop`font-size: ${theme.fontSizes.smallish};`};\n }\n &:after {\n display: none;\n }\n`;\nconst Title = styled.h4`\n margin: 0 0 20px;\n font-size: 60px;\n ${media.desktop`font-size: 50px;`};\n ${media.tablet`font-size: 40px;`};\n`;\nconst EmailLink = styled(A)`\n ${mixins.bigButton};\n margin-top: 50px;\n`;\n\nclass Contact extends Component {\n static propTypes = {\n data: PropTypes.array.isRequired,\n };\n\n componentDidMount() {\n ScrollReveal().reveal(this.contact, srConfig());\n }\n\n render() {\n const { data } = this.props;\n const { frontmatter, html } = data[0].node;\n\n return (\n <ContactContainer id=\"contact\" innerRef={el => (this.contact = el)}>\n <Header>What's Next?</Header>\n <Title>{frontmatter.title}</Title>\n <P dangerouslySetInnerHTML={{ __html: html }} />\n <EmailLink href={`mailto:${email}`} target=\"_blank\" rel=\"nofollow noopener noreferrer\">\n Say Hello\n </EmailLink>\n </ContactContainer>\n );\n }\n}\n\nexport default Contact;\n","import React from 'react';\nimport { graphql } from 'gatsby';\nimport PropTypes from 'prop-types';\n\nimport Layout from '../components/layout';\nimport Hero from '../components/hero';\nimport About from '../components/about';\nimport Jobs from '../components/jobs';\nimport Featured from '../components/featured';\nimport Projects from '../components/projects';\nimport Contact from '../components/contact';\n\nimport styled from 'styled-components';\nimport { mixins, Main } from '../styles';\n\nconst MainContainer = styled(Main)`\n ${mixins.sidePadding};\n counter-reset: section;\n`;\n\nconst IndexPage = ({ data, location }) => (\n <Layout location={location}>\n <MainContainer id=\"content\">\n <Hero data={data.hero.edges} />\n <About data={data.about.edges} />\n <Jobs data={data.jobs.edges} />\n <Featured data={data.featured.edges} />\n <Projects data={data.projects.edges} />\n <Contact data={data.contact.edges} />\n </MainContainer>\n </Layout>\n);\n\nIndexPage.propTypes = {\n data: PropTypes.object.isRequired,\n location: PropTypes.object,\n};\n\nexport default IndexPage;\n\nexport const query = graphql`\n query IndexQuery {\n hero: allMarkdownRemark(filter: { fileAbsolutePath: { regex: \"/hero/\" } }) {\n edges {\n node {\n frontmatter {\n title\n name\n subtitle\n contactText\n }\n html\n }\n }\n }\n about: allMarkdownRemark(filter: { fileAbsolutePath: { regex: \"/about/\" } }) {\n edges {\n node {\n frontmatter {\n title\n avatar {\n childImageSharp {\n fluid(maxWidth: 700, quality: 90, traceSVG: { color: \"#FF9E64\" }) {\n ...GatsbyImageSharpFluid_withWebp_tracedSVG\n }\n }\n }\n skills\n }\n html\n }\n }\n }\n jobs: allMarkdownRemark(\n filter: { fileAbsolutePath: { regex: \"/jobs/\" } }\n sort: { fields: [frontmatter___date], order: DESC }\n ) {\n edges {\n node {\n frontmatter {\n title\n company\n location\n range\n url\n }\n html\n }\n }\n }\n featured: allMarkdownRemark(\n filter: { fileAbsolutePath: { regex: \"/featured/\" } }\n sort: { fields: [frontmatter___date], order: DESC }\n ) {\n edges {\n node {\n frontmatter {\n title\n cover {\n childImageSharp {\n fluid(maxWidth: 700, quality: 90, traceSVG: { color: \"#FF9E64\" }) {\n ...GatsbyImageSharpFluid_withWebp_tracedSVG\n }\n }\n }\n tech\n github\n external\n }\n html\n }\n }\n }\n projects: allMarkdownRemark(\n filter: { fileAbsolutePath: { regex: \"/projects/\" } }\n sort: { fields: [frontmatter___date], order: DESC }\n ) {\n edges {\n node {\n frontmatter {\n title\n image\n tech\n github\n external\n show\n }\n html\n }\n }\n }\n contact: allMarkdownRemark(filter: { fileAbsolutePath: { regex: \"/contact/\" } }) {\n edges {\n node {\n frontmatter {\n title\n }\n html\n }\n }\n }\n }\n`;\n"],"sourceRoot":""}