import { Suspense } from "react"; import { notFound } from "next/navigation"; import { connection } from "next/server"; import { getUserRepositoriesWithStars, getUserStarredRepos, getUserProfile } from "@/actions/repositories"; import { RepoList } from "@/components/repo-list"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { CalendarDays, GitBranch, MapPin, Link as LinkIcon, Star, BookOpen } from "lucide-react"; import { format } from "date-fns"; import Link from "next/link"; import { GithubIcon, XIcon, LinkedInIcon } from "@/components/icons"; async function RepositoriesTab({ username }: { username: string }) { await connection(); const repos = await getUserRepositoriesWithStars(username); if (repos.length === 0) { return (

No repositories yet

This user hasn't created any public repositories.

); } return ; } async function StarredTab({ username }: { username: string }) { await connection(); const repos = await getUserStarredRepos(username); if (repos.length === 0) { return (

No starred repositories

This user hasn't starred any repositories yet.

); } return ; } function TabSkeleton() { return (
{[...Array(3)].map((_, i) => (
))}
); } export default async function ProfilePage({ params, searchParams }: { params: Promise<{ username: string }>; searchParams: Promise<{ tab?: string }> }) { const { username } = await params; const { tab } = await searchParams; const user = await getUserProfile(username); if (!user) { notFound(); } const activeTab = tab === "starred" ? "starred" : "repositories"; return (
Repositories Starred }> }>
); }