fix: update design of header

This commit is contained in:
Christel Westerberg
2024-05-27 16:43:56 +02:00
parent a83bdb21fe
commit da70b29359
11 changed files with 301 additions and 199 deletions

View File

@@ -1,21 +1,76 @@
.container {
position: relative;
font-family:
Helvetica Neue,
Helvetica,
Arial,
sans-serif;
}
.toggle {
display: flex;
color: #fff;
padding: 3px 15px;
font-size: 14px;
border: none;
background-color: transparent;
margin: 0 auto;
cursor: pointer;
gap: 4px;
align-items: center;
}
.hiddenAccessible {
display: block;
position: absolute;
left: -100000em;
top: auto;
width: 1px;
height: 1px;
overflow: hidden;
}
.caret {
display: inline-block;
width: 0;
height: 0;
margin-left: 2px;
vertical-align: middle;
border-top: 5px dashed;
border-right: 5px solid transparent;
border-left: 5px solid transparent;
}
.icon {
width: 18px;
height: 18px;
vertical-align: -4px;
margin-right: 3px;
fill: #fff;
}
.dropdown {
background-clip: padding-box;
background-color: #fff;
border: 1px solid rgba(0, 0, 0, .15);
border-radius: 4px;
box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
position: absolute;
top: 100%;
left: 0;
z-index: 100;
display: none;
float: left;
font-size: 1rem;
left: 0;
list-style: none;
margin: 2px 0 0;
min-width: 160px;
padding: 5px 0;
position: absolute;
margin: 2px 0 0;
list-style: none;
font-size: 16px;
text-align: left;
top: 100%;
z-index: 11;
background-color: #fff;
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 4px;
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
background-clip: padding-box;
}
.li {
cursor: pointer;
}
.dropdown.isOpen {
@@ -37,9 +92,9 @@
text-decoration: none;
}
.active>.link {
.active > .link {
background-color: #00838e;
color: #fff;
outline: 0;
text-decoration: none;
}
}

View File

@@ -1,7 +1,7 @@
"use client"
import { useCallback, useEffect, useRef, useState } from "react"
import { languages } from "@/constants/languages"
import { Lang, languages } from "@/constants/languages"
import styles from "./desktop.module.css"
@@ -39,80 +39,35 @@ export default function Desktop({
}, [close])
return (
<div className="dropdown-container navbar-language-selector " ref={divRef}>
<div className={styles.container} ref={divRef}>
<button
aria-pressed="false"
className="navbar-language-selector__toggler"
data-js="dropdown-toggler"
className={styles.toggle}
onClick={toggleOpen}
>
<svg
focusable="false"
className="icon icon--xs icon--white"
viewBox="0 0 32 32"
>
<svg focusable="false" className={styles.icon} viewBox="0 0 32 32">
<use xlinkHref="/_static/img/icons/sprites.svg#icon-globe"></use>
</svg>
{currentLanguage}
<span className="hidden--accessible">Choose language</span>
<span className="caret"></span>
{languages[currentLanguage]}
<span className={styles.hiddenAccessible}>Choose language</span>
<span className={styles.caret}></span>
</button>
<ul className={`${styles.dropdown} ${isOpen ? styles.isOpen : ""}`}>
<li
className={
currentLanguage === languages.en ? styles.active : undefined
{Object.keys(urls).map((key) => {
const url = urls[key as Lang]?.url
if (url) {
return (
<li
key={key}
className={`${styles.li} ${currentLanguage === key ? styles.active : ""}`}
>
<a className={styles.link} href={url}>
{languages[key as Lang]}
</a>
</li>
)
}
>
<a className={styles.link} href={urls.en?.url}>
{languages.en}
</a>
</li>
<li
className={
currentLanguage === languages.sv ? styles.active : undefined
}
>
<a className={styles.link} href={urls.sv?.url}>
{languages.sv}
</a>
</li>
<li
className={
currentLanguage === languages.no ? styles.active : undefined
}
>
<a className={styles.link} href={urls.no?.url}>
{languages.no}
</a>
</li>
{/* When we have 6 languages in Contenstack, danish url should come from urls.da?.url */}
<li
className={
currentLanguage === languages.da ? styles.active : undefined
}
>
<a className={styles.link} href="https://www.scandichotels.dk/">
{languages.da}
</a>
</li>
<li
className={
currentLanguage === languages.fi ? styles.active : undefined
}
>
<a className={styles.link} href={urls.fi?.url}>
{languages.fi}
</a>
</li>
<li
className={
currentLanguage === languages.de ? styles.active : undefined
}
>
<a className={styles.link} href={urls.de?.url}>
{languages.de}
</a>
</li>
})}
</ul>
</div>
)

View File

@@ -1,7 +1,7 @@
"use client"
import { useState } from "react"
import { languages } from "@/constants/languages"
import { Lang, languages } from "@/constants/languages"
import styles from "./mobile.module.css"
@@ -14,42 +14,33 @@ export default function Mobile({
const [isOpen, setIsOpen] = useState(false)
function toggleOpen() {
setIsOpen(prevIsOpen => !prevIsOpen)
setIsOpen((prevIsOpen) => !prevIsOpen)
}
return (
<div className="navbar-language-selector">
<div>
<button
aria-pressed="false"
className="navbar-language-selector__toggler "
data-js="collapsible-toggler"
data-target="language-menu"
className={styles.toggle}
onClick={toggleOpen}
>
{currentLanguage}{" "}
{languages[currentLanguage]}{" "}
<span className={`${styles.arrow} ${isOpen ? styles.open : ""}`}></span>
<span className="hidden--accessible">Choose language</span>
<span className={styles.hiddenAccessible}>Choose language</span>
</button>
<ul className={`${styles.dropdown} ${isOpen ? styles.isOpen : ""}`} data-collapsable="language-menu">
<li className={`navbar-language-selector__item ${currentLanguage === languages.en ? "is-active" : ""}`}>
<a href={urls.en?.url}>{languages.en}</a>
</li>
<li className={`navbar-language-selector__item ${currentLanguage === languages.sv ? "is-active" : ""}`}>
<a href={urls.sv?.url}>{languages.sv}</a>
</li>
<li className={`navbar-language-selector__item ${currentLanguage === languages.no ? "is-active" : ""}`}>
<a href={urls.no?.url}>{languages.no}</a>
</li>
{/* When we have 6 languages in Contenstack, danish url should come from urls.da?.url */}
<li className={`navbar-language-selector__item ${currentLanguage === languages.da ? "is-active" : ""}`}>
<a href="https://www.scandichotels.dk/">{languages.da}</a>
</li>
<li className={`navbar-language-selector__item ${currentLanguage === languages.fi ? "is-active" : ""}`}>
<a href={urls.fi?.url}>{languages.fi}</a>
</li>
<li className={`navbar-language-selector__item ${currentLanguage === languages.de ? "is-active" : ""}`}>
<a href={urls.de?.url}>{languages.de}</a>
</li>
<ul className={`${styles.dropdown} ${isOpen ? styles.isOpen : ""}`}>
{Object.keys(urls).map((key) => {
const url = urls[key as Lang]?.url
if (url) {
return (
<li key={key} className={styles.li}>
<a href={url} className={styles.link}>
{languages[key as Lang]}
</a>
</li>
)
}
})}
</ul>
</div>
)

View File

@@ -1,3 +1,35 @@
.toggle {
font-size: 14px;
padding: 5px 0;
display: block;
border: none;
background-color: transparent;
margin: 0 auto;
color: #333;
}
.hiddenAccessible {
display: block;
position: absolute;
left: -100000em;
top: auto;
width: 1px;
height: 1px;
overflow: hidden;
}
.li {
list-style: none;
font-size: 14px;
font-family: Helvetica, Arial, sans-serif;
}
.link {
color: #333;
text-decoration: none;
line-height: 22.4px;
}
.dropdown {
display: none;
}