import React from 'react'; import { Box, Tooltip, IconButton, Stack } from '@mui/material'; import { Storage, Terminal, FileUpload, Settings, History } from '@mui/icons-material'; interface NavigationRailProps { activeTab: string; onTabChange: (tab: string) => void; } const NavigationRail: React.FC = ({ activeTab, onTabChange }) => { const tabs = [ { id: 'explorer', icon: , label: 'Explorer' }, { id: 'sql', icon: , label: 'SQL Editor' }, { id: 'transfer', icon: , label: 'Import/Export' }, { id: 'history', icon: , label: 'Query History' }, ]; return ( theme.palette.mode === 'dark' ? '#0a0f1d' : '#ffffff', borderRight: 1, borderColor: 'divider', zIndex: 1200, boxShadow: (theme) => theme.palette.mode === 'dark' ? 'none' : '4px 0 10px rgba(0,0,0,0.02)' }}> {tabs.map((tab) => { const isActive = activeTab === tab.id; return ( {/* Active Indicator - Elegant Pill Style */} {isActive && ( )} onTabChange(tab.id)} sx={{ width: 48, height: 48, color: isActive ? 'primary.main' : 'text.secondary', bgcolor: isActive ? 'rgba(0, 97, 255, 0.05)' : 'transparent', borderRadius: '8px', transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)', '&:hover': { bgcolor: isActive ? 'rgba(0, 97, 255, 0.1)' : 'rgba(0, 0, 0, 0.03)', color: isActive ? 'primary.main' : 'primary.main', '& .MuiSvgIcon-root': { transform: 'scale(1.1)', } }, '& .MuiSvgIcon-root': { fontSize: 26, transition: 'transform 0.3s cubic-bezier(0.4, 0, 0.2, 1)', } }} > {tab.icon} ); })} ); }; export default NavigationRail;