Files
web/components/Current/Header/LanguageSwitcher/Mobile/index.tsx
2024-06-05 10:23:14 +02:00

57 lines
1.4 KiB
TypeScript

"use client"
import { useState } from "react"
import { Lang, languages } from "@/constants/languages"
import styles from "./mobile.module.css"
import type { LanguageSwitcherProps } from "@/types/components/current/languageSwitcher"
export default function Mobile({
currentLanguage,
urlObject,
}: LanguageSwitcherProps) {
const [isOpen, setIsOpen] = useState(false)
function toggleOpen() {
setIsOpen((prevIsOpen) => !prevIsOpen)
}
const urls = Object.keys(urlObject)
if (urls.length <= 1 && urls[0] === currentLanguage) {
return (
<div className={styles.languageSwitcher}>
{languages[currentLanguage]}{" "}
</div>
)
}
return (
<div>
<button
aria-pressed="false"
className={styles.languageSwitcher}
onClick={toggleOpen}
>
{languages[currentLanguage]}{" "}
<span className={`${styles.arrow} ${isOpen ? styles.open : ""}`}></span>
<span className={styles.hiddenAccessible}>Choose language</span>
</button>
<ul className={`${styles.dropdown} ${isOpen ? styles.isOpen : ""}`}>
{urls.map((key) => {
const url = urlObject[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>
)
}