import React from 'react'; import { LAYER_DEFINITIONS } from '../constants'; import { LayerType } from '../types'; import { Box, Sparkles, LayoutTemplate, Circle, Search, X, ChevronLeft, ChevronRight } from 'lucide-react'; import GoogleAd from './GoogleAd'; interface SidebarProps { onOpenAIBuilder: () => void; onSelectTemplate: (templateId: string) => void; onBackToHome: () => void; isConnected: boolean; isOpen: boolean; onToggle: () => void; } const Sidebar: React.FC = ({ onOpenAIBuilder, onSelectTemplate, onBackToHome, isConnected, isOpen, onToggle }) => { const [searchQuery, setSearchQuery] = React.useState(''); const onDragStart = (event: React.DragEvent, layerType: LayerType) => { event.dataTransfer.setData('application/reactflow', layerType); event.dataTransfer.effectAllowed = 'move'; }; const categories = Array.from(new Set(Object.values(LAYER_DEFINITIONS).map(l => l.category))); const categoryOrder = [ 'Core', 'Convolution', 'Preprocessing', 'Recurrent', 'Transformer', 'Normalization', 'GenAI', 'Video', 'Audio', '3D', 'Detection', 'OCR', 'Robotics', 'Graph', 'Physics', 'Spiking', 'RL', 'Advanced', 'Utility', 'Merge' ]; categories.sort((a, b) => { const idxA = categoryOrder.indexOf(a); const idxB = categoryOrder.indexOf(b); if (idxA === -1) return 1; if (idxB === -1) return -1; return idxA - idxB; }); const filteredLayers = Object.values(LAYER_DEFINITIONS).filter(layer => layer.label.toLowerCase().includes(searchQuery.toLowerCase()) || layer.description.toLowerCase().includes(searchQuery.toLowerCase()) || layer.type.toLowerCase().includes(searchQuery.toLowerCase()) ); return ( <> {/* Mobile Backdrop */} {isOpen && (
)} {/* Sidebar Container */} ); }; export default Sidebar;