diff --git a/studio/frontend/src/features/studio/sections/dataset-preview-dialog-mapping.tsx b/studio/frontend/src/features/studio/sections/dataset-preview-dialog-mapping.tsx index d7ba18ff35..e2dfb146f7 100644 --- a/studio/frontend/src/features/studio/sections/dataset-preview-dialog-mapping.tsx +++ b/studio/frontend/src/features/studio/sections/dataset-preview-dialog-mapping.tsx @@ -1,9 +1,10 @@ import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Checkbox } from "@/components/ui/checkbox"; +import type { CheckFormatResponse } from "@/features/training/types/datasets"; +import { cn } from "@/lib/utils"; import { AlertCircleIcon, CheckmarkCircle02Icon } from "@hugeicons/core-free-icons"; import { HugeiconsIcon } from "@hugeicons/react"; -import type { CheckFormatResponse } from "@/features/training/types/datasets"; export function HeaderPick({ label, @@ -40,30 +41,30 @@ export function DatasetMappingCard({ input: string | null; output: string | null; }) { - const tone = mappingOk ? "ok" : "warn"; return (
{mappingOk
? "Looks good. We'll convert this dataset automatically."
@@ -163,17 +165,17 @@ export function deriveDefaultMapping(
data: CheckFormatResponse,
isVlm: boolean,
): { input: string | null; output: string | null } {
- if (isVlm) {
- const input =
- data.detected_image_column ?? pickRole(data.suggested_mapping, "image");
- const output =
- data.detected_text_column ?? pickRole(data.suggested_mapping, "text");
- if (input && output && input === output) return { input, output: null };
- return { input: input ?? null, output: output ?? null };
+ const input = isVlm
+ ? data.detected_image_column ?? pickRole(data.suggested_mapping, "image")
+ : pickRole(data.suggested_mapping, "user");
+ const output = isVlm
+ ? data.detected_text_column ?? pickRole(data.suggested_mapping, "text")
+ : pickRole(data.suggested_mapping, "assistant");
+
+ if (input && output && input === output) {
+ return { input, output: null };
}
- const input = pickRole(data.suggested_mapping, "user");
- const output = pickRole(data.suggested_mapping, "assistant");
- if (input && output && input === output) return { input, output: null };
+
return { input: input ?? null, output: output ?? null };
}
diff --git a/studio/frontend/src/features/studio/sections/dataset-preview-dialog.tsx b/studio/frontend/src/features/studio/sections/dataset-preview-dialog.tsx
index ce4528341a..9fc84f1013 100644
--- a/studio/frontend/src/features/studio/sections/dataset-preview-dialog.tsx
+++ b/studio/frontend/src/features/studio/sections/dataset-preview-dialog.tsx
@@ -1,3 +1,4 @@
+import { type ReactNode, useEffect, useMemo, useState } from "react";
import type { ColumnDef } from "@tanstack/react-table";
import {
Dialog,
@@ -8,12 +9,12 @@ import {
import { DataTable } from "@/components/ui/data-table";
import { Badge } from "@/components/ui/badge";
import { Spinner } from "@/components/ui/spinner";
-import { Database02Icon, AlertCircleIcon } from "@hugeicons/core-free-icons";
-import { HugeiconsIcon } from "@hugeicons/react";
-import { type ReactNode, useEffect, useMemo, useState } from "react";
import { useTrainingActions, useTrainingConfigStore } from "@/features/training";
import { checkDatasetFormat } from "@/features/training/api/datasets-api";
import type { CheckFormatResponse } from "@/features/training/types/datasets";
+import { Database02Icon, AlertCircleIcon } from "@hugeicons/core-free-icons";
+import { HugeiconsIcon } from "@hugeicons/react";
+import { useShallow } from "zustand/react/shallow";
import { collectPreviewImages, formatCell } from "./dataset-preview-dialog-utils";
import {
DatasetMappingCard,
@@ -22,10 +23,6 @@ import {
deriveDefaultMapping,
} from "./dataset-preview-dialog-mapping";
-// ---------------------------------------------------------------------------
-// Types
-// ---------------------------------------------------------------------------
-
type DatasetPreviewDialogProps = {
open: boolean;
onOpenChange: (open: boolean) => void;
@@ -38,10 +35,6 @@ type DatasetPreviewDialogProps = {
isVlm?: boolean;
};
-// ---------------------------------------------------------------------------
-// Component
-// ---------------------------------------------------------------------------
-
export function DatasetPreviewDialog({
open,
onOpenChange,
@@ -57,8 +50,12 @@ export function DatasetPreviewDialog({
const [loading, setLoading] = useState(false);
const [error, setError] = useState