import React from "react";
import { Building2, Check, ArrowRight, X, ShieldCheck, Globe, Layers } from "lucide-react";
import { SaaSTenant } from "../types";

interface TenantSelectorModalProps {
  isOpen: boolean;
  onClose: () => void;
  tenants: SaaSTenant[];
  activeTenantId: string;
  onSelectTenant: (tenantId: string) => void;
  onOpenSaasPortal: () => void;
}

export const TenantSelectorModal: React.FC<TenantSelectorModalProps> = ({
  isOpen,
  onClose,
  tenants,
  activeTenantId,
  onSelectTenant,
  onOpenSaasPortal
}) => {
  if (!isOpen) return null;

  return (
    <div className="fixed inset-0 bg-slate-950/80 backdrop-blur-sm z-50 flex items-center justify-center p-4">
      <div className="bg-slate-900 border border-slate-800 rounded-xl max-w-xl w-full p-6 space-y-5 shadow-2xl font-sans text-slate-100">
        
        <div className="flex items-center justify-between border-b border-slate-800 pb-3">
          <div className="flex items-center gap-2.5">
            <div className="p-2 bg-sky-500/10 border border-sky-500/30 text-sky-400 rounded">
              <Building2 className="w-5 h-5" />
            </div>
            <div>
              <h2 className="text-base font-black text-white uppercase font-mono tracking-tight">
                PILIH TENANT / PERUSAHAAN SAAS
              </h2>
              <p className="text-xs text-slate-400 font-mono">
                Pilih konteks data perusahaan tenant yang ingin Anda tampilkan & kelola.
              </p>
            </div>
          </div>

          <button
            type="button"
            onClick={onClose}
            className="text-slate-400 hover:text-white p-1 rounded transition-colors cursor-pointer"
          >
            <X className="w-5 h-5" />
          </button>
        </div>

        <div className="space-y-2.5 max-h-96 overflow-y-auto pr-1">
          {tenants.map(tenant => {
            const isSelected = tenant.id === activeTenantId;

            return (
              <div
                key={tenant.id}
                onClick={() => {
                  onSelectTenant(tenant.id);
                  onClose();
                }}
                className={`p-4 rounded-lg border transition-all cursor-pointer flex items-center justify-between gap-3 font-mono text-xs ${
                  isSelected
                    ? "bg-sky-500/10 border-sky-500 text-white ring-1 ring-sky-500/30 shadow-lg shadow-sky-500/10"
                    : "bg-slate-950 border-slate-800 hover:border-slate-700 text-slate-300 hover:text-white"
                }`}
              >
                <div className="flex items-center gap-3">
                  <div
                    className="w-10 h-10 rounded font-black text-white flex items-center justify-center text-sm shadow-md shrink-0"
                    style={{ backgroundColor: tenant.primaryColor || "#0284c7" }}
                  >
                    {tenant.code}
                  </div>
                  <div>
                    <div className="flex items-center gap-2">
                      <strong className="text-white text-xs uppercase font-bold">{tenant.name}</strong>
                      <span className="px-1.5 py-0.2 bg-slate-800 border border-slate-700 text-sky-300 text-[10px] font-bold rounded">
                        {tenant.plan}
                      </span>
                    </div>
                    <p className="text-[11px] text-slate-400 flex items-center gap-1 mt-0.5">
                      <Globe className="w-3 h-3 text-sky-400" /> {tenant.domain}
                    </p>
                  </div>
                </div>

                <div className="flex items-center gap-3 shrink-0">
                  <div className="text-right hidden sm:block">
                    <span className="text-[10px] text-slate-500 block uppercase">Users / Quota</span>
                    <strong className="text-slate-200">{tenant.currentUsersCount} / {tenant.maxUsersQuota}</strong>
                  </div>

                  {isSelected ? (
                    <span className="px-2.5 py-1 bg-emerald-500/20 text-emerald-400 border border-emerald-500/40 font-bold text-[10px] uppercase rounded flex items-center gap-1">
                      <Check className="w-3 h-3" />
                      Aktif
                    </span>
                  ) : (
                    <span className="px-2.5 py-1 bg-slate-800 hover:bg-sky-600 text-slate-300 hover:text-white font-bold text-[10px] uppercase rounded transition-colors flex items-center gap-1">
                      Switch
                      <ArrowRight className="w-3 h-3" />
                    </span>
                  )}
                </div>
              </div>
            );
          })}
        </div>

        <div className="pt-3 border-t border-slate-800 flex items-center justify-between">
          <button
            type="button"
            onClick={() => {
              onClose();
              onOpenSaasPortal();
            }}
            className="text-xs font-mono font-bold text-sky-400 hover:text-sky-300 flex items-center gap-1.5 cursor-pointer"
          >
            <Layers className="w-4 h-4" />
            Buka Portal SaaS & Billing Manager ➔
          </button>

          <button
            type="button"
            onClick={onClose}
            className="px-4 py-1.5 bg-slate-800 hover:bg-slate-700 text-slate-300 font-mono font-bold text-xs uppercase rounded cursor-pointer"
          >
            Tutup
          </button>
        </div>

      </div>
    </div>
  );
};
