import { Card } from "@/src/components/ui/card"; import { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from "@/src/components/ui/resizable"; import useSessionStorage from "@/src/components/useSessionStorage"; import { AnnotateDrawerContent } from "@/src/features/scores/components/AnnotateDrawerContent"; import { type ScoreTarget } from "@/src/features/scores/types"; import { type AnnotationQueueItem, type APIScoreV2, isPresent, type ValidatedScoreConfig, } from "@langfuse/shared"; import { TriangleAlertIcon } from "lucide-react"; import { useSession } from "next-auth/react"; import { useMemo, useState } from "react"; import { CommentsSection } from "./CommentsSection"; interface AnnotationDrawerSectionProps { item: AnnotationQueueItem & { parentTraceId?: string | null; lockedByUser: { name: string | null | undefined } | null; }; scoreTarget: ScoreTarget; scores: APIScoreV2[]; configs: ValidatedScoreConfig[]; environment?: string; onHasCommentDraftChange?: (hasDraft: boolean) => void; } export const AnnotationDrawerSection: React.FC< AnnotationDrawerSectionProps > = ({ item, scoreTarget, scores, configs, environment, onHasCommentDraftChange, }) => { const session = useSession(); const [showSaving, setShowSaving] = useState(false); const [verticalSize, setVerticalSize] = useSessionStorage( `annotationQueueDrawerVertical-${item.projectId}`, 60, ); const isLockedByOtherUser = item.lockedByUserId !== session.data?.user?.id; const emptySelectedConfigIds = useMemo(() => { return configs.map((c) => c.id); }, [configs]); const handleSavingChange = (saving: boolean) => { setShowSaving(saving); }; return ( setVerticalSize(sizes[0])} > {}} projectId={item.projectId} analyticsData={{ type: scoreTarget.type, source: "AnnotationQueue", }} isSelectHidden queueId={item.queueId} showSaving={showSaving} setShowSaving={handleSavingChange} environment={environment} actionButtons={ isLockedByOtherUser && isPresent(item.lockedByUser?.name) ? (
Currently edited by {item.lockedByUser.name}
) : undefined } isDrawerOpen={true} />
{ onHasCommentDraftChange?.(draft); }} />
); };