|
1 | 1 | import React from "react";
|
2 | 2 | import { useLocale } from "next-intl";
|
3 | 3 | import { useRouter } from "next-intl/client";
|
4 |
| -import { Dropdown, DropdownOption } from "@ltopx/lx-ui"; |
| 4 | +import { DropdownOption } from "@ltopx/lx-ui"; |
5 | 5 | import Icon from "@/components/icon";
|
6 | 6 | import { cn } from "@/lib";
|
7 | 7 | import { useOpenStore } from "@/hooks/useOpen";
|
| 8 | +import { |
| 9 | + DropdownMenu, |
| 10 | + DropdownMenuContent, |
| 11 | + DropdownMenuRadioGroup, |
| 12 | + DropdownMenuRadioItem, |
| 13 | + DropdownMenuTrigger, |
| 14 | +} from "@/components/ui/dropdown-menu"; |
8 | 15 |
|
9 | 16 | export const languages: DropdownOption[] = [
|
10 | 17 | { label: "🇺🇸 English", value: "en" },
|
@@ -34,28 +41,37 @@ export default function LanguageSelect({
|
34 | 41 | };
|
35 | 42 |
|
36 | 43 | return (
|
37 |
| - <Dropdown |
38 |
| - selectable |
39 |
| - side="top" |
40 |
| - options={languages} |
41 |
| - value={locale} |
42 |
| - onSelect={onLocaleChange} |
43 |
| - > |
44 |
| - <div className="flex flex-1 justify-center"> |
45 |
| - <div |
46 |
| - className={cn( |
47 |
| - "w-8 h-8 flex justify-center items-center cursor-pointer transition-colors rounded-md", |
48 |
| - "hover:bg-gray-200/60", |
49 |
| - "dark:hover:bg-slate-700/70" |
50 |
| - )} |
51 |
| - > |
52 |
| - {loadingChangeLang ? ( |
53 |
| - <Icon icon="loading_line" size={20} className="animate-spin" /> |
54 |
| - ) : ( |
55 |
| - <Icon icon="translate_2_line" size={24} /> |
56 |
| - )} |
| 44 | + <DropdownMenu> |
| 45 | + <DropdownMenuTrigger asChild> |
| 46 | + <div className="flex flex-1 justify-center"> |
| 47 | + <div |
| 48 | + className={cn( |
| 49 | + "w-8 h-8 flex justify-center items-center cursor-pointer transition-colors rounded-md", |
| 50 | + "hover:bg-gray-200/60", |
| 51 | + "dark:hover:bg-slate-700/70" |
| 52 | + )} |
| 53 | + > |
| 54 | + {loadingChangeLang ? ( |
| 55 | + <Icon icon="loading_line" size={20} className="animate-spin" /> |
| 56 | + ) : ( |
| 57 | + <Icon icon="translate_2_line" size={24} /> |
| 58 | + )} |
| 59 | + </div> |
57 | 60 | </div>
|
58 |
| - </div> |
59 |
| - </Dropdown> |
| 61 | + </DropdownMenuTrigger> |
| 62 | + <DropdownMenuContent> |
| 63 | + <DropdownMenuRadioGroup value={locale} onValueChange={onLocaleChange}> |
| 64 | + {languages.map((item) => ( |
| 65 | + <DropdownMenuRadioItem |
| 66 | + className="cursor-pointer" |
| 67 | + key={item.value} |
| 68 | + value={item.value} |
| 69 | + > |
| 70 | + {item.label} |
| 71 | + </DropdownMenuRadioItem> |
| 72 | + ))} |
| 73 | + </DropdownMenuRadioGroup> |
| 74 | + </DropdownMenuContent> |
| 75 | + </DropdownMenu> |
60 | 76 | );
|
61 | 77 | }
|
0 commit comments