'use client'; import React, { useTransition } from 'react'; import { Locale, useLocale } from 'next-intl'; import { SelectContent, SelectItem, SelectRoot, SelectTrigger, SelectValueText, } from '@/components/ui/collections/select'; import { useParams } from 'next/navigation'; import { createListCollection } from '@chakra-ui/react'; import { usePathname, useRouter } from '@/i18n/navigation'; const LocaleSwitcher = () => { const locale = useLocale(); const [isPending, startTransition] = useTransition(); const router = useRouter(); const pathname = usePathname(); const params = useParams(); const collections = createListCollection({ items: [ { label: 'English', value: 'en' }, { label: 'Türkçe', value: 'tr' }, ], }); function onSelectChange({ value }: { value: string[] }) { const nextLocale = value.at(0) as Locale; startTransition(() => { router.replace( // @ts-expect-error -- TypeScript will validate that only known `params` // are used in combination with a given `pathname`. Since the two will // always match for the current route, we can skip runtime checks. { pathname, params }, { locale: nextLocale }, ); }); } return ( {collections.items.map((collection) => ( {collection.label} ))} ); }; export default LocaleSwitcher;