import { useState } from 'react' import { useRouter } from 'next/router' import Link from 'next/link' import Image from 'next/image' import { cn } from '@lib/utils' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@components/ui/Dropdown/Dropdown' interface LOCALE_DATA { name: string img: { filename: string alt: string } } const LOCALES_MAP: Record = { sv: { name: 'Swedish', img: { filename: 'flag-sv.svg', alt: 'Swedish flag', }, }, nn: { name: 'Norwegian', img: { filename: 'flag-no.svg', alt: 'Norwegian flag', }, }, en: { name: 'English', img: { filename: 'flag-en.svg', alt: 'British flag', }, }, } interface I18nWidgetProps { translations: [] | any } const I18nWidget = ({ translations }: I18nWidgetProps) => { const [isOpen, setIsOpen] = useState(false) const { locale, locales, defaultLocale = 'sv' } = useRouter() const router = useRouter() const options: any = locales?.filter((val) => val !== locale) const currentLocale = locale || defaultLocale const handleClick = (e: any, locale: string) => { e.preventDefault() const parent = e.target if (parent.nodeName !== 'LI') { return } let href = '/' const hasChildLink = parent.querySelector('a').href !== null if (hasChildLink) { href = parent.querySelector('a').href } router.push({ pathname: href }, { pathname: href }, { locale: locale }) setIsOpen(false) } return ( setIsOpen(!isOpen)}>
    {options.map((locale: any) => { const translationLink = translations?.find( (item: object | any) => item.locale === locale ) return ( handleClick(e, locale)} >
  • setIsOpen(false)} > {LOCALES_MAP[locale].img.alt} {LOCALES_MAP[locale].name}
  • ) })}
) } export default I18nWidget