mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-14 02:42:04 +08:00
- Added Phase 6: Fix Discovery & Batching with intelligent grouping and batching of findings. - Added Phase 7: Fix Parallel Planning to launch planning agents for concurrent analysis and aggregation of partial plans. - Added Phase 8: Fix Execution for stage-based execution of fixes with conservative test verification. - Added Phase 9: Fix Completion to aggregate results, generate summary reports, and handle session completion. - Introduced new frontend components: ResizeHandle for draggable resizing of sidebar panels and useResizablePanel hook for managing panel sizes with localStorage persistence. - Added PowerShell script for checking TypeScript errors in source code, excluding test files.
52 lines
2.1 KiB
TypeScript
52 lines
2.1 KiB
TypeScript
// ========================================
|
|
// Interaction Mode Toggle Component
|
|
// ========================================
|
|
// Pan/Selection mode toggle for the orchestrator canvas
|
|
|
|
import { useIntl } from 'react-intl';
|
|
import { Hand, MousePointerClick } from 'lucide-react';
|
|
import { cn } from '@/lib/utils';
|
|
import { useFlowStore } from '@/stores';
|
|
|
|
interface InteractionModeToggleProps {
|
|
disabled?: boolean;
|
|
}
|
|
|
|
export function InteractionModeToggle({ disabled = false }: InteractionModeToggleProps) {
|
|
const { formatMessage } = useIntl();
|
|
const interactionMode = useFlowStore((state) => state.interactionMode);
|
|
const toggleInteractionMode = useFlowStore((state) => state.toggleInteractionMode);
|
|
|
|
return (
|
|
<div className={cn(
|
|
'flex items-center gap-1 bg-card/90 backdrop-blur-sm border border-border rounded-lg p-1 shadow-sm',
|
|
disabled && 'opacity-50 pointer-events-none'
|
|
)}>
|
|
<button
|
|
onClick={() => { if (interactionMode !== 'pan') toggleInteractionMode(); }}
|
|
className={cn(
|
|
'flex items-center gap-1.5 px-2 py-1 rounded-md text-xs font-medium transition-colors',
|
|
interactionMode === 'pan'
|
|
? 'bg-primary text-primary-foreground'
|
|
: 'text-muted-foreground hover:text-foreground hover:bg-muted'
|
|
)}
|
|
title={formatMessage({ id: 'orchestrator.canvas.panMode', defaultMessage: 'Pan mode (drag to move canvas)' })}
|
|
>
|
|
<Hand className="w-3.5 h-3.5" />
|
|
</button>
|
|
<button
|
|
onClick={() => { if (interactionMode !== 'selection') toggleInteractionMode(); }}
|
|
className={cn(
|
|
'flex items-center gap-1.5 px-2 py-1 rounded-md text-xs font-medium transition-colors',
|
|
interactionMode === 'selection'
|
|
? 'bg-primary text-primary-foreground'
|
|
: 'text-muted-foreground hover:text-foreground hover:bg-muted'
|
|
)}
|
|
title={formatMessage({ id: 'orchestrator.canvas.selectionMode', defaultMessage: 'Selection mode (drag to select nodes)' })}
|
|
>
|
|
<MousePointerClick className="w-3.5 h-3.5" />
|
|
</button>
|
|
</div>
|
|
);
|
|
}
|