"use client"; import { FolderOpen, Frame, Focus, GitCompare, ImageDown, Image, Package, Palette, Sparkles, StickyNote, Sun, Type, Video, type LucideIcon, } from "lucide-react"; import { CommandGroup, CommandItem } from "@/components/ui/command"; import { CANVAS_NODE_TEMPLATES, type CanvasNodeTemplate, } from "@/lib/canvas-node-templates"; const NODE_ICONS: Record = { image: Image, text: Type, prompt: Sparkles, note: StickyNote, frame: Frame, compare: GitCompare, group: FolderOpen, asset: Package, video: Video, curves: Sparkles, "color-adjust": Palette, "light-adjust": Sun, "detail-adjust": Focus, render: ImageDown, }; const NODE_SEARCH_KEYWORDS: Partial< Record > = { image: ["image", "photo", "foto"], text: ["text", "typo"], prompt: ["prompt", "ai", "generate", "ki-bild", "ki", "bild"], note: ["note", "sticky", "notiz"], frame: ["frame", "artboard"], compare: ["compare", "before", "after", "vergleich"], group: ["group", "gruppe", "folder"], asset: ["asset", "freepik", "stock"], video: ["video", "pexels", "clip"], curves: ["curves", "tone", "contrast"], "color-adjust": ["color", "hue", "saturation"], "light-adjust": ["light", "exposure", "brightness"], "detail-adjust": ["detail", "sharp", "grain"], render: ["render", "export", "download"], }; export type CanvasNodeTemplatePickerProps = { onPick: (template: CanvasNodeTemplate) => void; groupHeading?: string; templates?: readonly CanvasNodeTemplate[]; }; /** * Knoten-Template-Liste für cmdk. Eltern: ` …`. */ export function CanvasNodeTemplatePicker({ onPick, groupHeading = "Knoten", templates = CANVAS_NODE_TEMPLATES, }: CanvasNodeTemplatePickerProps) { return ( {templates.map((template) => { const Icon = NODE_ICONS[template.type]; return ( onPick(template)} > {template.label} ); })} ); }