@@ -7,7 +7,7 @@ import { PopoverProps } from "@radix-ui/react-popover"
7
7
import { Check , CaretUpDown } from "@phosphor-icons/react" ;
8
8
9
9
import { cn } from "@/lib/utils"
10
- import { useMutationObserver } from "@/app/common/utils" ;
10
+ import { useIsMobileWidth , useMutationObserver } from "@/app/common/utils" ;
11
11
import { Button } from "@/components/ui/button" ;
12
12
import {
13
13
Command ,
@@ -39,6 +39,7 @@ export function ModelSelector({ ...props }: ModelSelectorProps) {
39
39
const [ selectedModel , setSelectedModel ] = useState < ModelOptions | undefined > ( undefined ) ;
40
40
const { data : userConfig , error, isLoading : isLoadingUserConfig } = useUserConfig ( true ) ;
41
41
const [ models , setModels ] = useState < ModelOptions [ ] > ( [ ] ) ;
42
+ const isMobileWidth = useIsMobileWidth ( ) ;
42
43
43
44
useEffect ( ( ) => {
44
45
if ( isLoadingUserConfig ) return ;
@@ -98,55 +99,82 @@ export function ModelSelector({ ...props }: ModelSelectorProps) {
98
99
</ Button >
99
100
</ PopoverTrigger >
100
101
< PopoverContent align = "end" className = "w-[250px] p-0" >
101
- < HoverCard >
102
- < HoverCardContent
103
- side = "left"
104
- align = "start"
105
- forceMount
106
- className = "min-h-[280px]"
107
- >
108
- < div className = "grid gap-2" >
109
- < h4 className = "font-medium leading-none" > { peekedModel ?. name } </ h4 >
110
- < div className = "text-sm text-muted-foreground" >
111
- { peekedModel ?. description }
112
- </ div >
113
- { peekedModel ?. strengths ? (
114
- < div className = "mt-4 grid gap-2" >
115
- < h5 className = "text-sm font-medium leading-none" >
116
- Strengths
117
- </ h5 >
118
- < ul className = "text-sm text-muted-foreground" >
119
- { peekedModel . strengths }
120
- </ ul >
121
- </ div >
122
- ) : null }
102
+ {
103
+ isMobileWidth ?
104
+ < div >
105
+ < Command loop >
106
+ < CommandList className = "h-[var(--cmdk-list-height)]" >
107
+ < CommandInput placeholder = "Search Models..." />
108
+ < CommandEmpty > No Models found.</ CommandEmpty >
109
+ < CommandGroup key = { "models" } heading = { "Models" } >
110
+ { models && models . length > 0 && models
111
+ . map ( ( model ) => (
112
+ < ModelItem
113
+ key = { model . id }
114
+ model = { model }
115
+ isSelected = { selectedModel ?. id === model . id }
116
+ onPeek = { ( model ) => setPeekedModel ( model ) }
117
+ onSelect = { ( ) => {
118
+ setSelectedModel ( model )
119
+ setOpen ( false )
120
+ } }
121
+ />
122
+ ) ) }
123
+ </ CommandGroup >
124
+ </ CommandList >
125
+ </ Command >
123
126
</ div >
124
- </ HoverCardContent >
125
- < div >
126
- < HoverCardTrigger />
127
- < Command loop >
128
- < CommandList className = "h-[var(--cmdk-list-height)]" >
129
- < CommandInput placeholder = "Search Models..." />
130
- < CommandEmpty > No Models found.</ CommandEmpty >
131
- < CommandGroup key = { "models" } heading = { "Models" } >
132
- { models && models . length > 0 && models
133
- . map ( ( model ) => (
134
- < ModelItem
135
- key = { model . id }
136
- model = { model }
137
- isSelected = { selectedModel ?. id === model . id }
138
- onPeek = { ( model ) => setPeekedModel ( model ) }
139
- onSelect = { ( ) => {
140
- setSelectedModel ( model )
141
- setOpen ( false )
142
- } }
143
- />
144
- ) ) }
145
- </ CommandGroup >
146
- </ CommandList >
147
- </ Command >
148
- </ div >
149
- </ HoverCard >
127
+ :
128
+ < HoverCard >
129
+ < HoverCardContent
130
+ side = "left"
131
+ align = "start"
132
+ forceMount
133
+ className = "min-h-[280px]"
134
+ >
135
+ < div className = "grid gap-2" >
136
+ < h4 className = "font-medium leading-none" > { peekedModel ?. name } </ h4 >
137
+ < div className = "text-sm text-muted-foreground" >
138
+ { peekedModel ?. description }
139
+ </ div >
140
+ { peekedModel ?. strengths ? (
141
+ < div className = "mt-4 grid gap-2" >
142
+ < h5 className = "text-sm font-medium leading-none" >
143
+ Strengths
144
+ </ h5 >
145
+ < p className = "text-sm text-muted-foreground" >
146
+ { peekedModel . strengths }
147
+ </ p >
148
+ </ div >
149
+ ) : null }
150
+ </ div >
151
+ </ HoverCardContent >
152
+ < div >
153
+ < HoverCardTrigger />
154
+ < Command loop >
155
+ < CommandList className = "h-[var(--cmdk-list-height)]" >
156
+ < CommandInput placeholder = "Search Models..." />
157
+ < CommandEmpty > No Models found.</ CommandEmpty >
158
+ < CommandGroup key = { "models" } heading = { "Models" } >
159
+ { models && models . length > 0 && models
160
+ . map ( ( model ) => (
161
+ < ModelItem
162
+ key = { model . id }
163
+ model = { model }
164
+ isSelected = { selectedModel ?. id === model . id }
165
+ onPeek = { ( model ) => setPeekedModel ( model ) }
166
+ onSelect = { ( ) => {
167
+ setSelectedModel ( model )
168
+ setOpen ( false )
169
+ } }
170
+ />
171
+ ) ) }
172
+ </ CommandGroup >
173
+ </ CommandList >
174
+ </ Command >
175
+ </ div >
176
+ </ HoverCard >
177
+ }
150
178
</ PopoverContent >
151
179
</ Popover >
152
180
</ div >
0 commit comments