From 05457aca0d20c6e3194bf99b2618373d139bcdea Mon Sep 17 00:00:00 2001 From: iliya Date: Sat, 14 Mar 2026 23:30:37 +0200 Subject: [PATCH] refactor: improve TeamDetailView and MemberList components for better responsiveness and UI clarity - Removed unnecessary inline styles from TeamDetailView for cleaner code. - Added responsive grid layout to MemberList using ResizeObserver to adjust the display based on container width. - Integrated tooltip functionality in LimitContextCheckbox to provide context on token limits, enhancing user experience. --- .../components/team/TeamDetailView.tsx | 9 +------ .../team/dialogs/LimitContextCheckbox.tsx | 23 ++++++++++++++++ .../components/team/members/MemberList.tsx | 27 ++++++++++++++++--- 3 files changed, 47 insertions(+), 12 deletions(-) diff --git a/src/renderer/components/team/TeamDetailView.tsx b/src/renderer/components/team/TeamDetailView.tsx index 2d2d9c9e..3bbddb81 100644 --- a/src/renderer/components/team/TeamDetailView.tsx +++ b/src/renderer/components/team/TeamDetailView.tsx @@ -1125,14 +1125,7 @@ export const TeamDetailView = ({ teamName }: TeamDetailViewProps): React.JSX.Ele )} -
+
{headerColorSet ? (
= ({ Limit context to 200K tokens {disabled && (always 200K for this model)} + + + + + + +

+ Agents will use 200K context window instead of the default 1M. Useful if you want to + save tokens and reduce costs. +

+
+
+
); diff --git a/src/renderer/components/team/members/MemberList.tsx b/src/renderer/components/team/members/MemberList.tsx index 175066c9..88e207fe 100644 --- a/src/renderer/components/team/members/MemberList.tsx +++ b/src/renderer/components/team/members/MemberList.tsx @@ -1,4 +1,5 @@ -import { useStore } from '@renderer/store'; +import { useCallback, useEffect, useRef, useState } from 'react'; + import { buildMemberColorMap } from '@renderer/utils/memberHelpers'; import { MemberCard } from './MemberCard'; @@ -45,8 +46,26 @@ export const MemberList = ({ onAssignTask, onOpenTask, }: MemberListProps): React.JSX.Element => { - const sidebarCollapsed = useStore((s) => s.sidebarCollapsed); - const gridClass = sidebarCollapsed ? 'grid grid-cols-2 gap-1' : 'grid grid-cols-1 gap-1'; + const containerRef = useRef(null); + const [isWide, setIsWide] = useState(false); + + const handleResize = useCallback((entries: ResizeObserverEntry[]) => { + const entry = entries[0]; + if (entry) { + setIsWide(entry.contentRect.width > 1000); + } + }, []); + + useEffect(() => { + const el = containerRef.current; + if (!el) return; + + const observer = new ResizeObserver(handleResize); + observer.observe(el); + return () => observer.disconnect(); + }, [handleResize]); + + const gridClass = isWide ? 'grid grid-cols-2 gap-1' : 'grid grid-cols-1 gap-1'; const activeMembers = members .filter((m) => !m.removedAt) .sort((a, b) => { @@ -106,7 +125,7 @@ export const MemberList = ({ }; return ( -
+
{activeMembers.map((member) => renderCard(member, false))}
{removedMembers.length > 0 && ( <>