eigent/src/components/ChatBox/BottomBox/BoxHeader.tsx
Dream 0d82e68c59
Disable Start Task and End Project Buttons While Request is Pending (#1018)
Co-authored-by: a7m-1st <Ahmed.jimi.awelkeir500@gmail.com>
Co-authored-by: Wendong-Fan <133094783+Wendong-Fan@users.noreply.github.com>
2026-01-23 08:10:11 +08:00

100 lines
3.2 KiB
TypeScript

import { Button } from "@/components/ui/button";
import { ChevronLeft } from "lucide-react";
import { cn } from "@/lib/utils";
import { AnimateIcon } from "@/components/animate-ui/icons/icon";
import { Orbit } from "@/components/animate-ui/icons/orbit";
/**
* Variant: Splitting
*/
export interface BoxHeaderSplittingProps {
className?: string;
}
export const BoxHeaderSplitting = ({ className }: BoxHeaderSplittingProps) => {
return (
<div
className={cn(
"flex flex-col gap-1 items-start justify-center w-full",
className
)}
>
<div className="box-border flex gap-1 items-center px-2.5 py-0 relative w-full">
<Button
variant="ghost"
size="sm"
className="px-1 focus-visible:outline-none focus:ring-0"
>
<AnimateIcon animate loop className="justify-center items-center h-4 w-4">
<Orbit size={16} className="text-icon-information" />
</AnimateIcon>
</Button>
<div className="flex-1 flex gap-0.5 items-center min-h-px min-w-px relative">
<span className="font-bold text-text-information text-sm whitespace-nowrap">
Splitting Tasks
</span>
</div>
</div>
</div>
);
};
/**
* Variant: Confirm
*/
export interface BoxHeaderConfirmProps {
subtitle?: string;
onStartTask?: () => void;
onEdit?: () => void;
className?: string;
loading?: boolean;
}
export const BoxHeaderConfirm = ({
subtitle,
onStartTask,
onEdit,
className,
loading = false,
}: BoxHeaderConfirmProps) => {
return (
<div
className={cn(
"flex flex-col gap-1 items-start justify-center w-full",
className
)}
>
<div className="box-border flex gap-1 items-center px-2.5 py-0 relative w-full">
<Button
variant="ghost"
size="sm"
className="px-1 focus-visible:outline-none focus:ring-0"
onClick={onEdit}
>
<ChevronLeft size={16} className="text-icon-primary" />
</Button>
<div className="flex-1 flex gap-0.5 items-center min-h-px min-w-px relative">
{subtitle && (
<div className="flex-1 flex flex-col justify-center min-h-px min-w-px overflow-ellipsis overflow-hidden relative">
<span className="font-normal text-text-label text-xs whitespace-nowrap overflow-ellipsis overflow-hidden m-0">
{subtitle}
</span>
</div>
)}
</div>
<Button
variant="success"
size="sm"
className="rounded-full"
onClick={onStartTask}
disabled={loading}
>
Start Task
</Button>
</div>
</div>
);
};