import { useI18n } from "@arronqzy/i18n/react"; import { cn } from "@arronqzy/ui"; export type BlueprintNodeCardProps = { nodeId: string; label: string; meta?: string; /** 节点关键配置摘要,显示在名称下方 */ subtitle?: string; /** 调试执行进度(如时钟 2/3) */ progressLabel?: string; variant?: "blueprint" | "logic" | "and" | "lifecycle" | "event" | "fetch" | "json" | "clock"; selected?: boolean; hideLeadingDot?: boolean; onSelect?: (nodeId: string) => void; }; const variantStyle = { blueprint: { accent: "border-l-primary", badge: "bg-primary/10 text-primary", dot: "bg-primary", }, logic: { accent: "border-l-sky-500 dark:border-l-sky-400", badge: "bg-sky-500/10 text-sky-700 dark:text-sky-300", dot: "bg-sky-500", }, and: { accent: "border-l-indigo-500 dark:border-l-indigo-400", badge: "bg-indigo-500/10 text-indigo-700 dark:text-indigo-300", dot: "bg-indigo-500", }, lifecycle: { accent: "border-l-amber-500 dark:border-l-amber-400", badge: "bg-amber-500/10 text-amber-700 dark:text-amber-300", dot: "bg-amber-500", }, event: { accent: "border-l-fuchsia-500 dark:border-l-fuchsia-400", badge: "bg-fuchsia-500/10 text-fuchsia-700 dark:text-fuchsia-300", dot: "bg-fuchsia-500", }, fetch: { accent: "border-l-violet-500 dark:border-l-violet-400", badge: "bg-violet-500/10 text-violet-700 dark:text-violet-300", dot: "bg-violet-500", }, json: { accent: "border-l-teal-500 dark:border-l-teal-400", badge: "bg-teal-500/10 text-teal-700 dark:text-teal-300", dot: "bg-teal-500", }, clock: { accent: "border-l-rose-500 dark:border-l-rose-400", badge: "bg-rose-500/10 text-rose-700 dark:text-rose-300", dot: "bg-rose-500", }, } as const; function NodeGrip() { return ( ); } export function BlueprintNodeCard({ nodeId, label, meta, subtitle, progressLabel, variant = "blueprint", selected = false, hideLeadingDot = false, onSelect, }: BlueprintNodeCardProps) { const { t } = useI18n(); const v = variantStyle[variant]; return (
{meta ? ( {meta} ) : null}
); }