{
	"$schema": "https://ui.shadcn.com/schema/registry-item.json",
	"name": "visualize-text-node",
	"type": "registry:ui",
	"title": "Visualize Text Node",
	"description": "A React Flow node component for displaying text content with Markdown support and a resizable interface.",
	"dependencies": ["@xyflow/react"],
	"registryDependencies": [
		"separator",
		"@simple-ai/markdown-content",
		"@simple-ai/labeled-handle",
		"@simple-ai/node-header",
		"@simple-ai/resizable-node"
	],
	"files": [
		{
			"path": "./src/registry/ui/flow/visualize-text-node.tsx",
			"content": "import { type Node, type NodeProps, Position } from \"@xyflow/react\";\nimport { Eye, Trash } from \"lucide-react\";\nimport { Separator } from \"@/components/ui/separator\";\nimport { cn } from \"@/lib/utils\";\nimport { LabeledHandle } from \"@/registry/ui/flow/labeled-handle\";\nimport {\n\tNodeHeader,\n\tNodeHeaderAction,\n\tNodeHeaderActions,\n\tNodeHeaderIcon,\n\tNodeHeaderTitle,\n} from \"@/registry/ui/flow/node-header\";\nimport { ResizableNode } from \"@/registry/ui/flow/resizable-node\";\nimport { MarkdownContent } from \"@/registry/ui/markdown-content\";\n\nexport type VisualizeTextNode = Node<\n\t{\n\t\tstatus: \"processing\" | \"error\" | \"success\" | \"idle\" | undefined;\n\t\tinput: string | undefined;\n\t},\n\t\"visualize-text\"\n>;\n\ninterface VisualizeTextProps extends NodeProps<VisualizeTextNode> {\n\tonDeleteNode?: () => void;\n}\n\nexport function VisualizeTextNode({\n\tselected,\n\tdata,\n\tonDeleteNode,\n}: VisualizeTextProps) {\n\treturn (\n\t\t<ResizableNode\n\t\t\tselected={selected}\n\t\t\tclassName={cn(\"flex flex-col\", {\n\t\t\t\t\"border-orange-500\": data.status === \"processing\",\n\t\t\t\t\"border-red-500\": data.status === \"error\",\n\t\t\t})}\n\t\t>\n\t\t\t<NodeHeader className=\"m-0\">\n\t\t\t\t<NodeHeaderIcon>\n\t\t\t\t\t<Eye />\n\t\t\t\t</NodeHeaderIcon>\n\t\t\t\t<NodeHeaderTitle>Visualize Text</NodeHeaderTitle>\n\t\t\t\t<NodeHeaderActions>\n\t\t\t\t\t<NodeHeaderAction\n\t\t\t\t\t\tonClick={onDeleteNode}\n\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\tlabel=\"Delete node\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Trash />\n\t\t\t\t\t</NodeHeaderAction>\n\t\t\t\t</NodeHeaderActions>\n\t\t\t</NodeHeader>\n\t\t\t<Separator />\n\t\t\t<div className=\"p-2 flex-1 overflow-auto flex flex-col\">\n\t\t\t\t<div className=\"flex-1 overflow-auto nodrag nopan nowheel border border-border rounded-md p-2 select-text cursor-auto\">\n\t\t\t\t\t<MarkdownContent\n\t\t\t\t\t\tcontent={data.input ? data.input : \"No text to display\"}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"flex justify-start pt-2 pb-4 text-sm\">\n\t\t\t\t<LabeledHandle\n\t\t\t\t\tid=\"input\"\n\t\t\t\t\ttitle=\"Input\"\n\t\t\t\t\ttype=\"target\"\n\t\t\t\t\tposition={Position.Left}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</ResizableNode>\n\t);\n}\n",
			"type": "registry:ui",
			"target": "components/flow/visualize-text-node.tsx"
		}
	]
}
