registry:component
Language Dropdown
v0.1.0alpha
Globe icon dropdown for selecting the active language.
Registry Endpoint
Open JSONhttps://registry.aavya.com/r/language-dropdown.json
npx shadcn@latest add https://registry.aavya.com/r/language-dropdown.json
Live Preview
Dependencies
buttondropdown-menu
Usage Snippet
import LanguageDropdown from '@/components/blocks/language-dropdown.tsx'
export default function Example() {
return (
<div className="p-6">
<LanguageDropdown />
</div>
)
}
Source Preview
'use client'
import { Check, Globe } from 'lucide-react'
import { Button } from '@/components/ui/button'
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from '@/components/ui/dropdown-menu'
const languages = [
{ code: 'en', label: 'English', active: true },
{ code: 'fr', label: 'Français', active: false },
{ code: 'de', label: 'Deutsch', active: false },
{ code: 'es', label: 'Español', active: false },
]
export function LanguageDropdown() {
return (
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="ghost" size="icon" aria-label="Language">
<Globe className="h-4 w-4" />
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Language</DropdownMenuLabel>
<DropdownMenuSeparator />
{languages.map((lang) => (
<DropdownMenuItem key={lang.code} className="gap-2">
<span className="flex-1">{lang.label}</span>
{lang.active && <Check className="h-3.5 w-3.5 text-primary" />}
</DropdownMenuItem>
))}
</DropdownMenuContent>
</DropdownMenu>
)
}