"use client";
import { useState } from "react";
import {
CheckCircle,
XCircle,
Loader2,
ChevronDown,
ChevronUp,
MessageSquare,
FileText,
} from "lucide-react";
import { BasicMarkdownText } from "../thread/markdown-text";
import { cn } from "@/lib/utils";
type MarkTaskCompletedProps = {
status: "loading" | "generating" | "done";
review?: string;
reasoningText?: string;
summaryText?: string;
};
export function MarkTaskCompleted({
status,
review,
reasoningText,
summaryText,
}: MarkTaskCompletedProps) {
const [expanded, setExpanded] = useState(!!(status === "done" && review));
const [showReasoning, setShowReasoning] = useState(true);
const [showSummary, setShowSummary] = useState(true);
const getStatusIcon = () => {
switch (status) {
case "loading":
return (
);
case "generating":
return (
);
case "done":
return (
);
}
};
const getStatusText = () => {
switch (status) {
case "loading":
return "Preparing task review...";
case "generating":
return "Reviewing task completion...";
case "done":
return "Task marked as completed";
}
};
return (
{reasoningText && (
{showReasoning && (
{reasoningText}
)}
)}
setExpanded((prev) => !prev)
: undefined
}
>
{getStatusText()}
{getStatusIcon()}
{status === "done" && review && (
)}
{expanded && review && status === "done" && (
Final Review
{review}
)}
{summaryText && status === "done" && (
{showSummary && (
{summaryText}
)}
)}
);
}
type MarkTaskIncompleteProps = {
status: "loading" | "generating" | "done";
review?: string;
additionalActions?: string[];
reasoningText?: string;
summaryText?: string;
};
export function MarkTaskIncomplete({
status,
review,
additionalActions,
reasoningText,
summaryText,
}: MarkTaskIncompleteProps) {
const [expanded, setExpanded] = useState(
!!(status === "done" && (review || additionalActions)),
);
const [showReasoning, setShowReasoning] = useState(true);
const [showSummary, setShowSummary] = useState(true);
const getStatusIcon = () => {
switch (status) {
case "loading":
return (
);
case "generating":
return ;
case "done":
return ;
}
};
const getStatusText = () => {
switch (status) {
case "loading":
return "Preparing task review...";
case "generating":
return "Reviewing task completion...";
case "done":
return "Task marked as incomplete";
}
};
return (
{reasoningText && (
{showReasoning && (
{reasoningText}
)}
)}
setExpanded((prev) => !prev)
: undefined
}
>
{getStatusText()}
{getStatusIcon()}
{status === "done" && (review || additionalActions) && (
)}
{expanded && status === "done" && (review || additionalActions) && (
{review && (
Final Review
{review}
)}
{additionalActions && additionalActions.length > 0 && (
Additional Actions Required ({additionalActions.length})
{additionalActions.map((action, index) => (
-
{index + 1}
{action}
))}
)}
)}
{summaryText && status === "done" && (
{showSummary && (
{summaryText}
)}
)}
);
}