From dee900b85753461213c9996a7b76d27082306243 Mon Sep 17 00:00:00 2001 From: shrimbly Date: Thu, 12 Mar 2026 07:56:01 +1300 Subject: [PATCH] style: update ArrayNode layout to match new design language Replace old input/select styling with bg-[#1a1a1a] rounded-md pattern, switch grid layouts to flex, add rotating chevron for Advanced toggle, tighten parsed items container and auto-resize formula, and update default dimensions from 360x360 to 340x260 for a more compact node. Co-Authored-By: Claude Opus 4.6 --- src/components/nodes/ArrayNode.tsx | 118 ++++++++++++++--------------- src/store/utils/nodeDefaults.ts | 2 +- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/src/components/nodes/ArrayNode.tsx b/src/components/nodes/ArrayNode.tsx index 8fb4b4af..f1c4b78c 100644 --- a/src/components/nodes/ArrayNode.tsx +++ b/src/components/nodes/ArrayNode.tsx @@ -156,9 +156,10 @@ export function ArrayNode({ id, data, selected }: NodeProps) { // Auto-resize node height to fit all parsed lines so users don't need to scroll. useEffect(() => { - const baseHeight = 360; - const perItemHeight = 30; - const newHeight = Math.max(baseHeight, 270 + previewItems.length * perItemHeight); + const headerHeight = 180; + const perItemHeight = 28; + const itemsMinHeight = 60; + const newHeight = headerHeight + Math.max(itemsMinHeight, previewItems.length * perItemHeight + 8); setNodes((nodes) => nodes.map((node) => { @@ -174,8 +175,8 @@ export function ArrayNode({ id, data, selected }: NodeProps) { id={id} selected={selected} hasError={!!nodeData.error} - minWidth={320} - minHeight={300} + minWidth={300} + minHeight={220} > @@ -187,7 +188,7 @@ export function ArrayNode({ id, data, selected }: NodeProps) { type="button" onClick={handleAutoRouteToPrompts} disabled={previewItems.length === 0} - className="nodrag nopan absolute top-2 right-2 z-10 shrink-0 p-1 rounded border border-neutral-600 bg-neutral-800/90 text-neutral-300 hover:bg-neutral-700 hover:text-neutral-100 disabled:opacity-50 disabled:cursor-not-allowed" + className="nodrag nopan absolute top-2 right-2 z-10 shrink-0 p-1 bg-[#1a1a1a] rounded-md text-neutral-400 hover:text-neutral-100 transition-colors disabled:opacity-50 disabled:cursor-not-allowed" title="Auto-route to Prompts" > @@ -196,12 +197,12 @@ export function ArrayNode({ id, data, selected }: NodeProps) {
-
- +
+ updateNodeData(id, { delimiter: e.target.value })} placeholder="*" - className="nodrag nopan bg-neutral-900 border border-neutral-700 rounded px-2 py-1 text-[11px] text-neutral-100 focus:outline-none focus:ring-1 focus:ring-neutral-600" + className="nodrag nopan flex-1 min-w-0 text-[11px] py-1 px-2 bg-[#1a1a1a] rounded-md focus:outline-none focus:ring-1 focus:ring-neutral-600 text-white" />
)} {nodeData.splitMode === "regex" && ( -
- +
+ updateNodeData(id, { regexPattern: e.target.value })} placeholder="/\\n+/" - className="nodrag nopan bg-neutral-900 border border-neutral-700 rounded px-2 py-1 text-[11px] text-neutral-100 focus:outline-none focus:ring-1 focus:ring-neutral-600" + className="nodrag nopan flex-1 min-w-0 text-[11px] py-1 px-2 bg-[#1a1a1a] rounded-md focus:outline-none focus:ring-1 focus:ring-neutral-600 text-white" />
)} -
+
{showAdvanced && ( -
-
- - -
+
+ +
)}
-
+
Parsed Items ({previewItems.length})
-
+
{nodeData.error ? (
{nodeData.error}
) : previewItems.length === 0 ? ( @@ -282,24 +283,23 @@ export function ArrayNode({ id, data, selected }: NodeProps) { {previewItems.map((item, index) => { const isSelected = nodeData.selectedOutputIndex === index; return ( -
- -
+ ); })}
diff --git a/src/store/utils/nodeDefaults.ts b/src/store/utils/nodeDefaults.ts index d22f67d3..fd450fc6 100644 --- a/src/store/utils/nodeDefaults.ts +++ b/src/store/utils/nodeDefaults.ts @@ -39,7 +39,7 @@ export const defaultNodeDimensions: Record