import { logoutAction } from "@/app/(admin)/admin/actions";
import { AdminAlertBell } from "@/components/admin/layout/AdminAlertBell";
import { AdminMobileMenuTrigger } from "@/components/admin/layout/AdminMobileMenuTrigger";
import { AdminMobileSearchTrigger } from "@/components/admin/layout/AdminMobileSearchTrigger";
import { AdminNewMenu } from "@/components/admin/layout/AdminNewMenu";
import { AdminThemeToggle } from "@/components/admin/layout/AdminThemeToggle";
import { AdminUserMenu } from "@/components/admin/layout/AdminUserMenu";
import { hasAdminPermission, type AdminPermission } from "@/lib/admin-rbac";
import { getAdminAlertSummary } from "@/lib/data/admin-alerts";
import { formatDateOnly } from "@/lib/module-formatters";
import type { SessionUser } from "@/lib/session";

const newShortcuts = [
  { href: "/admin/kompanije/nova", label: "Kompanija", permission: "companies:manage" },
  { href: "/admin/mesta/nova", label: "Mesto", permission: "places:manage" },
  { href: "/admin/dogadjaji/nova", label: "Događaj", permission: "events:manage" },
  { href: "/admin/nekretnine/nova", label: "Nekretnina", permission: "real-estate:manage" },
  { href: "/admin/automobili/nova", label: "Vozilo", permission: "cars:manage" },
  { href: "/admin/poslovi/nova", label: "Posao", permission: "jobs:manage" },
  { href: "/admin/prodavnica/nova", label: "Proizvod", permission: "store:manage" },
  { href: "/admin/akcije/nova", label: "Akcija", permission: "deals:manage" },
] as const;

export async function Topbar({ user }: { user: SessionUser }) {
  const today = formatDateOnly(new Date());
  const alertSummary = await getAdminAlertSummary();

  const allowedShortcuts = newShortcuts.filter((item) =>
    hasAdminPermission(user, item.permission as AdminPermission),
  );

  return (
    <div className="admin-topbar">
      <div className="flex min-w-0 items-center gap-2 sm:gap-3">
        <AdminMobileMenuTrigger user={user} />
        <div className="min-w-0 flex-1">
          <p className="admin-topbar-eyebrow">Interni admin panel</p>
          <h1 className="admin-topbar-title">Upravljanje portalom</h1>
        </div>
        <span className="ml-3 hidden text-xs font-medium text-muted-foreground xl:inline">
          {today}
        </span>
        {/* Mobile-only search trigger — vidljiv kao quick action; na desktop-u
            Cmd+K shortcut radi posao pa se ovde ne pojavljuje. */}
        <AdminMobileSearchTrigger />
      </div>

      <div className="flex min-w-0 items-center gap-2 xl:items-end xl:gap-3">
        <AdminNewMenu items={allowedShortcuts.map((s) => ({ href: s.href, label: s.label }))} />
        <AdminAlertBell summary={alertSummary} />
        <AdminThemeToggle />
        <AdminUserMenu user={user} logoutAction={logoutAction} />
      </div>
    </div>
  );
}
