diff --git a/.storybook/config.js b/.storybook/config.js index ab7a877..4cfc1b0 100644 --- a/.storybook/config.js +++ b/.storybook/config.js @@ -4,7 +4,7 @@ import { ThemeProvider } from 'styled-components'; import { withScreenshot } from 'zisui'; import pkg from '../package.json'; import GlobalStyle from '../src/styles/GlobalStyle'; -import theme from '../src/styles/theme'; +import { darkTheme } from '../src/styles/theme'; // automatically import all files ending in *.stories.js const req = require.context('../src', true, /.stories.(ts|tsx)$/); @@ -33,7 +33,7 @@ addParameters({ addDecorator(withScreenshot()); addDecorator(story => ( - + {story()} diff --git a/gatsby-config.js b/gatsby-config.js index 5669d73..cede3ba 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -16,7 +16,7 @@ module.exports = { resolve: `gatsby-source-filesystem`, options: { name: `icon`, - path: `${__dirname}/src/assets/icon`, + path: `${__dirname}/src/assets/images`, }, }, { @@ -57,7 +57,7 @@ module.exports = { background_color: `#111`, theme_color: `#111`, display: `minimal-ui`, - icon: `src/assets/icon/logo.png`, + icon: `src/assets/images/logo.png`, }, }, `gatsby-plugin-offline`, diff --git a/package.json b/package.json index 94eae15..4a33c80 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "format": "prettier --write 'src/**/*.{ts,tsx,js,jsx}'", "format:ci": "prettier 'src/**/*.{tsx,ts}'", "serve": "gatsby serve", - "svg": "svgo {src/assets,static}/**/*.svg --enable=removeDimensions", + "svg": "svgo src/assets/**/*.svg --enable=removeDimensions", "test": "jest --watch", "test:ci": "jest", "tsc": "tsc -p tsconfig.json --skipLibCheck", @@ -24,9 +24,9 @@ "screenshot": "zisui --serverCmd 'start-storybook -p 6006 -s ./public' http://localhost:6006 --serverTimeout 1000000 --viewport '1280x800'" }, "dependencies": { - "@primer/octicons-react": "^9.2.0", "@storybook/react": "^5.2.5", "@types/react": "^16.9.9", + "chroma-js": "^2.1.0", "enzyme": "^3.10.0", "enzyme-adapter-react-16": "^1.15.1", "enzyme-to-json": "^3.4.3", @@ -64,6 +64,7 @@ "@storybook/addon-viewport": "^5.2.5", "@storybook/addons": "^5.2.5", "@storybook/source-loader": "^5.2.5", + "@types/chroma-js": "^1.4.3", "@types/enzyme": "^3.10.3", "@types/enzyme-adapter-react-16": "^1.0.5", "@types/enzyme-to-json": "^1.5.3", diff --git a/src/assets/icons/home.svg b/src/assets/icons/home.svg new file mode 100644 index 0000000..323468b --- /dev/null +++ b/src/assets/icons/home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/mail.svg b/src/assets/icons/mail.svg new file mode 100644 index 0000000..7366003 --- /dev/null +++ b/src/assets/icons/mail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/moon.svg b/src/assets/icons/moon.svg new file mode 100644 index 0000000..b720906 --- /dev/null +++ b/src/assets/icons/moon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/sunny.svg b/src/assets/icons/sunny.svg new file mode 100644 index 0000000..4129517 --- /dev/null +++ b/src/assets/icons/sunny.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icon/logo.png b/src/assets/images/logo.png similarity index 100% rename from src/assets/icon/logo.png rename to src/assets/images/logo.png diff --git a/src/components/atoms/Button/index.tsx b/src/components/atoms/Button/index.tsx index 803db1e..8b5d355 100644 --- a/src/components/atoms/Button/index.tsx +++ b/src/components/atoms/Button/index.tsx @@ -13,14 +13,13 @@ const StyledButton = styled.button` text-decoration: none; user-select: none; white-space: nowrap; - background-color: transparent; - color: ${props => props.theme.colors.baseText[0]}; + background-color: ${({ theme }) => theme.colors.button.bg}; + color: ${({ theme }) => theme.colors.baseText[0]}; font-weight: normal; - font-family: ${props => props.theme.fonts.avantGarde}; - font-size: ${props => props.theme.fontSizes[1]}; - padding: 0 ${props => props.theme.spaces[4]}; - height: 40px; - border: 2px solid ${props => props.theme.colors.baseText[0]}; + font-size: ${({ theme }) => theme.fontSizes[1]}; + padding: 0 ${({ theme }) => theme.spaces[4]}; + height: ${({ theme }) => theme.control.height}; + border: 2px solid ${({ theme }) => theme.colors.button.border}; cursor: pointer; opacity: 1; pointer-events: auto; @@ -28,7 +27,7 @@ const StyledButton = styled.button` text-decoration: none; letter-spacing: 0.5em; text-indent: 0.5em; - transition: background-color 0.4s; + transition: background-color ${({ theme }) => theme.transition}; &:last-child { margin-right: 0; @@ -36,7 +35,7 @@ const StyledButton = styled.button` &:hover, &:focus, &:active { - background-color: rgba(255, 255, 255, 0.1); + background-color: ${({ theme }) => theme.colors.button.forcus.bg}; } `; diff --git a/src/components/atoms/Container/__snapshots__/index.spec.tsx.snap b/src/components/atoms/Container/__snapshots__/index.spec.tsx.snap index 60365a9..3259265 100644 --- a/src/components/atoms/Container/__snapshots__/index.spec.tsx.snap +++ b/src/components/atoms/Container/__snapshots__/index.spec.tsx.snap @@ -1,7 +1,37 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Container snapshot 1`] = ` - + ... - + `; diff --git a/src/components/atoms/Container/index.tsx b/src/components/atoms/Container/index.tsx index b711d64..5d4ffc5 100644 --- a/src/components/atoms/Container/index.tsx +++ b/src/components/atoms/Container/index.tsx @@ -1,17 +1,10 @@ -import * as React from 'react'; import styled from 'styled-components'; -const Wrapper = styled.section` +const Container = styled.div` margin: 0 auto; max-width: 984px; - padding: 0px ${props => props.theme.spaces[5]} ${props => props.theme.spaces[4]}; + padding: 0px ${props => props.theme.spaces[5]}; padding-top: 0; `; -export interface ContainerProps { - children: React.ReactNode; -} - -const Container = ({ children }: ContainerProps) => {children}; - export default Container; diff --git a/src/components/atoms/Input/__snapshots__/index.spec.tsx.snap b/src/components/atoms/Input/__snapshots__/index.spec.tsx.snap index 351852b..93f9fbd 100644 --- a/src/components/atoms/Input/__snapshots__/index.spec.tsx.snap +++ b/src/components/atoms/Input/__snapshots__/index.spec.tsx.snap @@ -14,16 +14,16 @@ exports[`Input snapshot 1`] = ` ", " width: 100%; + padding: 0 ", + [Function], + "; font-size: ", [Function], "; color: ", [Function], "; - background: transparent; - outline: none; - box-shadow: none; - padding: 0 ", + background-color: ", [Function], "; border-top: 0; @@ -32,18 +32,26 @@ exports[`Input snapshot 1`] = ` border-bottom: 1px solid ", [Function], "; - transition: background, border-bottom 0.2s; + outline: none; + box-shadow: none; + transition: background, border-bottom ", + [Function], + "; &:focus { border-bottom: 1px solid ", [Function], "; - background: rgba(61, 16, 107, 0.15); + background-color: ", + [Function], + "; } ", " - height: 40px; + height: ", + [Function], + "; ", ], }, diff --git a/src/components/atoms/Input/index.tsx b/src/components/atoms/Input/index.tsx index 0020e5d..0839d99 100644 --- a/src/components/atoms/Input/index.tsx +++ b/src/components/atoms/Input/index.tsx @@ -2,28 +2,28 @@ import styled, { css } from 'styled-components'; export const inputStyle = css` width: 100%; - font-size: ${props => props.theme.fontSizes[2]}; - color: ${props => props.theme.colors.baseText[0]}; - background: transparent; - outline: none; - box-shadow: none; - padding: 0 ${props => props.theme.spaces[1]}; + padding: 0 ${({ theme }) => theme.spaces[1]}; + font-size: ${({ theme }) => theme.fontSizes[2]}; + color: ${({ theme }) => theme.colors.baseText[0]}; + background-color: ${({ theme }) => theme.colors.input.bg}; border-top: 0; border-left: 0; border-right: 0; - border-bottom: 1px solid ${props => props.theme.colors.baseText[1]}; - transition: background, border-bottom 0.2s; + border-bottom: 1px solid ${({ theme }) => theme.colors.input.border}; + outline: none; + box-shadow: none; + transition: background, border-bottom ${({ theme }) => theme.transition}; &:focus { - border-bottom: 1px solid ${props => props.theme.colors.baseText[0]}; - background: rgba(61, 16, 107, 0.15); + border-bottom: 1px solid ${({ theme }) => theme.colors.input.forcus.border}; + background-color: ${({ theme }) => theme.colors.input.forcus.bg}; } `; const Input = styled.input` ${inputStyle} - height: 40px; + height: ${({ theme }) => theme.control.height}; `; export default Input; diff --git a/src/components/atoms/Logo/index.tsx b/src/components/atoms/Logo/index.tsx index fbaa113..2bc432d 100644 --- a/src/components/atoms/Logo/index.tsx +++ b/src/components/atoms/Logo/index.tsx @@ -6,7 +6,7 @@ const PathLeft = styled.path` `; const PathRight = styled.path` - fill: ${props => props.theme.colors.bg}; + fill: ${({ theme }) => theme.colors.logo}; `; const Logo = () => { diff --git a/src/components/atoms/Textarea/__snapshots__/index.spec.tsx.snap b/src/components/atoms/Textarea/__snapshots__/index.spec.tsx.snap index cd760b2..59cfe53 100644 --- a/src/components/atoms/Textarea/__snapshots__/index.spec.tsx.snap +++ b/src/components/atoms/Textarea/__snapshots__/index.spec.tsx.snap @@ -14,16 +14,16 @@ exports[`Textarea snapshot 1`] = ` ", " width: 100%; + padding: 0 ", + [Function], + "; font-size: ", [Function], "; color: ", [Function], "; - background: transparent; - outline: none; - box-shadow: none; - padding: 0 ", + background-color: ", [Function], "; border-top: 0; @@ -32,13 +32,19 @@ exports[`Textarea snapshot 1`] = ` border-bottom: 1px solid ", [Function], "; - transition: background, border-bottom 0.2s; + outline: none; + box-shadow: none; + transition: background, border-bottom ", + [Function], + "; &:focus { border-bottom: 1px solid ", [Function], "; - background: rgba(61, 16, 107, 0.15); + background-color: ", + [Function], + "; } ", "; diff --git a/src/components/molecules/ContentBlock/__snapshots__/index.spec.tsx.snap b/src/components/molecules/ContentBlock/__snapshots__/index.spec.tsx.snap index 0f13233..6d385c2 100644 --- a/src/components/molecules/ContentBlock/__snapshots__/index.spec.tsx.snap +++ b/src/components/molecules/ContentBlock/__snapshots__/index.spec.tsx.snap @@ -1,8 +1,8 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`ContentBlock snapshot 1`] = ` -
- + + @@ -11,6 +11,6 @@ exports[`ContentBlock snapshot 1`] = ` ... - -
+ + `; diff --git a/src/components/molecules/ContentBlock/index.tsx b/src/components/molecules/ContentBlock/index.tsx index 41bdfb1..bb6023a 100644 --- a/src/components/molecules/ContentBlock/index.tsx +++ b/src/components/molecules/ContentBlock/index.tsx @@ -1,14 +1,17 @@ import * as React from 'react'; import styled, { css } from 'styled-components'; + import Container from '../../atoms/Container'; +const Wrapper = styled.section``; + const Flex = styled.div` display: flex; padding-bottom: 20vh; ${props => props.logo && css` - padding-top: 30vh; + padding-top: 15vh; padding-bottom: 30vh; `} @@ -59,14 +62,14 @@ interface ContentBlockProps { } const ContentBlock = ({ id, title, logo, children }: ContentBlockProps) => ( -
+ {logo ||

{title}

}
{children}
-
+ ); export default ContentBlock; diff --git a/src/components/molecules/InputItem/__snapshots__/index.spec.tsx.snap b/src/components/molecules/FormItem/__snapshots__/index.spec.tsx.snap similarity index 79% rename from src/components/molecules/InputItem/__snapshots__/index.spec.tsx.snap rename to src/components/molecules/FormItem/__snapshots__/index.spec.tsx.snap index 965ef5a..e0ff552 100644 --- a/src/components/molecules/InputItem/__snapshots__/index.spec.tsx.snap +++ b/src/components/molecules/FormItem/__snapshots__/index.spec.tsx.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`InputItem snapshot 1`] = ` +exports[`FormItem snapshot 1`] = `

title diff --git a/src/components/molecules/InputItem/index.spec.tsx b/src/components/molecules/FormItem/index.spec.tsx similarity index 59% rename from src/components/molecules/InputItem/index.spec.tsx rename to src/components/molecules/FormItem/index.spec.tsx index bb3efaf..b9c4e53 100644 --- a/src/components/molecules/InputItem/index.spec.tsx +++ b/src/components/molecules/FormItem/index.spec.tsx @@ -1,11 +1,11 @@ import * as React from 'react'; import { shallow } from 'enzyme'; import toJson from 'enzyme-to-json'; -import InputItem from '.'; +import FormItem from '.'; -describe('InputItem', () => { +describe('FormItem', () => { it('snapshot', () => { - const tree = shallow(...); + const tree = shallow(...); expect(toJson(tree)).toMatchSnapshot(); }); }); diff --git a/src/components/molecules/InputItem/index.stories.tsx b/src/components/molecules/FormItem/index.stories.tsx similarity index 68% rename from src/components/molecules/InputItem/index.stories.tsx rename to src/components/molecules/FormItem/index.stories.tsx index e614406..d356bff 100644 --- a/src/components/molecules/InputItem/index.stories.tsx +++ b/src/components/molecules/FormItem/index.stories.tsx @@ -2,25 +2,25 @@ import React from 'react'; import styled from 'styled-components'; import { storiesOf } from '@storybook/react'; import Input from '../../atoms/Input'; -import InputItem from '.'; +import FormItem from '.'; const Wrapper = styled.div` width: 480px; padding: 60px; `; -storiesOf(`molecules|InputItem`, module) +storiesOf(`molecules|FormItem`, module) .add(`default`, () => ( - + - + )) .add(`required`, () => ( - + - + )); diff --git a/src/components/molecules/InputItem/index.tsx b/src/components/molecules/FormItem/index.tsx similarity index 83% rename from src/components/molecules/InputItem/index.tsx rename to src/components/molecules/FormItem/index.tsx index 4d3b141..93c41f2 100644 --- a/src/components/molecules/InputItem/index.tsx +++ b/src/components/molecules/FormItem/index.tsx @@ -20,14 +20,14 @@ const Required = styled.span` padding-left: ${props => props.theme.spaces[0]}; `; -interface InputItemProps { +interface FormItemProps { title: string; htmlFor?: string; children: React.ReactNode; required?: boolean; } -const InputItem = ({ title, required, htmlFor, children }: InputItemProps) => ( +const FormItem = ({ title, required, htmlFor, children }: FormItemProps) => (

); -export default InputItem; +export default FormItem; diff --git a/src/components/molecules/LogoType/__snapshots__/index.spec.tsx.snap b/src/components/molecules/LogoType/__snapshots__/index.spec.tsx.snap new file mode 100644 index 0000000..5720e7e --- /dev/null +++ b/src/components/molecules/LogoType/__snapshots__/index.spec.tsx.snap @@ -0,0 +1,12 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`LogoType snapshot 1`] = ` + + + + + + blivesta + + +`; diff --git a/src/components/molecules/LogoType/index.spec.tsx b/src/components/molecules/LogoType/index.spec.tsx new file mode 100644 index 0000000..4445a20 --- /dev/null +++ b/src/components/molecules/LogoType/index.spec.tsx @@ -0,0 +1,11 @@ +import * as React from 'react'; +import { shallow } from 'enzyme'; +import toJson from 'enzyme-to-json'; +import LogoType from '.'; + +describe('LogoType', () => { + it('snapshot', () => { + const tree = shallow(); + expect(toJson(tree)).toMatchSnapshot(); + }); +}); diff --git a/src/components/molecules/LogoType/index.stories.tsx b/src/components/molecules/LogoType/index.stories.tsx new file mode 100644 index 0000000..010bd6f --- /dev/null +++ b/src/components/molecules/LogoType/index.stories.tsx @@ -0,0 +1,5 @@ +import React from 'react'; +import { storiesOf } from '@storybook/react'; +import LogoType from '.'; + +storiesOf(`molecules|LogoType`, module).add(`default`, () => ); diff --git a/src/components/molecules/LogoType/index.tsx b/src/components/molecules/LogoType/index.tsx new file mode 100644 index 0000000..54ffa9c --- /dev/null +++ b/src/components/molecules/LogoType/index.tsx @@ -0,0 +1,38 @@ +import * as React from 'react'; +import styled from 'styled-components'; + +import Logo from '../../atoms/Logo'; + +const Flex = styled.div` + display: flex; + align-items: center; +`; + +const LogoWrapper = styled.div` + width: 32px; + height: 32px; + margin-right: ${props => props.theme.spaces[1]}; +`; + +const H1 = styled.h1` + font-family: ${props => props.theme.fonts.avantGarde}; + font-weight: 700; + font-size: ${props => props.theme.fontSizes[3]}; + margin-bottom: 0; + line-height: 1; +`; + +interface LogoTypeProps { + siteTitle: string; +} + +const LogoType = ({ siteTitle }: LogoTypeProps) => ( + + + + +

{siteTitle}

+
+); + +export default LogoType; diff --git a/src/components/organisms/Footer/__snapshots__/index.spec.tsx.snap b/src/components/organisms/Footer/__snapshots__/index.spec.tsx.snap index 0d34f6a..8cf8a93 100644 --- a/src/components/organisms/Footer/__snapshots__/index.spec.tsx.snap +++ b/src/components/organisms/Footer/__snapshots__/index.spec.tsx.snap @@ -2,14 +2,13 @@ exports[`Footer snapshot 1`] = ` - + - + <[object Object] /> @@ -42,6 +41,6 @@ exports[`Footer snapshot 1`] = `   blivesta - + `; diff --git a/src/components/organisms/Footer/index.tsx b/src/components/organisms/Footer/index.tsx index d4d2d97..9eba3d6 100644 --- a/src/components/organisms/Footer/index.tsx +++ b/src/components/organisms/Footer/index.tsx @@ -1,8 +1,9 @@ import * as React from 'react'; import styled from 'styled-components'; -import Octicon, { Mail, Home } from '@primer/octicons-react'; import { Link } from 'gatsby'; +import IconMail from '../../../assets/icons/mail.svg'; +import IconHome from '../../../assets/icons/home.svg'; import Container from '../../atoms/Container'; import Lists from '../../atoms/Lists'; @@ -25,6 +26,13 @@ const Wrapper = styled.footer` &::after { right: 0; } + + & svg { + fill: ${({ theme }) => theme.colors.baseText[0]}; + width: 32px; + height: 32px; + margin-top: -4px; + } `; const Flex = styled.div` @@ -47,10 +55,6 @@ const ContactBlock = styled(Flex)` justify-content: center; `; -const Icon = styled(Octicon)` - width: 32px; -`; - interface FooterProps { siteTitle: string; pageLocation: string; @@ -62,12 +66,12 @@ const Footer = ({ siteTitle, pageLocation }: FooterProps) => { {pageLocation === '/' ? ( - - + + ) : ( - - + + )} diff --git a/src/components/organisms/Header/__snapshots__/index.spec.tsx.snap b/src/components/organisms/Header/__snapshots__/index.spec.tsx.snap index dbe7ec3..1020f05 100644 --- a/src/components/organisms/Header/__snapshots__/index.spec.tsx.snap +++ b/src/components/organisms/Header/__snapshots__/index.spec.tsx.snap @@ -2,21 +2,32 @@ exports[`Header snapshot 1`] = ` - - - - } + - - blivesta - - - description - - + + + + + <[object Object] /> + + + + + <[object Object] /> + + + + + `; diff --git a/src/components/organisms/Header/index.spec.tsx b/src/components/organisms/Header/index.spec.tsx index 90bc7d1..7f5bb9b 100644 --- a/src/components/organisms/Header/index.spec.tsx +++ b/src/components/organisms/Header/index.spec.tsx @@ -5,7 +5,7 @@ import Header from '.'; describe('Header', () => { it('snapshot', () => { - const tree = shallow(
); + const tree = shallow(
); expect(toJson(tree)).toMatchSnapshot(); }); }); diff --git a/src/components/organisms/Header/index.stories.tsx b/src/components/organisms/Header/index.stories.tsx index bda691d..e8b87d8 100644 --- a/src/components/organisms/Header/index.stories.tsx +++ b/src/components/organisms/Header/index.stories.tsx @@ -1,8 +1,7 @@ import React from 'react'; -// import styled from 'styled-components'; import { storiesOf } from '@storybook/react'; import Header from '.'; -storiesOf(`organisms|Header`, module).add(`default`, () => ( -
-)); +storiesOf(`organisms|Header`, module) + .add(`default`, () =>
) + .add(`home`, () =>
); diff --git a/src/components/organisms/Header/index.tsx b/src/components/organisms/Header/index.tsx index 7b3ddd0..a974536 100644 --- a/src/components/organisms/Header/index.tsx +++ b/src/components/organisms/Header/index.tsx @@ -2,106 +2,106 @@ import * as React from 'react'; import { Link } from 'gatsby'; import styled from 'styled-components'; -import Logo from '../../atoms/Logo'; +import IconMail from '../../../assets/icons/mail.svg'; +import IconHome from '../../../assets/icons/home.svg'; +import IconSun from '../../../assets/icons/sunny.svg'; +import IconMoon from '../../../assets/icons/moon.svg'; +import LogoType from '../../molecules/LogoType'; import Container from '../../atoms/Container'; -import ContentBlock from '../../molecules/ContentBlock'; -const Wrapper = styled.header``; - -const HomeH1 = styled.h1` - font-family: ${props => props.theme.fonts.avantGarde}; - font-weight: 700; - font-size: ${props => props.theme.fontSizes[7]}; - margin-top: -8px; - margin-bottom: ${props => props.theme.spaces[1]}; - line-height: 1; - - ${props => props.theme.media.sm` - font-size: ${props.theme.fontSizes[8]}; - `} -`; - -const H1 = styled.h1` - font-family: ${props => props.theme.fonts.avantGarde}; - font-weight: 700; - font-size: ${props => props.theme.fontSizes[3]}; - margin-bottom: 0; - line-height: 1; +const StyledHeader = styled.header` + height: 128px; + margin-bottom: ${({ theme }) => theme.spaces[8]}; + position: relative; `; -const StyledLink = styled(Link)` - display: inline-block; - width: 100%; +const StyledContainer = styled(Container)` + height: 100%; + display: flex; + align-items: center; + justify-content: ${props => (props.pageLocation === '/' ? 'flex-end' : 'space-between')}; `; -const P = styled.p` - font-family: ${props => props.theme.fonts.en}; - font-size: ${props => props.theme.fontSizes[1]}; - color: ${props => props.theme.colors.baseText[2]}; - margin-bottom: 0; +const Nav = styled.nav` + font-size: ${({ theme }) => theme.fontSizes[1]}; - ${props => props.theme.media.sm` - font-size: ${props.theme.fontSizes[3]}; - `} + & svg { + fill: ${({ theme }) => theme.colors.baseText[0]}; + width: 20px; + height: 20px; + margin-top: -4px; + } `; -const Navbar = styled.nav` - height: 128px; - padding-top: ${props => props.theme.spaces[6]}; - margin-bottom: ${props => props.theme.spaces[8]}; +const Ul = styled.ul` + display: flex; + margin: 0; + list-style: none; `; -const LogoWrap = styled.div` - display: flex; - align-items: center; +const Li = styled.li` + text-transform: uppercase; + padding-right: ${props => props.theme.spaces[4]}; + + &:last-child { + padding-right: 0; + } `; -const StyledLogo = styled.div` - width: 32px; - height: 32px; - margin-right: ${props => props.theme.spaces[1]}; +const ModeButton = styled.div` + cursor: pointer; + fill: ${({ theme }) => theme.colors.baseText[0]}; + transition: opacity ${({ theme }) => theme.transition}; + will-change: opacity; + + &:hover { + opacity: 0.6; + } `; interface HeaderProps { siteTitle: string; - description: string; pageLocation: string; + themeState?: string | null; + themeSwich?: () => void; } -const Header = ({ siteTitle, description, pageLocation }: HeaderProps) => { +const Header = ({ siteTitle, pageLocation, themeSwich, themeState }: HeaderProps) => { + const themeToggle = () => { + return themeSwich && themeSwich(); + }; + return ( - - {pageLocation === '/' ? ( - - - - } - > - {siteTitle} -

{description}

-
- ) : ( - - - - - - - -

{siteTitle}

-
-
-
-
- )} -
+ + + {pageLocation !== '/' && ( + + + + )} + + + ); }; -Header.defaultProps = { - siteTitle: ``, -}; - export default Header; diff --git a/src/components/organisms/Masthead/__snapshots__/index.spec.tsx.snap b/src/components/organisms/Masthead/__snapshots__/index.spec.tsx.snap new file mode 100644 index 0000000..6463eb2 --- /dev/null +++ b/src/components/organisms/Masthead/__snapshots__/index.spec.tsx.snap @@ -0,0 +1,20 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Masthead snapshot 1`] = ` + + + + } +> + + blivesta + + + description + + +`; diff --git a/src/components/organisms/Masthead/index.spec.tsx b/src/components/organisms/Masthead/index.spec.tsx new file mode 100644 index 0000000..ab27449 --- /dev/null +++ b/src/components/organisms/Masthead/index.spec.tsx @@ -0,0 +1,11 @@ +import * as React from 'react'; +import { shallow } from 'enzyme'; +import toJson from 'enzyme-to-json'; +import Masthead from '.'; + +describe('Masthead', () => { + it('snapshot', () => { + const tree = shallow(); + expect(toJson(tree)).toMatchSnapshot(); + }); +}); diff --git a/src/components/organisms/Masthead/index.stories.tsx b/src/components/organisms/Masthead/index.stories.tsx new file mode 100644 index 0000000..bc21327 --- /dev/null +++ b/src/components/organisms/Masthead/index.stories.tsx @@ -0,0 +1,8 @@ +import React from 'react'; +// import styled from 'styled-components'; +import { storiesOf } from '@storybook/react'; +import Masthead from '.'; + +storiesOf(`organisms|Masthead`, module).add(`default`, () => ( + +)); diff --git a/src/components/organisms/Masthead/index.tsx b/src/components/organisms/Masthead/index.tsx new file mode 100644 index 0000000..dd94825 --- /dev/null +++ b/src/components/organisms/Masthead/index.tsx @@ -0,0 +1,59 @@ +import * as React from 'react'; +import { Link } from 'gatsby'; +import styled from 'styled-components'; + +import Logo from '../../atoms/Logo'; +import ContentBlock from '../../molecules/ContentBlock'; + +const H1 = styled.h1` + font-family: ${props => props.theme.fonts.avantGarde}; + font-weight: 700; + font-size: ${props => props.theme.fontSizes[7]}; + margin-top: -8px; + margin-bottom: ${props => props.theme.spaces[1]}; + line-height: 1; + letter-spacing: -0.025em; + text-indent: -0.025em; + + ${props => props.theme.media.sm` + font-size: ${props.theme.fontSizes[8]}; + `}; +`; + +const StyledLink = styled(Link)` + display: inline-block; + width: 100%; +`; + +const P = styled.p` + font-family: ${props => props.theme.fonts.en}; + font-size: ${props => props.theme.fontSizes[1]}; + color: ${props => props.theme.colors.baseText[2]}; + margin-bottom: 0; + + ${props => props.theme.media.sm` + font-size: ${props.theme.fontSizes[3]}; + `} +`; + +interface MastheadProps { + siteTitle: string; + description: string; +} + +const Masthead = ({ siteTitle, description }: MastheadProps) => { + return ( + + + + } + > +

{siteTitle}

+

{description}

+
+ ); +}; + +export default Masthead; diff --git a/src/components/organisms/NetlifyForm/__snapshots__/index.spec.tsx.snap b/src/components/organisms/NetlifyForm/__snapshots__/index.spec.tsx.snap index 8c7970c..cc375a9 100644 --- a/src/components/organisms/NetlifyForm/__snapshots__/index.spec.tsx.snap +++ b/src/components/organisms/NetlifyForm/__snapshots__/index.spec.tsx.snap @@ -19,7 +19,7 @@ exports[`NetlifyForm snapshot 1`] = ` /> - - + - @@ -43,12 +43,12 @@ exports[`NetlifyForm snapshot 1`] = ` name="company" type="text" /> - + - - + - @@ -73,10 +73,10 @@ exports[`NetlifyForm snapshot 1`] = ` name="phone" type="tel" /> - + - - +