'use client';
import React, { useState } from 'react';
import { Fab, Tooltip, Snackbar, Alert } from '@mui/material';
import MicIcon from '@mui/icons-material/Mic';
import { VoiceInputButton } from './VoiceInputButton';
import { useRouter } from 'next/navigation';
/**
* Floating voice input button
*
* Always visible floating action button for quick voice commands.
* Positioned in bottom-right corner for easy thumb access.
*/
export function VoiceFloatingButton() {
const router = useRouter();
const [snackbar, setSnackbar] = useState<{
open: boolean;
message: string;
severity: 'success' | 'info' | 'warning' | 'error';
}>({
open: false,
message: '',
severity: 'info',
});
const handleTranscript = (transcript: string) => {
console.log('[Voice] Transcript:', transcript);
setSnackbar({
open: true,
message: `Command received: "${transcript}"`,
severity: 'info',
});
};
const handleClassifiedIntent = (result: any) => {
console.log('[Voice] Classification:', result);
if (result.error) {
setSnackbar({
open: true,
message: result.message,
severity: 'error',
});
return;
}
// Show success message
setSnackbar({
open: true,
message: `Understood: ${result.intent} command`,
severity: 'success',
});
// Navigate to appropriate page based on intent
// This is a placeholder - in production, you'd create the activity
setTimeout(() => {
if (result.intent === 'feeding') {
router.push('/track/feeding');
} else if (result.intent === 'sleep') {
router.push('/track/sleep');
} else if (result.intent === 'diaper') {
router.push('/track/diaper');
}
}, 1500);
};
const handleCloseSnackbar = () => {
setSnackbar(prev => ({ ...prev, open: false }));
};
return (
<>
{/* Floating button positioned in bottom-right */}
{/* Snackbar for feedback */}
{snackbar.message}
>
);
}