1
1
import { Trans } from "@lingui/react/macro" ;
2
2
import { getName , getVersion } from "@tauri-apps/api/app" ;
3
- import { CogIcon , CpuIcon } from "lucide-react" ;
3
+ import { CogIcon , CpuIcon , TrainFrontIcon } from "lucide-react" ;
4
4
import { useState } from "react" ;
5
5
6
6
import Shortcut from "@/components/shortcut" ;
@@ -18,7 +18,7 @@ import { useQuery } from "@tanstack/react-query";
18
18
19
19
export function SettingsButton ( ) {
20
20
const [ open , setOpen ] = useState ( false ) ;
21
- const { userId } = useHypr ( ) ;
21
+ const { userId, isPro } = useHypr ( ) ;
22
22
23
23
const versionQuery = useQuery ( {
24
24
queryKey : [ "appVersion" ] ,
@@ -52,27 +52,7 @@ export function SettingsButton() {
52
52
</ DropdownMenuTrigger >
53
53
54
54
< DropdownMenuContent align = "start" className = "w-52 p-0" >
55
- < div
56
- className = { cn ( [
57
- "px-2 py-3 bg-gradient-to-r rounded-t-md relative overflow-hidden cursor-pointer" ,
58
- "from-gray-800 to-gray-900 hover:from-gray-700 hover:to-gray-800" ,
59
- ] ) }
60
- onClick = { handleClickPlans }
61
- >
62
- < div className = "absolute inset-0 bg-[url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48cGF0dGVybiBpZD0iZ3JpZCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBwYXR0ZXJuVW5pdHM9InVzZXJTcGFjZU9uVXNlIj48cGF0aCBkPSJNIDIwIDAgTCAwIDAgTCAwIDIwIiBmaWxsPSJub25lIiBzdHJva2U9InJnYmEoMjU1LDI1NSwyNTUsMC4xNSkiIHN0cm9rZS13aWR0aD0iMS41Ii8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyaWQpIi8+PC9zdmc+')] opacity-70" >
63
- </ div >
64
- < div className = "flex items-center gap-3 text-white relative z-10" >
65
- < CpuIcon className = "size-8 animate-pulse" />
66
- < div >
67
- < div className = "font-medium" >
68
- < Trans > Local mode</ Trans >
69
- </ div >
70
- < div className = "text-xs text-white/80 mt-0.5" >
71
- Privacy-focused AI
72
- </ div >
73
- </ div >
74
- </ div >
75
- </ div >
55
+ { isPro ? < ProMode onClick = { handleClickPlans } /> : < LocalMode onClick = { handleClickPlans } /> }
76
56
77
57
< div className = "p-1" >
78
58
< DropdownMenuItem
@@ -96,3 +76,55 @@ export function SettingsButton() {
96
76
</ DropdownMenu >
97
77
) ;
98
78
}
79
+
80
+ function ProMode ( { onClick } : { onClick : ( ) => void } ) {
81
+ return (
82
+ < div
83
+ className = { cn ( [
84
+ "px-2 py-3 bg-gradient-to-r rounded-t-md relative overflow-hidden cursor-pointer" ,
85
+ "from-blue-500 to-blue-600 hover:from-blue-600 hover:to-blue-700" ,
86
+ ] ) }
87
+ onClick = { onClick }
88
+ >
89
+ < div className = "absolute inset-0 bg-[url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48cGF0dGVybiBpZD0iZ3JpZCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBwYXR0ZXJuVW5pdHM9InVzZXJTcGFjZU9uVXNlIj48cGF0aCBkPSJNIDIwIDAgTCAwIDAgTCAwIDIwIiBmaWxsPSJub25lIiBzdHJva2U9InJnYmEoMjU1LDI1NSwyNTUsMC4xNSkiIHN0cm9rZS13aWR0aD0iMS41Ii8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyaWQpIi8+PC9zdmc+')] opacity-70" >
90
+ </ div >
91
+ < div className = "flex items-center gap-3 text-white relative z-10" >
92
+ < TrainFrontIcon className = "size-8 animate-pulse" />
93
+ < div >
94
+ < div className = "font-medium" >
95
+ < Trans > Pro mode</ Trans >
96
+ </ div >
97
+ < div className = "text-xs text-white/80 mt-0.5" >
98
+ For professional use
99
+ </ div >
100
+ </ div >
101
+ </ div >
102
+ </ div >
103
+ ) ;
104
+ }
105
+
106
+ function LocalMode ( { onClick } : { onClick : ( ) => void } ) {
107
+ return (
108
+ < div
109
+ className = { cn ( [
110
+ "px-2 py-3 bg-gradient-to-r rounded-t-md relative overflow-hidden cursor-pointer" ,
111
+ "from-gray-800 to-gray-900 hover:from-gray-700 hover:to-gray-800" ,
112
+ ] ) }
113
+ onClick = { onClick }
114
+ >
115
+ < div className = "absolute inset-0 bg-[url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVmcz48cGF0dGVybiBpZD0iZ3JpZCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBwYXR0ZXJuVW5pdHM9InVzZXJTcGFjZU9uVXNlIj48cGF0aCBkPSJNIDIwIDAgTCAwIDAgTCAwIDIwIiBmaWxsPSJub25lIiBzdHJva2U9InJnYmEoMjU1LDI1NSwyNTUsMC4xNSkiIHN0cm9rZS13aWR0aD0iMS41Ii8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyaWQpIi8+PC9zdmc+')] opacity-70" >
116
+ </ div >
117
+ < div className = "flex items-center gap-3 text-white relative z-10" >
118
+ < CpuIcon className = "size-8 animate-pulse" />
119
+ < div >
120
+ < div className = "font-medium" >
121
+ < Trans > Local mode</ Trans >
122
+ </ div >
123
+ < div className = "text-xs text-white/80 mt-0.5" >
124
+ Privacy-focused AI
125
+ </ div >
126
+ </ div >
127
+ </ div >
128
+ </ div >
129
+ ) ;
130
+ }
0 commit comments