mirror of
https://github.com/vercel/flags.git
synced 2026-09-19 03:49:23 +08:00
cf9ccd0076
* Scaffold Geistdocs instance * Update biome.json * Replace content * Re-path docs * Update docs package name * Misc fixes * Update geistdocs.tsx * Move content to correct folder * Start migrating custom components * Finish migrating custom components * Migrate existing redirects * Remove #next suffixes from code blocks * Migrate homepage and flags * Remove duplicate lockfiles * Start fixing homepage * Replace Geist components * Fix colors * Improve layout * Fix code blocks * Fix hero * Fix illustrations * Fix redirect * Fix nav links * Patch in FrameworkSwitcher * Bump Next.js in docs * Delete turbo.json * Misc fixes * More logo fixes
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>
|
|
);
|
|
};
|