11import React , { useState , useCallback , useRef , DragEvent , useEffect } from "react" ;
22import { Upload , GithubLogo , CircleNotch } from "@phosphor-icons/react" ;
3+ import { UserSquare , ChevronRight } from "lucide-react" ;
34import { toast , Toaster } from "sonner" ;
45import {
56 LineChart , Line , XAxis , YAxis , CartesianGrid , Tooltip , Legend , ResponsiveContainer ,
@@ -556,33 +557,36 @@ function App() {
556557 </ span >
557558 </ div >
558559 < div
559- className = "flex items-center gap-2 cursor-pointer hover:bg-purple-100/80 dark:hover:bg-purple -900/20 transition-colors rounded-md -m -1 p-1 "
560+ className = "inline- flex items-center gap-1.5 cursor-pointer hover:bg-orange-50 dark:hover:bg-orange -900/20 transition-all duration-200 rounded-md px-2 py -1 group border border-orange-200 hover:border-orange-300 hover:shadow-sm bg-orange-25 dark:bg-orange-950/10 "
560561 onClick = { ( ) => setShowProjectedUsersDialog ( true ) }
561562 title = "Click to see detailed list"
562563 >
563564 < span className = "text-sm text-muted-foreground" > Projected to Exceed by Month-End:</ span >
564- < span className = "text-lg font-bold text-orange-600" >
565+ < span className = "text-lg font-bold text-orange-600 group-hover:text-orange-700 transition-colors " >
565566 { projectedUsersExceedingQuota . toLocaleString ( ) }
566567 </ span >
568+ < ChevronRight className = "h-3 w-3 text-orange-600 opacity-60 group-hover:opacity-100 group-hover:translate-x-0.5 transition-all duration-200" />
567569 </ div >
568570 < div
569- className = "flex items-center gap-2 cursor-pointer hover:bg-purple-100/80 dark:hover:bg-purple -900/20 transition-colors rounded-md -m -1 p-1 "
571+ className = "inline- flex items-center gap-1.5 cursor-pointer hover:bg-orange-50 dark:hover:bg-orange -900/20 transition-all duration-200 rounded-md px-2 py -1 group border border-orange-200 hover:border-orange-300 hover:shadow-sm bg-orange-25 dark:bg-orange-950/10 "
570572 onClick = { ( ) => setShowPotentialCostDetails ( true ) }
571573 title = "Click to see cost breakdown"
572574 >
573575 < span className = "text-sm text-muted-foreground" > Potential Cost:</ span >
574- < span className = "text-lg font-bold text-orange-600" >
576+ < span className = "text-lg font-bold text-orange-600 group-hover:text-orange-700 transition-colors " >
575577 ${ ( data . reduce ( ( sum , item ) => sum + item . requestsUsed , 0 ) * EXCESS_REQUEST_COST ) . toLocaleString ( undefined , { minimumFractionDigits : 2 , maximumFractionDigits : 2 } ) }
576578 </ span >
579+ < ChevronRight className = "h-3 w-3 text-orange-600 opacity-60 group-hover:opacity-100 group-hover:translate-x-0.5 transition-all duration-200" />
577580 </ div >
578581 { powerUserSummary && (
579582 < UITooltip >
580583 < TooltipTrigger asChild >
581584 < Sheet >
582585 < SheetTrigger asChild >
583- < div className = "flex items-center gap-2 cursor-pointer hover:bg-purple-100/80 dark:hover:bg-purple -900/20 transition-colors rounded-md -m -1 p-1 " >
586+ < div className = "inline- flex items-center gap-1.5 cursor-pointer hover:bg-blue-50 dark:hover:bg-blue -900/20 transition-all duration-200 rounded-md px-2 py -1 group border border-blue-200 hover:border-blue-300 hover:shadow-sm bg-blue-25 dark:bg-blue-950/10 " >
584587 < span className = "text-sm text-muted-foreground" > Power Users:</ span >
585- < span className = "text-lg font-bold" > { powerUserSummary . totalPowerUsers } </ span >
588+ < span className = "text-lg font-bold text-blue-600 group-hover:text-blue-700 transition-colors" > { powerUserSummary . totalPowerUsers } </ span >
589+ < ChevronRight className = "h-3 w-3 text-blue-600 opacity-60 group-hover:opacity-100 group-hover:translate-x-0.5 transition-all duration-200" />
586590 </ div >
587591 </ SheetTrigger >
588592 < SheetContent side = "bottom" className = "h-[90vh] max-w-[90%] mx-auto overflow-y-auto" >
@@ -878,12 +882,17 @@ function App() {
878882 < TableCell className = "text-center text-muted-foreground font-medium" >
879883 { index + 1 }
880884 </ TableCell >
881- < TableCell
882- className = { `font-medium cursor-pointer hover:text-blue-600 transition-colors ${ selectedPowerUser === user . user ? 'text-blue-600 font-bold' : '' } ` }
883- onClick = { ( ) => handlePowerUserSelect ( user . user ) }
884- title = "Click to filter chart to this user"
885- >
886- { user . user }
885+ < TableCell className = "font-medium" >
886+ < div
887+ className = { `inline-flex items-center gap-1.5 cursor-pointer hover:bg-blue-50/50 dark:hover:bg-blue-900/10 transition-all duration-200 rounded px-1.5 py-0.5 group ${ selectedPowerUser === user . user ? 'bg-blue-50 dark:bg-blue-900/20 text-blue-700 font-bold' : '' } ` }
888+ onClick = { ( ) => handlePowerUserSelect ( user . user ) }
889+ title = "Click to view user's request details"
890+ >
891+ < span className = { `font-medium transition-colors hover:underline ${ selectedPowerUser === user . user ? 'text-blue-700' : 'text-foreground group-hover:text-blue-600' } ` } >
892+ { user . user }
893+ </ span >
894+ < UserSquare className = { `h-3 w-3 transition-all duration-200 group-hover:scale-110 opacity-60 group-hover:opacity-100 ${ selectedPowerUser === user . user ? 'text-blue-700' : 'text-blue-500' } ` } />
895+ </ div >
887896 </ TableCell >
888897 < TableCell className = "text-right" > { user . totalRequests . toLocaleString ( undefined , { maximumFractionDigits : 2 , minimumFractionDigits : 0 } ) } </ TableCell >
889898 < TableCell className = "text-right" > { user . exceedingRequests . toLocaleString ( undefined , { maximumFractionDigits : 2 , minimumFractionDigits : 0 } ) } </ TableCell >
@@ -901,7 +910,8 @@ function App() {
901910 </ TooltipTrigger >
902911 < TooltipContent >
903912 < p > Power users are the top 10% of users by request count.< br />
904- These users make the most requests to GitHub Copilot.</ p >
913+ These users make the most requests to GitHub Copilot.< br />
914+ < strong > Click to view detailed analysis</ strong > </ p >
905915 </ TooltipContent >
906916 </ UITooltip >
907917 ) }
0 commit comments