Skip to content

Commit 0620242

Browse files
committed
Use icon button for theme/language settings
1 parent 688d44d commit 0620242

File tree

1 file changed

+70
-44
lines changed

1 file changed

+70
-44
lines changed

src/FE/components/settings/tabs/GeneralTab.tsx

Lines changed: 70 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,7 @@ import { toFixed } from '@/utils/common';
88

99
import { IconDesktop, IconMoon, IconSun } from '@/components/Icons';
1010
import { Card, CardContent } from '@/components/ui/card';
11-
import {
12-
Select,
13-
SelectContent,
14-
SelectItem,
15-
SelectTrigger,
16-
SelectValue,
17-
} from '@/components/ui/select';
11+
import { cn } from '@/lib/utils';
1812

1913
import { getUserBalanceOnly } from '@/apis/clientApis';
2014

@@ -44,49 +38,81 @@ const GeneralTab = () => {
4438
<div className="flex min-h-10 flex-col sm:flex-row sm:items-center sm:justify-between gap-2">
4539
<div className="font-medium min-w-[80px]">{t('Theme')}</div>
4640
<div className="max-w-xs w-full">
47-
<Select value={theme} onValueChange={(value) => setTheme(value)}>
48-
<SelectTrigger className="w-full flex items-center p-0 m-0 leading-[0px]">
49-
<SelectValue placeholder={t('Select Theme')} />
50-
</SelectTrigger>
51-
<SelectContent>
52-
<SelectItem value="system">
53-
<div className="flex items-center">
54-
<IconDesktop size={16} className="mr-2" />
55-
{t('System')}
56-
</div>
57-
</SelectItem>
58-
<SelectItem value="light">
59-
<div className="flex items-center">
60-
<IconSun size={16} className="mr-2" />
61-
{t('Light')}
62-
</div>
63-
</SelectItem>
64-
<SelectItem value="dark">
65-
<div className="flex items-center">
66-
<IconMoon size={16} className="mr-2" />
67-
{t('Dark')}
68-
</div>
69-
</SelectItem>
70-
</SelectContent>
71-
</Select>
41+
<div className="grid grid-cols-3 gap-2">
42+
<button
43+
type="button"
44+
onClick={() => setTheme('system')}
45+
className={cn(
46+
'flex flex-col items-center justify-center p-3 rounded-lg border-2 transition-all hover:border-primary/50',
47+
theme === 'system'
48+
? 'border-primary bg-primary/10'
49+
: 'border-border bg-background'
50+
)}
51+
>
52+
<IconDesktop size={24} className="mb-1" />
53+
<span className="text-xs">{t('System')}</span>
54+
</button>
55+
<button
56+
type="button"
57+
onClick={() => setTheme('light')}
58+
className={cn(
59+
'flex flex-col items-center justify-center p-3 rounded-lg border-2 transition-all hover:border-primary/50',
60+
theme === 'light'
61+
? 'border-primary bg-primary/10'
62+
: 'border-border bg-background'
63+
)}
64+
>
65+
<IconSun size={24} className="mb-1" />
66+
<span className="text-xs">{t('Light')}</span>
67+
</button>
68+
<button
69+
type="button"
70+
onClick={() => setTheme('dark')}
71+
className={cn(
72+
'flex flex-col items-center justify-center p-3 rounded-lg border-2 transition-all hover:border-primary/50',
73+
theme === 'dark'
74+
? 'border-primary bg-primary/10'
75+
: 'border-border bg-background'
76+
)}
77+
>
78+
<IconMoon size={24} className="mb-1" />
79+
<span className="text-xs">{t('Dark')}</span>
80+
</button>
81+
</div>
7282
</div>
7383
</div>
7484

7585
<div className="flex min-h-10 flex-col sm:flex-row sm:items-center sm:justify-between gap-2">
7686
<div className="font-medium min-w-[80px]">{t('Language')}</div>
7787
<div className="max-w-xs w-full">
78-
<Select
79-
value={language}
80-
onValueChange={(value) => changeLanguage(value)}
81-
>
82-
<SelectTrigger className="w-full">
83-
<SelectValue placeholder={t('Select Language')} />
84-
</SelectTrigger>
85-
<SelectContent>
86-
<SelectItem value="zh-CN">简体中文</SelectItem>
87-
<SelectItem value="en">English</SelectItem>
88-
</SelectContent>
89-
</Select>
88+
<div className="grid grid-cols-2 gap-2">
89+
<button
90+
type="button"
91+
onClick={() => changeLanguage('zh-CN')}
92+
className={cn(
93+
'flex flex-col items-center justify-center p-3 rounded-lg border-2 transition-all hover:border-primary/50',
94+
language === 'zh-CN'
95+
? 'border-primary bg-primary/10'
96+
: 'border-border bg-background'
97+
)}
98+
>
99+
<span className="text-2xl mb-1">🇨🇳</span>
100+
<span className="text-xs">简体中文</span>
101+
</button>
102+
<button
103+
type="button"
104+
onClick={() => changeLanguage('en')}
105+
className={cn(
106+
'flex flex-col items-center justify-center p-3 rounded-lg border-2 transition-all hover:border-primary/50',
107+
language === 'en'
108+
? 'border-primary bg-primary/10'
109+
: 'border-border bg-background'
110+
)}
111+
>
112+
<span className="text-2xl mb-1">🇺🇸</span>
113+
<span className="text-xs">English</span>
114+
</button>
115+
</div>
90116
</div>
91117
</div>
92118
</CardContent>

0 commit comments

Comments
 (0)