mirror of
https://gitee.com/wanwujie/deer-flow
synced 2026-04-23 06:04:46 +08:00
61 lines
1.5 KiB
TypeScript
61 lines
1.5 KiB
TypeScript
|
|
"use client";
|
||
|
|
|
||
|
|
import { useI18n } from "@/core/i18n/hooks";
|
||
|
|
import { Tooltip } from "./tooltip";
|
||
|
|
|
||
|
|
export type AgentMode = "flash" | "thinking" | "pro" | "ultra";
|
||
|
|
|
||
|
|
function getModeLabelKey(
|
||
|
|
mode: AgentMode,
|
||
|
|
): keyof Pick<
|
||
|
|
import("@/core/i18n/locales/types").Translations["inputBox"],
|
||
|
|
"flashMode" | "reasoningMode" | "proMode" | "ultraMode"
|
||
|
|
> {
|
||
|
|
switch (mode) {
|
||
|
|
case "flash":
|
||
|
|
return "flashMode";
|
||
|
|
case "thinking":
|
||
|
|
return "reasoningMode";
|
||
|
|
case "pro":
|
||
|
|
return "proMode";
|
||
|
|
case "ultra":
|
||
|
|
return "ultraMode";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function getModeDescriptionKey(
|
||
|
|
mode: AgentMode,
|
||
|
|
): keyof Pick<
|
||
|
|
import("@/core/i18n/locales/types").Translations["inputBox"],
|
||
|
|
"flashModeDescription" | "reasoningModeDescription" | "proModeDescription" | "ultraModeDescription"
|
||
|
|
> {
|
||
|
|
switch (mode) {
|
||
|
|
case "flash":
|
||
|
|
return "flashModeDescription";
|
||
|
|
case "thinking":
|
||
|
|
return "reasoningModeDescription";
|
||
|
|
case "pro":
|
||
|
|
return "proModeDescription";
|
||
|
|
case "ultra":
|
||
|
|
return "ultraModeDescription";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export function ModeHoverGuide({
|
||
|
|
mode,
|
||
|
|
children,
|
||
|
|
showTitle = true,
|
||
|
|
}: {
|
||
|
|
mode: AgentMode;
|
||
|
|
children: React.ReactNode;
|
||
|
|
/** When true, tooltip shows "ModeName: Description". When false, only description. */
|
||
|
|
showTitle?: boolean;
|
||
|
|
}) {
|
||
|
|
const { t } = useI18n();
|
||
|
|
const label = t.inputBox[getModeLabelKey(mode)];
|
||
|
|
const description = t.inputBox[getModeDescriptionKey(mode)];
|
||
|
|
const content = showTitle ? `${label}: ${description}` : description;
|
||
|
|
|
||
|
|
return <Tooltip content={content}>{children}</Tooltip>;
|
||
|
|
}
|