diff --git a/beads-ide/apps/frontend/src/components/formulas/formula-flow-view.tsx b/beads-ide/apps/frontend/src/components/formulas/formula-flow-view.tsx index 3c7a17c..34d848d 100644 --- a/beads-ide/apps/frontend/src/components/formulas/formula-flow-view.tsx +++ b/beads-ide/apps/frontend/src/components/formulas/formula-flow-view.tsx @@ -290,7 +290,7 @@ export function FormulaFlowView({ result, selectedStepId, onStepSelect }: Formul {waves.map((waveSteps, waveIndex) => ( -
s.id).join('-')}`}> +
Wave {waveIndex + 1} diff --git a/beads-ide/apps/frontend/src/components/formulas/pour-dialog.tsx b/beads-ide/apps/frontend/src/components/formulas/pour-dialog.tsx index 14b6122..8ab46ec 100644 --- a/beads-ide/apps/frontend/src/components/formulas/pour-dialog.tsx +++ b/beads-ide/apps/frontend/src/components/formulas/pour-dialog.tsx @@ -218,7 +218,7 @@ function BeadPreviewList({ beads }: BeadPreviewListProps) { return (
    {beads.map((bead, index) => ( -
  • +
  • {bead.title} {bead.type && {bead.type}}
  • diff --git a/beads-ide/apps/frontend/src/components/results/graph-view.tsx b/beads-ide/apps/frontend/src/components/results/graph-view.tsx index 9557d9b..69ec4c4 100644 --- a/beads-ide/apps/frontend/src/components/results/graph-view.tsx +++ b/beads-ide/apps/frontend/src/components/results/graph-view.tsx @@ -108,6 +108,27 @@ const controlsPanelStyle: CSSProperties = { maxWidth: '280px', } +const emptyStateStyle: CSSProperties = { + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + height: '100%', + color: '#888', + gap: '12px', +} + +const emptyStateIconStyle: CSSProperties = { + fontSize: '48px', + opacity: 0.5, +} + +const emptyStateTextStyle: CSSProperties = { + fontSize: '14px', + textAlign: 'center', + lineHeight: '1.5', +} + // Zoom thresholds for semantic zoom const ZOOM_THRESHOLD_LABELS = 0.5 // Hide labels below this zoom const ZOOM_THRESHOLD_DETAILS = 0.3 // Simplify further below this zoom @@ -1290,81 +1311,94 @@ export function GraphView({ onMouseMove={handleMouseMove} onMouseLeave={handleMouseLeave} > - {/* View mode toggle for accessibility */} -
    - - -
    - - {viewMode === 'list' ? ( - + {rawNodes.length === 0 ? ( +
    + +

    + No beads to display. Pour a formula to create beads. +

    +
    ) : ( - - - - { - const data = node.data as NodeData - if (data.isCluster) return '#007acc' - const beadData = data as BeadData - if (beadData.hasMetric && beadData.metricValue !== undefined) { - return metricColor(beadData.metricValue) - } - return getStatusColor(beadData.status) - }} - maskColor="rgba(30, 30, 30, 0.8)" - style={{ backgroundColor: '#252526' }} - /> - - + {/* View mode toggle for accessibility */} +
    + + +
    + + {viewMode === 'list' ? ( + -
    -
    + ) : ( + + + + { + const data = node.data as NodeData + if (data.isCluster) return '#007acc' + const beadData = data as BeadData + if (beadData.hasMetric && beadData.metricValue !== undefined) { + return metricColor(beadData.metricValue) + } + return getStatusColor(beadData.status) + }} + maskColor="rgba(30, 30, 30, 0.8)" + style={{ backgroundColor: '#252526' }} + /> + + + + + )} + )}
)