/** * User management page */ import { useQuery } from '@tanstack/react-query'; import { usersApi, guildsApi } from '../services/api'; import { useState } from 'react'; import { format } from 'date-fns'; export function Users() { const [selectedGuildId, setSelectedGuildId] = useState(); const [searchTerm, setSearchTerm] = useState(''); const { data: guilds } = useQuery({ queryKey: ['guilds'], queryFn: guildsApi.list, }); const { data: users, isLoading } = useQuery({ queryKey: ['users', selectedGuildId, searchTerm], queryFn: () => usersApi.search(selectedGuildId!, searchTerm || undefined), enabled: !!selectedGuildId, }); return (
{/* Header */}

User Management

Search and manage users across your servers

{!selectedGuildId ? (

Please select a guild to search users

) : ( <> {/* Search */}
setSearchTerm(e.target.value)} placeholder="Enter username..." className="input" />
{/* Results */}
{isLoading ? (
Loading...
) : users && users.length > 0 ? (
{users.map((user) => ( ))}
Username Strikes Warnings Kicks Bans Timeouts First Seen
{user.username} 5 ? 'bg-red-100 text-red-800' : user.strike_count > 2 ? 'bg-yellow-100 text-yellow-800' : 'bg-gray-100 text-gray-800' }`} > {user.strike_count} {user.total_warnings} {user.total_kicks} {user.total_bans} {user.total_timeouts} {format(new Date(user.first_seen), 'MMM d, yyyy')}
) : (
{searchTerm ? 'No users found matching your search' : 'Enter a username to search'}
)}
)}
); }