"use client" import { LayoutDashboard, Crown, Settings, Sparkle, HardDriveDownload, Bitcoin, Headset, BarChartIcon, } from "lucide-react" import { Sidebar, SidebarMenuButton, SidebarGroup, SidebarContent, SidebarMenu, SidebarGroupContent, SidebarGroupLabel, SidebarMenuItem, SidebarMenuSkeleton, useSidebar, } from "@/components/ui/sidebar" import LogoutMenuItem from "@/components/custom/LogoutMenuItem" import type React from "react" import Link from "next/link" import { useState, useEffect } from "react" interface UserSettings { hideGenAI: boolean hideUpgrades: boolean hideCrypto: boolean } interface SideMenuProps { initialSettings?: UserSettings } export const SideMenu: React.FC = ({ initialSettings }) => { const [hideGenAI, setHideGenAI] = useState(initialSettings?.hideGenAI ?? true) const [hideUpgrades, setHideUpgrades] = useState(initialSettings?.hideUpgrades ?? true) const [hideCrypto, setHideCrypto] = useState(initialSettings?.hideCrypto ?? true) const [isLoading, setIsLoading] = useState(!initialSettings) const { setOpenMobile } = useSidebar() useEffect(() => { // Only fetch settings if they weren't provided by the server if (initialSettings) { setIsLoading(false) return } fetch("/api/users/settings") .then((res) => res.json()) .then((data) => { setHideGenAI(data.hideGenAI) setHideUpgrades(data.hideUpgrades) setHideCrypto(data.hideCrypto) setIsLoading(false) }) .catch((error) => { console.error("Failed to fetch user settings:", error) setIsLoading(false) }) }, [initialSettings]) // Handler to close mobile sidebar when a link is clicked const handleLinkClick = () => { setOpenMobile(false) } return (

LibreCloud

Services Dashboard {isLoading ? ( ) : ( !hideGenAI && ( Generative AI ) )} Download Center Tools {isLoading ? ( ) : ( !hideCrypto && ( Exchange Crypto ) )} Statistics Account {isLoading ? ( ) : ( !hideUpgrades && ( Upgrades ) )} Support Settings
) }