import Link from "next/link"; import { useRouter } from "next/router"; import { Button } from "@headlessui/react"; import { t } from "@lingui/core/macro"; import { useEffect, useState } from "react"; import { TbLayoutSidebarLeftCollapse, TbLayoutSidebarLeftExpand, } from "react-icons/tb"; import { twMerge } from "tailwind-merge"; import boardsIconDark from "~/assets/boards-dark.json"; import boardsIconLight from "~/assets/boards-light.json"; import membersIconDark from "~/assets/members-dark.json"; import membersIconLight from "~/assets/members-light.json"; import settingsIconDark from "~/assets/settings-dark.json"; import settingsIconLight from "~/assets/settings-light.json"; import ReactiveButton from "~/components/ReactiveButton"; import UserMenu from "~/components/UserMenu"; import WorkspaceMenu from "~/components/WorkspaceMenu"; import { useTheme } from "next-themes"; interface SideNavigationProps { user: UserType; isLoading: boolean; onCloseSideNav?: () => void; } interface UserType { email?: string | null | undefined; image?: string | null | undefined; } export default function SideNavigation({ user, isLoading, onCloseSideNav, }: SideNavigationProps) { const router = useRouter(); const [isCollapsed, setIsCollapsed] = useState(false); const [isInitialised, setIsInitialised] = useState(false); useEffect(() => { const savedState = localStorage.getItem("kan_sidebar-collapsed"); if (savedState !== null) { setIsCollapsed(JSON.parse(savedState)); } setIsInitialised(true); }, []); useEffect(() => { if (isInitialised) { localStorage.setItem( "kan_sidebar-collapsed", JSON.stringify(isCollapsed), ); } }, [isCollapsed, isInitialised]); const { pathname } = router; const { theme, resolvedTheme } = useTheme(); const isDarkMode = resolvedTheme === "dark"; const navigation = [ { name: t`Boards`, href: "/boards", icon: isDarkMode ? boardsIconDark : boardsIconLight, }, { name: t`Members`, href: "/members", icon: isDarkMode ? membersIconDark : membersIconLight, }, { name: t`Settings`, href: "/settings", icon: isDarkMode ? settingsIconDark : settingsIconLight, }, ]; const toggleCollapse = () => { setIsCollapsed(!isCollapsed); }; return ( <> ); }