@@ -44,6 +44,7 @@ import {
4444} from "~/components/ui/input-group" ;
4545import { isStaticMode , triggerRerun } from "~/sdk" ;
4646import { cn } from "~/lib/utils" ;
47+ import { ThemeProvider } from "~/components/theme-provider" ;
4748
4849const TanStackRouterDevtools =
4950 process . env . NODE_ENV === "production"
@@ -195,112 +196,114 @@ export default function App() {
195196 }
196197
197198 return (
198- < SidebarProvider className = "w-full" >
199- < Sidebar className = "border-r-0" >
200- < SidebarHeader >
201- < SidebarMenu >
202- < SidebarMenuItem className = "border-b md:-mx-3 -mx-2 md:px-3 px-2 pb-1.5" >
203- < div className = "px-2 py-1" >
204- < Logo />
205- </ div >
206- </ SidebarMenuItem >
207- </ SidebarMenu >
208- </ SidebarHeader >
209- < SidebarContent >
210- < SidebarGroup >
211- < div className = "px-2" >
212- < p className = "text-xs font-medium text-sidebar-foreground/70 mb-2" >
213- Summary
214- </ p >
215- < div className = "flex items-center justify-between" >
216- < div className = "text-foreground/60 font-medium text-2xl" >
217- < Score
218- score = { score }
219- state = { getScoreState ( {
220- score,
221- prevScore,
222- status : runStatus ,
223- } ) }
224- iconClassName = "size-4"
225- hasScores = { hasScores }
226- />
199+ < ThemeProvider >
200+ < SidebarProvider className = "w-full" >
201+ < Sidebar className = "border-r-0" >
202+ < SidebarHeader >
203+ < SidebarMenu >
204+ < SidebarMenuItem className = "border-b md:-mx-3 -mx-2 md:px-3 px-2 pb-1.5" >
205+ < div className = "px-2 py-1" >
206+ < Logo />
227207 </ div >
228- { ! isStaticMode ( ) && (
229- < button
230- onClick = { handleRerun }
231- disabled = { serverState . type === "running" || isRerunning }
232- className = { cn (
233- "flex items-center gap-1.5 px-2 py-1 rounded text-xs font-medium transition-colors" ,
234- serverState . type === "running" || isRerunning
235- ? "text-foreground/40 cursor-not-allowed"
236- : "text-foreground/80 hover:bg-foreground/20"
237- ) }
238- title = "Rerun all evals"
239- >
240- < RotateCw
241- className = { cn ( "size-3" , isRerunning && "animate-spin" ) }
208+ </ SidebarMenuItem >
209+ </ SidebarMenu >
210+ </ SidebarHeader >
211+ < SidebarContent >
212+ < SidebarGroup >
213+ < div className = "px-2" >
214+ < p className = "text-xs font-medium text-sidebar-foreground/70 mb-2" >
215+ Summary
216+ </ p >
217+ < div className = "flex items-center justify-between" >
218+ < div className = "text-foreground/60 font-medium text-2xl" >
219+ < Score
220+ score = { score }
221+ state = { getScoreState ( {
222+ score,
223+ prevScore,
224+ status : runStatus ,
225+ } ) }
226+ iconClassName = "size-4"
227+ hasScores = { hasScores }
242228 />
243- Rerun
244- </ button >
245- ) }
229+ </ div >
230+ { ! isStaticMode ( ) && (
231+ < button
232+ onClick = { handleRerun }
233+ disabled = { serverState . type === "running" || isRerunning }
234+ className = { cn (
235+ "flex items-center gap-1.5 px-2 py-1 rounded text-xs font-medium transition-colors" ,
236+ serverState . type === "running" || isRerunning
237+ ? "text-foreground/40 cursor-not-allowed"
238+ : "text-foreground/80 hover:bg-foreground/20"
239+ ) }
240+ title = "Rerun all evals"
241+ >
242+ < RotateCw
243+ className = { cn ( "size-3" , isRerunning && "animate-spin" ) }
244+ />
245+ Rerun
246+ </ button >
247+ ) }
248+ </ div >
246249 </ div >
247- </ div >
248- </ SidebarGroup >
249- < SidebarGroup >
250- < SidebarGroupLabel > Suites</ SidebarGroupLabel >
251- < InputGroup className = "h-8 mb-2" >
252- < InputGroupAddon align = "inline-start" >
253- < InputGroupText >
254- < Search />
255- </ InputGroupText >
256- </ InputGroupAddon >
257- < InputGroupInput
258- placeholder = "Search"
259- value = { searchQuery ?? "" }
260- onChange = { ( e ) => handleSearchChange ( e . target . value ) }
261- />
262- { searchQuery && (
263- < InputGroupAddon align = "inline-end" >
264- < InputGroupButton
265- size = "icon-xs"
266- onClick = { ( ) => handleSearchChange ( "" ) }
267- >
268- < X />
269- </ InputGroupButton >
250+ </ SidebarGroup >
251+ < SidebarGroup >
252+ < SidebarGroupLabel > Suites</ SidebarGroupLabel >
253+ < InputGroup className = "h-8 mb-2" >
254+ < InputGroupAddon align = "inline-start" >
255+ < InputGroupText >
256+ < Search />
257+ </ InputGroupText >
270258 </ InputGroupAddon >
271- ) }
272- </ InputGroup >
273- < SidebarMenu >
274- { filteredGroupedEvals . map ( ( item ) => {
275- if ( item . type === "single" ) {
276- return (
277- < EvalSidebarItem
278- key = { `eval-${ item . suite . name } ` }
279- name = { item . suite . name }
280- score = { item . suite . score }
281- state = { item . suite . state }
282- suiteStatus = { item . suite . suiteStatus }
283- hasScores = { item . suite . hasScores }
284- />
285- ) ;
286- } else {
287- return (
288- < VariantGroup
289- key = { `group-${ item . groupName } ` }
290- groupName = { item . groupName }
291- variants = { item . variants }
292- />
293- ) ;
294- }
295- } ) }
296- </ SidebarMenu >
297- </ SidebarGroup >
298- </ SidebarContent >
299- </ Sidebar >
300- < Outlet />
301- < TanStackRouterDevtools />
302- < ReactQueryDevtools />
303- </ SidebarProvider >
259+ < InputGroupInput
260+ placeholder = "Search"
261+ value = { searchQuery ?? "" }
262+ onChange = { ( e ) => handleSearchChange ( e . target . value ) }
263+ />
264+ { searchQuery && (
265+ < InputGroupAddon align = "inline-end" >
266+ < InputGroupButton
267+ size = "icon-xs"
268+ onClick = { ( ) => handleSearchChange ( "" ) }
269+ >
270+ < X />
271+ </ InputGroupButton >
272+ </ InputGroupAddon >
273+ ) }
274+ </ InputGroup >
275+ < SidebarMenu >
276+ { filteredGroupedEvals . map ( ( item ) => {
277+ if ( item . type === "single" ) {
278+ return (
279+ < EvalSidebarItem
280+ key = { `eval-${ item . suite . name } ` }
281+ name = { item . suite . name }
282+ score = { item . suite . score }
283+ state = { item . suite . state }
284+ suiteStatus = { item . suite . suiteStatus }
285+ hasScores = { item . suite . hasScores }
286+ />
287+ ) ;
288+ } else {
289+ return (
290+ < VariantGroup
291+ key = { `group-${ item . groupName } ` }
292+ groupName = { item . groupName }
293+ variants = { item . variants }
294+ />
295+ ) ;
296+ }
297+ } ) }
298+ </ SidebarMenu >
299+ </ SidebarGroup >
300+ </ SidebarContent >
301+ </ Sidebar >
302+ < Outlet />
303+ < TanStackRouterDevtools />
304+ < ReactQueryDevtools />
305+ </ SidebarProvider >
306+ </ ThemeProvider >
304307 ) ;
305308}
306309
0 commit comments