@@ -10,7 +10,8 @@ import { auth } from "../../utils/firebase";
1010import toast from "react-hot-toast" ;
1111
1212// icon
13- import { FaShapes } from "react-icons/fa" ;
13+ import { FiPower , FiX } from "react-icons/fi" ;
14+ import ImgLogo from '../../public/images/img-logo.svg'
1415
1516// Bootstrap
1617import Button from "react-bootstrap/Button" ;
@@ -32,51 +33,82 @@ const AppHeader = styled.div`
3233 width: 100%;
3334 padding: 0.6rem 0.8rem;
3435 background-color: var(--color-brand);
36+ ` ;
3537
36- .navbar-action--primary {
37- padding: 0.3rem 1rem;
38- border: solid 1px var(--color-primary-accent);
39- background-color: var(--color-primary-accent);
40- font-size: var(--fs-sm);
41- font-weight: var(--fw-bold);
42- color: var(--color-neutral-90);
43-
44- svg {
45- margin: -2px 0.6rem 0 0;
46- }
47-
48- &:hover,
49- &:focus {
50- border: solid 1px var(--color-neutral-10);
51- background-color: var(--color-neutral-10);
52- color: var(--color-brand);
53- }
54-
55- &:active {
56- background-color: rgba(var(--color-neutral-10-rgb), 90%) !important;
57- color: var(--color-brand) !important;
58- }
59- }
38+ const Logo = styled . h1 `
39+ width: 140px;
40+ height: 32px;
41+ background-image: url(${ ImgLogo } );
42+ background-repeat: no-repeat;
43+ background-size: contain;
44+ background-position: center;
45+ padding: 0;
46+ margin: 2px 0 0 -8px;
47+ line-height: 1;
48+ cursor: pointer;
6049` ;
6150
6251const NavbarSearchInput = styled ( InputGroup ) `
52+ position: relative;
6353 width: 60% !important;
6454 border-radius: 0.4rem;
6555 background-color: rgba(var(--color-neutral-100-rgb), 0.3);
56+
57+ &:focus-within {
58+ box-shadow: 0 0 0 0.1rem rgba(var(--color-neutral-10-rgb), 40%);
59+ background-color: rgba(var(--color-neutral-100-rgb), 0.4);
60+ }
6661` ;
6762
6863const NavbarSearchInputText = styled ( InputGroup . Text ) `
64+ position: absolute;
65+ top: 3px;
66+ left: 0;
6967 background-color: transparent !important;
7068 border: 0 !important;
7169` ;
7270
7371const NavbarSearchInputControl = styled ( FormControl ) `
74- background-color: transparent !important;
72+ border-radius: 0.4rem !important;
7573 border: 0 !important;
74+ background-color: transparent !important;
7675 color: var(--color-neutral-10) !important;
76+ padding-left: 2.4rem !important;
77+ font-size: var(--fs-rg) !important;
78+ ::placeholder {
79+ color: rgba(var(--color-neutral-10-rgb), 0.6) !important;
80+ }
81+ ` ;
82+
83+ const CloseIcon = styled ( FiX ) `
84+ margin: 0.36rem;
7785` ;
7886
79- InputGroup
87+ const UserThumb = styled . div `
88+ display: flex;
89+ grid-gap: 0.4rem;
90+ align-items: center;
91+
92+ img {
93+ width: 28px;
94+ height: 28px;
95+ border-radius: 50%;
96+ }
97+ ` ;
98+
99+ const UserThumbName = styled . div `
100+ font-size: var(--fs-sm);
101+ color: var(--color-neutral-10);
102+ line-height: 1;
103+ ` ;
104+
105+ const LogoutButton = styled ( Button ) `
106+ color: var(--color-neutral-10);
107+ ` ;
108+
109+ const LoginBar = styled . div `
110+ display: flex;
111+ ` ;
80112
81113const Header = ( { setOpen, user, setUser } ) => {
82114 // console.log(user);
@@ -97,41 +129,42 @@ const Header = ({ setOpen, user, setUser }) => {
97129 return (
98130 < AppHeader >
99131 < Link href = "/" >
100- < a >
101- TryShape
102- < span >
103- < FaShapes />
104- </ span >
105- </ a >
132+ < Logo >
133+ < div className = "sr-only" > TryShape</ div >
134+ </ Logo >
106135 </ Link >
107136 < NavbarSearchInput >
108- < NavbarSearchInputText id = "basic-addon1" > < FiSearch color = 'white' /> </ NavbarSearchInputText >
137+ < NavbarSearchInputText id = "basic-addon1" > < FiSearch color = 'white' size = '18px' /> </ NavbarSearchInputText >
109138 < NavbarSearchInputControl
110139 placeholder = "Search a shape"
111140 aria-label = "Search a shape"
112141 aria-describedby = "basic-addon1"
113142 />
143+ < CloseIcon color = '#ffffff' size = '24px' />
114144 </ NavbarSearchInput >
115145 { ( user . email || user . displayName ) ? (
116146 < >
117- < div >
118- < img
119- src = {
120- user . photoURL
121- ? user . photoURL
122- : `https://unavatar.vercel.app/${ user . email } `
123- }
124- alt = "profile"
125- />
126- { user . displayName ? user . displayName : "User" }
127- </ div >
128-
129- < Button onClick = { signOut } >
130- < div > Sign Out</ div >
131- </ Button >
147+ < LoginBar >
148+ < UserThumb >
149+ < img
150+ src = {
151+ user . photoURL
152+ ? user . photoURL
153+ : `https://unavatar.vercel.app/${ user . email } `
154+ }
155+ alt = "profile"
156+ />
157+ < UserThumbName > { user . displayName ? user . displayName : "User" } </ UserThumbName >
158+ </ UserThumb >
159+
160+ < LogoutButton onClick = { signOut } variant = "link" className = "btn-icon" >
161+ < FiPower color = 'var(--color-neutral-10' size = "18px" />
162+ < div className = "sr-only" > Sign Out</ div >
163+ </ LogoutButton >
164+ </ LoginBar >
132165 </ >
133166 ) : (
134- < Button onClick = { ( ) => setOpen ( true ) } className = "navbar-action--primary" >
167+ < Button variant = "outline-secondary" size = "sm" onClick = { ( ) => setOpen ( true ) } >
135168 < div > Sign In</ div >
136169 </ Button >
137170 ) }
0 commit comments