import { useI18n } from "@/lib/i18n";
import { Link } from "@inertiajs/react";
import {
    CreditCard,
    Database,
    ReceiptText,
    Users,
    Gauge,
    Settings2,
    ShieldCheck,
    WalletCards,
    UsersRound,
} from "lucide-react";
import AppLogo from "@/components/app-logo";
import { LanguageSwitcher } from "@/components/language-switcher";
import { NavMain } from "@/components/nav-main";
import { NavUser } from "@/components/nav-user";
import {
    Sidebar,
    SidebarContent,
    SidebarFooter,
    SidebarHeader,
    SidebarMenu,
    SidebarMenuButton,
    SidebarMenuItem,
} from "@/components/ui/sidebar";
import type { NavItem } from "@/types";

export function AdminSidebar() {
    const { t } = useI18n();
    const platformItems: NavItem[] = [
        {
            title: t("admin.nav.overview", "Overview"),
            href: "/admin",
            icon: Gauge,
        },
        {
            title: t("admin.nav.market_providers", "Market Providers"),
            href: "/admin/market-providers",
            icon: Database,
        },
        {
            title: t("admin.nav.subscriptions", "Subscriptions"),
            href: "/admin/subscription-plans",
            icon: CreditCard,
        },
        {
            title: t("admin.nav.payment_gateways", "Payment Gateways"),
            href: "/admin/payment-gateways",
            icon: WalletCards,
        },
        {
            title: t("admin.nav.referrals", "Referrals"),
            href: "/admin/referrals",
            icon: UsersRound,
        },
        {
            title: t("admin.nav.integrations", "Integrations"),
            href: "/admin/integrations",
            icon: Settings2,
        },
    ];

    const activityItems: NavItem[] = [
        {
            title: t("admin.nav.customers", "Customers"),
            href: "/admin/customers",
            icon: Users,
        },
        {
            title: t("admin.nav.payment_transactions", "Payments"),
            href: "/admin/payments",
            icon: ReceiptText,
        },
    ];

    const lainnyaItems: NavItem[] = [
        {
            title: t("admin.settings", "Settings"),
            href: "/admin/settings",
            icon: Users,
        },
        {
            title: "Signal Configuration",
            href: "/admin/signal-configuration",
            icon: Settings2,
        },
    ];
    return (
        <Sidebar collapsible="icon" variant="inset">
            <SidebarHeader className="border-b border-white/6 pb-3 pt-3">
                <SidebarMenu>
                    <SidebarMenuItem>
                        <SidebarMenuButton size="lg" asChild>
                            <Link href="/admin">
                                <AppLogo />
                            </Link>
                        </SidebarMenuButton>
                    </SidebarMenuItem>
                </SidebarMenu>
            </SidebarHeader>
            <SidebarContent className="py-3">
                <div className="space-y-5">
                    <section>
                        <NavMain
                            items={platformItems}
                            label={t("admin.nav.platform", "Platform")}
                        />
                    </section>

                    <section>
                        <NavMain
                            items={activityItems}
                            label={t("admin.nav.activity", "Activity")}
                        />
                    </section>

                    <section>
                        <NavMain
                            items={lainnyaItems}
                            label={t("admin.nav.settings_group", "Settings")}
                        />
                    </section>
                </div>
            </SidebarContent>
            <SidebarFooter className="border-t border-white/6 pt-3">
                <div className="px-2 pb-2">
                    <LanguageSwitcher />
                </div>
                <SidebarMenu>
                    <SidebarMenuItem>
                        <SidebarMenuButton
                            asChild
                            tooltip={t(
                                "admin.back_to_app",
                                "Back to application",
                            )}
                        >
                            <Link href="/dashboard">
                                <ShieldCheck />
                                <span>
                                    {t(
                                        "admin.back_to_app",
                                        "Back to application",
                                    )}
                                </span>
                            </Link>
                        </SidebarMenuButton>
                    </SidebarMenuItem>
                </SidebarMenu>
                <NavUser />
            </SidebarFooter>
        </Sidebar>
    );
}
