+ {safeIdeas.slice(0, 10).map((idea) => {
+ const { nodeEdges, leftHandles, rightHandles, topHandles, bottomHandles, leftUnique, rightUnique, topUnique, bottomUnique } =
+ getHandleStats(idea.id, edges)
+
+ const hasViolation =
+ leftHandles.length !== leftUnique ||
+ rightHandles.length !== rightUnique ||
+ topHandles.length !== topUnique ||
+ bottomHandles.length !== bottomUnique
+
+ return (
+
+
+ {hasViolation && ⚠️}
+ {idea.title}
+
+
+
= 1
+ ? 'bg-green-500/20 text-green-700 dark:text-green-300'
+ : 'bg-muted'
+ }`}
+ >
+ ← {leftHandles.length}/{leftUnique} {leftHandles.length !== leftUnique ? '⚠️' : leftHandles.length > 0 ? '✓' : '○'}
+
+
= 1
+ ? 'bg-green-500/20 text-green-700 dark:text-green-300'
+ : 'bg-muted'
+ }`}
+ >
+ → {rightHandles.length}/{rightUnique} {rightHandles.length !== rightUnique ? '⚠️' : rightHandles.length > 0 ? '✓' : '○'}
+
+
= 1
+ ? 'bg-green-500/20 text-green-700 dark:text-green-300'
+ : 'bg-muted'
+ }`}
+ >
+ ↑ {topHandles.length}/{topUnique} {topHandles.length !== topUnique ? '⚠️' : topHandles.length > 0 ? '✓' : '○'}
+
+
= 1
+ ? 'bg-green-500/20 text-green-700 dark:text-green-300'
+ : 'bg-muted'
+ }`}
+ >
+ ↓ {bottomHandles.length}/{bottomUnique} {bottomHandles.length !== bottomUnique ? '⚠️' : bottomHandles.length > 0 ? '✓' : '○'}
+
+
+
+ Total: {nodeEdges.length} connection{nodeEdges.length !== 1 ? 's' : ''}, Handles: L{leftUnique}|R{rightUnique}|T
+ {topUnique}|B{bottomUnique}
+
+
+ )
+ })}
+ {safeIdeas.length > 10 && (
+
... and {safeIdeas.length - 10} more ideas
+ )}
+
+