import React, { useState, useEffect } from 'react'; import { useNavigate, useLocation } from 'react-router-dom'; import { Area } from '../entities/Area'; import { Note } from '../entities/Note'; import { Tag } from '../entities/Tag'; import SidebarAreas from './Sidebar/SidebarAreas'; import SidebarFooter from './Sidebar/SidebarFooter'; import SidebarNav from './Sidebar/SidebarNav'; import SidebarNotes from './Sidebar/SidebarNotes'; import SidebarHabits from './Sidebar/SidebarHabits'; import SidebarProjects from './Sidebar/SidebarProjects'; import SidebarTags from './Sidebar/SidebarTags'; import SidebarViews from './Sidebar/SidebarViews'; import { getFeatureFlags, FeatureFlags } from '../utils/featureFlags'; import { KeyboardShortcutsConfig } from '../utils/keyboardShortcutsService'; interface SidebarProps { isSidebarOpen: boolean; setIsSidebarOpen: React.Dispatch>; currentUser: { email: string }; isDarkMode: boolean; toggleDarkMode: () => void; openTaskModal: () => void; openProjectModal: () => void; openNoteModal: (note: Note | null) => void; openAreaModal: (area: Area | null) => void; openTagModal: (tag: Tag | null) => void; openNewHabit: () => void; notes: Note[]; areas: Area[]; tags: Tag[]; keyboardShortcuts?: KeyboardShortcutsConfig | null; } const Sidebar: React.FC = ({ isSidebarOpen, setIsSidebarOpen, currentUser, isDarkMode, toggleDarkMode, openTaskModal, openProjectModal, openNoteModal, openAreaModal, openTagModal, openNewHabit, notes, areas, tags, keyboardShortcuts, }) => { const navigate = useNavigate(); const location = useLocation(); const [isDropdownOpen, setIsDropdownOpen] = useState(false); const [featureFlags, setFeatureFlags] = useState({ backups: false, calendar: false, habits: false, }); const toggleDropdown = () => { setIsDropdownOpen(!isDropdownOpen); }; const handleNavClick = (path: string, title: string) => { navigate(path, { state: { title } }); if (window.innerWidth < 1024) { setIsSidebarOpen(false); } }; useEffect(() => { const fetchFlags = async () => { const flags = await getFeatureFlags(); setFeatureFlags(flags); }; fetchFlags(); }, []); return (
{isSidebarOpen && (
{/* Sidebar Contents */} {featureFlags.habits && ( )}
)}
); }; export default Sidebar;