返回 DeepSeek-Reasonix
ComposerContentMenuActions.tsx
根目录 / desktop / frontend / src / components / ComposerContentMenuActions.tsx
1 import { AtSign, FilePlus2, Hash } from "lucide-react";
2 import { useT } from "../lib/i18n";
3
4 export function ComposerContentMenuActions({
5 attachmentInputEnabled,
6 textPresent,
7 onChooseAttachment,
8 onInsertTrigger,
9 }: {
10 attachmentInputEnabled: boolean;
11 textPresent: boolean;
12 onChooseAttachment: () => void;
13 onInsertTrigger: (trigger: "@" | "#" | "/") => void;
14 }) {
15 const t = useT();
16 return (
17 <div className="composer-access-menu__section" role="menu" aria-label={t("composer.contentMenuTitle")}>
18 <div className="composer-access-menu__label">{t("composer.contentMenuTitle")}</div>
19 {attachmentInputEnabled ? <>
20 <button type="button" role="menuitem" className="composer-access-menu__item composer-content-menu__item" onClick={onChooseAttachment}>
21 <FilePlus2 size={16} aria-hidden="true" />
22 <span className="composer-access-menu__copy">
23 <span className="composer-access-menu__title">{t("composer.contentAddAttachment")}</span>
24 </span>
25 </button>
26 <button type="button" role="menuitem" className="composer-access-menu__item composer-content-menu__item" onClick={() => onInsertTrigger("@")}>
27 <AtSign size={16} aria-hidden="true" />
28 <span className="composer-access-menu__copy">
29 <span className="composer-access-menu__title">{t("composer.contentReferenceFiles")}</span>
30 </span>
31 </button>
32 </> : null}
33 <button type="button" role="menuitem" className="composer-access-menu__item composer-content-menu__item" onClick={() => onInsertTrigger("#")}>
34 <Hash size={16} aria-hidden="true" />
35 <span className="composer-access-menu__copy">
36 <span className="composer-access-menu__title">{t("composer.contentReferenceSessions")}</span>
37 </span>
38 </button>
39 <button type="button" role="menuitem" className="composer-access-menu__item composer-content-menu__item"
40 onClick={() => onInsertTrigger("/")} disabled={textPresent}
41 title={textPresent ? t("composer.contentUseCommandsEmptyOnly") : undefined}>
42 <span className="composer-content-menu__trigger-icon" aria-hidden="true">/</span>
43 <span className="composer-access-menu__copy">
44 <span className="composer-access-menu__title">{t("composer.contentUseCommands")}</span>
45 </span>
46 </button>
47 </div>
48 );
49 }
50
50 lines Plain Text