-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path1-b68cb9e597226f1d3f10.js.map
1 lines (1 loc) · 52.6 KB
/
1-b68cb9e597226f1d3f10.js.map
1
{"version":3,"sources":["webpack:///./src/styles/colors.ts","webpack:///./.cache/gatsby-browser-entry.js","webpack:///./src/website-config.ts","webpack:///./src/styles/shared.ts","webpack:///./src/components/Wrapper.tsx","webpack:///./src/layouts/index.tsx","webpack:///./src/components/Footer.tsx","webpack:///./src/components/subscribe/SubscribeLogo.tsx","webpack:///./src/components/subscribe/SubscribeOverlay.tsx","webpack:///./src/components/header/SiteNav.tsx","webpack:///./.cache/public-page-renderer.js","webpack:///./src/components/subscribe/SubscribeForm.tsx","webpack:///./.cache/public-page-renderer-prod.js","webpack:///./src/sphtech.png","webpack:///./src/components/icons/facebook.tsx","webpack:///./src/components/icons/twitter.tsx"],"names":["__webpack_require__","d","__webpack_exports__","colors","blue","green","purple","yellow","red","darkgrey","midgrey","lightgrey","whitegrey","pink","brown","StaticQueryContext","React","createContext","StaticQueryDataRenderer","_ref","staticQueryData","data","query","render","finalData","Object","_emotion_core__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_1___default","a","Fragment","StaticQuery","props","children","Consumer","propTypes","PropTypes","object","string","isRequired","func","config","title","description","coverImage","logo","lang","siteUrl","facebook","twitter","showSubscribe","mailchimpAction","mailchimpName","mailchimpEmailFieldName","googleSiteVerification","footer","outer","name","styles","inner","SiteMain","SiteTitle","_emotion_styled_base__WEBPACK_IMPORTED_MODULE_0__","target","SiteDescription","PostFeed","PostFeedRaise","SocialLink","SiteHeader","css","darken","SiteHeaderContent","AuthorProfileImage","lighten","StyledWrapper","Wrapper","className","_emotion_core__WEBPACK_IMPORTED_MODULE_1__","GlobalStyles","IndexLayout","react_helmet__WEBPACK_IMPORTED_MODULE_3___default","rel","href","favicon","type","SiteFooter","setLightness","SiteFooterContent","SiteFooterNav","_emotion_styled_base__WEBPACK_IMPORTED_MODULE_1__","Footer","_emotion_core__WEBPACK_IMPORTED_MODULE_2__","_emotion_css__WEBPACK_IMPORTED_MODULE_0__","gatsby__WEBPACK_IMPORTED_MODULE_3__","to","Date","getFullYear","SubscribeOverlayLogo","styled_base_browser_esm","SubscribeLogo","core_browser_esm","gatsby_browser_entry","src","childImageSharp","fixed","alt","_1115645022","SubscribeOverlay","open","SubscribeOverlayClose","SubscribeOverlayContent","SubscribeOverlayTitle","SubscribeOverlayDescription","SubscribeModal","_this","_React$Component","call","this","escFunction","event","key","close","setState","isOpen","subscribeEsc","unsubscribeEsc","state","componentWillUnmount","document","addEventListener","removeEventListener","onClick","subscribe_SubscribeLogo","SubscribeForm","HomeNavRaise","SiteNavStyles","SiteNavLeft","NavStyles","SiteNavRight","SocialLinks","SubscribeButton","SiteNav","subscribe","openModal","current","_this$props$isHome","isHome","css_browser_esm","role","subscribe_SubscribeOverlay","ref","m","module","exports","require","default","SubscribeFormStyles","SubscribeEmail","SubscribeFormButton","mix","desaturate","FormGroup","action","method","id","noValidate","placeholder","style","position","left","aria-hidden","tabIndex","ProdPageRenderer","location","pageResources","createElement","InternalPageRenderer","assign","json","shape","pathname","Facebook","xmlns","viewBox","height","Twitter"],"mappings":"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","file":"1-b68cb9e597226f1d3f10.js","sourcesContent":["export const colors = {\n blue: '#3eb0ef',\n green: '#a4d037',\n purple: '#ad26b4',\n yellow: '#fecd35',\n red: '#f05230',\n darkgrey: '#15171A',\n midgrey: '#738a94',\n lightgrey: '#c5d2d9',\n whitegrey: '#e5eff5',\n pink: '#fa3a57',\n brown: '#a3821a',\n};\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Link, {\n withPrefix,\n withAssetPrefix,\n navigate,\n push,\n replace,\n navigateTo,\n parsePath,\n} from \"gatsby-link\"\nimport PageRenderer from \"./public-page-renderer\"\n\nconst StaticQueryContext = React.createContext({})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n <React.Fragment>\n {finalData && render(finalData)}\n {!finalData && <div>Loading (StaticQuery)</div>}\n </React.Fragment>\n )\n}\n\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n <StaticQueryContext.Consumer>\n {staticQueryData => (\n <StaticQueryDataRenderer\n data={data}\n query={query}\n render={render || children}\n staticQueryData={staticQueryData}\n />\n )}\n </StaticQueryContext.Consumer>\n )\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n const context = React.useContext(StaticQueryContext)\n if (context[query] && context[query].data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport {\n Link,\n withAssetPrefix,\n withPrefix,\n graphql,\n parsePath,\n navigate,\n push, // TODO replace for v3\n replace, // TODO remove replace for v3\n navigateTo, // TODO: remove navigateTo for v3\n StaticQueryContext,\n StaticQuery,\n PageRenderer,\n useStaticQuery,\n}\n","export interface WebsiteConfig {\n title: string;\n description: string;\n coverImage: string;\n logo: string;\n /**\n * Specifying a valid BCP 47 language helps screen readers announce text properly.\n * See: https://dequeuniversity.com/rules/axe/2.2/valid-lang\n */\n lang: string;\n /**\n * blog full path, no ending slash!\n */\n siteUrl: string;\n /**\n * full url, no username\n */\n facebook?: string;\n /**\n * full url, no username\n */\n twitter?: string;\n /**\n * hide or show all email subscribe boxes\n */\n showSubscribe: boolean;\n /**\n * create a list on mailchimp and then create an embeddable signup form. this is the form action\n */\n mailchimpAction?: string;\n /**\n * this is the hidden input field name\n */\n mailchimpName?: string;\n /**\n * name and id of the mailchimp email field\n */\n mailchimpEmailFieldName?: string;\n /**\n /**\n * Meta tag for Google Webmaster Tools\n */\n googleSiteVerification?: string;\n /**\n /**\n * Appears alongside the footer, after the credits\n */\n footer?: string;\n}\n\nconst config: WebsiteConfig = {\n title: 'SPHTech Blog',\n description: 'Our collection of adventures, learnings and thoughts!',\n coverImage: 'img/blog-cover.jpg',\n logo: '',\n lang: 'en',\n siteUrl: 'https://sphtech.github.io',\n facebook: '',\n twitter: '',\n showSubscribe: false,\n mailchimpAction: 'https://twitter.us19.list-manage.com/subscribe/post?u=a89b6987ac248c81b0b7f3a0f&id=7d777b7d75',\n mailchimpName: 'b_a89b6987ac248c81b0b7f3a0f_7d777b7d75',\n mailchimpEmailFieldName: 'MERGE0',\n googleSiteVerification: 'GoogleCode',\n footer: 'is based on Gatsby Casper',\n};\n\nexport default config;\n","import { css } from '@emotion/core';\nimport styled from '@emotion/styled';\nimport { colors } from './colors';\nimport { darken, lighten } from 'polished';\n\nexport const outer = css`\n position: relative;\n padding: 0 4vw;\n`;\n\n// Centered content container blocks\nexport const inner = css`\n margin: 0 auto;\n max-width: 1040px;\n width: 100%;\n`;\n\nexport const SiteMain = css`\n z-index: 100;\n flex-grow: 1;\n`;\n\nexport const SiteTitle = styled.h1`\n z-index: 10;\n margin: 0;\n padding: 0;\n font-size: 3.8rem;\n font-weight: 700;\n`;\n\nexport const SiteDescription = styled.h2`\n z-index: 10;\n margin: 0;\n padding: 5px 0;\n font-size: 2.2rem;\n font-weight: 300;\n letter-spacing: 0.5px;\n opacity: 0.8;\n`;\n\nexport const PostFeed = css`\n position: relative;\n display: flex;\n flex-wrap: wrap;\n margin: 0 -20px;\n padding: 40px 0 0 0;\n`;\n\nexport const PostFeedRaise = css`\n @media (min-width: 900px) {\n margin-top: -70px;\n padding-top: 0;\n }\n`;\n\nexport const SocialLink = css`\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0;\n padding: 10px;\n color: #fff;\n opacity: 0.8;\n\n :hover {\n opacity: 1;\n }\n\n svg {\n height: 1.8rem;\n fill: #fff;\n }\n`;\n\nexport const SiteHeader = css`\n position: relative;\n padding-top: 12px;\n padding-bottom: 12px;\n color: #fff;\n /* background: color(var(--darkgrey) l(-5%)) no-repeat center center; */\n background: ${darken('0.05', colors.darkgrey)} no-repeat center center;\n background-size: cover;\n\n :before {\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n z-index: 10;\n display: block;\n background: rgba(0,0,0,0.5);\n }\n`;\n\nexport const SiteHeaderContent = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 10vw 4vw;\n min-height: 200px;\n max-height: 450px;\n text-align: center;\n`;\n\nexport const SiteHeaderStyles = css`\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n bottom: auto;\n left: 0;\n z-index: 10;\n display: block;\n height: 80px;\n background: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0));\n\n :before {\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 10;\n display: block;\n background: rgba(0, 0, 0, 0.18);\n }\n\n :after {\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n bottom: auto;\n left: 0;\n z-index: 10;\n display: block;\n height: 80px;\n background: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0));\n }\n @media (max-width: 700px) {\n padding-right: 0;\n padding-left: 0;\n }\n`;\n\nexport const AuthorProfileImage = css`\n display: block;\n /* background: color(var(--lightgrey) l(+10%)); */\n background: ${lighten('0.1', colors.lightgrey)};\n border-radius: 100%;\n object-fit: cover;\n margin-right: 15px;\n width: 60px;\n height: 60px;\n`;\n","import * as React from 'react';\nimport styled from '@emotion/styled';\n\nconst StyledWrapper = styled.div`\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n`;\n\ninterface WrapperProps {\n className?: string;\n}\n\nconst Wrapper: React.FC<WrapperProps> = ({ children, className }) => (\n <StyledWrapper className={className}>{children}</StyledWrapper>\n);\n\nexport default Wrapper;\n","import { Global, css } from '@emotion/core';\nimport { darken, lighten } from 'polished';\nimport * as React from 'react';\nimport Helmet from 'react-helmet';\n\nimport { colors } from '../styles/colors';\n// @ts-ignore\nimport favicon from '../../src/sphtech.png';\n\ninterface IndexProps {\n className?: string;\n}\n\nconst GlobalStyles = css`\n html,\n body,\n div,\n span,\n applet,\n object,\n iframe,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n p,\n blockquote,\n pre,\n a,\n abbr,\n acronym,\n address,\n big,\n cite,\n code,\n del,\n dfn,\n em,\n img,\n ins,\n kbd,\n q,\n s,\n samp,\n small,\n strike,\n strong,\n sub,\n sup,\n tt,\n var,\n dl,\n dt,\n dd,\n ol,\n ul,\n li,\n fieldset,\n form,\n label,\n legend,\n table,\n caption,\n tbody,\n tfoot,\n thead,\n tr,\n th,\n td,\n article,\n aside,\n canvas,\n details,\n embed,\n figure,\n figcaption,\n footer,\n header,\n hgroup,\n menu,\n nav,\n output,\n ruby,\n section,\n summary,\n time,\n mark,\n audio,\n video {\n margin: 0;\n padding: 0;\n border: 0;\n font: inherit;\n font-size: 100%;\n vertical-align: baseline;\n }\n body {\n line-height: 1;\n }\n ol,\n ul {\n list-style: none;\n }\n blockquote,\n q {\n quotes: none;\n }\n blockquote:before,\n blockquote:after,\n q:before,\n q:after {\n content: '';\n content: none;\n }\n table {\n border-spacing: 0;\n border-collapse: collapse;\n }\n img {\n max-width: 100%;\n }\n html {\n box-sizing: border-box;\n font-family: sans-serif;\n\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n }\n *,\n *:before,\n *:after {\n box-sizing: inherit;\n }\n a {\n background-color: transparent;\n }\n a:active,\n a:hover {\n outline: 0;\n }\n b,\n strong {\n font-weight: bold;\n }\n i,\n em,\n dfn {\n font-style: italic;\n }\n h1 {\n margin: 0.67em 0;\n font-size: 2em;\n }\n small {\n font-size: 80%;\n }\n sub,\n sup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n }\n sup {\n top: -0.5em;\n }\n sub {\n bottom: -0.25em;\n }\n img {\n border: 0;\n }\n svg:not(:root) {\n overflow: hidden;\n }\n mark {\n background-color: #fdffb6;\n }\n code,\n kbd,\n pre,\n samp {\n font-family: monospace, monospace;\n font-size: 1em;\n }\n button,\n input,\n optgroup,\n select,\n textarea {\n margin: 0;\n color: inherit;\n font: inherit;\n }\n button {\n overflow: visible;\n border: none;\n }\n button,\n select {\n text-transform: none;\n }\n button,\n html input[type='button'],\n input[type='reset'],\n input[type='submit'] {\n cursor: pointer;\n\n -webkit-appearance: button;\n }\n button[disabled],\n html input[disabled] {\n cursor: default;\n }\n button::-moz-focus-inner,\n input::-moz-focus-inner {\n padding: 0;\n border: 0;\n }\n input {\n line-height: normal;\n }\n input:focus {\n outline: none;\n }\n input[type='checkbox'],\n input[type='radio'] {\n box-sizing: border-box;\n padding: 0;\n }\n input[type='number']::-webkit-inner-spin-button,\n input[type='number']::-webkit-outer-spin-button {\n height: auto;\n }\n input[type='search'] {\n box-sizing: content-box;\n\n -webkit-appearance: textfield;\n }\n input[type='search']::-webkit-search-cancel-button,\n input[type='search']::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n legend {\n padding: 0;\n border: 0;\n }\n textarea {\n overflow: auto;\n }\n table {\n border-spacing: 0;\n border-collapse: collapse;\n }\n td,\n th {\n padding: 0;\n }\n\n html {\n overflow-x: hidden;\n overflow-y: scroll;\n font-size: 62.5%;\n\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n }\n body {\n overflow-x: hidden;\n color: ${darken('0.25', colors.midgrey)};\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell,\n 'Open Sans', 'Helvetica Neue', sans-serif;\n font-size: 1.5rem;\n line-height: 1.6em;\n font-weight: 400;\n font-style: normal;\n letter-spacing: 0;\n text-rendering: optimizeLegibility;\n background: #fff;\n\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n -moz-font-feature-settings: 'liga' on;\n }\n\n ::selection {\n text-shadow: none;\n background: ${lighten('0.3', colors.blue)};\n }\n\n hr {\n position: relative;\n display: block;\n width: 100%;\n margin: 2.5em 0 3.5em;\n padding: 0;\n height: 1px;\n border: 0;\n border-top: 1px solid ${lighten('0.1', colors.lightgrey)};\n }\n\n audio,\n canvas,\n iframe,\n img,\n svg,\n video {\n vertical-align: middle;\n }\n\n fieldset {\n margin: 0;\n padding: 0;\n border: 0;\n }\n\n textarea {\n resize: vertical;\n }\n\n p,\n ul,\n ol,\n dl,\n blockquote {\n margin: 0 0 1.5em 0;\n }\n\n ol,\n ul {\n padding-left: 1.3em;\n padding-right: 1.5em;\n }\n\n ol ol,\n ul ul,\n ul ol,\n ol ul {\n margin: 0.5em 0 1em;\n }\n\n ul {\n list-style: disc;\n }\n\n ol {\n list-style: decimal;\n }\n\n ul,\n ol {\n max-width: 100%;\n }\n\n li {\n margin: 0.5em 0;\n padding-left: 0.3em;\n line-height: 1.6em;\n }\n\n dt {\n float: left;\n margin: 0 20px 0 0;\n width: 120px;\n color: ${colors.darkgrey};\n font-weight: 500;\n text-align: right;\n }\n\n dd {\n margin: 0 0 5px 0;\n text-align: left;\n }\n\n blockquote {\n margin: 1.5em 0;\n padding: 0 1.6em 0 1.6em;\n border-left: ${colors.whitegrey} 0.5em solid;\n }\n\n blockquote p {\n margin: 0.8em 0;\n font-size: 1.2em;\n font-weight: 300;\n }\n\n blockquote small {\n display: inline-block;\n margin: 0.8em 0 0.8em 1.5em;\n font-size: 0.9em;\n opacity: 0.8;\n }\n\n blockquote small:before {\n content: '\\\\2014 \\\\00A0';\n }\n\n blockquote cite {\n font-weight: bold;\n }\n blockquote cite a {\n font-weight: normal;\n }\n\n a {\n color: ${darken('0.05', colors.blue)};\n text-decoration: none;\n }\n\n a:hover {\n text-decoration: underline;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 0;\n line-height: 1.15;\n font-weight: 700;\n text-rendering: optimizeLegibility;\n }\n\n h1 {\n margin: 0 0 0.5em 0;\n font-size: 5rem;\n font-weight: 700;\n }\n @media (max-width: 500px) {\n h1 {\n font-size: 2.2rem;\n }\n }\n\n h2 {\n margin: 1.5em 0 0.5em 0;\n font-size: 2rem;\n }\n @media (max-width: 500px) {\n h2 {\n font-size: 1.8rem;\n }\n }\n\n h3 {\n margin: 1.5em 0 0.5em 0;\n font-size: 1.8rem;\n font-weight: 500;\n }\n @media (max-width: 500px) {\n h3 {\n font-size: 1.7rem;\n }\n }\n\n h4 {\n margin: 1.5em 0 0.5em 0;\n font-size: 1.6rem;\n font-weight: 500;\n }\n\n h5 {\n margin: 1.5em 0 0.5em 0;\n font-size: 1.4rem;\n font-weight: 500;\n }\n\n h6 {\n margin: 1.5em 0 0.5em 0;\n font-size: 1.4rem;\n font-weight: 500;\n }\n\n body {\n background: #f4f8fb;\n }\n`;\n\nconst IndexLayout: React.FC<IndexProps> = props => {\n return (\n <div className={props.className}>\n <Helmet>\n <link rel=\"icon\" href={favicon} type=\"image/x-icon\" />\n </Helmet>\n <Global styles={GlobalStyles} />\n {props.children}\n </div>\n );\n};\n\nexport default IndexLayout;\n","import { Link } from 'gatsby';\nimport { setLightness } from 'polished';\nimport * as React from 'react';\nimport styled from '@emotion/styled';\nimport { css } from '@emotion/core';\n\nimport { colors } from '../styles/colors';\nimport { outer, inner } from '../styles/shared';\nimport config from '../website-config';\n\nconst SiteFooter = css`\n position: relative;\n padding-top: 20px;\n padding-bottom: 60px;\n color: #fff;\n background: ${setLightness('0.0015', colors.darkgrey)};\n`;\n\nconst SiteFooterContent = css`\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: center;\n color: rgba(255, 255, 255, 0.7);\n font-size: 1.3rem;\n a {\n color: rgba(255, 255, 255, 0.7);\n }\n a:hover {\n color: rgba(255, 255, 255, 1);\n text-decoration: none;\n }\n @media (max-width: 650px) {\n flex-direction: column;\n }\n`;\n\nconst SiteFooterNav = styled.nav`\n display: flex;\n\n a {\n position: relative;\n margin-left: 20px;\n }\n\n a:before {\n content: '';\n position: absolute;\n top: 11px;\n left: -11px;\n display: block;\n width: 2px;\n height: 2px;\n background: #fff;\n border-radius: 100%;\n }\n\n a:first-of-type:before {\n display: none;\n }\n @media (max-width: 650px) {\n a:first-child {\n margin-left: 0;\n }\n }\n`;\n\nconst Footer: React.FC = () => {\n return (\n <footer css={[outer, SiteFooter]}>\n <div css={[inner, SiteFooterContent]}>\n <section className=\"copyright\">\n <Link to=\"/\">{config.title}</Link> © {new Date().getFullYear()}{' '}\n {config.footer && (\n <Link to=\"/\">\n | {config.title} {config.footer}\n </Link>\n )}\n </section>\n <SiteFooterNav>\n <Link to=\"/\">Latest Posts</Link>\n {config.facebook && (\n <a href={config.facebook} target=\"_blank\" rel=\"noopener noreferrer\">\n Facebook\n </a>\n )}\n {config.twitter && (\n <a href={config.twitter} target=\"_blank\" rel=\"noopener noreferrer\">\n Twitter\n </a>\n )}\n\n {/* <a href=\"https://ghost.org\" target=\"_blank\" rel=\"noopener noreferrer\">\n Ghost\n </a> */}\n\n {<a href=\"https://sph.com.sg/legal/sph_privacy.html\" target=\"_blank\" rel=\"noopener noreferrer\">\n Privacy Policy\n </a>}\n\n {<a href=\"https://sph.com.sg/legal/pdpa.html\" target=\"_blank\" rel=\"noopener noreferrer\">\n Personal Data Statement\n </a>}\n\n {<a href=\"https://sph.com.sg/legal/website_tnc.html\" target=\"_blank\" rel=\"noopener noreferrer\">\n Terms & Conditions\n </a>}\n\n {/* <a href=\"/rss.xml\">RSS</a> */}\n </SiteFooterNav>\n </div>\n </footer>\n );\n};\n\nexport default Footer;\n","import { graphql, StaticQuery } from 'gatsby';\nimport * as React from 'react';\nimport styled from '@emotion/styled'\n\nimport config from '../../website-config';\n\nconst SubscribeOverlayLogo = styled.img`\n position: fixed;\n top: 23px;\n left: 30px;\n height: 30px;\n`;\n\ninterface SiteNavLogoProps {\n logo?: {\n childImageSharp: {\n fixed: any;\n };\n };\n}\n\nconst SubscribeLogo = () => (\n <StaticQuery\n query={graphql`\n query SubscribeOverlayLogo {\n logo: file(relativePath: { eq: \"img/ghost-logo.png\" }) {\n childImageSharp {\n # Specify the image processing specifications right in the query.\n # Makes it trivial to update as your page's design changes.\n fixed {\n ...GatsbyImageSharpFixed\n }\n }\n }\n }\n `}\n // tslint:disable-next-line:react-this-binding-issue\n render={(data: SiteNavLogoProps) =>\n data.logo && (\n <SubscribeOverlayLogo src={data.logo.childImageSharp.fixed.src} alt={config.title} />\n )\n }\n />\n);\n\nexport default SubscribeLogo;\n","import * as React from 'react';\nimport styled from '@emotion/styled';\n\nimport { colors } from '../../styles/colors';\nimport config from '../../website-config';\nimport SubscribeForm from './SubscribeForm';\nimport SubscribeLogo from './SubscribeLogo';\n\ninterface SubscribeOverlayProps {\n open?: boolean;\n}\n\nconst SubscribeOverlay = styled.div`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 9000;\n display: flex;\n justify-content: center;\n align-items: center;\n background: rgba(0, 25, 40, 0.97);\n opacity: ${(props: SubscribeOverlayProps) => (props.open ? 1 : 0)};\n transition: opacity 200ms ease-in;\n pointer-events: ${(props: SubscribeOverlayProps) => (props.open ? 'auto' : 'none')};\n backdrop-filter: blur(3px);\n\n form {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: 0 auto;\n max-width: 500px;\n }\n\n .form-group {\n flex-grow: 1;\n }\n\n .subscribe-email {\n display: block;\n padding: 14px 20px;\n width: 100%;\n border: none;\n color: ${colors.midgrey};\n font-size: 2rem;\n line-height: 1em;\n font-weight: normal;\n letter-spacing: 0.5px;\n user-select: text;\n border-radius: 8px;\n transition: border-color 0.15s linear;\n\n -webkit-appearance: none;\n }\n\n button {\n display: inline-block;\n margin: 0 0 0 15px;\n padding: 0 25px;\n height: 52px;\n outline: none;\n color: #fff;\n font-size: 1.7rem;\n line-height: 37px;\n font-weight: 400;\n text-align: center;\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1);\n background: linear-gradient(\n color(var(--blue) whiteness(+7%)),\n color(var(--blue) lightness(-7%) saturation(-10%)) 60%,\n color(var(--blue) lightness(-7%) saturation(-10%)) 90%,\n color(var(--blue) lightness(-4%) saturation(-10%))\n );\n border-radius: 8px;\n box-shadow: 0 0 0 1px inset rgba(0, 0, 0, 0.14);\n\n -webkit-font-smoothing: subpixel-antialiased;\n }\n`;\n\nconst SubscribeOverlayClose = styled.a`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n display: block;\n\n :before {\n content: '';\n position: absolute;\n top: 40px;\n right: 25px;\n display: block;\n width: 30px;\n height: 2px;\n background: #fff;\n opacity: 0.8;\n transform: rotate(45deg);\n }\n\n :after {\n content: '';\n position: absolute;\n top: 40px;\n right: 25px;\n display: block;\n width: 30px;\n height: 2px;\n background: #fff;\n opacity: 0.8;\n transform: rotate(-45deg);\n }\n\n :hover {\n cursor: default;\n }\n`;\n\nconst SubscribeOverlayContent = styled.div`\n position: relative;\n z-index: 9999;\n margin: 0 0 5vw 0;\n padding: 4vw;\n color: #fff;\n text-align: center;\n`;\n\nconst SubscribeOverlayTitle = styled.h1`\n display: inline-block;\n margin: 0 0 10px 0;\n font-size: 6rem;\n line-height: 1.15em;\n`;\n\nconst SubscribeOverlayDescription = styled.p`\n margin: 0 auto 50px;\n max-width: 650px;\n font-family: Georgia, serif;\n font-size: 3rem;\n line-height: 1.3em;\n font-weight: 300;\n opacity: 0.8;\n`;\n\ninterface SubscribeState {\n isOpen: boolean;\n}\n\nclass SubscribeModal extends React.Component<any, SubscribeState> {\n constructor(props: any) {\n super(props);\n this.state = { isOpen: false };\n }\n\n componentWillUnmount() {\n this.unsubscribeEsc();\n }\n\n escFunction = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n this.close();\n }\n };\n\n subscribeEsc() {\n document.addEventListener('keydown', this.escFunction, false);\n }\n\n unsubscribeEsc() {\n document.removeEventListener('keydown', this.escFunction, false);\n }\n\n open = () => {\n this.setState({ isOpen: true });\n this.subscribeEsc();\n };\n\n close = () => {\n this.setState({ isOpen: false });\n this.unsubscribeEsc();\n };\n\n render() {\n return (\n <SubscribeOverlay open={this.state.isOpen}>\n <SubscribeOverlayClose onClick={this.close} />\n <SubscribeOverlayContent>\n <SubscribeLogo />\n <SubscribeOverlayTitle>Subscribe to {config.title}</SubscribeOverlayTitle>\n <SubscribeOverlayDescription>\n Stay up to date! Get all the latest & greatest posts delivered straight to your\n inbox\n </SubscribeOverlayDescription>\n <SubscribeForm />\n </SubscribeOverlayContent>\n </SubscribeOverlay>\n );\n }\n}\n\nexport default SubscribeModal;\n","// tslint:disable:no-http-string\nimport { Link } from 'gatsby';\nimport * as React from 'react';\nimport styled from '@emotion/styled';\nimport { css } from '@emotion/core';\n\nimport { SocialLink } from '../../styles/shared';\nimport config from '../../website-config';\nimport Facebook from '../icons/facebook';\nimport Twitter from '../icons/twitter';\nimport SubscribeModal from '../subscribe/SubscribeOverlay';\n// import SiteNavLogo from './SiteNavLogo';\n\nconst HomeNavRaise = css`\n @media (min-width: 900px) {\n position: relative;\n top: -70px;\n }\n`;\n\nconst SiteNavStyles = css`\n position: relative;\n z-index: 300;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n overflow-y: hidden;\n height: 40px;\n font-size: 1.2rem;\n`;\n\nconst SiteNavLeft = styled.div`\n display: flex;\n align-items: center;\n overflow-x: auto;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n margin-right: 10px;\n padding-bottom: 80px;\n letter-spacing: 0.4px;\n white-space: nowrap;\n\n -ms-overflow-scrolling: touch;\n\n @media (max-width: 700px) {\n margin-right: 0;\n padding-left: 4vw;\n }\n`;\n\nconst NavStyles = css`\n display: flex;\n margin: 0 0 0 -12px;\n padding: 0;\n list-style: none;\n\n li {\n display: block;\n margin: 0;\n padding: 0;\n text-transform: uppercase;\n }\n\n li a {\n display: block;\n margin: 0;\n padding: 10px 12px;\n color: #fff;\n opacity: 0.8;\n }\n\n li a:hover {\n text-decoration: none;\n opacity: 1;\n }\n`;\n\nconst SiteNavRight = styled.div`\n flex-shrink: 0;\n display: flex;\n align-items: center;\n height: 40px;\n\n @media (max-width: 700px) {\n display: none;\n }\n`;\n\nconst SocialLinks = styled.div`\n flex-shrink: 0;\n display: flex;\n align-items: center;\n a:last-of-type {\n padding-right: 20px;\n }\n`;\n\nconst SubscribeButton = styled.a`\n display: block;\n padding: 4px 10px;\n border: #fff 1px solid;\n color: #fff;\n font-size: 1.2rem;\n line-height: 1em;\n border-radius: 10px;\n opacity: 0.8;\n\n :hover {\n text-decoration: none;\n opacity: 1;\n cursor: pointer;\n }\n`;\n\ninterface SiteNavProps {\n isHome?: boolean;\n}\n\ninterface SiteNaveState {\n isOpen: boolean;\n}\n\nclass SiteNav extends React.Component<SiteNavProps, SiteNaveState> {\n subscribe = React.createRef<SubscribeModal>();\n\n constructor(props: SiteNavProps) {\n super(props);\n this.state = { isOpen: false };\n }\n openModal = () => {\n if (this.subscribe.current) {\n this.subscribe.current.open();\n }\n };\n\n render() {\n const { isHome = false } = this.props;\n return (\n <nav css={[isHome && HomeNavRaise, SiteNavStyles]}>\n <SiteNavLeft>\n {!isHome /* && <SiteNavLogo /> */}\n <ul css={NavStyles} role=\"menu\">\n {/* TODO: mark current nav item - add class nav-current */}\n <li role=\"menuitem\">\n <Link to=\"/\">Home</Link>\n </li>\n <li role=\"menuitem\">\n <Link to=\"/about-us\">About</Link>\n </li>\n {/* <li role=\"menuitem\">\n <Link to=\"/tags/getting-started/\">Getting Started</Link>\n </li> */}\n </ul>\n </SiteNavLeft>\n <SiteNavRight>\n <SocialLinks>\n {config.facebook && (\n <a\n css={SocialLink}\n href={config.facebook}\n target=\"_blank\"\n title=\"Facebook\"\n rel=\"noopener noreferrer\"\n >\n <Facebook />\n </a>\n )}\n {config.twitter && (\n <a\n css={SocialLink}\n href={config.twitter}\n title=\"Twitter\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <Twitter />\n </a>\n )}\n </SocialLinks>\n {config.showSubscribe && (\n <SubscribeButton onClick={this.openModal}>Subscribe</SubscribeButton>\n )}\n {config.showSubscribe && <SubscribeModal ref={this.subscribe} />}\n </SiteNavRight>\n </nav>\n );\n }\n}\n\nexport default SiteNav;\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","import { darken, desaturate, lighten, mix } from 'polished';\nimport * as React from 'react';\nimport styled from '@emotion/styled';\nimport { css } from '@emotion/core';\n\nimport { colors } from '../../styles/colors';\nimport config from '../../website-config';\n\nconst SubscribeFormStyles = css`\n @media (max-width: 500px) {\n -ms-flex-direction: column;\n flex-direction: column;\n }\n`;\n\nconst SubscribeEmail = styled.input`\n display: block;\n padding: 10px;\n width: 100%;\n /* border: color(var(--lightgrey) l(+7%)) 1px solid; */\n border: ${lighten('0.07', colors.lightgrey)};\n color: ${colors.midgrey};\n font-size: 1.8rem;\n line-height: 1em;\n font-weight: normal;\n user-select: text;\n border-radius: 5px;\n transition: border-color 0.15s linear;\n\n -webkit-appearance: none;\n :focus {\n outline: 0;\n /* border-color: color(var(--lightgrey) l(-2%)); */\n border-color: ${darken('0.02', colors.lightgrey)};\n }\n`;\n\nconst SubscribeFormButton = styled.button`\n display: inline-block;\n margin: 0 0 0 10px;\n padding: 0 20px;\n height: 41px;\n outline: none;\n color: #fff;\n font-size: 1.5rem;\n line-height: 37px;\n font-weight: 400;\n text-align: center;\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1);\n /* background: linear-gradient(\n color(var(--blue) whiteness(+7%)),\n color(var(--blue) lightness(-7%) saturation(-10%)) 60%,\n color(var(--blue) lightness(-7%) saturation(-10%)) 90%,\n color(var(--blue) lightness(-4%) saturation(-10%))\n ); */\n background: linear-gradient(\n ${mix('0.1', '#fff', colors.blue)},\n ${desaturate('0.1', darken('0.07', colors.blue))} 60%,\n ${desaturate('0.1', darken('0.07', colors.blue))} 90%,\n ${desaturate('0.1', darken('0.04', colors.blue))}\n );\n border-radius: 5px;\n box-shadow: 0 0 0 1px inset rgba(0, 0, 0, 0.14);\n\n -webkit-font-smoothing: subpixel-antialiased;\n\n :active,\n :focus {\n /* background: color(var(--blue) lightness(-9%) saturation(-10%)); */\n background: ${desaturate('0.1', darken('0.09', colors.blue))};\n }\n @media (max-width: 500px) {\n margin: 10px 0 0;\n width: 100%;\n }\n`;\n\nconst FormGroup = styled.div`\n flex-grow: 1;\n @media (max-width: 500px) {\n width: 100%;\n }\n`;\n\nconst SubscribeForm: React.FC = () => {\n return (\n <form\n css={SubscribeFormStyles}\n action={config.mailchimpAction}\n method=\"post\"\n id=\"mc-embedded-subscribe-form\"\n name=\"mc-embedded-subscribe-form\"\n target=\"_blank\"\n noValidate\n >\n {/* This is required for the form to work correctly */}\n <FormGroup className=\"form-group\">\n <SubscribeEmail\n className=\"subscribe-email\"\n type=\"email\"\n name={config.mailchimpEmailFieldName}\n id={config.mailchimpEmailFieldName}\n placeholder=\"[email protected]\"\n />\n </FormGroup>\n <div style={{ position: 'absolute', left: '-5000px' }} aria-hidden=\"true\">\n <input type=\"text\" name={config.mailchimpName} tabIndex={-1} />\n </div>\n <SubscribeFormButton type=\"submit\">\n <span>Subscribe</span>\n </SubscribeFormButton>\n </form>\n );\n};\n\nexport default SubscribeForm;\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location, pageResources }) => {\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","module.exports = \"data:image/png;base64,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\"","// tslint:disable:no-http-string\nimport * as React from 'react';\n\nconst Facebook: React.FC = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" style={{ height: '1.5rem' }}>\n <path d=\"M19 6h5V0h-5c-3.86 0-7 3.14-7 7v3H8v6h4v16h6V16h5l1-6h-6V7c0-.542.458-1 1-1z\" />\n </svg>\n);\nexport default Facebook;\n","// tslint:disable:no-http-string\nimport * as React from 'react';\n\nconst Twitter: React.FC = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\">\n <path d=\"M30.063 7.313c-.813 1.125-1.75 2.125-2.875 2.938v.75c0 1.563-.188 3.125-.688 4.625a15.088 15.088 0 0 1-2.063 4.438c-.875 1.438-2 2.688-3.25 3.813a15.015 15.015 0 0 1-4.625 2.563c-1.813.688-3.75 1-5.75 1-3.25 0-6.188-.875-8.875-2.625.438.063.875.125 1.375.125 2.688 0 5.063-.875 7.188-2.5-1.25 0-2.375-.375-3.375-1.125s-1.688-1.688-2.063-2.875c.438.063.813.125 1.125.125.5 0 1-.063 1.5-.25-1.313-.25-2.438-.938-3.313-1.938a5.673 5.673 0 0 1-1.313-3.688v-.063c.813.438 1.688.688 2.625.688a5.228 5.228 0 0 1-1.875-2c-.5-.875-.688-1.813-.688-2.75 0-1.063.25-2.063.75-2.938 1.438 1.75 3.188 3.188 5.25 4.25s4.313 1.688 6.688 1.813a5.579 5.579 0 0 1 1.5-5.438c1.125-1.125 2.5-1.688 4.125-1.688s3.063.625 4.188 1.813a11.48 11.48 0 0 0 3.688-1.375c-.438 1.375-1.313 2.438-2.563 3.188 1.125-.125 2.188-.438 3.313-.875z\" />\n </svg>\n);\nexport default Twitter;\n"],"sourceRoot":""}