'use client';
import { usePathname, useRouter } from 'next/navigation';
import { useState } from 'react';
import { BottomNavigation, BottomNavigationAction, Paper, Fab, Box } from '@mui/material';
import {
Home,
Timeline,
Insights,
Chat,
Mic,
} from '@mui/icons-material';
import { useTranslation } from '@/hooks/useTranslation';
export const TabBar = () => {
const { t } = useTranslation('common');
const router = useRouter();
const pathname = usePathname();
const [voiceOpen, setVoiceOpen] = useState(false);
const tabs = [
{ label: t('navigation.home'), icon: , value: '/' },
{ label: t('navigation.track'), icon: , value: '/track' },
{ label: '', icon: null, value: 'voice' }, // Placeholder for center button
{ label: t('navigation.insights'), icon: , value: '/insights' },
{ label: t('navigation.aiChat'), icon: , value: '/ai-assistant' },
];
return (
<>
{
if (newValue !== 'voice') {
router.push(newValue);
}
}}
showLabels
sx={{
height: 64,
'& .MuiBottomNavigationAction-root': {
minWidth: 60,
'&.Mui-selected': {
color: 'primary.main',
},
},
}}
>
{tabs.map((tab) => {
if (tab.value === 'voice') {
// Center voice button placeholder
return (
);
}
return (
);
})}
{/* Voice Command Floating Button - Centered */}
{
// Trigger voice command - will integrate with existing VoiceFloatingButton
const voiceButton = document.querySelector('[aria-label="voice input"]') as HTMLButtonElement;
if (voiceButton) {
voiceButton.click();
}
}}
sx={{
position: 'fixed',
bottom: 40,
left: '50%',
transform: 'translateX(-50%)',
zIndex: 1100,
width: 56,
height: 56,
bgcolor: 'secondary.main',
'&:hover': {
bgcolor: 'secondary.dark',
},
}}
>
>
);
};