'use client' import { useState, useCallback } from 'react' import { motion, AnimatePresence } from 'framer-motion' import { Menu, X, Maximize, Minimize, Bot } from 'lucide-react' import { Language } from '@/lib/types' import { t } from '@/lib/i18n' interface NavigationFABProps { currentIndex: number totalSlides: number visitedSlides: Set onGoToSlide: (index: number) => void lang: Language onToggleLanguage: () => void } export default function NavigationFAB({ currentIndex, totalSlides, visitedSlides, onGoToSlide, lang, onToggleLanguage, }: NavigationFABProps) { const [isOpen, setIsOpen] = useState(false) const [isFullscreen, setIsFullscreen] = useState(false) const i = t(lang) const toggleFullscreen = useCallback(() => { if (!document.fullscreenElement) { document.documentElement.requestFullscreen() setIsFullscreen(true) } else { document.exitFullscreen() setIsFullscreen(false) } }, []) return (
{!isOpen ? ( setIsOpen(true)} className="w-14 h-14 rounded-full bg-indigo-600 hover:bg-indigo-500 flex items-center justify-center shadow-lg shadow-indigo-600/30 transition-colors" > ) : ( {/* Header */}
{i.nav.slides}
{/* Slide List */}
{i.slideNames.map((name, idx) => { const isActive = idx === currentIndex const isVisited = visitedSlides.has(idx) const isAI = idx === totalSlides - 1 return ( ) })}
{/* Footer */}
{/* Language Toggle */} {/* Fullscreen */}
)}
) }