From 63e664efdd8079cae2279da45e422db3cdef4de5 Mon Sep 17 00:00:00 2001 From: Pouzor Date: Sat, 4 Jul 2026 00:03:09 +0200 Subject: [PATCH] feat: widen node modal, two-column layout, unclip side handles - NodeModal: widen to max-w-3xl; split into Information (left) and Design (right) columns with headers; Notes moved to left as a resizable textarea - Connection Points: spatial cross of -/N/+ steppers around a node preview (replaces the four stacked sliders) - BaseNode: drop overflow-hidden from the node root so left/right handles are no longer clipped to an ungrabbable sliver (inner sections keep their own clipping; rounded corners preserved) ha-relevant: yes --- .../src/components/canvas/nodes/BaseNode.tsx | 2 +- frontend/src/components/modals/NodeModal.tsx | 40 +++++++++++++------ 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/frontend/src/components/canvas/nodes/BaseNode.tsx b/frontend/src/components/canvas/nodes/BaseNode.tsx index bce6d6f..58f1d51 100644 --- a/frontend/src/components/canvas/nodes/BaseNode.tsx +++ b/frontend/src/components/canvas/nodes/BaseNode.tsx @@ -56,7 +56,7 @@ export function BaseNode({ id, data, selected, icon: typeIcon, width, height }: return (
!o && onClose()}> - + {title}
-
+
+ {/* ── LEFT column: identity & network ── */} +
+
Information
+
{/* Type + Icon on the same row */}
@@ -287,6 +292,7 @@ export function NodeModal({ open, onClose, onSubmit, initial, title = 'Add Node'
+
{/* end Type/Icon subgrid */} {/* Inline icon picker - full width, shown below the type+icon row */} {iconPickerOpen && ( @@ -384,6 +390,7 @@ export function NodeModal({ open, onClose, onSubmit, initial, title = 'Add Node' {labelError &&

Label is required

}
+
{/* Hostname */}
@@ -406,7 +413,9 @@ export function NodeModal({ open, onClose, onSubmit, initial, title = 'Add Node' /> comma-separated
+
{/* end Hostname/IP subgrid */} +
{/* Check method — hidden for zigbee nodes (always none/online) */} {!ZIGBEE_TYPES.includes((form.type ?? '') as NodeType) && (
@@ -436,6 +445,7 @@ export function NodeModal({ open, onClose, onSubmit, initial, title = 'Add Node' />
)} +
{/* end Check method/target subgrid */} {/* Parent Container */} {(() => { @@ -502,7 +512,22 @@ export function NodeModal({ open, onClose, onSubmit, initial, title = 'Add Node'
)} + {/* Notes */} +
+ +