@@ -111,8 +111,11 @@ function ProviderFilter({ providers }: { providers: string[] }) {
111111 return (
112112 < >
113113 < SelectProvider value = { selected } setValue = { ( v ) => replace ( { providers : v } ) } >
114- < SelectTrigger variant = "secondary/small" tooltipTitle = "Filter by provider" >
115- < AdjustmentsHorizontalIcon className = "size-4" />
114+ < SelectTrigger
115+ icon = { < AdjustmentsHorizontalIcon className = "size-4" /> }
116+ variant = "secondary/small"
117+ tooltipTitle = "Filter by provider"
118+ >
116119 < span className = "ml-0.5" > Provider</ span >
117120 </ SelectTrigger >
118121 < SelectPopover >
@@ -143,8 +146,11 @@ function CapabilityFilter({ capabilities }: { capabilities: string[] }) {
143146 return (
144147 < >
145148 < SelectProvider value = { selected } setValue = { ( v ) => replace ( { capabilities : v } ) } >
146- < SelectTrigger variant = "secondary/small" tooltipTitle = "Filter by capability" >
147- < AdjustmentsHorizontalIcon className = "size-4" />
149+ < SelectTrigger
150+ icon = { < AdjustmentsHorizontalIcon className = "size-4" /> }
151+ variant = "secondary/small"
152+ tooltipTitle = "Filter by capability"
153+ >
148154 < span className = "ml-0.5" > Capability</ span >
149155 </ SelectTrigger >
150156 < SelectPopover >
@@ -175,8 +181,11 @@ function FeaturesFilter() {
175181 return (
176182 < >
177183 < SelectProvider value = { selected } setValue = { ( v ) => replace ( { features : v } ) } >
178- < SelectTrigger variant = "secondary/small" tooltipTitle = "Filter by feature support" >
179- < AdjustmentsHorizontalIcon className = "size-4" />
184+ < SelectTrigger
185+ icon = { < AdjustmentsHorizontalIcon className = "size-4" /> }
186+ variant = "secondary/small"
187+ tooltipTitle = "Filter by feature support"
188+ >
180189 < span className = "ml-0.5" > Features</ span >
181190 </ SelectTrigger >
182191 < SelectPopover >
@@ -209,9 +218,15 @@ function FeaturesFilter() {
209218function FiltersBar ( {
210219 allProviders,
211220 allCapabilities,
221+ compareSet,
222+ onClearCompare,
223+ onCompare,
212224} : {
213225 allProviders : string [ ] ;
214226 allCapabilities : string [ ] ;
227+ compareSet : Set < string > ;
228+ onClearCompare : ( ) => void ;
229+ onCompare : ( ) => void ;
215230} ) {
216231 const location = useOptimisticLocation ( ) ;
217232 const searchParams = new URLSearchParams ( location . search ) ;
@@ -234,6 +249,17 @@ function FiltersBar({
234249 </ Form >
235250 ) }
236251 </ div >
252+ { compareSet . size >= 2 && (
253+ < div className = "flex shrink-0 items-center gap-2" >
254+ < span className = "text-xs text-text-dimmed" > { compareSet . size } selected</ span >
255+ < Button variant = "tertiary/small" onClick = { onClearCompare } >
256+ Clear
257+ </ Button >
258+ < Button variant = "primary/small" onClick = { onCompare } >
259+ Compare ({ compareSet . size } )
260+ </ Button >
261+ </ div >
262+ ) }
237263 </ div >
238264 ) ;
239265}
@@ -382,31 +408,19 @@ export default function ModelsPage() {
382408 < PageTitle title = "Models" />
383409 </ NavBar >
384410 < PageBody scrollable = { false } >
385- < div className = "grid max-h-full grid-rows-[auto_1fr] overflow-hidden" >
386- < FiltersBar allProviders = { allProviders } allCapabilities = { allCapabilities } />
387- { compareSet . size >= 2 && (
388- < div className = "flex shrink-0 items-center justify-between border-b border-grid-bright bg-background-dimmed px-3 py-2" >
389- < span className = "text-sm text-text-dimmed" >
390- { compareSet . size } models selected
391- </ span >
392- < div className = "flex items-center gap-2" >
393- < Button variant = "tertiary/small" onClick = { ( ) => setCompareSet ( new Set ( ) ) } >
394- Clear
395- </ Button >
396- < Button
397- variant = "primary/small"
398- onClick = { ( ) => {
399- const params = Array . from ( compareSet ) . join ( "," ) ;
400- navigate (
401- `${ v3ModelComparePath ( organization , project , environment ) } ?models=${ params } `
402- ) ;
403- } }
404- >
405- Compare ({ compareSet . size } )
406- </ Button >
407- </ div >
408- </ div >
409- ) }
411+ < div className = "grid h-full max-h-full grid-rows-[2.5rem_1fr] overflow-hidden" >
412+ < FiltersBar
413+ allProviders = { allProviders }
414+ allCapabilities = { allCapabilities }
415+ compareSet = { compareSet }
416+ onClearCompare = { ( ) => setCompareSet ( new Set ( ) ) }
417+ onCompare = { ( ) => {
418+ const params = Array . from ( compareSet ) . join ( "," ) ;
419+ navigate (
420+ `${ v3ModelComparePath ( organization , project , environment ) } ?models=${ params } `
421+ ) ;
422+ } }
423+ />
410424 < ModelsList
411425 models = { filteredModels }
412426 popularMap = { popularMap }
0 commit comments