setHoveredFilePath(file.filePath)}
onMouseLeave={() =>
@@ -409,7 +345,7 @@ export const Inputbox = ({
{
e.preventDefault();
@@ -419,7 +355,7 @@ export const Inputbox = ({
title={isHovered ? t('chat.remove-file') : file.fileName}
>
{isHovered ? (
-
+
) : (
getFileIcon(file.fileName)
)}
@@ -428,7 +364,7 @@ export const Inputbox = ({
{/* File Name */}
@@ -442,34 +378,38 @@ export const Inputbox = ({
-
+
{files.slice(maxVisibleFiles).map((file) => {
const isHovered = hoveredFilePath === file.filePath;
return (
@@ -511,29 +451,169 @@ export const Inputbox = ({
)}
- {/* Action Buttons */}
+ {/* Layer 2: Text input area */}
+
+ }
+ value={value}
+ onChange={(next, cursorPos) =>
+ handleTextChange(next, cursorPos ?? undefined)
+ }
+ onKeyDown={handleKeyDown}
+ onCompositionStart={() => setIsComposing(true)}
+ onCompositionEnd={() => setIsComposing(false)}
+ onFocus={() => setIsFocused(true)}
+ onBlur={() => setIsFocused(false)}
+ disabled={disabled}
+ placeholder={placeholder}
+ placeholders={placeholders}
+ className={cn(
+ 'border-none shadow-none focus-visible:ring-0',
+ 'max-h-[200px] min-h-[40px]'
+ )}
+ textClassName={
+ isActive ? 'text-input-text-focus' : 'text-input-text-default'
+ }
+ style={{
+ fontFamily: 'Inter',
+ fontSize: '13px',
+ lineHeight: '20px',
+ }}
+ maxHeightPx={200}
+ />
+
+
+ {/* Layer 3: Action buttons */}
{/* Left: Add File Button and Add Trigger Button */}
-
-
+
+
+
+
+
+
+ {
+ onAddFile?.();
+ }}
+ >
+
+ {t('chat.input-attach-add-files-or-photos')}
+
+
+ {/* Submenus use alignOffset: Radix SubContent is fixed top-aligned; negative offset bottom-aligns panel to trigger row */}
+
+
+
+ {t('chat.input-attach-skills')}
+
+
+
+ navigate(
+ '/history?tab=agents§ion=skills&skillAction=upload'
+ )
+ }
+ >
+ {t('chat.input-attach-upload-new-skill')}
+
+
+ navigate('/history?tab=agents§ion=skills')
+ }
+ >
+ {t('chat.input-attach-manage-skills')}
+
+
+
+
+
+
+ {t('layout.connectors')}
+
+
+
+ navigate('/history?tab=connectors&connectorAction=add')
+ }
+ >
+ {t('chat.input-attach-add-mcp')}
+
+ navigate('/history?tab=connectors')}
+ >
+ {t('chat.input-attach-manage-connectors')}
+
+
+
+
+
+
+ {t('layout.browser')}
+
+
+
+ navigate('/history?tab=browser&browserAction=launch')
+ }
+ >
+ {t('chat.input-attach-open-browser')}
+
+ navigate('/history?tab=browser')}
+ >
+ {t('chat.input-attach-manage-browsers')}
+
+
+
+
+
{/* Add Trigger Button - opens TriggerDialog */}
@@ -547,57 +627,27 @@ export const Inputbox = ({
{/* Right: Send Button */}
-
- {/* Expand Input Dialog Button - hidden when inside ExpandedInputBox */}
- {/*{!hideExpandButton && (
-
- )}*/}
+
-
- {/* Expanded Input Box */}
-
- {isExpandedDialogOpen && (
- handleExpandedDialogChange(false)}
- />
- )}
-
);
diff --git a/src/components/ChatBox/BottomBox/QueuedBox.tsx b/src/components/ChatBox/BottomBox/QueuedBox.tsx
index 48c43a011..17b1b9e52 100644
--- a/src/components/ChatBox/BottomBox/QueuedBox.tsx
+++ b/src/components/ChatBox/BottomBox/QueuedBox.tsx
@@ -44,12 +44,12 @@ export function QueuedBox({
return (
{/* Queuing Header Top */}
-
+
{/* Lead Button for expand/collapse */}