From 5271c1559bf164a5014018b7c1ff8b7c7c021d8d Mon Sep 17 00:00:00 2001 From: shrimbly Date: Tue, 24 Mar 2026 22:22:12 +1300 Subject: [PATCH] feat: add visual indicators for optional input nodes - ImageInputNode: dashed border + "Optional" text when empty, badge when loaded - AudioInputNode: same pattern as ImageInputNode - PromptNode: updated placeholder text when isOptional is set Co-Authored-By: Claude Opus 4.6 --- src/components/nodes/AudioInputNode.tsx | 9 +++++++-- src/components/nodes/ImageInputNode.tsx | 9 +++++++-- src/components/nodes/PromptNode.tsx | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/components/nodes/AudioInputNode.tsx b/src/components/nodes/AudioInputNode.tsx index fb3a8d0c..98d42a6e 100644 --- a/src/components/nodes/AudioInputNode.tsx +++ b/src/components/nodes/AudioInputNode.tsx @@ -143,6 +143,11 @@ export function AudioInputNode({ id, data, selected }: NodeProps + {nodeData.isOptional && ( + + Optional + + )} {/* Filename and duration */}
@@ -223,13 +228,13 @@ export function AudioInputNode({ id, data, selected }: NodeProps fileInputRef.current?.click()} onDrop={handleDrop} onDragOver={handleDragOver} - className="w-full h-full bg-neutral-900/40 flex flex-col items-center justify-center cursor-pointer hover:bg-neutral-800/60 transition-colors" + className={`w-full h-full bg-neutral-900/40 flex flex-col items-center justify-center cursor-pointer hover:bg-neutral-800/60 transition-colors ${nodeData.isOptional ? "border-2 border-dashed border-neutral-600" : ""}`} > - Drop audio or click + {nodeData.isOptional ? "Optional" : "Drop audio or click"}
)} diff --git a/src/components/nodes/ImageInputNode.tsx b/src/components/nodes/ImageInputNode.tsx index 3ae43d91..86a94499 100644 --- a/src/components/nodes/ImageInputNode.tsx +++ b/src/components/nodes/ImageInputNode.tsx @@ -106,6 +106,11 @@ export function ImageInputNode({ id, data, selected }: NodeProps + {nodeData.isOptional && ( + + Optional + + )}