import { useState } from "react"; import { SplashScreen } from "@/src/components/ui/splash-screen"; import { Braces, Code, ListTree, Upload } from "lucide-react"; import DocPopup from "@/src/components/layouts/doc-popup"; import Link from "next/link"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, } from "@/src/components/ui/dialog"; import { CsvUploadDialog } from "@/src/features/datasets/components/CsvUploadDialog"; import { NewDatasetItemForm } from "@/src/features/datasets/components/NewDatasetItemForm"; import { useHasProjectAccess } from "@/src/features/rbac/utils/checkProjectAccess"; import { usePostHogClientCapture } from "@/src/features/posthog-analytics/usePostHogClientCapture"; import { cn } from "@/src/utils/tailwind"; interface DatasetItemEntryPointRowProps { icon: React.ReactNode; title: string; description: string; onClick?: () => void; hasAccess?: boolean; comingSoon?: boolean; docPopup?: { description: string; href: string; }; } const DatasetItemEntryPointRow = ({ icon, title, description, onClick, hasAccess = true, comingSoon = false, docPopup, }: DatasetItemEntryPointRowProps) => { const disabled = !hasAccess || comingSoon; return (
{icon}

{title}

{description}

{docPopup && ( )}
); }; export const DatasetItemsOnboarding = ({ projectId, datasetId, }: { projectId: string; datasetId: string; }) => { const capture = usePostHogClientCapture(); const [isUploadDialogOpen, setIsUploadDialogOpen] = useState(false); const [isNewItemDialogOpen, setIsNewItemDialogOpen] = useState(false); const hasProjectAccess = useHasProjectAccess({ projectId, scope: "datasets:CUD", }); return (
} title="Upload CSV" description="Import dataset items from a CSV file" onClick={() => { if (hasProjectAccess) { capture("dataset_item:upload_csv_button_click"); } }} hasAccess={hasProjectAccess} /> } title="Add Manually" description="Manually input a single item" onClick={() => { if (hasProjectAccess) { capture("dataset_item:new_form_open"); } }} hasAccess={hasProjectAccess} /> Create dataset item setIsNewItemDialogOpen(false)} className="h-full overflow-y-auto" /> } title="Add via Code" description="Use our Python/TS/JS SDKs or custom API" /> } title="Select Traces" description="Coming soon!" comingSoon docPopup={{ description: "Creating items from production data is supported on single trace level. Click to view docs for more details.", href: "https://langfuse.com/docs/evaluation/experiments/datasets#create-items-from-production-data", }} />
); };