import { IconButton, Tooltip } from '@mui/material'; import ChevronLeftIcon from '@mui/icons-material/ChevronLeft'; import ChevronRightIcon from '@mui/icons-material/ChevronRight'; import { usePanelStore } from '../../stores/panelStore'; import { useGraphWithHistory } from '../../hooks/useGraphWithHistory'; import NodeEditorPanel from './NodeEditorPanel'; import EdgeEditorPanel from './EdgeEditorPanel'; import GroupEditorPanel from './GroupEditorPanel'; import GraphAnalysisPanel from './GraphAnalysisPanel'; import type { Actor, Relation, Group } from '../../types'; /** * RightPanel - Context-aware properties panel on the right side * * Features: * - Shows properties of selected node(s) or edge(s) * - Live property updates (no save button) * - Connection information for actors * - Multi-selection support * - Non-modal design (doesn't block graph view) * - Collapsible */ interface Props { selectedNode: Actor | null; selectedEdge: Relation | null; selectedGroup: Group | null; onClose: () => void; } /** * PanelHeader - Reusable header component for right panel views */ interface PanelHeaderProps { title: string; onCollapse: () => void; } const PanelHeader = ({ title, onCollapse }: PanelHeaderProps) => (

{title}

); const RightPanel = ({ selectedNode, selectedEdge, selectedGroup, onClose }: Props) => { const { rightPanelCollapsed, rightPanelWidth, collapseRightPanel, expandRightPanel, } = usePanelStore(); const { nodes, edges } = useGraphWithHistory(); // Collapsed view if (rightPanelCollapsed) { return (
); } // Group properties view (priority over node/edge if group selected) if (selectedGroup) { return (
); } // Node properties view if (selectedNode) { return (
); } // Edge properties view if (selectedEdge) { return (
); } // No selection state - show graph metrics return (
); }; export default RightPanel;