import React, { useState, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import './Sidebar.css'; const Sidebar = ({ isOpen, onToggle, activePage, onPageChange, pages = [], userStats = {} }) => { const { t, i18n } = useTranslation(); const [searchTerm, setSearchTerm] = useState(''); const [filteredPages, setFilteredPages] = useState(pages); useEffect(() => { if (searchTerm) { const lowercasedSearchTerm = searchTerm.toLowerCase(); const filtered = pages.filter(page => t(page.name).toLowerCase().includes(lowercasedSearchTerm) || t(page.description).toLowerCase().includes(lowercasedSearchTerm) || (page.category && t(`sidebar.categories.${page.category}`, page.category).toLowerCase().includes(lowercasedSearchTerm)) ); setFilteredPages(filtered); } else { setFilteredPages(pages); } }, [searchTerm, pages, t]); const groupedPages = filteredPages.reduce((groups, page) => { const category = page.category || 'Tools'; if (!groups[category]) { groups[category] = []; } groups[category].push(page); return groups; }, {}); const handlePageClick = (pageId) => { onPageChange(pageId); }; const clearSearch = () => { setSearchTerm(''); }; const handleLanguageChange = (e) => { i18n.changeLanguage(e.target.value); }; return (
{t('sidebar.subtitle')}