@@ -174,7 +174,7 @@ export function EvalDetail({
174174 < div className = "flex h-full min-h-0 min-w-0 flex-col" >
175175 { /* Tab navigation — at the top so Files tab editor fills maximum height */ }
176176 < div className = "min-w-0 border-b border-gray-800" >
177- < div className = "flex min-w-0 gap-1 overflow-x-auto px-4" >
177+ < div className = "av-scrollbar-none flex min-w-0 gap-1 overflow-x-auto px-4" >
178178 { tabs . map ( ( tab ) => (
179179 < button
180180 type = "button"
@@ -331,7 +331,7 @@ function SourceTab({ result }: { result: EvalResult }) {
331331 const traceability : SourceTraceability | undefined = result . source_traceability ;
332332 if ( ! traceability || traceability . status !== 'captured' ) {
333333 return (
334- < div className = "rounded-lg border border-gray-800 bg-gray-900 p-4" >
334+ < div className = "rounded-lg border border-gray-800 bg-gray-950/80 p-4 ring-1 ring-white/5 " >
335335 < h4 className = "text-sm font-medium text-gray-300" > Source metadata</ h4 >
336336 < p className = "mt-2 text-sm text-gray-500" >
337337 { traceability ?. message ?? 'Source metadata was not captured for this run.' }
@@ -493,7 +493,7 @@ function ChecksTab({ result, projectId }: { result: EvalResult; projectId?: stri
493493 return (
494494 < div className = "space-y-6" >
495495 { /* Overall score */ }
496- < div className = "rounded-lg border border-gray-800 bg-gray-900 p-4" >
496+ < div className = "rounded-lg border border-gray-800 bg-gray-950/80 p-4 ring-1 ring-white/5 " >
497497 < div className = "flex items-center gap-4" >
498498 < span className = "text-sm font-medium text-gray-400" > Overall score</ span >
499499 < div className = "flex-1" >
@@ -567,9 +567,9 @@ function ChecksTab({ result, projectId }: { result: EvalResult; projectId?: stri
567567
568568function RunMetricRow ( { label, value } : { label : string ; value : string | undefined } ) {
569569 return (
570- < div className = "rounded-lg border border-gray-800 bg-gray-900 p-3" >
570+ < div className = "rounded-lg border border-gray-800 bg-gray-950/80 p-3 ring-1 ring-white/5 " >
571571 < div className = "text-xs font-medium uppercase tracking-wider text-gray-500" > { label } </ div >
572- < div className = "mt-1 font-mono text-sm text-gray-200 " > { value ?? '-' } </ div >
572+ < div className = "mt-1 font-mono text-sm text-gray-100 " > { value ?? '-' } </ div >
573573 </ div >
574574 ) ;
575575}
@@ -784,9 +784,15 @@ function gradingVerdictLabel(pass: boolean | undefined): string {
784784}
785785
786786function gradingVerdictClass ( pass : boolean | undefined ) : string {
787- if ( pass === true ) return 'border-emerald-900/50 bg-emerald-950/20 text-emerald-300' ;
788- if ( pass === false ) return 'border-red-900/50 bg-red-950/20 text-red-300' ;
789- return 'border-gray-800 bg-gray-950/50 text-gray-300' ;
787+ if ( pass === true ) return 'border-emerald-800/60 bg-emerald-950/30 text-emerald-200' ;
788+ if ( pass === false ) return 'border-red-700/70 bg-red-950/40 text-red-200' ;
789+ return 'border-gray-700 bg-gray-950/70 text-gray-300' ;
790+ }
791+
792+ function gradingPanelClass ( pass : boolean | undefined ) : string {
793+ if ( pass === true ) return 'border-emerald-900/50 bg-emerald-950/15' ;
794+ if ( pass === false ) return 'border-red-900/60 bg-red-950/15' ;
795+ return 'border-gray-800 bg-gray-900/70' ;
790796}
791797
792798function assertionLabel (
@@ -815,17 +821,27 @@ function NamedScoresGrid({ scores }: { scores: Record<string, number> | undefine
815821 if ( ! scores || Object . keys ( scores ) . length === 0 ) return null ;
816822 return (
817823 < div className = "grid gap-3 md:grid-cols-3" >
818- { Object . entries ( scores ) . map ( ( [ name , value ] ) => (
819- < RunMetricRow key = { name } label = { name } value = { formatPercent ( value ) } />
820- ) ) }
824+ { Object . entries ( scores ) . map ( ( [ name , value ] ) => {
825+ const tone =
826+ value >= 0.8 ? 'text-emerald-300' : value >= 0.5 ? 'text-amber-300' : 'text-red-300' ;
827+ return (
828+ < div
829+ key = { name }
830+ className = "rounded-lg border border-gray-800 bg-gray-950/70 p-3 ring-1 ring-white/5"
831+ >
832+ < div className = "text-xs font-medium uppercase tracking-wider text-gray-500" > { name } </ div >
833+ < div className = { `mt-1 font-mono text-sm ${ tone } ` } > { formatPercent ( value ) } </ div >
834+ </ div >
835+ ) ;
836+ } ) }
821837 </ div >
822838 ) ;
823839}
824840
825841function MetadataBlock ( { metadata } : { metadata : GradingJsonObject | undefined } ) {
826842 if ( ! metadata || Object . keys ( metadata ) . length === 0 ) return null ;
827843 return (
828- < details className = "rounded-lg border border-gray-800 bg-gray-950/50 p-3" >
844+ < details className = "rounded-lg border border-gray-800 bg-gray-950/80 p-3" >
829845 < summary className = "cursor-pointer text-sm font-medium text-gray-300" > Metadata</ summary >
830846 < pre className = "mt-3 max-h-64 overflow-auto text-xs text-gray-300" >
831847 { JSON . stringify ( metadata , null , 2 ) }
@@ -838,15 +854,19 @@ function OptionalScoreBar({ score }: { score: number | undefined }) {
838854 if ( score == null ) {
839855 return < div className = "h-2 rounded-full bg-gray-800" /> ;
840856 }
841- return < ScoreBar score = { score } /> ;
857+ return < ScoreBar score = { score } showLabel = { false } /> ;
842858}
843859
844860function GradingAggregateSummary ( { result } : { result : GradingComponentResult } ) {
845861 return (
846- < div className = "space-y-4 rounded-lg border border-gray-800 bg-gray-900 p-4" >
862+ < div
863+ className = { `space-y-4 rounded-lg border p-4 ring-1 ring-white/5 ${ gradingPanelClass (
864+ result . pass ,
865+ ) } `}
866+ >
847867 < div className = "grid gap-3 md:grid-cols-[minmax(9rem,12rem)_1fr] md:items-center" >
848868 < div
849- className = { `rounded-lg border px-3 py-2 text-sm font-medium ${ gradingVerdictClass (
869+ className = { `rounded-lg border px-3 py-2 text-sm font-semibold ${ gradingVerdictClass (
850870 result . pass ,
851871 ) } `}
852872 >
@@ -855,12 +875,12 @@ function GradingAggregateSummary({ result }: { result: GradingComponentResult })
855875 < div className = "min-w-0" >
856876 < div className = "mb-1 flex items-center justify-between gap-3 text-xs text-gray-500" >
857877 < span > Aggregate score</ span >
858- < span className = "font-mono" > { formatPercent ( result . score ) } </ span >
878+ < span className = "font-mono text-gray-300 " > { formatPercent ( result . score ) } </ span >
859879 </ div >
860880 < OptionalScoreBar score = { result . score } />
861881 </ div >
862882 </ div >
863- { result . reason ? < p className = "text-sm text-gray-300 " > { result . reason } </ p > : null }
883+ { result . reason ? < p className = "text-sm text-gray-200 " > { result . reason } </ p > : null }
864884 < NamedScoresGrid scores = { result . namedScores } />
865885 < MetadataBlock metadata = { result . metadata } />
866886 </ div >
@@ -917,7 +937,7 @@ function GradingComponentNode({
917937 < div className = "grid gap-3 md:grid-cols-[minmax(10rem,1fr)_minmax(8rem,12rem)] md:items-center" >
918938 < div className = "min-w-0" >
919939 < div className = "flex min-w-0 flex-wrap items-center gap-2" >
920- < span className = "font-medium text-gray-200 " > { label . title } </ span >
940+ < span className = "font-medium text-gray-100 " > { label . title } </ span >
921941 < span
922942 className = { `rounded-md border px-1.5 py-0.5 text-[11px] font-medium ${ gradingVerdictClass (
923943 component . pass ,
@@ -935,20 +955,20 @@ function GradingComponentNode({
935955 ) : null }
936956 </ div >
937957 < div className = "min-w-0" >
938- < div className = "mb-1 text-right font-mono text-xs text-gray-500 " >
958+ < div className = "mb-1 text-right font-mono text-xs text-gray-400 " >
939959 { formatPercent ( component . score ) }
940960 </ div >
941961 < OptionalScoreBar score = { component . score } />
942962 </ div >
943963 </ div >
944- { component . reason ? < p className = "text-sm text-gray-300 " > { component . reason } </ p > : null }
964+ { component . reason ? < p className = "mt-1 text-sm text-gray-200 " > { component . reason } </ p > : null }
945965 </ div >
946966 ) ;
947967
948968 return (
949969 < details
950970 open = { depth === 0 }
951- className = " rounded-lg border border-gray-800 bg-gray-900 p-3"
971+ className = { ` rounded-lg border p-3 ring-1 ring-white/5 ${ gradingPanelClass ( component . pass ) } ` }
952972 style = { { marginLeft : depth > 0 ? `${ Math . min ( depth , 4 ) * 1 } rem` : undefined } }
953973 >
954974 < summary className = "flex cursor-pointer list-none items-start gap-3" >
@@ -1030,7 +1050,7 @@ function ArtifactGradingTab({
10301050 < button
10311051 type = "button"
10321052 onClick = { ( ) => onOpenFile ( gradingPath ) }
1033- className = "rounded-md border border-gray-700 px-3 py-1.5 text-xs text-gray-300 transition-colors hover:border-cyan-900/60 hover:text-cyan-300 "
1053+ className = "rounded-md border border-gray-700 bg-gray-950/80 px-3 py-1.5 text-xs text-gray-300 transition-colors hover:border-cyan-800/70 hover:text-cyan-200 "
10341054 >
10351055 Open grading JSON
10361056 </ button >
0 commit comments