style: update Tooltip to modern popover style

- Remove arrow for cleaner popover aesthetic
- Add backdrop blur and subtle shadow for depth
- Use rounded-lg for rounder corners
- Default to top positioning with 4px offset
- Disable tooltip on active sidebar items
- Update shrink-0 class names (linter auto-fix)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Naiyuan Qing
2026-01-16 17:59:55 +08:00
parent 6b3a397495
commit 780dc7389b
4 changed files with 14 additions and 11 deletions

View File

@@ -127,7 +127,7 @@ export function AgentSelector({
</DropdownMenuItem>
</div>
</TooltipTrigger>
<TooltipContent side="right">Setup required in Settings</TooltipContent>
<TooltipContent>Setup required in Settings</TooltipContent>
</Tooltip>
)
}

View File

@@ -77,7 +77,7 @@ function SessionItem({
onMouseEnter={() => setIsHovered(true)}
onMouseLeave={() => setIsHovered(false)}
>
<Tooltip delayDuration={600}>
<Tooltip delayDuration={600} open={isActive ? false : undefined}>
<TooltipTrigger asChild>
<SidebarMenuButton
isActive={isActive}
@@ -95,11 +95,11 @@ function SessionItem({
<span className="truncate text-sm font-medium">{getSessionTitle(session)}</span>
{/* Status indicators - invalid directory has highest priority */}
{isInvalid ? (
<AlertTriangle className="h-3.5 w-3.5 flex-shrink-0 text-amber-500" />
<AlertTriangle className="h-3.5 w-3.5 shrink-0 text-amber-500" />
) : needsPermission ? (
<CirclePause className="h-3.5 w-3.5 flex-shrink-0 text-amber-500" />
<CirclePause className="h-3.5 w-3.5 shrink-0 text-amber-500" />
) : isProcessing ? (
<Loader2 className="h-3 w-3 flex-shrink-0 animate-spin text-primary" />
<Loader2 className="h-3 w-3 shrink-0 animate-spin text-primary" />
) : null}
</div>
@@ -116,7 +116,7 @@ function SessionItem({
onDelete()
}}
className={cn(
'flex-shrink-0 self-start rounded p-1 transition-opacity duration-150',
'shrink-0 self-start rounded p-1 transition-opacity duration-150',
'hover:bg-muted active:bg-muted',
isHovered ? 'opacity-50 hover:opacity-100' : 'opacity-0'
)}
@@ -125,7 +125,7 @@ function SessionItem({
</button>
</SidebarMenuButton>
</TooltipTrigger>
<TooltipContent side="right">
<TooltipContent>
{isInvalid ? (
<p className="text-amber-500">Directory not found: {session.workingDirectory}</p>
) : (

View File

@@ -546,7 +546,6 @@ function SidebarMenuButton({
<Tooltip>
<TooltipTrigger asChild>{button}</TooltipTrigger>
<TooltipContent
side="right"
align="center"
hidden={state !== 'collapsed' || isMobile}
{...tooltip}

View File

@@ -30,7 +30,8 @@ function TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimiti
function TooltipContent({
className,
sideOffset = 0,
side = 'top',
sideOffset = 4,
children,
...props
}: React.ComponentProps<typeof TooltipPrimitive.Content>) {
@@ -38,15 +39,18 @@ function TooltipContent({
<TooltipPrimitive.Portal>
<TooltipPrimitive.Content
data-slot="tooltip-content"
side={side}
sideOffset={sideOffset}
className={cn(
'bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance',
'bg-popover/95 text-popover-foreground backdrop-blur-sm',
'shadow-lg shadow-black/10 border border-border/50',
'animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
'z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-lg px-3 py-1.5 text-xs text-balance',
className
)}
{...props}
>
{children}
<TooltipPrimitive.Arrow className="bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" />
</TooltipPrimitive.Content>
</TooltipPrimitive.Portal>
)