enhancement/tmp-hide-attachment-icon (#5160)

This commit is contained in:
Faisal Amir 2025-06-02 10:02:03 +07:00 committed by GitHub
parent 101e692e50
commit fa9d81e3b2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6,6 +6,12 @@ import { usePrompt } from '@/hooks/usePrompt'
import { useThreads } from '@/hooks/useThreads' import { useThreads } from '@/hooks/useThreads'
import { useCallback, useEffect, useRef, useState } from 'react' import { useCallback, useEffect, useRef, useState } from 'react'
import { Button } from '@/components/ui/button' import { Button } from '@/components/ui/button'
import {
Tooltip,
TooltipContent,
TooltipProvider,
TooltipTrigger,
} from '@/components/ui/tooltip'
import { ArrowRight } from 'lucide-react' import { ArrowRight } from 'lucide-react'
import { import {
IconPaperclip, IconPaperclip,
@ -401,7 +407,7 @@ const ChatInput = ({
{/* File attachment - always available */} {/* File attachment - always available */}
<div <div
className="h-6 p-1 flex items-center justify-center rounded-sm hover:bg-main-view-fg/10 transition-all duration-200 ease-in-out gap-1" className="h-6 hidden p-1 items-center justify-center rounded-sm hover:bg-main-view-fg/10 transition-all duration-200 ease-in-out gap-1"
onClick={handleAttachmentClick} onClick={handleAttachmentClick}
> >
<IconPaperclip size={18} className="text-main-view-fg/50" /> <IconPaperclip size={18} className="text-main-view-fg/50" />
@ -419,56 +425,109 @@ const ChatInput = ({
</div> */} </div> */}
{selectedModel?.capabilities?.includes('vision') && ( {selectedModel?.capabilities?.includes('vision') && (
<div className="h-6 p-1 flex items-center justify-center rounded-sm hover:bg-main-view-fg/10 transition-all duration-200 ease-in-out gap-1"> <TooltipProvider>
<IconEye size={18} className="text-main-view-fg/50" /> <Tooltip>
</div> <TooltipTrigger asChild>
<div className="h-6 p-1 flex items-center justify-center rounded-sm hover:bg-main-view-fg/10 transition-all duration-200 ease-in-out gap-1">
<IconEye size={18} className="text-main-view-fg/50" />
</div>
</TooltipTrigger>
<TooltipContent>
<p>Vision</p>
</TooltipContent>
</Tooltip>
</TooltipProvider>
)} )}
{selectedModel?.capabilities?.includes('embeddings') && ( {selectedModel?.capabilities?.includes('embeddings') && (
<div className="h-6 p-1 flex items-center justify-center rounded-sm hover:bg-main-view-fg/10 transition-all duration-200 ease-in-out gap-1"> <TooltipProvider>
<IconCodeCircle2 <Tooltip>
size={18} <TooltipTrigger asChild>
className="text-main-view-fg/50" <div className="h-6 p-1 flex items-center justify-center rounded-sm hover:bg-main-view-fg/10 transition-all duration-200 ease-in-out gap-1">
/> <IconCodeCircle2
</div> size={18}
className="text-main-view-fg/50"
/>
</div>
</TooltipTrigger>
<TooltipContent>
<p>Embeddings</p>
</TooltipContent>
</Tooltip>
</TooltipProvider>
)} )}
{selectedModel?.capabilities?.includes('tools') && {selectedModel?.capabilities?.includes('tools') &&
hasActiveMCPServers && ( hasActiveMCPServers && (
<DropdownToolsAvailable initialMessage={initialMessage}> <TooltipProvider>
{(isOpen, toolsCount) => ( <Tooltip>
<div <TooltipTrigger asChild>
className={cn( <DropdownToolsAvailable
'h-6 p-1 flex items-center justify-center rounded-sm hover:bg-main-view-fg/10 transition-all duration-200 ease-in-out gap-1 cursor-pointer relative', initialMessage={initialMessage}
isOpen && 'bg-main-view-fg/10' >
)} {(isOpen, toolsCount) => (
> <div
<IconTool className={cn(
size={18} 'h-6 p-1 flex items-center justify-center rounded-sm hover:bg-main-view-fg/10 transition-all duration-200 ease-in-out gap-1 cursor-pointer relative',
className="text-main-view-fg/50" isOpen && 'bg-main-view-fg/10'
/> )}
{toolsCount > 0 && ( >
<div className="absolute -top-1 -right-1.5 bg-accent text-accent-fg text-xs rounded-full size-4 flex items-center justify-center font-medium"> <IconTool
<span className="leading-0"> size={18}
{toolsCount > 99 ? '99+' : toolsCount} className="text-main-view-fg/50"
</span> />
</div> {toolsCount > 0 && (
)} <div className="absolute -top-1 -right-1.5 bg-accent text-accent-fg text-xs rounded-full size-4 flex items-center justify-center font-medium">
</div> <span className="leading-0">
)} {toolsCount > 99 ? '99+' : toolsCount}
</DropdownToolsAvailable> </span>
</div>
)}
</div>
)}
</DropdownToolsAvailable>
</TooltipTrigger>
<TooltipContent>
<p>Tools</p>
</TooltipContent>
</Tooltip>
</TooltipProvider>
)} )}
{selectedModel?.capabilities?.includes('web_search') && ( {selectedModel?.capabilities?.includes('web_search') && (
<div className="h-6 p-1 flex items-center justify-center rounded-sm hover:bg-main-view-fg/10 transition-all duration-200 ease-in-out gap-1"> <TooltipProvider>
<IconWorld size={18} className="text-main-view-fg/50" /> <Tooltip>
</div> <TooltipTrigger asChild>
<div className="h-6 p-1 flex items-center justify-center rounded-sm hover:bg-main-view-fg/10 transition-all duration-200 ease-in-out gap-1">
<IconWorld
size={18}
className="text-main-view-fg/50"
/>
</div>
</TooltipTrigger>
<TooltipContent>
<p>Web Search</p>
</TooltipContent>
</Tooltip>
</TooltipProvider>
)} )}
{selectedModel?.capabilities?.includes('reasoning') && ( {selectedModel?.capabilities?.includes('reasoning') && (
<div className="h-6 p-1 flex items-center justify-center rounded-sm hover:bg-main-view-fg/10 transition-all duration-200 ease-in-out gap-1"> <TooltipProvider>
<IconAtom size={18} className="text-main-view-fg/50" /> <Tooltip>
</div> <TooltipTrigger asChild>
<div className="h-6 p-1 flex items-center justify-center rounded-sm hover:bg-main-view-fg/10 transition-all duration-200 ease-in-out gap-1">
<IconAtom
size={18}
className="text-main-view-fg/50"
/>
</div>
</TooltipTrigger>
<TooltipContent>
<p>Reasoning</p>
</TooltipContent>
</Tooltip>
</TooltipProvider>
)} )}
</div> </div>