chore: componentize footer
This commit is contained in:
55
src/components/Footer.js
Normal file
55
src/components/Footer.js
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
import React from "react"
|
||||||
|
import { Link } from "gatsby"
|
||||||
|
import { css } from "@emotion/core"
|
||||||
|
import styled from "@emotion/styled"
|
||||||
|
import { withTheme } from "emotion-theming"
|
||||||
|
|
||||||
|
import Logo from "components/Logo"
|
||||||
|
|
||||||
|
const FooterBlock = styled.footer`
|
||||||
|
margin-top: 120px;
|
||||||
|
padding: 30px 0px;
|
||||||
|
text-align: center;
|
||||||
|
color: ${props => props.theme.colors.secondary};
|
||||||
|
`
|
||||||
|
const linkStyles = css`
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: none;
|
||||||
|
margin: 10px;
|
||||||
|
`
|
||||||
|
const FooterLink = styled(Link)`
|
||||||
|
${linkStyles}
|
||||||
|
color: ${props => props.theme.colors.secondary};
|
||||||
|
&:hover {
|
||||||
|
color: ${props => props.theme.colors.tertiary};
|
||||||
|
}
|
||||||
|
`
|
||||||
|
const FooterAnchor = styled.a`
|
||||||
|
${linkStyles}
|
||||||
|
color: ${props => props.theme.colors.secondary};
|
||||||
|
&:hover {
|
||||||
|
color: ${props => props.theme.colors.tertiary};
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
const Footer = ({ theme }) => (
|
||||||
|
<FooterBlock>
|
||||||
|
<div>
|
||||||
|
<Logo color={theme.colors.secondary} />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<FooterAnchor
|
||||||
|
href="https://github.com/gillkyle/sol-journal"
|
||||||
|
rel="target noopener"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
View on GitHub
|
||||||
|
</FooterAnchor>
|
||||||
|
<FooterLink to="terms">Terms of Service</FooterLink>
|
||||||
|
<FooterLink to="privacy">Privacy Policy</FooterLink>
|
||||||
|
</div>
|
||||||
|
<div>© 2019</div>
|
||||||
|
</FooterBlock>
|
||||||
|
)
|
||||||
|
|
||||||
|
export default withTheme(Footer)
|
||||||
@@ -3,7 +3,6 @@ import { Helmet } from "react-helmet"
|
|||||||
import { Global, css } from "@emotion/core"
|
import { Global, css } from "@emotion/core"
|
||||||
import styled from "@emotion/styled"
|
import styled from "@emotion/styled"
|
||||||
|
|
||||||
import { SimpleNavbar } from "components/Navbar"
|
|
||||||
import { withTheme } from "emotion-theming"
|
import { withTheme } from "emotion-theming"
|
||||||
|
|
||||||
const Layout = ({ children, theme }) => (
|
const Layout = ({ children, theme }) => (
|
||||||
@@ -12,9 +11,9 @@ const Layout = ({ children, theme }) => (
|
|||||||
<Global
|
<Global
|
||||||
styles={css`
|
styles={css`
|
||||||
* {
|
* {
|
||||||
/* transition: 0.2s border-color ease-in-out, 0.2s fill ease-in-out,
|
transition: 0.2s border-color ease-in-out, 0.2s fill ease-in-out,
|
||||||
0.2s box-shadow ease-in-out, 0.2s background-color ease-in-out,
|
0.2s box-shadow ease-in-out, 0.2s background-color ease-in-out,
|
||||||
0.2s color ease-in-out; */
|
0.2s color ease-in-out;
|
||||||
overflow: -moz-scrollbars-none;
|
overflow: -moz-scrollbars-none;
|
||||||
}
|
}
|
||||||
*::-webkit-scrollbar {
|
*::-webkit-scrollbar {
|
||||||
|
|||||||
@@ -34,23 +34,24 @@ export const Input = styled.input`
|
|||||||
|
|
||||||
export const Button = styled.button`
|
export const Button = styled.button`
|
||||||
display: inline;
|
display: inline;
|
||||||
background-color: ${props => props.colors.primary};
|
color: ${props => props.colors.primary};
|
||||||
|
background-color: ${props => props.colors.button};
|
||||||
|
border-color: ${props => props.colors.quarternary};
|
||||||
padding: 12px 50px;
|
padding: 12px 50px;
|
||||||
min-height: 45px;
|
min-height: 45px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
border: 0px solid;
|
border: 0px solid;
|
||||||
border-color: ${props => props.colors.quarternary};
|
font-family: Montserrat;
|
||||||
color: ${props => props.colors.quarternary};
|
|
||||||
font-size: ${props => SIZES[props.fontSize || "normal"]};
|
font-size: ${props => SIZES[props.fontSize || "normal"]};
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
outline: none;
|
outline: none;
|
||||||
&:hover {
|
&:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
background-color: ${props => props.colors.secondary};
|
background-color: ${props => props.colors.hover};
|
||||||
|
box-shadow: 0 0 0 3px ${props => props.colors.bodyBackground},
|
||||||
|
0 0 0 5px ${props => props.colors.button};
|
||||||
}
|
}
|
||||||
&:focus {
|
&:focus {
|
||||||
box-shadow: 0 0 0 3px ${props => props.colors.bodyBackground},
|
|
||||||
0 0 0 5px ${props => props.colors.secondary};
|
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
|||||||
@@ -116,9 +116,7 @@ class Day extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
componentDidUpdate(prevProps) {
|
componentDidUpdate(prevProps) {
|
||||||
// Typical usage (don't forget to compare props):
|
|
||||||
if (this.props.uri !== prevProps.uri) {
|
if (this.props.uri !== prevProps.uri) {
|
||||||
console.log("here we go")
|
|
||||||
const [
|
const [
|
||||||
,
|
,
|
||||||
,
|
,
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ import { withTheme } from "emotion-theming"
|
|||||||
|
|
||||||
import { SIZES } from "styles/constants"
|
import { SIZES } from "styles/constants"
|
||||||
import { Button, P } from "components/elements"
|
import { Button, P } from "components/elements"
|
||||||
import { todayUrl } from "utils/date"
|
|
||||||
import Icon from "components/Icon"
|
import Icon from "components/Icon"
|
||||||
import Logo from "components/Logo"
|
import Footer from "components/Footer"
|
||||||
|
import { todayUrl } from "utils/date"
|
||||||
|
|
||||||
const StartGrid = styled.div`
|
const StartGrid = styled.div`
|
||||||
margin-top: 30px;
|
margin-top: 30px;
|
||||||
@@ -39,21 +39,6 @@ const FeatureTitle = styled.div`
|
|||||||
const FeatureDescription = styled.div`
|
const FeatureDescription = styled.div`
|
||||||
color: ${props => props.theme.colors.secondary};
|
color: ${props => props.theme.colors.secondary};
|
||||||
`
|
`
|
||||||
const Footer = styled.footer`
|
|
||||||
margin-top: 120px;
|
|
||||||
padding: 30px 0px;
|
|
||||||
text-align: center;
|
|
||||||
color: ${props => props.theme.colors.secondary};
|
|
||||||
`
|
|
||||||
const FooterLink = styled(Link)`
|
|
||||||
cursor: pointer;
|
|
||||||
color: ${props => props.theme.colors.secondary};
|
|
||||||
text-decoration: none;
|
|
||||||
margin: 10px;
|
|
||||||
&:hover {
|
|
||||||
color: ${props => props.theme.colors.tertiary};
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
const features = [
|
const features = [
|
||||||
{
|
{
|
||||||
@@ -107,7 +92,7 @@ class Start extends Component {
|
|||||||
display: "flex",
|
display: "flex",
|
||||||
flexDirection: "column",
|
flexDirection: "column",
|
||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
margin: "30 auto",
|
marginTop: 30,
|
||||||
maxHeight: 350,
|
maxHeight: 350,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -181,17 +166,7 @@ class Start extends Component {
|
|||||||
</FeatureRow>
|
</FeatureRow>
|
||||||
))}
|
))}
|
||||||
</FeatureGrid>
|
</FeatureGrid>
|
||||||
<Footer>
|
<Footer />
|
||||||
<div>
|
|
||||||
<Logo color={theme.colors.logo} />
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<FooterLink>View on GitHub</FooterLink>
|
|
||||||
<FooterLink to="terms">Terms of Service</FooterLink>
|
|
||||||
<FooterLink to="privacy">Privacy Policy</FooterLink>
|
|
||||||
</div>
|
|
||||||
<div>© 2019</div>
|
|
||||||
</Footer>
|
|
||||||
</StartGrid>
|
</StartGrid>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { withTheme } from "emotion-theming"
|
|||||||
|
|
||||||
import { Button, P } from "components/elements"
|
import { Button, P } from "components/elements"
|
||||||
import Logo from "components/Logo"
|
import Logo from "components/Logo"
|
||||||
|
import Footer from "components/Footer"
|
||||||
import { todayUrl } from "utils/date"
|
import { todayUrl } from "utils/date"
|
||||||
|
|
||||||
const WelcomeGrid = styled.div`
|
const WelcomeGrid = styled.div`
|
||||||
@@ -13,21 +14,6 @@ const WelcomeGrid = styled.div`
|
|||||||
color: ${props => props.theme.colors.primary};
|
color: ${props => props.theme.colors.primary};
|
||||||
height: 100%;
|
height: 100%;
|
||||||
`
|
`
|
||||||
const Footer = styled.footer`
|
|
||||||
margin-top: 120px;
|
|
||||||
padding: 30px 0px;
|
|
||||||
text-align: center;
|
|
||||||
color: ${props => props.theme.colors.secondary};
|
|
||||||
`
|
|
||||||
const FooterLink = styled(Link)`
|
|
||||||
cursor: pointer;
|
|
||||||
color: ${props => props.theme.colors.secondary};
|
|
||||||
text-decoration: none;
|
|
||||||
margin: 10px;
|
|
||||||
&:hover {
|
|
||||||
color: ${props => props.theme.colors.tertiary};
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
class Welcome extends Component {
|
class Welcome extends Component {
|
||||||
render() {
|
render() {
|
||||||
@@ -42,17 +28,7 @@ class Welcome extends Component {
|
|||||||
<Link to={`/app${todayUrl()}`} style={{ textDecoration: "none" }}>
|
<Link to={`/app${todayUrl()}`} style={{ textDecoration: "none" }}>
|
||||||
<Button colors={theme.colors}>Write about today</Button>
|
<Button colors={theme.colors}>Write about today</Button>
|
||||||
</Link>
|
</Link>
|
||||||
<Footer>
|
<Footer />
|
||||||
<div>
|
|
||||||
<Logo color={theme.colors.logo} />
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<FooterLink>View on GitHub</FooterLink>
|
|
||||||
<FooterLink to="terms">Terms of Service</FooterLink>
|
|
||||||
<FooterLink to="privacy">Privacy Policy</FooterLink>
|
|
||||||
</div>
|
|
||||||
<div>© 2019</div>
|
|
||||||
</Footer>
|
|
||||||
</WelcomeGrid>
|
</WelcomeGrid>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user