77 lines
2.4 KiB
TypeScript
77 lines
2.4 KiB
TypeScript
"use client";
|
|
|
|
import { useState } from "react";
|
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
|
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
|
import { AdminSubscriptionTab } from "@/components/admin/AdminSubscriptionTab";
|
|
import { AdminItemManager, type AdminItemsResponse } from "@/components/admin/items/AdminItemManager";
|
|
|
|
interface AdminPanelTabsProps {
|
|
adminUser: {
|
|
subscription_tier?: {
|
|
name: string;
|
|
slug: string;
|
|
} | null;
|
|
username?: string;
|
|
email?: string;
|
|
} | null;
|
|
initialTiers: any[];
|
|
itemsData: AdminItemsResponse;
|
|
locale: string;
|
|
initialTab?: "overview" | "subscriptions" | "items";
|
|
}
|
|
|
|
export function AdminPanelTabs({
|
|
adminUser,
|
|
initialTiers,
|
|
itemsData,
|
|
locale,
|
|
initialTab = "overview",
|
|
}: AdminPanelTabsProps) {
|
|
const [activeTab, setActiveTab] = useState<"overview" | "subscriptions" | "items">(
|
|
initialTab
|
|
);
|
|
|
|
return (
|
|
<Tabs
|
|
value={activeTab}
|
|
onValueChange={(value) => setActiveTab(value as typeof activeTab)}
|
|
className="space-y-6"
|
|
>
|
|
<TabsList>
|
|
<TabsTrigger value="overview">Visão Geral</TabsTrigger>
|
|
<TabsTrigger value="subscriptions">Assinaturas & Permissões</TabsTrigger>
|
|
<TabsTrigger value="items">Gerenciamento de Itens</TabsTrigger>
|
|
</TabsList>
|
|
|
|
<TabsContent value="overview" className="space-y-4">
|
|
<Card>
|
|
<CardHeader>
|
|
<CardTitle>Bem-vindo, {adminUser?.username ?? "Administrador"}</CardTitle>
|
|
</CardHeader>
|
|
<CardContent className="space-y-3 text-sm text-muted-foreground">
|
|
<p>
|
|
Utilize as abas acima para administrar planos de assinatura, permissões
|
|
e a curadoria de itens do marketplace. Esta área é exclusiva para
|
|
operadores autorizados.
|
|
</p>
|
|
<p>
|
|
Para solicitações críticas, lembre-se de registrar mudanças e validar
|
|
com a equipe responsável antes de disponibilizar aos usuários finais.
|
|
</p>
|
|
</CardContent>
|
|
</Card>
|
|
</TabsContent>
|
|
|
|
<TabsContent value="subscriptions">
|
|
<AdminSubscriptionTab initialTiers={initialTiers} adminUser={adminUser} />
|
|
</TabsContent>
|
|
|
|
<TabsContent value="items">
|
|
<AdminItemManager initialData={itemsData} locale={locale} />
|
|
</TabsContent>
|
|
</Tabs>
|
|
);
|
|
}
|
|
|