import React, { useState } from 'react';
import { useAuth } from '../context/AuthContext';
function CategoryGroup({ category, activeChannel, onSelectChannel }) {
const [collapsed, setCollapsed] = useState(false);
return (
{!collapsed && (
{(category.channels || []).map((channel) => (
onSelectChannel(channel)}
/>
))}
)}
);
}
function ChannelItem({ channel, isActive, onClick }) {
return (
);
}
function UserBar({ user, onOpenSettings }) {
return (
{user?.avatar ? (

) : (
{user?.username?.charAt(0)?.toUpperCase() || '?'}
)}
);
}
export default function ChannelSidebar({
server,
activeChannel,
onSelectChannel,
onOpenServerSettings,
onOpenInvite,
dmMode,
user,
token,
}) {
const { logout } = useAuth();
const [showServerMenu, setShowServerMenu] = useState(false);
if (dmMode) {
return (
{/* DM Header */}
{/* DM List placeholder */}
Direct Messages
No conversations yet
Start a new DM to begin chatting
{}} />
);
}
if (!server) {
return (
);
}
return (
{/* Server Header */}
{/* Server dropdown menu */}
{showServerMenu && (
<>
setShowServerMenu(false)}
/>
>
)}
{/* Channels */}
{server.categories && server.categories.length > 0 ? (
server.categories.map((cat) => (
))
) : server.channels && server.channels.length > 0 ? (
{server.channels.map((channel) => (
onSelectChannel(channel)}
/>
))}
) : (
)}
{/* User Bar */}
{}} />
);
}