"use client"; import { useState } from "react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@nextsparkjs/core/components/ui/card"; import { Button } from "@nextsparkjs/core/components/ui/button"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@nextsparkjs/core/components/ui/tabs"; import { ArrowLeft, Users, Shield, Users2, Loader2, AlertTriangle, RefreshCw, } from "lucide-react"; import Link from "next/link"; import { TeamsTable } from "@nextsparkjs/core/components/superadmin/tables/TeamsTable"; import { getTemplateOrDefaultClient } from "@nextsparkjs/registries/template-registry.client"; import { SearchInput, PaginationControls, } from "@nextsparkjs/core/components/superadmin/filters"; import { sel } from "@nextsparkjs/core/selectors"; import { useAdminTeams } from "@nextsparkjs/core/hooks/teams"; /** * Teams Management Page * * Comprehensive team viewing interface for superadmins (read-only). * Displays all teams with filtering by type. */ function TeamsPage() { const [activeTab, setActiveTab] = useState<"user" | "system">("user"); const [searchQuery, setSearchQuery] = useState(""); const [page, setPage] = useState(1); const [limit, setLimit] = useState(20); // Handle tab change - reset page const handleTabChange = (tab: string) => { setActiveTab(tab as "user" | "system"); setPage(1); }; // Handle search change - reset page const handleSearchChange = (value: string) => { setSearchQuery(value); setPage(1); }; // Handle limit change - reset page const handleLimitChange = (newLimit: number) => { setLimit(newLimit); setPage(1); }; // Fetch teams data using the shared hook const { teams: filteredTeams, counts, pagination, metadata, isLoading, error, refetch, } = useAdminTeams({ search: searchQuery || undefined, type: activeTab, page, limit, }); // Loading state if (isLoading) { return (

Team Management

Loading team data...

); } // Error state if (error) { return (

Team Management

Error loading data

Error Loading Teams {error instanceof Error ? error.message : "Failed to load team data"}
); } return (
{/* Header */}

Team Management

View all teams and their members (read-only)

{/* Stats Overview */}
Total Teams
{counts?.total || 0}

All registered teams

{/* Search */}
{searchQuery && ( )}
{/* Tabs Section */} User Teams ({counts?.user || 0}) System Admin ({counts?.system || 0}) User Teams Regular teams created by users for collaboration. {pagination && ( )} System Admin Team Special team for system administrators with cross-team access capabilities. {pagination && ( )} {/* Metadata Footer */} {metadata && (

Last updated:{" "} {new Date(metadata.requestedAt).toLocaleString()}

Requested by: {metadata.requestedBy}

Source: {metadata.source}

)}
); } export default getTemplateOrDefaultClient("app/superadmin/teams/page.tsx", TeamsPage);