@@ -5,6 +5,7 @@ import { Badge } from '@/components/ui/badge';
55import { Button } from '@/components/ui/button' ;
66import { Card , CardContent } from '@/components/ui/card' ;
77import { ScrollArea } from '@/components/ui/scroll-area' ;
8+ import { Separator } from '@/components/ui/separator' ;
89
910interface QueryType {
1011 name : string ;
@@ -55,24 +56,23 @@ export function QueryTypeSelector({
5556
5657 < ScrollArea className = "h-80 lg:h-96" >
5758 < div className = "grid grid-cols-1 gap-2 pr-4 sm:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2 2xl:grid-cols-3" >
58- { availableTypes . map ( ( type ) => (
59+ { [ ... selectedTypes ] . map ( ( type ) => (
5960 < Card
60- className = { `group relative cursor-pointer border transition-all duration-200 hover:border-border/80 hover:shadow-sm ${
61- selectedTypes . has ( type . name )
62- ? 'border-primary/40 bg-primary/5 shadow-inner'
63- : 'border-border/30 bg-card/70'
64- } `}
65- key = { type . name }
66- onClick = { ( ) => onTypeToggle ( type . name ) }
61+ className = {
62+ 'group relative cursor-pointer border transition-all duration-200 hover:border-border/80 hover:shadow-sm '
63+ }
64+ key = { type }
65+ onClick = { ( ) => onTypeToggle ( type ) }
6766 >
6867 < CardContent className = "p-2" >
6968 < div className = "flex items-center justify-between gap-2" >
7069 < div className = "min-w-0 flex-1" >
7170 < div className = "flex items-center gap-2" >
7271 < code className = "truncate font-medium font-mono text-xs" >
73- { type . name }
72+ { type }
7473 </ code >
75- { type . customizable && (
74+ { availableTypes . find ( ( t ) => t . name === type )
75+ ?. customizable && (
7676 < Badge
7777 className = "px-1.5 py-0.5 text-[10px] leading-none"
7878 variant = "outline"
@@ -81,24 +81,69 @@ export function QueryTypeSelector({
8181 </ Badge >
8282 ) }
8383 </ div >
84- { type . defaultLimit && (
84+ { availableTypes . find ( ( t ) => t . name === type )
85+ ?. defaultLimit && (
8586 < div className = "mt-0.5 text-[10px] text-muted-foreground" >
86- Limit: { type . defaultLimit }
87+ Limit:
88+ {
89+ availableTypes . find ( ( t ) => t . name === type )
90+ . defaultLimit
91+ }
8792 </ div >
8893 ) }
8994 </ div >
9095 < div
91- className = { `h-3 w-3 flex-shrink-0 rounded-full border transition-colors ${
92- selectedTypes . has ( type . name )
93- ? 'border-primary bg-primary'
94- : 'border-muted-foreground/30'
95- } `}
96+ className = {
97+ 'h-3 w-3 flex-shrink-0 rounded-full border border-primary bg-primary transition-colors'
98+ }
9699 />
97100 </ div >
98101 </ CardContent >
99102 </ Card >
100103 ) ) }
101104 </ div >
105+ { selectedTypes . size > 0 && < Separator className = "my-4" /> }
106+ < div className = "grid grid-cols-1 gap-2 pr-4 sm:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2 2xl:grid-cols-3" >
107+ { availableTypes
108+ . filter ( ( type ) => ! selectedTypes . has ( type . name ) )
109+ . map ( ( type ) => (
110+ < Card
111+ className = { `group 'border-border/30 relative cursor-pointer border bg-card/70 transition-all duration-200 hover:border-border/80 hover:shadow-sm` }
112+ key = { type . name }
113+ onClick = { ( ) => onTypeToggle ( type . name ) }
114+ >
115+ < CardContent className = "p-2" >
116+ < div className = "flex items-center justify-between gap-2" >
117+ < div className = "min-w-0 flex-1" >
118+ < div className = "flex items-center gap-2" >
119+ < code className = "truncate font-medium font-mono text-xs" >
120+ { type . name }
121+ </ code >
122+ { type . customizable && (
123+ < Badge
124+ className = "px-1.5 py-0.5 text-[10px] leading-none"
125+ variant = "outline"
126+ >
127+ Custom
128+ </ Badge >
129+ ) }
130+ </ div >
131+ { type . defaultLimit && (
132+ < div className = "mt-0.5 text-[10px] text-muted-foreground" >
133+ Limit: { type . defaultLimit }
134+ </ div >
135+ ) }
136+ </ div >
137+ < div
138+ className = {
139+ 'h-3 w-3 flex-shrink-0 rounded-full border border-muted-foreground/30 transition-colors'
140+ }
141+ />
142+ </ div >
143+ </ CardContent >
144+ </ Card >
145+ ) ) }
146+ </ div >
102147 </ ScrollArea >
103148
104149 < Button
0 commit comments