Showing
2 changed files
with
56 additions
and
2 deletions
1 | import React from "react"; | 1 | import React from "react"; |
2 | import styled from "styled-components"; | 2 | import styled from "styled-components"; |
3 | -import { Link } from "react-router-dom"; | ||
4 | import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; | 3 | import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; |
5 | import { faArrowRight } from "@fortawesome/free-solid-svg-icons"; | 4 | import { faArrowRight } from "@fortawesome/free-solid-svg-icons"; |
5 | +import { BrowserRouter as Router, Link } from "react-router-dom"; | ||
6 | 6 | ||
7 | const Wrapper = styled.div` | 7 | const Wrapper = styled.div` |
8 | display: flex; | 8 | display: flex; |
... | @@ -63,18 +63,52 @@ const CreateContainer = styled.div` | ... | @@ -63,18 +63,52 @@ const CreateContainer = styled.div` |
63 | box-shadow: 0 -4px 4px rgba(0, 0, 0, 0.04); | 63 | box-shadow: 0 -4px 4px rgba(0, 0, 0, 0.04); |
64 | `; | 64 | `; |
65 | 65 | ||
66 | +const StyledLink = styled(Link)` | ||
67 | + width: 100%; | ||
68 | + display: flex; | ||
69 | + flex-direction: row; | ||
70 | + justify-content: space-between; | ||
71 | + align-items: center; | ||
72 | + text-decoration: none; | ||
73 | + cursor: pointer; | ||
74 | + color: #079992; | ||
75 | + svg { | ||
76 | + color: #079992; | ||
77 | + &:hover { | ||
78 | + border-bottom: 1px solid #079992; | ||
79 | + } | ||
80 | + } | ||
81 | + li { | ||
82 | + color: black; | ||
83 | + &:hover { | ||
84 | + color: #079992; | ||
85 | + } | ||
86 | + } | ||
87 | + span { | ||
88 | + &:hover { | ||
89 | + border-bottom: 1px solid #079992; | ||
90 | + } | ||
91 | + } | ||
92 | +`; | ||
93 | + | ||
66 | export default () => { | 94 | export default () => { |
67 | return ( | 95 | return ( |
96 | + <Router> | ||
68 | <Wrapper> | 97 | <Wrapper> |
69 | <ChannelContainer> | 98 | <ChannelContainer> |
70 | <ChannelList> | 99 | <ChannelList> |
100 | + <StyledLink to="/"> | ||
71 | <ChannelItem>First Channel</ChannelItem> | 101 | <ChannelItem>First Channel</ChannelItem> |
72 | <FontAwesomeIcon icon={faArrowRight} /> | 102 | <FontAwesomeIcon icon={faArrowRight} /> |
103 | + </StyledLink> | ||
73 | </ChannelList> | 104 | </ChannelList> |
74 | </ChannelContainer> | 105 | </ChannelContainer> |
75 | <CreateContainer> | 106 | <CreateContainer> |
76 | - <Link to="/">Create New Channel</Link> | 107 | + <StyledLink to="/"> |
108 | + <span>Create New Channel</span> | ||
109 | + </StyledLink> | ||
77 | </CreateContainer> | 110 | </CreateContainer> |
78 | </Wrapper> | 111 | </Wrapper> |
112 | + </Router> | ||
79 | ); | 113 | ); |
80 | }; | 114 | }; | ... | ... |
... | @@ -2,6 +2,15 @@ import React from "react"; | ... | @@ -2,6 +2,15 @@ import React from "react"; |
2 | import styled from "styled-components"; | 2 | import styled from "styled-components"; |
3 | import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; | 3 | import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; |
4 | import { faComments, faSignOutAlt } from "@fortawesome/free-solid-svg-icons"; | 4 | import { faComments, faSignOutAlt } from "@fortawesome/free-solid-svg-icons"; |
5 | +import { gql } from "apollo-boost"; | ||
6 | +import { useMutation } from "@apollo/react-hooks"; | ||
7 | +import { BrowserRouter as Router, Link } from "react-router-dom"; | ||
8 | + | ||
9 | +const LOG_OUT = gql` | ||
10 | + mutation logUserOut { | ||
11 | + logUserOut @client | ||
12 | + } | ||
13 | +`; | ||
5 | 14 | ||
6 | const HeaderContainer = styled.div` | 15 | const HeaderContainer = styled.div` |
7 | display: flex; | 16 | display: flex; |
... | @@ -33,7 +42,14 @@ const HeaderSpan = styled.span` | ... | @@ -33,7 +42,14 @@ const HeaderSpan = styled.span` |
33 | font-size: 30px; | 42 | font-size: 30px; |
34 | `; | 43 | `; |
35 | 44 | ||
45 | +const StyledLink = styled(Link)` | ||
46 | + text-decoration: none; | ||
47 | + color: white; | ||
48 | + cursor: pointer; | ||
49 | +`; | ||
50 | + | ||
36 | export default ({ text }) => { | 51 | export default ({ text }) => { |
52 | + const [logOut] = useMutation(LOG_OUT); | ||
37 | return ( | 53 | return ( |
38 | <HeaderContainer> | 54 | <HeaderContainer> |
39 | <TitleBox> | 55 | <TitleBox> |
... | @@ -41,7 +57,11 @@ export default ({ text }) => { | ... | @@ -41,7 +57,11 @@ export default ({ text }) => { |
41 | <HeaderSpan>{text}</HeaderSpan> | 57 | <HeaderSpan>{text}</HeaderSpan> |
42 | </TitleBox> | 58 | </TitleBox> |
43 | <TitleBox> | 59 | <TitleBox> |
60 | + <Router> | ||
61 | + <StyledLink to="/" onClick={logOut}> | ||
44 | <FontAwesomeIcon icon={faSignOutAlt} /> | 62 | <FontAwesomeIcon icon={faSignOutAlt} /> |
63 | + </StyledLink> | ||
64 | + </Router> | ||
45 | </TitleBox> | 65 | </TitleBox> |
46 | </HeaderContainer> | 66 | </HeaderContainer> |
47 | ); | 67 | ); | ... | ... |
-
Please register or login to post a comment