"use client"; import { useCallback, useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import Link from "next/link"; import { AuthGuard } from "@/components/AuthGuard"; import { TenantSwitcher } from "@/components/TenantSwitcher"; import { useAuth } from "@/hooks/useAuth"; import { useMe } from "@/hooks/useMe"; import { api, ApiError, type TenantContext } from "@/lib/api"; import { Badge, Button, Container, SectionTitle } from "@/components/ui"; const STATUS_LABELS: Record = { draft: "پیش‌نویس", pending_activation: "در انتظار فعال‌سازی", active: "فعال", suspended: "معلق", archived: "بایگانی‌شده", }; const ROLE_LABELS: Record = { platform_admin: "مدیر پلتفرم", tenant_owner: "مالک workspace", tenant_admin: "مدیر workspace", tenant_editor: "ویرایشگر", tenant_viewer: "بیننده", }; const QUICK_LINKS = [ { title: "کاربران و دسترسی‌ها", desc: "مدیریت اعضای workspace (به‌زودی)" }, { title: "برندینگ و ظاهر", desc: "شخصی‌سازی رنگ و لوگو (به‌زودی)" }, { title: "دامنه‌ها", desc: "مدیریت زیردامنه و دامنه اختصاصی (به‌زودی)" }, { title: "اشتراک و پلن", desc: "مشاهده و ارتقاء پلن (به‌زودی)" }, ]; function DashboardContent() { const router = useRouter(); const { user, signOut } = useAuth(); const { me, loading: meLoading, error: meError, reload: reloadMe } = useMe(); const [ctx, setCtx] = useState(null); const [loadingCtx, setLoadingCtx] = useState(true); const [ctxError, setCtxError] = useState(""); const loadContext = useCallback(async () => { setLoadingCtx(true); setCtxError(""); try { const data = await api.tenantContext.current(); setCtx(data); } catch (err) { setCtxError( err instanceof ApiError ? err.message : "دریافت اطلاعات workspace ناموفق بود" ); setCtx(null); } finally { setLoadingCtx(false); } }, []); useEffect(() => { if (meLoading) return; if (!me) return; if (me.onboarding_required) { router.replace("/onboarding"); return; } void loadContext(); }, [me, meLoading, router, loadContext]); const handleSwitched = async () => { await reloadMe(); await loadContext(); }; if (meLoading || (me && me.onboarding_required)) { return (

در حال بارگذاری...

); } return (

داشبورد workspace

خوش آمدید {user?.username || user?.email || "کاربر"}

{me && ( )}
{(meError || ctxError) && (

{meError || ctxError}

)} {loadingCtx ? (

در حال بارگذاری workspace...

) : ctx ? (

{ctx.tenant.name}

{ctx.primary_domain || ctx.tenant.slug}

{STATUS_LABELS[ctx.tenant.status] || ctx.tenant.status}
پلن فعلی
{ctx.plan_name || "—"}
وضعیت اشتراک
{ctx.subscription_status || "—"}
نقش شما
{(ctx.role && ROLE_LABELS[ctx.role]) || ctx.role || "—"}
وضعیت onboarding
{ctx.tenant.onboarding_completed ? "تکمیل‌شده" : "ناتمام"}
{ctx.domains.length > 0 && (

دامنه‌ها

{ctx.domains.map((d) => ( {d.domain} ))}
)}
{QUICK_LINKS.map((link) => (

{link.title}

{link.desc}

))}
) : ( !ctxError && (

اطلاعات workspace در دسترس نیست.

) )}
); } export default function DashboardPage() { return ( ); }