import { AddProject } from "@/components/dashboard/projects/add"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs"; import { useEffect, useState } from "react"; import { useRouter } from "next/router"; import { api } from "@/utils/api"; export type TabState = | "projects" | "monitoring" | "settings" | "traefik" | "docker"; interface Props { tab: TabState; children: React.ReactNode; } export const NavigationTabs = ({ tab, children }: Props) => { const router = useRouter(); const { data } = api.auth.get.useQuery(); const [activeTab, setActiveTab] = useState(tab); const { data: user } = api.user.byAuthId.useQuery( { authId: data?.id || "", }, { enabled: !!data?.id && data?.rol === "user", }, ); useEffect(() => { setActiveTab(tab); }, [tab]); return (

{tab === "projects" && "Projects"} {tab === "monitoring" && "Monitoring"} {tab === "settings" && "Settings"} {tab === "traefik" && "Traefik"} {tab === "docker" && "Docker"}

{tab === "projects" && "Manage your deployments"} {tab === "monitoring" && "Watch the usage of your server"} {tab === "settings" && "Check the configuration"} {tab === "traefik" && "Read the traefik config and update it"} {tab === "docker" && "Manage the docker containers"}

{tab === "projects" && (data?.rol === "admin" || user?.canCreateProjects) && }
{ if (e === "settings") { router.push("/dashboard/settings/server"); } else { router.push(`/dashboard/${e}`); } setActiveTab(e as TabState); }} > {/* className="grid w-fit grid-cols-4 bg-transparent" */}
Projects Monitoring {(data?.rol === "admin" || user?.canAccessToTraefikFiles) && ( Traefik File System )} {(data?.rol === "admin" || user?.canAccessToDocker) && ( Docker )} Settings
{children}
); };