server : (webui) revamp the input area, plus many small UI improvements (#13365)

* rework the input area

* process selected file

* change all icons to heroicons

* fix thought process collapse

* move conversation more menu to sidebar

* sun icon --> moon icon

* rm default system message

* stricter upload file check, only allow image if server has mtmd

* build it

* add renaming

* better autoscroll

* build

* add conversation group

* fix scroll

* extra context first, then user input in the end

* fix <hr> tag

* clean up a bit

* build

* add mb-3 for <pre>

* throttle adjustTextareaHeight to make it less laggy

* (nits) missing padding in sidebar

* rm stray console log
This commit is contained in:
Xuan-Son Nguyen 2025-05-08 15:37:29 +02:00 committed by GitHub
parent 1a844be132
commit 8c83449cb7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
23 changed files with 1142 additions and 320 deletions

View file

@ -11,6 +11,8 @@ import { ElementContent, Root } from 'hast';
import { visit } from 'unist-util-visit';
import { useAppContext } from '../utils/app.context';
import { CanvasType } from '../utils/types';
import { BtnWithTooltips } from '../utils/common';
import { DocumentDuplicateIcon, PlayIcon } from '@heroicons/react/24/outline';
export default function MarkdownDisplay({
content,
@ -81,10 +83,13 @@ const CodeBlockButtons: React.ElementType<
'display-none': !node?.position,
})}
>
<CopyButton className="badge btn-mini" content={copiedContent} />
<CopyButton
className="badge btn-mini btn-soft shadow-sm"
content={copiedContent}
/>
{canRunCode && (
<RunPyCodeButton
className="badge btn-mini ml-2"
className="badge btn-mini shadow-sm ml-2"
content={copiedContent}
/>
)}
@ -101,16 +106,17 @@ export const CopyButton = ({
}) => {
const [copied, setCopied] = useState(false);
return (
<button
<BtnWithTooltips
className={className}
onClick={() => {
copyStr(content);
setCopied(true);
}}
onMouseLeave={() => setCopied(false)}
tooltipsContent={copied ? 'Copied!' : 'Copy'}
>
{copied ? 'Copied!' : '📋 Copy'}
</button>
<DocumentDuplicateIcon className="h-4 w-4" />
</BtnWithTooltips>
);
};
@ -124,7 +130,7 @@ export const RunPyCodeButton = ({
const { setCanvasData } = useAppContext();
return (
<>
<button
<BtnWithTooltips
className={className}
onClick={() =>
setCanvasData({
@ -132,9 +138,10 @@ export const RunPyCodeButton = ({
content,
})
}
tooltipsContent="Run code"
>
Run
</button>
<PlayIcon className="h-4 w-4" />
</BtnWithTooltips>
</>
);
};