@@ -3,6 +3,7 @@ import { Link } from "@tanstack/react-router";
33import { Check , Copy , Download , History , Loader2 , RefreshCw } from "lucide-react" ;
44
55import { KeyValueGrid , StatusPill , type Status } from "@/components/site/control-primitives" ;
6+ import { TableScroll } from "@/components/site/data-table" ;
67import { McpVersionBadge } from "@/components/site/mcp-version-badge" ;
78import { StatCard } from "@/components/site/primitives" ;
89import { RefreshMeta } from "@/components/site/refresh-meta" ;
@@ -364,42 +365,54 @@ export function MinerPanel() {
364365 < p className = "mt-1 text-token-xs text-muted-foreground" >
365366 Where to spend time, and where not to.
366367 </ p >
367- < table className = "mt-4 w-full text-left text-token-sm" >
368- < thead >
369- < tr className = "border-b-hairline font-mono text-token-2xs uppercase tracking-wider text-muted-foreground" >
370- < th className = "py-2 pr-3 font-normal" > Repo</ th >
371- < th className = "py-2 pr-3 font-normal" > Lane</ th >
372- < th className = "py-2 font-normal" > Why</ th >
373- </ tr >
374- </ thead >
375- < tbody >
376- { data . repoFit . map ( ( repo , index ) => {
377- const lane = repo . lane ?? "pursue" ;
378- return (
379- < tr
380- key = { `${ repo . repoFullName ?? index } ` }
381- className = "border-b-hairline last:border-b-0 transition-colors hover:bg-muted/40"
382- >
383- < td className = "py-2 pr-3 align-top" >
384- < div className = "break-all font-mono text-token-xs text-foreground/90" >
385- { repo . repoFullName ?? "repo pending" }
386- </ div >
387- < RecommendationChangeInline change = { repo . change } />
388- </ td >
389- < td className = "py-2 pr-3 align-top" >
390- < StatusPill status = { LANE_TONE [ lane ] ?? "info" } > { lane } </ StatusPill >
391- </ td >
392- < td className = "py-2 align-top text-token-xs text-muted-foreground" >
393- { repo . why ??
394- repo . rationale ??
395- repo . recommendation ??
396- "No rationale recorded." }
397- </ td >
398- </ tr >
399- ) ;
400- } ) }
401- </ tbody >
402- </ table >
368+ < TableScroll className = "mt-4" label = "Repo fit" >
369+ < table className = "w-full text-left text-token-sm" >
370+ < caption className = "sr-only" >
371+ Repositories with their recommended lane and rationale for where to spend
372+ time.
373+ </ caption >
374+ < thead >
375+ < tr className = "border-b-hairline font-mono text-token-2xs uppercase tracking-wider text-muted-foreground" >
376+ < th scope = "col" className = "py-2 pr-3 font-normal" >
377+ Repo
378+ </ th >
379+ < th scope = "col" className = "py-2 pr-3 font-normal" >
380+ Lane
381+ </ th >
382+ < th scope = "col" className = "py-2 font-normal" >
383+ Why
384+ </ th >
385+ </ tr >
386+ </ thead >
387+ < tbody >
388+ { data . repoFit . map ( ( repo , index ) => {
389+ const lane = repo . lane ?? "pursue" ;
390+ return (
391+ < tr
392+ key = { `${ repo . repoFullName ?? index } ` }
393+ className = "border-b-hairline last:border-b-0 transition-colors hover:bg-muted/40"
394+ >
395+ < td className = "py-2 pr-3 align-top" >
396+ < div className = "break-all font-mono text-token-xs text-foreground/90" >
397+ { repo . repoFullName ?? "repo pending" }
398+ </ div >
399+ < RecommendationChangeInline change = { repo . change } />
400+ </ td >
401+ < td className = "py-2 pr-3 align-top" >
402+ < StatusPill status = { LANE_TONE [ lane ] ?? "info" } > { lane } </ StatusPill >
403+ </ td >
404+ < td className = "py-2 align-top text-token-xs text-muted-foreground" >
405+ { repo . why ??
406+ repo . rationale ??
407+ repo . recommendation ??
408+ "No rationale recorded." }
409+ </ td >
410+ </ tr >
411+ ) ;
412+ } ) }
413+ </ tbody >
414+ </ table >
415+ </ TableScroll >
403416 </ div >
404417 </ section >
405418 </ div >
0 commit comments