import { Link } from 'react-router-dom'; import { Edit3, Code, Download, Zap, Sun, Moon, Maximize2, Minimize2, Settings, Save, ChevronDown, FileCode, ImageIcon, FileText, Frame, Cloud, Server, Cpu, RotateCcw, RotateCw } from 'lucide-react'; import { useStore } from 'zustand'; import { useFlowStore, useDiagramStore } from '../../store'; import { useMobileDetect } from '../../hooks/useMobileDetect'; import { exportToPng, exportToJpg, exportToSvg, exportToTxt, downloadMermaid, exportToJson } from '../../lib/exportUtils'; import { useState } from 'react'; import { SettingsModal } from '../Settings'; export function EditorHeader() { const { nodes, edges, leftPanelOpen, setLeftPanelOpen, rightPanelOpen, setRightPanelOpen, theme, toggleTheme, focusMode, setFocusMode, saveDiagram, aiMode, onlineProvider } = useFlowStore(); const { isMobile } = useMobileDetect(); const [showSettings, setShowSettings] = useState(false); const [saveStatus, setSaveStatus] = useState<'idle' | 'saving' | 'saved'>('idle'); const [showExportMenu, setShowExportMenu] = useState(false); const handleSave = () => { const name = prompt('Enter diagram name:', `Diagram ${new Date().toLocaleDateString()}`); if (name) { setSaveStatus('saving'); saveDiagram(name); // Show success state setTimeout(() => { setSaveStatus('saved'); setTimeout(() => setSaveStatus('idle'), 2000); }, 600); } }; const handleExport = async (format: 'png' | 'jpg' | 'svg' | 'txt' | 'code' | 'json') => { setShowExportMenu(false); const viewport = document.querySelector('.react-flow__viewport') as HTMLElement; try { switch (format) { case 'png': if (viewport) await exportToPng(viewport); break; case 'jpg': if (viewport) await exportToJpg(viewport); break; case 'svg': if (viewport) await exportToSvg(viewport); break; case 'txt': exportToTxt(nodes, edges); break; case 'code': downloadMermaid(nodes, edges); break; case 'json': exportToJson(nodes, edges); break; } } catch (error) { console.error('Export failed:', error); } }; return (
SystemArchitect {/* Panel toggles - hidden on mobile */}
{/* History Controls */}
{!isMobile && ( <>
)}
{/* AI Mode Status - Desktop Only */} {!isMobile && (
{aiMode === 'offline' ? ( <> Local ) : aiMode === 'browser' ? ( <> Browser ) : ( <> Cloud )}
)}
{/* Export Dropdown */}
{showExportMenu && ( <>
setShowExportMenu(false)} />
)}
setShowSettings(false)} />
); }