mirror of
https://gitee.com/wanwujie/deer-flow
synced 2026-04-19 04:14:46 +08:00
feat: re-arrange icons
This commit is contained in:
@@ -5,13 +5,13 @@ import {
|
|||||||
CheckIcon,
|
CheckIcon,
|
||||||
GraduationCapIcon,
|
GraduationCapIcon,
|
||||||
LightbulbIcon,
|
LightbulbIcon,
|
||||||
|
PaperclipIcon,
|
||||||
ZapIcon,
|
ZapIcon,
|
||||||
} from "lucide-react";
|
} from "lucide-react";
|
||||||
import { useCallback, useMemo, useState, type ComponentProps } from "react";
|
import { useCallback, useMemo, useState, type ComponentProps } from "react";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
PromptInput,
|
PromptInput,
|
||||||
PromptInputActionAddAttachments,
|
|
||||||
PromptInputActionMenu,
|
PromptInputActionMenu,
|
||||||
PromptInputActionMenuContent,
|
PromptInputActionMenuContent,
|
||||||
PromptInputActionMenuItem,
|
PromptInputActionMenuItem,
|
||||||
@@ -24,12 +24,12 @@ import {
|
|||||||
PromptInputSubmit,
|
PromptInputSubmit,
|
||||||
PromptInputTextarea,
|
PromptInputTextarea,
|
||||||
PromptInputTools,
|
PromptInputTools,
|
||||||
|
usePromptInputAttachments,
|
||||||
type PromptInputMessage,
|
type PromptInputMessage,
|
||||||
} from "@/components/ai-elements/prompt-input";
|
} from "@/components/ai-elements/prompt-input";
|
||||||
import {
|
import {
|
||||||
DropdownMenuGroup,
|
DropdownMenuGroup,
|
||||||
DropdownMenuLabel,
|
DropdownMenuLabel,
|
||||||
DropdownMenuSeparator,
|
|
||||||
} from "@/components/ui/dropdown-menu";
|
} from "@/components/ui/dropdown-menu";
|
||||||
import { useI18n } from "@/core/i18n/hooks";
|
import { useI18n } from "@/core/i18n/hooks";
|
||||||
import { useModels } from "@/core/models/hooks";
|
import { useModels } from "@/core/models/hooks";
|
||||||
@@ -46,6 +46,8 @@ import {
|
|||||||
ModelSelectorTrigger,
|
ModelSelectorTrigger,
|
||||||
} from "../ai-elements/model-selector";
|
} from "../ai-elements/model-selector";
|
||||||
|
|
||||||
|
import { Tooltip } from "./tooltip";
|
||||||
|
|
||||||
export function InputBox({
|
export function InputBox({
|
||||||
className,
|
className,
|
||||||
disabled,
|
disabled,
|
||||||
@@ -166,13 +168,25 @@ export function InputBox({
|
|||||||
</PromptInputBody>
|
</PromptInputBody>
|
||||||
<PromptInputFooter className="flex">
|
<PromptInputFooter className="flex">
|
||||||
<PromptInputTools>
|
<PromptInputTools>
|
||||||
|
<AddAttachmentsButton className="px-2!" />
|
||||||
<PromptInputActionMenu>
|
<PromptInputActionMenu>
|
||||||
<PromptInputActionMenuTrigger />
|
<PromptInputActionMenuTrigger className="px-2!">
|
||||||
|
<div>
|
||||||
|
{context.mode === "flash" && <ZapIcon className="size-3" />}
|
||||||
|
{context.mode === "thinking" && (
|
||||||
|
<LightbulbIcon className="size-3" />
|
||||||
|
)}
|
||||||
|
{context.mode === "pro" && (
|
||||||
|
<GraduationCapIcon className="size-3" />
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="text-xs font-normal">
|
||||||
|
{(context.mode === "flash" && t.inputBox.flashMode) ||
|
||||||
|
(context.mode === "thinking" && t.inputBox.reasoningMode) ||
|
||||||
|
(context.mode === "pro" && t.inputBox.proMode)}
|
||||||
|
</div>
|
||||||
|
</PromptInputActionMenuTrigger>
|
||||||
<PromptInputActionMenuContent className="w-80">
|
<PromptInputActionMenuContent className="w-80">
|
||||||
<PromptInputActionAddAttachments
|
|
||||||
label={t.inputBox.addAttachments}
|
|
||||||
/>
|
|
||||||
<DropdownMenuSeparator />
|
|
||||||
<DropdownMenuGroup>
|
<DropdownMenuGroup>
|
||||||
<DropdownMenuLabel className="text-muted-foreground text-xs">
|
<DropdownMenuLabel className="text-muted-foreground text-xs">
|
||||||
{t.inputBox.mode}
|
{t.inputBox.mode}
|
||||||
@@ -270,22 +284,6 @@ export function InputBox({
|
|||||||
</DropdownMenuGroup>
|
</DropdownMenuGroup>
|
||||||
</PromptInputActionMenuContent>
|
</PromptInputActionMenuContent>
|
||||||
</PromptInputActionMenu>
|
</PromptInputActionMenu>
|
||||||
<div className="border-accent flex items-center gap-1 rounded-md border px-1 py-0.5 text-xs font-normal first-letter:uppercase">
|
|
||||||
<div>
|
|
||||||
{context.mode === "flash" && <ZapIcon className="size-3" />}
|
|
||||||
{context.mode === "thinking" && (
|
|
||||||
<LightbulbIcon className="size-3" />
|
|
||||||
)}
|
|
||||||
{context.mode === "pro" && (
|
|
||||||
<GraduationCapIcon className="size-3" />
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
{(context.mode === "flash" && t.inputBox.flashMode) ||
|
|
||||||
(context.mode === "thinking" && t.inputBox.reasoningMode) ||
|
|
||||||
(context.mode === "pro" && t.inputBox.proMode)}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</PromptInputTools>
|
</PromptInputTools>
|
||||||
<PromptInputTools>
|
<PromptInputTools>
|
||||||
<ModelSelector
|
<ModelSelector
|
||||||
@@ -333,3 +331,18 @@ export function InputBox({
|
|||||||
</PromptInput>
|
</PromptInput>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function AddAttachmentsButton({ className }: { className?: string }) {
|
||||||
|
const { t } = useI18n();
|
||||||
|
const attachments = usePromptInputAttachments();
|
||||||
|
return (
|
||||||
|
<Tooltip content={t.inputBox.addAttachments}>
|
||||||
|
<PromptInputButton
|
||||||
|
className={cn("px-2!", className)}
|
||||||
|
onClick={() => attachments.openFileDialog()}
|
||||||
|
>
|
||||||
|
<PaperclipIcon className="size-3" />
|
||||||
|
</PromptInputButton>
|
||||||
|
</Tooltip>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user