import { useState } from "react";
import { useRouter } from "next/router";
import { api } from "@/src/utils/api";
import {
Dialog,
DialogContent,
DialogHeader,
DialogTitle,
} from "@/src/components/ui/dialog";
import { Button } from "@/src/components/ui/button";
import { PlusIcon } from "lucide-react";
import { EvaluatorSelector } from "./evaluator-selector";
import { EvalTemplateForm } from "./template-form";
import { showSuccessToast } from "@/src/features/notifications/showSuccessToast";
import { SetupDefaultEvalModelCard } from "@/src/features/evals/components/set-up-default-eval-model-card";
import { useTemplateValidation } from "@/src/features/evals/hooks/useTemplateValidation";
import { Card } from "@/src/components/ui/card";
import { Skeleton } from "@/src/components/ui/skeleton";
type SelectEvaluatorListProps = {
projectId: string;
};
export function SelectEvaluatorList({ projectId }: SelectEvaluatorListProps) {
const router = useRouter();
const [isCreateTemplateOpen, setIsCreateTemplateOpen] = useState(false);
const { isSelectionValid, selectedTemplate, setSelectedTemplate } =
useTemplateValidation({ projectId });
// Fetch templates
const templates = api.evals.allTemplates.useQuery(
{
projectId,
},
{
enabled: Boolean(projectId),
},
);
const utils = api.useUtils();
const handleOpenCreateEvaluator = () => {
setIsCreateTemplateOpen(true);
};
const handleSelectEvaluator = () => {
if (selectedTemplate) {
router.push(
`/project/${projectId}/evals/new?evaluator=${selectedTemplate.id}`,
);
}
};
const handleTemplateSelect = (templateId: string) => {
const template = templates.data?.templates.find((t) => t.id === templateId);
if (template) {
setSelectedTemplate(template);
}
};
return (
<>