11import { useTranslation } from "react-i18next" ;
22import { signIn , signOut } from "common/src/browserHelpers" ;
33import { useSession } from "@/hooks/auth" ;
4- import { Header , IconStar , IconUser , Logo , TitleStyleType } from "hds-react" ;
4+ import {
5+ Header ,
6+ IconSignout ,
7+ IconStar ,
8+ IconUser ,
9+ TitleStyleType ,
10+ } from "hds-react" ;
511import React from "react" ;
612import styled from "styled-components" ;
713import { useLocation } from "react-router-dom" ;
814import useHandling from "@/hooks/useHandling" ;
915import usePermission from "@/hooks/usePermission" ;
1016import { Permission } from "@/modules/permissionHelper" ;
11- import IconPremises from "common/src/icons/IconPremises " ;
17+ import Logo from "common/src/components/Logo " ;
1218import { env } from "@/env.mjs" ;
1319
1420type Props = {
1521 apiBaseUrl : string ;
1622} ;
1723
18- const ActionBar = styled ( Header . ActionBar ) `
19- background: var(--color-bus);
24+ const BackgroundHeader = styled ( Header ) `
25+ --header-color: black;
26+ --actionbar-background-color: var(--color-bus-dark);
27+ --notification-bubble-background-color: var(
28+ --tilavaraus-admin-handling-count-color
29+ );
30+ #user-menu-dropdown {
31+ color: black;
32+ button,
33+ span,
34+ div {
35+ display: flex;
36+ justify-content: space-between;
37+ width: 100%;
38+ }
39+ svg {
40+ color: var(--header-color);
41+ }
42+ }
43+ #user-menu {
44+ > button span {
45+ color: white !important;
46+ svg {
47+ color: white;
48+ }
49+ }
50+ }
51+ #hds-mobile-menu {
52+ #user-menu * {
53+ color: var(--header-color);
54+ box-sizing: border-box;
55+ }
56+ ul > li {
57+ > span {
58+ padding: var(--spacing-s);
59+ li {
60+ width: 100%;
61+ font-size: var(--fontsize-body-xl);
62+ }
63+ }
2064
21- --action-bar-item-title-font-color: white;
65+ /* hide the big link to frontpage which HDS adds by default */
66+ &:first-child {
67+ display: none;
68+ }
69+ }
70+ }
71+ ` ;
72+
73+ const ActionBar = styled ( Header . ActionBar ) `
2274 [class*="HeaderActionBar-module_title"] {
2375 color: white;
2476 }
25- #user-menu > button {
77+ [class*="icon_hds-icon"] {
2678 color: white;
2779 }
28- #user-menu-dropdown {
29- color: black;
30-
31- --action-bar-item-title-font-color: black;
32- }
3380` ;
3481
3582const NavigationMenuWrapper = styled . div `
36- --notification-bubble-background-color: var(
37- --tilavaraus-admin-handling-count-color
38- );
3983 span:has(.active) {
4084 /* using box-shadow for a bottom border inside of the element, without affecting text positioning */
4185 box-shadow: 0 -4px 0 0 var(--color-black) inset;
4286 }
43-
44- /* We only want underline on the label text, not the text in the bubble */
45- a:hover {
46- text-decoration: none;
47- span:first-child {
48- text-decoration: underline;
49- }
50- }
5187` ;
5288
5389interface IMenuChild {
@@ -62,12 +98,6 @@ const getFilteredMenu = (
6298 hasOwnUnits : boolean ,
6399 hasPermission : ( perm : Permission ) => boolean
64100) : IMenuChild [ ] => [
65- {
66- title : "MainMenu.home" ,
67- icon : < IconPremises aria-hidden /> ,
68- route : "/" ,
69- exact : true ,
70- } ,
71101 ...( hasOwnUnits
72102 ? [
73103 {
@@ -143,7 +173,6 @@ function NavigationLink({
143173 const shouldDisplayCount =
144174 title === t ( "MainMenu.requestedReservations" ) && count && count > 0 ;
145175 const isActive = exact ? pathname === href : pathname . startsWith ( href ) ;
146-
147176 return (
148177 < Header . ActionBarSubItem
149178 key = { href }
@@ -171,26 +200,16 @@ const Navigation = ({ apiBaseUrl }: Props) => {
171200 ( item ) => item != null
172201 ) ;
173202
174- const base64Logo =
175- "data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNzggMzYiIHRpdGxlPSJIZWxzaW5naW4ga2F1cHVua2kiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoCiAgICAgICAgZD0iTTc1Ljc1MyAyLjI1MXYyMC43YzAgMy45NS0zLjI3NSA3LjE3OC03LjMxIDcuMTc4aC0yMi4yNmMtMi42NzQgMC01LjIwNS45Ni03LjE4MyAyLjczOWExMC43NDkgMTAuNzQ5IDAgMDAtNy4xODMtMi43NEg5LjUwOWMtNC4wMDMgMC03LjI0Ny0zLjIxLTcuMjQ3LTcuMTc3VjIuMjVoNzMuNDkxek00MC4xODcgMzQuODM1YTguNDcgOC40NyAwIDAxNi4wMTItMi40NzFoMjIuMjQ1YzUuMjY4IDAgOS41NTYtNC4yMTkgOS41NTYtOS40MTNWMEgwdjIyLjkzNWMwIDUuMTk0IDQuMjU2IDkuNDEzIDkuNTA5IDkuNDEzaDIyLjMwOGMyLjI2MyAwIDQuMzk4Ljg4MiA2LjAxMiAyLjQ3MUwzOS4wMTYgMzZsMS4xNy0xLjE2NXoiCiAgICAgICAgZmlsbD0iY3VycmVudENvbG9yIiAvPgogICAgPHBhdGgKICAgICAgICBkPSJNNjcuNTIyIDExLjY3NmMwIC42ODEtLjU1NiAxLjE3Ny0xLjI1NSAxLjE3Ny0uNyAwLTEuMjU1LS40OTYtMS4yNTUtMS4xNzcgMC0uNjgyLjU1Ni0xLjE3OCAxLjI1NS0xLjE3OC43LS4wMyAxLjI1NS40NjUgMS4yNTUgMS4xNzh6bS0yLjM1MiA5LjYyMmgyLjE3OHYtNy41NDZINjUuMTd2Ny41NDZ6bS0zLjkwOS00LjU1NmwyLjg0NSA0LjU1NmgtMi4zNjhsLTEuOTA3LTMuMDIyLTEuMDMzIDEuMjcxdjEuNzVoLTIuMTYxVjEwLjQ1M2gyLjE2djUuMDA0YzAgLjkzLS4xMSAxLjg2LS4xMSAxLjg2aC4wNDdzLjUwOS0uODIxLjkzOC0xLjQxbDEuNjUzLTIuMTU0aDIuNTQybC0yLjYwNiAyLjk5em0tNi44MTctLjI3OGMwLTEuODc1LS45MzgtMi44OTgtMi40MzItMi44OTgtMS4yNzEgMC0xLjkzOS43MjgtMi4zMiAxLjQyNmgtLjA0OGwuMTEyLTEuMjRoLTIuMTYydjcuNTQ2aDIuMTYyVjE2LjgyYzAtLjg2OC41MjQtMS40NzIgMS4zMzUtMS40NzIuODEgMCAxLjE2LjUyNyAxLjE2IDEuNTM0djQuNDE2aDIuMTc3bC4wMTYtNC44MzR6bS04LjkzMS00Ljc4OGMwIC42ODEtLjU1NyAxLjE3Ny0xLjI1NiAxLjE3Ny0uNyAwLTEuMjU1LS40OTYtMS4yNTUtMS4xNzcgMC0uNjgyLjU1Ni0xLjE3OCAxLjI1NS0xLjE3OC43MTUtLjAzIDEuMjU2LjQ2NSAxLjI1NiAxLjE3OHptLTIuMzUyIDkuNjIyaDIuMTc3di03LjU0Nkg0My4xNnY3LjU0NnptLTMuNzUtMi4xMDdjMC0uNjA1LS44NTktLjcyOS0xLjg2LTEuMDA4LTEuMTYtLjI5NC0yLjYyMi0uODY3LTIuNjIyLTIuMzA4IDAtMS40MjYgMS4zOTgtMi4zMjQgMy4wNTEtMi4zMjQgMS41NDEgMCAyLjk1Ni43MTIgMy41NDQgMS43MmwtMS44NiAxLjAyMmMtLjE5LS42NjYtLjc2Mi0xLjE5My0xLjYyLTEuMTkzLS41NTcgMC0xLjAxOC4yMzItMS4wMTguNjgyIDAgLjU3MyAxLjAxOC42MzUgMi4xNjIuOTkxIDEuMjA4LjM3MiAyLjMyLjkxNSAyLjMyIDIuMjk0IDAgMS41MTgtMS40NDYgMi40MTctMy4xMTUgMi40MTctMS44MTEgMC0zLjI0Mi0uNzQ0LTMuODc3LTEuOTUybDEuODktMS4wMzljLjI0LjgyMi45MjIgMS40NDEgMS45NTUgMS40NDEuNjIgMCAxLjA1LS4yNDggMS4wNS0uNzQzem0tNi44ODItOC42NzdoLTIuMTc3djguNjkyYzAgLjc3NS4xNzUgMS4zNDguNTA5IDEuNzA1LjM1LjM1Ni44OS41MjYgMS42MzYuNTI2LjI1NSAwIC41MjUtLjAzLjc4LS4wNzcuMjctLjA2Mi40NzYtLjE0LjY1LS4yMzNsLjE5MS0xLjQyNWEyLjA3IDIuMDcgMCAwMS0uNDYuMTI0Yy0uMTI4LjAzLS4yODcuMDMtLjQ2MS4wMy0uMjg2IDAtLjQxNC0uMDc3LS41MDktLjIxNi0uMTExLS4xNC0uMTU5LS4zODctLjE1OS0uNzQ0di04LjM4MnptLTcuMjQ2IDQuNTdjLS43OTUgMC0xLjQ0Ni41NTgtMS42MjEgMS41ODFoMy4wNWMuMDE3LS44OTktLjU4Ny0xLjU4LTEuNDMtMS41OHptMy4zNTMgMy4wMDdIMjMuNjNjLjA5NSAxLjIyNC43OTQgMS44MjggMS43IDEuODI4LjgxIDAgMS4zNjctLjUyNyAxLjQ5NC0xLjI0bDEuODI4IDEuMDA3Yy0uNTQuOTYxLTEuNyAxLjc5OC0zLjMyMiAxLjc5OC0yLjE2IDAtMy43NS0xLjQ3Mi0zLjc1LTMuOTUxIDAtMi40NjQgMS42Mi0zLjk1MSAzLjcwMy0zLjk1MSAyLjA4MSAwIDMuNDY0IDEuNDQgMy40NjQgMy40ODYtLjAxNi42MDQtLjExMSAxLjAyMy0uMTExIDEuMDIzem0tMTEuMDc3IDMuMjA3aDIuMjU3VjEwLjkxNmgtMi4yNTd2NC4xMDdoLTQuMjQzdi00LjA5MUgxMS4wNnYxMC4zNjZoMi4yNTZ2LTQuMjkyaDQuMjQzdjQuMjkyeiIKICAgICAgICBmaWxsPSJjdXJyZW50Q29sb3IiIC8+Cjwvc3ZnPg==" ;
176-
177203 return (
178- < Header >
204+ < BackgroundHeader >
179205 < ActionBar
180206 title = { t ( "common:applicationName" ) }
181207 titleAriaLabel = { t ( "common:applicationName" ) }
182208 frontPageLabel = { t ( "common:gotoFrontpage" ) }
183209 titleStyle = { TitleStyleType . Bold }
184- titleHref = "/"
210+ titleHref = { env . NEXT_PUBLIC_BASE_URL ?? "/" }
185211 openFrontPageLinksAriaLabel = { t ( "common:applicationName" ) }
186- logo = {
187- < Logo
188- alt = { t ( "common:applicationName" ) }
189- size = "large"
190- src = { base64Logo }
191- style = { { filter : "invert(1)" } }
192- />
193- }
212+ logo = { < Logo size = "large" style = { { filter : "invert(1)" } } /> }
194213 logoAriaLabel = { `${ t ( "common:applicationName" ) } logo` }
195214 logoHref = { env . NEXT_PUBLIC_BASE_URL }
196215 >
@@ -199,10 +218,15 @@ const Navigation = ({ apiBaseUrl }: Props) => {
199218 id = "user-menu"
200219 label = { name }
201220 icon = { < IconUser /> }
202- style = { { color : "white" } }
221+ fixedRightPosition
203222 >
204223 < Header . ActionBarButton
205- label = { t ( "Navigation.logout" ) }
224+ label = {
225+ < >
226+ < span > { t ( "Navigation.logout" ) } </ span >
227+ < IconSignout />
228+ </ >
229+ }
206230 onClick = { ( ) => signOut ( apiBaseUrl ) }
207231 />
208232 </ Header . ActionBarItem >
@@ -226,7 +250,7 @@ const Navigation = ({ apiBaseUrl }: Props) => {
226250 ) ) }
227251 </ Header . NavigationMenu >
228252 </ NavigationMenuWrapper >
229- </ Header >
253+ </ BackgroundHeader >
230254 ) ;
231255} ;
232256
0 commit comments