@@ -95,6 +95,7 @@ import { OkCodeMark } from "./OkCodeMark";
9595import {
9696 getVisibleThreadsForProject ,
9797 isActionableThreadStatus ,
98+ resolveProjectNameTone ,
9899 resolveSidebarNewThreadEnvMode ,
99100 resolveThreadStatusPill ,
100101 shouldClearThreadSelectionOnMouseDown ,
@@ -556,6 +557,7 @@ export default function Sidebar() {
556557 ( ) => new Map ( threads . map ( ( thread ) => [ thread . id , thread ] as const ) ) ,
557558 [ threads ] ,
558559 ) ;
560+ const activeProjectId = routeThreadId ? ( threadById . get ( routeThreadId ) ?. projectId ?? null ) : null ;
559561 const sortedThreadsByProjectId = useMemo (
560562 ( ) => sortThreadsByProjectIdForSidebar ( threads , appSettings . sidebarThreadSortOrder ) ,
561563 [ appSettings . sidebarThreadSortOrder , threads ] ,
@@ -1258,6 +1260,7 @@ export default function Sidebar() {
12581260 function renderProjectItem (
12591261 project : ( typeof sortedProjects ) [ number ] ,
12601262 dragHandleProps : SortableProjectHandleProps | null ,
1263+ visualIndex : number ,
12611264 ) {
12621265 const projectThreads = sortedThreadsByProjectId . get ( project . id ) ?? EMPTY_THREADS ;
12631266 const activeThreadId = routeThreadId ?? undefined ;
@@ -1277,6 +1280,10 @@ export default function Sidebar() {
12771280 const renderedThreads = pinnedCollapsedThread ? [ pinnedCollapsedThread ] : visibleThreads ;
12781281 const pColor = getProjectColor ( project . id ) ;
12791282 const isDark = resolvedTheme === "dark" ;
1283+ const projectNameTone = resolveProjectNameTone ( {
1284+ isSelectedProject : activeProjectId === project . id ,
1285+ visualIndex,
1286+ } ) ;
12801287
12811288 return (
12821289 < Collapsible className = "group/collapsible" open = { shouldShowThreadPanel } >
@@ -1326,8 +1333,16 @@ export default function Sidebar() {
13261333 ) : (
13271334 < span className = "min-w-0 flex-1" >
13281335 < span
1329- className = "block truncate text-xs font-semibold"
1330- style = { { color : isDark ? pColor . textDark : pColor . text } }
1336+ className = { cn (
1337+ "block truncate text-xs font-semibold" ,
1338+ projectNameTone === "mutedStrong" && "text-muted-foreground/72" ,
1339+ projectNameTone === "mutedSoft" && "text-muted-foreground/48" ,
1340+ ) }
1341+ style = {
1342+ projectNameTone === "project"
1343+ ? { color : isDark ? pColor . textDark : pColor . text }
1344+ : undefined
1345+ }
13311346 onDoubleClick = { ( e ) => {
13321347 e . stopPropagation ( ) ;
13331348 startProjectEditing ( {
@@ -2020,19 +2035,19 @@ export default function Sidebar() {
20202035 items = { sortedProjects . map ( ( project ) => project . id ) }
20212036 strategy = { verticalListSortingStrategy }
20222037 >
2023- { sortedProjects . map ( ( project ) => (
2038+ { sortedProjects . map ( ( project , index ) => (
20242039 < SortableProjectItem key = { project . id } projectId = { project . id } >
2025- { ( dragHandleProps ) => renderProjectItem ( project , dragHandleProps ) }
2040+ { ( dragHandleProps ) => renderProjectItem ( project , dragHandleProps , index ) }
20262041 </ SortableProjectItem >
20272042 ) ) }
20282043 </ SortableContext >
20292044 </ SidebarMenu >
20302045 </ DndContext >
20312046 ) : (
20322047 < SidebarMenu className = "gap-0.5" >
2033- { sortedProjects . map ( ( project ) => (
2048+ { sortedProjects . map ( ( project , index ) => (
20342049 < SidebarMenuItem key = { project . id } className = "rounded-md" >
2035- { renderProjectItem ( project , null ) }
2050+ { renderProjectItem ( project , null , index ) }
20362051 </ SidebarMenuItem >
20372052 ) ) }
20382053 </ SidebarMenu >
0 commit comments