@@ -64,6 +64,8 @@ const ChatInput = ({
64
64
const { selectedModel } = useModelProvider ( )
65
65
const { sendMessage } = useChat ( )
66
66
const [ message , setMessage ] = useState ( '' )
67
+ const [ dropdownToolsAvailable , setDropdownToolsAvailable ] = useState ( false )
68
+ const [ tooltipToolsAvailable , setTooltipToolsAvailable ] = useState ( false )
67
69
const [ uploadedFiles , setUploadedFiles ] = useState <
68
70
Array < {
69
71
name : string
@@ -407,7 +409,6 @@ const ChatInput = ({
407
409
useLastUsedModel = { initialMessage }
408
410
/>
409
411
) }
410
-
411
412
{ /* File attachment - always available */ }
412
413
< div
413
414
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"
@@ -421,16 +422,14 @@ const ChatInput = ({
421
422
onChange = { handleFileChange }
422
423
/>
423
424
</ div >
424
-
425
425
{ /* Microphone - always available - Temp Hide */ }
426
426
{ /* <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">
427
427
<IconMicrophone size={18} className="text-main-view-fg/50" />
428
428
</div> */ }
429
-
430
429
{ selectedModel ?. capabilities ?. includes ( 'vision' ) && (
431
430
< TooltipProvider >
432
431
< Tooltip >
433
- < TooltipTrigger asChild >
432
+ < TooltipTrigger disabled = { dropdownToolsAvailable } >
434
433
< 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" >
435
434
< IconEye size = { 18 } className = "text-main-view-fg/50" />
436
435
</ div >
@@ -441,7 +440,6 @@ const ChatInput = ({
441
440
</ Tooltip >
442
441
</ TooltipProvider >
443
442
) }
444
-
445
443
{ selectedModel ?. capabilities ?. includes ( 'embeddings' ) && (
446
444
< TooltipProvider >
447
445
< Tooltip >
@@ -463,32 +461,49 @@ const ChatInput = ({
463
461
{ selectedModel ?. capabilities ?. includes ( 'tools' ) &&
464
462
hasActiveMCPServers && (
465
463
< TooltipProvider >
466
- < Tooltip >
467
- < TooltipTrigger asChild >
468
- < div >
464
+ < Tooltip
465
+ open = { tooltipToolsAvailable }
466
+ onOpenChange = { setTooltipToolsAvailable }
467
+ >
468
+ < TooltipTrigger
469
+ asChild
470
+ disabled = { dropdownToolsAvailable }
471
+ >
472
+ < div
473
+ onClick = { ( e ) => {
474
+ setDropdownToolsAvailable ( false )
475
+ e . stopPropagation ( )
476
+ } }
477
+ >
469
478
< DropdownToolsAvailable
470
479
initialMessage = { initialMessage }
471
480
>
472
- { ( isOpen , toolsCount ) => (
473
- < div
474
- className = { cn (
475
- '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' ,
476
- isOpen && 'bg-main-view-fg/10'
477
- ) }
478
- >
479
- < IconTool
480
- size = { 18 }
481
- className = "text-main-view-fg/50"
482
- />
483
- { toolsCount > 0 && (
484
- < 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" >
485
- < span className = "leading-0" >
486
- { toolsCount > 99 ? '99+' : toolsCount }
487
- </ span >
488
- </ div >
489
- ) }
490
- </ div >
491
- ) }
481
+ { ( isOpen , toolsCount ) => {
482
+ setDropdownToolsAvailable ( isOpen )
483
+ if ( tooltipToolsAvailable && isOpen ) {
484
+ setTooltipToolsAvailable ( false )
485
+ }
486
+ return (
487
+ < div
488
+ className = { cn (
489
+ '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' ,
490
+ isOpen && 'bg-main-view-fg/10'
491
+ ) }
492
+ >
493
+ < IconTool
494
+ size = { 18 }
495
+ className = "text-main-view-fg/50"
496
+ />
497
+ { toolsCount > 0 && (
498
+ < div className = "absolute -top-2 -right-2 bg-accent text-accent-fg text-xs rounded-full size-5 flex items-center justify-center font-medium" >
499
+ < span className = "leading-0 text-xs" >
500
+ { toolsCount > 99 ? '99+' : toolsCount }
501
+ </ span >
502
+ </ div >
503
+ ) }
504
+ </ div >
505
+ )
506
+ } }
492
507
</ DropdownToolsAvailable >
493
508
</ div >
494
509
</ TooltipTrigger >
@@ -498,7 +513,6 @@ const ChatInput = ({
498
513
</ Tooltip >
499
514
</ TooltipProvider >
500
515
) }
501
-
502
516
{ selectedModel ?. capabilities ?. includes ( 'web_search' ) && (
503
517
< TooltipProvider >
504
518
< Tooltip >
@@ -516,7 +530,6 @@ const ChatInput = ({
516
530
</ Tooltip >
517
531
</ TooltipProvider >
518
532
) }
519
-
520
533
{ selectedModel ?. capabilities ?. includes ( 'reasoning' ) && (
521
534
< TooltipProvider >
522
535
< Tooltip >
0 commit comments