mirror of
https://github.com/vercel/components.build.git
synced 2026-09-14 20:06:39 +08:00
55fae375a4
* Update Geistdocs * Update geistdocs.tsx * Run translation script * Delete toc.tsx * Update route.ts * Update route.ts
44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
"use client";
|
|
|
|
import { useI18n } from "fumadocs-ui/contexts/i18n";
|
|
import { CheckIcon, LanguagesIcon } from "lucide-react";
|
|
import {
|
|
DropdownMenu,
|
|
DropdownMenuContent,
|
|
DropdownMenuItem,
|
|
DropdownMenuTrigger,
|
|
} from "@/components/ui/dropdown-menu";
|
|
|
|
export const LanguageSelector = () => {
|
|
const { locale, locales, onChange } = useI18n();
|
|
|
|
if (!locales) {
|
|
return null;
|
|
}
|
|
|
|
return (
|
|
<DropdownMenu>
|
|
<DropdownMenuTrigger
|
|
aria-label="Select language"
|
|
className="flex items-center justify-center rounded-md p-2 hover:bg-muted"
|
|
>
|
|
<LanguagesIcon className="size-4.5" />
|
|
<span className="sr-only">Select language</span>
|
|
</DropdownMenuTrigger>
|
|
<DropdownMenuContent align="end">
|
|
{locales.map((lang) => (
|
|
<DropdownMenuItem
|
|
className="flex cursor-pointer items-center justify-between"
|
|
disabled={locale === lang.locale}
|
|
key={lang.locale}
|
|
onClick={() => onChange?.(lang.locale)}
|
|
>
|
|
{lang.name}
|
|
{locale === lang.locale && <CheckIcon className="size-4" />}
|
|
</DropdownMenuItem>
|
|
))}
|
|
</DropdownMenuContent>
|
|
</DropdownMenu>
|
|
);
|
|
};
|