diff --git a/web/src/assets/images/conversation/audio.svg b/web/src/assets/images/conversation/audio.svg index 57a5ca49..c7c4e1fd 100644 --- a/web/src/assets/images/conversation/audio.svg +++ b/web/src/assets/images/conversation/audio.svg @@ -1,17 +1,28 @@ - - 编组 15 - - - - - - - - - - - + + 语音 + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/audio_ing.svg b/web/src/assets/images/conversation/audio_ing.svg deleted file mode 100644 index 280a1bd9..00000000 --- a/web/src/assets/images/conversation/audio_ing.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - 编组 15 - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/assets/images/conversation/delete.svg b/web/src/assets/images/conversation/delete.svg index 27f1c15f..b46dea12 100644 --- a/web/src/assets/images/conversation/delete.svg +++ b/web/src/assets/images/conversation/delete.svg @@ -5,7 +5,7 @@ - + diff --git a/web/src/assets/images/conversation/link.svg b/web/src/assets/images/conversation/link.svg index 18031b71..17298c10 100644 --- a/web/src/assets/images/conversation/link.svg +++ b/web/src/assets/images/conversation/link.svg @@ -1,18 +1,26 @@ - - 链接 - - - - - - - - - - - - + + 编组 6 + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/loading.svg b/web/src/assets/images/conversation/loading.svg index 01adc786..7bed9e7f 100644 --- a/web/src/assets/images/conversation/loading.svg +++ b/web/src/assets/images/conversation/loading.svg @@ -1,13 +1,24 @@ - - 编组 5 - - - - - - - + + 编组 14 + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/memoryFunction.svg b/web/src/assets/images/conversation/memoryFunction.svg index f63dc231..d0f3daf8 100644 --- a/web/src/assets/images/conversation/memoryFunction.svg +++ b/web/src/assets/images/conversation/memoryFunction.svg @@ -1,15 +1,26 @@ - brain-2-line - - - - - - - - - + 1 + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/memoryFunctionChecked.svg b/web/src/assets/images/conversation/memoryFunctionChecked.svg index db12f037..cf136428 100644 --- a/web/src/assets/images/conversation/memoryFunctionChecked.svg +++ b/web/src/assets/images/conversation/memoryFunctionChecked.svg @@ -1,14 +1,27 @@ - brain-2-line - - - - - - - - + 1 + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/online.svg b/web/src/assets/images/conversation/online.svg index 0ae567ca..c9c5812b 100644 --- a/web/src/assets/images/conversation/online.svg +++ b/web/src/assets/images/conversation/online.svg @@ -1,17 +1,28 @@ - 互联网 - - - - - - - - - - - + 联网 + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/onlineChecked.svg b/web/src/assets/images/conversation/onlineChecked.svg index 89fd61c4..fdd2b4b2 100644 --- a/web/src/assets/images/conversation/onlineChecked.svg +++ b/web/src/assets/images/conversation/onlineChecked.svg @@ -1,16 +1,29 @@ - 互联网 - - - - - - - - - - + 联网 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/send.svg b/web/src/assets/images/conversation/send.svg index 8e129cad..5e9f5a21 100644 --- a/web/src/assets/images/conversation/send.svg +++ b/web/src/assets/images/conversation/send.svg @@ -1,12 +1,30 @@ - - 发送-2备份 - - - - - - + + 发送-2@2x + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/src/assets/images/conversation/sendDisabled.svg b/web/src/assets/images/conversation/sendDisabled.svg index 964bd2a1..7eb01380 100644 --- a/web/src/assets/images/conversation/sendDisabled.svg +++ b/web/src/assets/images/conversation/sendDisabled.svg @@ -1,8 +1,8 @@ - - 发送-2 + + 发送-2@2x - + @@ -12,15 +12,16 @@ - - - - - - - - - + + + + + + + + + + diff --git a/web/src/assets/images/conversation/variables.svg b/web/src/assets/images/conversation/variables.svg new file mode 100644 index 00000000..e95c6922 --- /dev/null +++ b/web/src/assets/images/conversation/variables.svg @@ -0,0 +1,31 @@ + + + 变量 (1) + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/components/AudioRecorder/index.tsx b/web/src/components/AudioRecorder/index.tsx index 639a9109..8df31398 100644 --- a/web/src/components/AudioRecorder/index.tsx +++ b/web/src/components/AudioRecorder/index.tsx @@ -2,12 +2,13 @@ * @Author: ZhaoYing * @Date: 2026-02-06 21:11:51 * @Last Modified by: ZhaoYing - * @Last Modified time: 2026-03-17 18:39:09 + * @Last Modified time: 2026-03-20 14:25:26 */ import { type FC, useRef, useState } from 'react' import RecordRTC from 'recordrtc' -import { App } from 'antd' +import { App, Tooltip } from 'antd' import { useTranslation } from 'react-i18next'; +import clsx from 'clsx'; import { fileUploadUrlWithoutApiPrefix } from '@/api/fileStorage' import { request } from '@/utils/request' @@ -91,14 +92,17 @@ const AudioRecorder: FC = ({ // Toggle between recording/idle states on click; // swap background image to reflect current state return ( -
+ +
+ ) } diff --git a/web/src/components/Chat/ChatInput.tsx b/web/src/components/Chat/ChatInput.tsx index dddcc162..4221c426 100644 --- a/web/src/components/Chat/ChatInput.tsx +++ b/web/src/components/Chat/ChatInput.tsx @@ -2,7 +2,7 @@ * @Author: ZhaoYing * @Date: 2025-12-10 16:46:14 * @Last Modified by: ZhaoYing - * @Last Modified time: 2026-03-19 20:46:45 + * @Last Modified time: 2026-03-20 15:39:33 */ import { type FC, useEffect, useMemo, useState } from 'react' import { Flex, Input, Form } from 'antd' @@ -77,85 +77,95 @@ const ChatInput: FC = ({ return (
- - {previewFileList.length > 0 &&
- {previewFileList.map((file) => { - if (file.type.includes('image')) { + {previewFileList.length > 0 &&
+ + {previewFileList.map((file) => { + if (file.type.includes('image')) { + return ( +
+ {file.name} +
handleDelete(file)} + >
+
+ ) + } + if (file.type.includes('video')) { + return ( +
+
+ ) + } + if (file.type.includes('audio')) { + return ( +
+
+ ) + } return ( -
- {file.name} +
+
+
{file.name}
+
{file.type.split('/')[file.type.split('/').length - 1]} · {file.size}
+
+
handleDelete(file)} >
-
+
) - } - if (file.type.includes('video')) { - return ( -
-
- ) - } - if (file.type.includes('audio')) { - return ( -
-
- ) - } - return ( - - {file.type.includes('pdf') - ?
- : (file.type.includes('excel') || file.type.includes('spreadsheetml.sheet') || file.type.includes('csv')) - ?
- : (file.type.includes('doc') || file.type.includes('docx') || file.type.includes('word') || file.type.includes('wordprocessingml.document')) - ?
- : null - } -
-
{file.name}
-
{file.type} · {file.size}
-
-
handleDelete(file)} - >
-
- ) - })} - + })} +
} {/* Message input form */}
onChange?.(e.target.value)} onKeyDown={(e) => { // Enter to send, Shift+Enter for new line @@ -171,17 +181,21 @@ const ChatInput: FC = ({ {/* Bottom action area */} - + {/* Child component content (such as buttons) */}
{children}
- - {/* Send button - display different icons based on state */} - {loading - ?
- : !values || !values?.message || values?.message?.trim() === '' - ?
- :
- } + +
diff --git a/web/src/components/Chat/ChatToolbar.tsx b/web/src/components/Chat/ChatToolbar.tsx index 883ac98a..64c3f03e 100644 --- a/web/src/components/Chat/ChatToolbar.tsx +++ b/web/src/components/Chat/ChatToolbar.tsx @@ -2,12 +2,11 @@ * @Author: ZhaoYing * @Date: 2026-03-17 14:22:25 * @Last Modified by: ZhaoYing - * @Last Modified time: 2026-03-18 15:55:13 + * @Last Modified time: 2026-03-20 15:44:48 */ // Toolbar component for chat input area, supporting file upload, audio recording, and variable configuration import { useRef, forwardRef, useImperativeHandle, type ReactNode, useEffect } from 'react' -import { Flex, Dropdown, Divider, App, Form, type MenuProps } from 'antd' -import { SettingOutlined } from '@ant-design/icons' +import { Flex, Dropdown, Divider, App, Form, type MenuProps, Tooltip } from 'antd' import { useTranslation } from 'react-i18next' import clsx from 'clsx' @@ -31,7 +30,8 @@ export interface ChatToolbarRef { // Props for configuring toolbar features, upload settings, and event callbacks export interface ChatToolbarProps { features: FeaturesConfigForm - extra?: ReactNode + leftExtra?: ReactNode; + rightExtra?: ReactNode uploadAction?: string uploadRequestConfig?: { data?: Record @@ -51,7 +51,8 @@ interface FormValues { const ChatToolbar = forwardRef(({ features, - extra, + leftExtra, + rightExtra, uploadAction, uploadRequestConfig, onFilesChange, @@ -154,28 +155,34 @@ const ChatToolbar = forwardRef(({ return (
- +