Browse Source

fix(47-02): single continuous selection ring around node + settings

Change BaseNode inner div from h-full to min-h-full so it grows to
encompass the settings panel. The ring now wraps the entire area as
one continuous outline instead of two separate rings with a gap.
Removed the now-unnecessary selected prop from InlineParameterPanel.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
handoff-20260429-1057
shrimbly 4 months ago
parent
commit
ef758a0fc4
  1. 2
      src/components/nodes/BaseNode.tsx
  2. 1
      src/components/nodes/Generate3DNode.tsx
  3. 1
      src/components/nodes/GenerateAudioNode.tsx
  4. 1
      src/components/nodes/GenerateImageNode.tsx
  5. 1
      src/components/nodes/GenerateVideoNode.tsx
  6. 4
      src/components/nodes/InlineParameterPanel.tsx
  7. 1
      src/components/nodes/LLMGenerateNode.tsx

2
src/components/nodes/BaseNode.tsx

@ -126,7 +126,7 @@ export function BaseNode({
/>
<div
className={`
h-full w-full flex flex-col overflow-visible
min-h-full w-full flex flex-col overflow-visible
${fullBleed ? "rounded-lg bg-neutral-800/50 border border-neutral-700/40" : "bg-neutral-800 rounded-lg shadow-lg border"}
${fullBleed ? "" : (isCurrentlyExecuting || isExecuting ? "border-blue-500 ring-1 ring-blue-500/20" : "border-neutral-700/60")}
${fullBleed ? "" : (hasError ? "border-red-500" : "")}

1
src/components/nodes/Generate3DNode.tsx

@ -430,7 +430,6 @@ export function Generate3DNode({ id, data, selected }: NodeProps<Generate3DNodeT
expanded={isParamsExpanded}
onToggle={handleToggleParams}
nodeId={id}
selected={selected}
>
{/* Model selector: Browse button + current model display */}
<div className="flex items-center justify-between gap-2">

1
src/components/nodes/GenerateAudioNode.tsx

@ -390,7 +390,6 @@ export function GenerateAudioNode({ id, data, selected }: NodeProps<GenerateAudi
expanded={isParamsExpanded}
onToggle={handleToggleParams}
nodeId={id}
selected={selected}
>
{/* Model selector: Browse button + current model display */}
<div className="flex items-center justify-between gap-2">

1
src/components/nodes/GenerateImageNode.tsx

@ -757,7 +757,6 @@ export function GenerateImageNode({ id, data, selected }: NodeProps<NanoBananaNo
expanded={isParamsExpanded}
onToggle={handleToggleParams}
nodeId={id}
selected={selected}
>
{/* Gemini-specific controls */}
{isGeminiProvider && currentModelId && (

1
src/components/nodes/GenerateVideoNode.tsx

@ -820,7 +820,6 @@ export function GenerateVideoNode({ id, data, selected }: NodeProps<GenerateVide
expanded={isParamsExpanded}
onToggle={handleToggleParams}
nodeId={id}
selected={selected}
>
{/* External provider parameters - reuse ModelParameters component */}
{nodeData.selectedModel?.modelId && !isVeoModel(nodeData.selectedModel.modelId) && (

4
src/components/nodes/InlineParameterPanel.tsx

@ -7,7 +7,6 @@ interface InlineParameterPanelProps {
onToggle: () => void;
children: ReactNode;
nodeId: string;
selected?: boolean;
}
/**
@ -19,10 +18,9 @@ export function InlineParameterPanel({
onToggle,
children,
nodeId,
selected = false,
}: InlineParameterPanelProps) {
return (
<div className={`w-full ${expanded && selected ? "ring-2 ring-blue-500/40 rounded-b-lg" : ""}`}>
<div className="w-full">
{/* Settings toggle button — no background when collapsed, floats below node edge */}
<button
type="button"

1
src/components/nodes/LLMGenerateNode.tsx

@ -243,7 +243,6 @@ export function LLMGenerateNode({ id, data, selected }: NodeProps<LLMGenerateNod
expanded={isParamsExpanded}
onToggle={handleToggleParams}
nodeId={id}
selected={selected}
>
{/* LLM-specific controls */}
<div className="space-y-1.5">

Loading…
Cancel
Save