87 lines
2.5 KiB
TypeScript
87 lines
2.5 KiB
TypeScript
"use client";
|
|
|
|
import { useState } from "react";
|
|
import { AdminSubscriptionTab } from "@/components/admin/AdminSubscriptionTab";
|
|
import {
|
|
AdminItemManager,
|
|
type AdminItemsResponse,
|
|
} from "@/components/admin/items/AdminItemManager";
|
|
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
|
|
|
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>
|
|
);
|
|
}
|