@@ -25,9 +25,8 @@ import Thumbnails from "../common/Thumbnails"
2525import ModeSelector from "./ModeSelector"
2626import { MAX_IMAGES_PER_MESSAGE } from "./ChatView"
2727import ContextMenu from "./ContextMenu"
28- import { VolumeX , Pin , Check } from "lucide-react"
29- import { IconButton } from "./IconButton"
30- import { IndexingStatusDot } from "./IndexingStatusBadge"
28+ import { VolumeX , Pin , Check , Image , WandSparkles , SendHorizontal } from "lucide-react"
29+ import { IndexingStatusBadge } from "./IndexingStatusBadge"
3130import { cn } from "@/lib/utils"
3231import { usePromptHistory } from "./hooks/usePromptHistory"
3332
@@ -962,24 +961,49 @@ const ChatTextArea = forwardRef<HTMLTextAreaElement, ChatTextAreaProps>(
962961 ) }
963962
964963 < div className = "absolute top-1 right-1 z-30" >
965- < IconButton
966- iconClass = { isEnhancingPrompt ? "codicon-loading" : "codicon-sparkle" }
964+ < button
965+ aria-label = { t ( "chat:enhancePrompt" ) }
967966 title = { t ( "chat:enhancePrompt" ) }
968967 disabled = { sendingDisabled }
969- isLoading = { isEnhancingPrompt }
970- onClick = { handleEnhancePrompt }
971- className = "opacity-60 hover:opacity-100 text-vscode-descriptionForeground hover:text-vscode-foreground"
972- />
968+ onClick = { ! sendingDisabled ? handleEnhancePrompt : undefined }
969+ className = { cn (
970+ "relative inline-flex items-center justify-center" ,
971+ "bg-transparent border-none p-1.5" ,
972+ "rounded-md min-w-[28px] min-h-[28px]" ,
973+ "opacity-60 hover:opacity-100 text-vscode-descriptionForeground hover:text-vscode-foreground" ,
974+ "transition-all duration-150" ,
975+ "hover:bg-[rgba(255,255,255,0.03)] hover:border-[rgba(255,255,255,0.15)]" ,
976+ "focus:outline-none focus-visible:ring-1 focus-visible:ring-vscode-focusBorder" ,
977+ "active:bg-[rgba(255,255,255,0.1)]" ,
978+ ! sendingDisabled && "cursor-pointer" ,
979+ sendingDisabled &&
980+ "opacity-40 cursor-not-allowed grayscale-[30%] hover:bg-transparent hover:border-[rgba(255,255,255,0.08)] active:bg-transparent" ,
981+ ) } >
982+ < WandSparkles className = { cn ( "w-4 h-4" , isEnhancingPrompt && "animate-spin" ) } />
983+ </ button >
973984 </ div >
974985
975986 < div className = "absolute bottom-1 right-1 z-30" >
976- < IconButton
977- iconClass = "codicon-send"
987+ < button
988+ aria-label = { t ( "chat:sendMessage" ) }
978989 title = { t ( "chat:sendMessage" ) }
979990 disabled = { sendingDisabled }
980- onClick = { onSend }
981- className = "opacity-60 hover:opacity-100 text-vscode-descriptionForeground hover:text-vscode-foreground"
982- />
991+ onClick = { ! sendingDisabled ? onSend : undefined }
992+ className = { cn (
993+ "relative inline-flex items-center justify-center" ,
994+ "bg-transparent border-none p-1.5" ,
995+ "rounded-md min-w-[28px] min-h-[28px]" ,
996+ "opacity-60 hover:opacity-100 text-vscode-descriptionForeground hover:text-vscode-foreground" ,
997+ "transition-all duration-150" ,
998+ "hover:bg-[rgba(255,255,255,0.03)] hover:border-[rgba(255,255,255,0.15)]" ,
999+ "focus:outline-none focus-visible:ring-1 focus-visible:ring-vscode-focusBorder" ,
1000+ "active:bg-[rgba(255,255,255,0.1)]" ,
1001+ ! sendingDisabled && "cursor-pointer" ,
1002+ sendingDisabled &&
1003+ "opacity-40 cursor-not-allowed grayscale-[30%] hover:bg-transparent hover:border-[rgba(255,255,255,0.08)] active:bg-transparent" ,
1004+ ) } >
1005+ < SendHorizontal className = "w-4 h-4" />
1006+ </ button >
9831007 </ div >
9841008
9851009 { ! inputValue && (
@@ -1145,14 +1169,28 @@ const ChatTextArea = forwardRef<HTMLTextAreaElement, ChatTextAreaProps>(
11451169 </ div >
11461170
11471171 < div className = { cn ( "flex" , "items-center" , "gap-0.5" , "shrink-0" ) } >
1148- < IndexingStatusDot />
1149- < IconButton
1150- iconClass = "codicon-device-camera"
1172+ < IndexingStatusBadge />
1173+ < button
1174+ aria-label = { t ( "chat:addImages" ) }
11511175 title = { t ( "chat:addImages" ) }
11521176 disabled = { shouldDisableImages }
1153- onClick = { onSelectImages }
1154- className = "mr-1"
1155- />
1177+ onClick = { ! shouldDisableImages ? onSelectImages : undefined }
1178+ className = { cn (
1179+ "relative inline-flex items-center justify-center" ,
1180+ "bg-transparent border-none p-1.5" ,
1181+ "rounded-md min-w-[28px] min-h-[28px]" ,
1182+ "text-vscode-foreground opacity-85" ,
1183+ "transition-all duration-150" ,
1184+ "hover:opacity-100 hover:bg-[rgba(255,255,255,0.03)] hover:border-[rgba(255,255,255,0.15)]" ,
1185+ "focus:outline-none focus-visible:ring-1 focus-visible:ring-vscode-focusBorder" ,
1186+ "active:bg-[rgba(255,255,255,0.1)]" ,
1187+ ! shouldDisableImages && "cursor-pointer" ,
1188+ shouldDisableImages &&
1189+ "opacity-40 cursor-not-allowed grayscale-[30%] hover:bg-transparent hover:border-[rgba(255,255,255,0.08)] active:bg-transparent" ,
1190+ "mr-1" ,
1191+ ) } >
1192+ < Image className = "w-4 h-4" />
1193+ </ button >
11561194 </ div >
11571195 </ div >
11581196 </ div >
0 commit comments