"use client" import { useState } from "react" import { useRouter } from "next/navigation" import { Card, CardContent } from "@/shared/components/ui/card" import { Button } from "@/shared/components/ui/button" import { Tag, Trash2 } from "lucide-react" import { KnowledgePoint } from "../types" import { CreateKnowledgePointDialog } from "./create-knowledge-point-dialog" import { deleteKnowledgePointAction } from "../actions" import { toast } from "sonner" import { ScrollArea } from "@/shared/components/ui/scroll-area" import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "@/shared/components/ui/alert-dialog" interface KnowledgePointPanelProps { knowledgePoints: KnowledgePoint[] selectedChapterId: string | null textbookId: string } export function KnowledgePointPanel({ knowledgePoints, selectedChapterId, textbookId }: KnowledgePointPanelProps) { const router = useRouter() const [showDeleteDialog, setShowDeleteDialog] = useState(false) const [deleteTarget, setDeleteTarget] = useState(null) const [isDeleting, setIsDeleting] = useState(false) const requestDelete = (kp: KnowledgePoint) => { setDeleteTarget(kp) setShowDeleteDialog(true) } const handleDelete = async () => { if (!deleteTarget) return setIsDeleting(true) try { const result = await deleteKnowledgePointAction(deleteTarget.id, textbookId) if (result.success) { toast.success(result.message) setShowDeleteDialog(false) setDeleteTarget(null) router.refresh() } else { toast.error(result.message) } } catch { toast.error("Failed to delete knowledge point") } finally { setIsDeleting(false) } } // Filter KPs for the selected chapter const chapterKPs = selectedChapterId ? knowledgePoints.filter(kp => kp.chapterId === selectedChapterId) : [] return (

Knowledge Points

{selectedChapterId && ( )}
{selectedChapterId ? ( chapterKPs.length > 0 ? (
{chapterKPs.map((kp) => (
{kp.name}
{kp.description && (

{kp.description}

)}
))}
) : (
No knowledge points linked to this chapter yet.
) ) : (
Select a chapter to manage its knowledge points.
)}
{ if (isDeleting) return setShowDeleteDialog(open) if (!open) setDeleteTarget(null) }} > Delete knowledge point? {deleteTarget ? ( <> This will permanently delete {deleteTarget.name}. ) : ( "This will permanently delete the selected knowledge point." )} Cancel {isDeleting ? "Deleting..." : "Delete"}
) }