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 ,
@@ -12,7 +13,6 @@ import { ChartContainer, ChartTooltip, ChartTooltipContent } from "@/components/
1213import { Table , TableBody , TableCell , TableFooter , TableHead , TableHeader , TableRow } from "@/components/ui/table" ;
1314import { Sheet , SheetContent , SheetHeader , SheetTitle , SheetTrigger } from "@/components/ui/sheet" ;
1415import { Select , SelectContent , SelectItem , SelectTrigger , SelectValue } from "@/components/ui/select" ;
15- import { Tooltip as UITooltip , TooltipContent , TooltipTrigger } from "@/components/ui/tooltip" ;
1616import { Dialog , DialogContent , DialogHeader , DialogTitle } from "@/components/ui/dialog" ;
1717import { DeploymentFooter } from "@/components/DeploymentFooter" ;
1818import {
@@ -556,35 +556,39 @@ function App() {
556556 </ span >
557557 </ div >
558558 < 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 "
559+ 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 "
560560 onClick = { ( ) => setShowProjectedUsersDialog ( true ) }
561- title = "Click to see detailed list "
561+ title = "Click to see the users projected to exceed quota "
562562 >
563563 < span className = "text-sm text-muted-foreground" > Projected to Exceed by Month-End:</ span >
564- < span className = "text-lg font-bold text-orange-600" >
564+ < span className = "text-lg font-bold text-orange-600 group-hover:text-orange-700 transition-colors " >
565565 { projectedUsersExceedingQuota . toLocaleString ( ) }
566566 </ span >
567+ < 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" />
567568 </ div >
568569 < 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 "
570+ 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 "
570571 onClick = { ( ) => setShowPotentialCostDetails ( true ) }
571572 title = "Click to see cost breakdown"
572573 >
573574 < span className = "text-sm text-muted-foreground" > Potential Cost:</ span >
574- < span className = "text-lg font-bold text-orange-600" >
575+ < span className = "text-lg font-bold text-orange-600 group-hover:text-orange-700 transition-colors " >
575576 ${ ( data . reduce ( ( sum , item ) => sum + item . requestsUsed , 0 ) * EXCESS_REQUEST_COST ) . toLocaleString ( undefined , { minimumFractionDigits : 2 , maximumFractionDigits : 2 } ) }
576577 </ span >
578+ < 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" />
577579 </ div >
578580 { powerUserSummary && (
579- < UITooltip >
580- < TooltipTrigger asChild >
581- < Sheet >
582- < 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" >
584- < span className = "text-sm text-muted-foreground" > Power Users:</ span >
585- < span className = "text-lg font-bold" > { powerUserSummary . totalPowerUsers } </ span >
586- </ div >
587- </ SheetTrigger >
581+ < Sheet >
582+ < SheetTrigger asChild >
583+ < div
584+ 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"
585+ title = "Click to view power users analysis"
586+ >
587+ < span className = "text-sm text-muted-foreground" > Power Users:</ 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" />
590+ </ div >
591+ </ SheetTrigger >
588592 < SheetContent side = "bottom" className = "h-[90vh] max-w-[90%] mx-auto overflow-y-auto" >
589593 < div className = "p-7" >
590594 < SheetHeader >
@@ -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 >
@@ -897,13 +906,7 @@ function App() {
897906 </ div >
898907 </ div >
899908 </ SheetContent >
900- </ Sheet >
901- </ TooltipTrigger >
902- < TooltipContent >
903- < p > Power users are the top 10% of users by request count.< br />
904- These users make the most requests to GitHub Copilot.</ p >
905- </ TooltipContent >
906- </ UITooltip >
909+ </ Sheet >
907910 ) }
908911 </ div >
909912 </ div >
0 commit comments