feat(editor): properties-panel toggle + LabVIEW-style type colours

Two visible UX fixes:

1. Properties-panel toggle. Tap a step → opens. Tap the
   same step again → closes (deselect via toggle). Tap the
   canvas background → also closes. selectStep now returns
   to null when called with the already-selected id; the
   editor-controller test updated for the new semantics.

2. LabVIEW-style type colours on every port + wire.
   _typeAccent now picks vibrant brightness-aware hues per
   datatype:
     text   → magenta/pink (LabVIEW string)
     json   → amber/orange (cluster feel)
     bytes  → cyan/teal (raw binary)
     file   → green (file reference)
     number → yellow/amber
   Step-input dots, step-output dots, and outputs-endpoint
   dots all switch from the generic theme.primary to the
   field's declared type accent. Operators read the
   payload from the dot alone.

Editor tests still pass (20).

Signed-off-by: flemming-it <sf@flemming.it>
This commit is contained in:
flemming-it 2026-06-02 11:13:01 +02:00
parent 7b256b5e35
commit 1e9968496e
6 changed files with 133 additions and 39 deletions

View file

@ -149,10 +149,14 @@ class FlowEditorController extends ChangeNotifier {
notifyListeners();
}
/// User clicked a node on the canvas.
/// User clicked a node on the canvas. Clicking the
/// already-selected step deselects it (toggle semantics)
/// matches every modern node editor. Pass null explicitly
/// to deselect without re-clicking (e.g. background tap).
void selectStep(String? stepId) {
if (_selectedStepId == stepId) return;
_selectedStepId = stepId;
final next = stepId != null && _selectedStepId == stepId ? null : stepId;
if (_selectedStepId == next) return;
_selectedStepId = next;
notifyListeners();
}