"use client"; import React from 'react'; import { Plus, FolderOpen, Package, Layout, Book, Twitter, BookOpen, Settings, FileText, NotebookPen } from 'lucide-react'; import * as Tooltip from '@radix-ui/react-tooltip'; import { useTemplateStore } from '@/stores/template-store'; import { useFlowStoreActions } from '@/stores/flow-store'; import { useDesignStore } from '@/stores/design-store'; import { useSidebarStore } from '@/stores/sidebar-store'; import { useSettingsStore } from '@/stores/settings-store'; import { useDocumentStore } from '@/stores/document-store'; const VerticalNavigation = () => { const { setShowTemplateSelector } = useTemplateStore(); const { importFlow } = useFlowStoreActions(); const { currentDesign, updateDesignName } = useDesignStore(); const { toggleFloatingPanel, floatingPanels } = useSidebarStore(); const { toggleModal } = useSettingsStore(); const { isDocumentPanelOpen, toggleDocumentPanel } = useDocumentStore(); const handleCreateDiagram = () => { setShowTemplateSelector(true); }; const handleOpenDiagram = () => { const fileInput = document.createElement('input'); fileInput.type = 'file'; fileInput.accept = '.ecstudio'; fileInput.onchange = (e) => { const target = e.target as HTMLInputElement; const file = target?.files?.[0]; if (file) { const reader = new FileReader(); reader.onload = (event) => { try { const data = JSON.parse(event.target?.result as string); importFlow(data); // Update the current design name based on metadata or filename const designName = data.name || data.metadata?.name || file.name.replace('.ecstudio', ''); if (currentDesign?.id) { updateDesignName(currentDesign.id, designName); } } catch (error) { console.error('Error parsing file:', error); alert('Error: Invalid file format. Please select a valid .ecstudio file.'); } } reader.readAsText(file); } } fileInput.click(); }; const handleExternalLink = (url: string) => { window.open(url, '_blank', 'noopener,noreferrer'); }; return (
{/* Top section */}
Create Diagram Open Diagram {/* Divider */}
Components Canvas EventCatalog Resources {/* Divider */}
{isDocumentPanelOpen ? 'Hide Document' : 'Show Document'}
{/* Spacer to push bottom section down */}
{/* Bottom section */}
Discord Twitter (X) {/* Divider */}
Documentation Settings
); }; export default VerticalNavigation;