@@ -8,13 +8,7 @@ import { toFixed } from '@/utils/common';
88
99import { IconDesktop , IconMoon , IconSun } from '@/components/Icons' ;
1010import { 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
1913import { 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