import { e as createComponent, k as renderComponent, r as renderTemplate } from '../chunks/astro/server_CNSJbOTP.mjs';
import 'piccolore';
import { o as obtenerUsuario, a as api, b as ESTADO_PROCESO_ETIQUETAS, e as ESTADO_PROCESO_BADGE, $ as $$AppLayout } from '../chunks/AppLayout_ClxvESCL.mjs';
import { jsxs, jsx } from 'react/jsx-runtime';
import { useState, useEffect, useCallback } from 'react';
export { renderers } from '../renderers.mjs';

function badgeNivel(nivel) {
  if (!nivel) return /* @__PURE__ */ jsx("span", { className: "badge badge-gray", children: "Sin clasificar" });
  const mapa = { alto: "badge-danger", mediano: "badge-warning", bajo: "badge-success" };
  const texto = { alto: "Alto", mediano: "Mediano", bajo: "Bajo" };
  return /* @__PURE__ */ jsx("span", { className: `badge ${mapa[nivel]}`, children: texto[nivel] });
}
function badgeEstado(e) {
  const clave = e;
  const cls = ESTADO_PROCESO_BADGE[clave] ?? "badge-gray";
  const label = ESTADO_PROCESO_ETIQUETAS[clave] ?? e;
  return /* @__PURE__ */ jsx("span", { className: `badge ${cls}`, children: label });
}
function formatFecha(iso) {
  const [y, m, d] = iso.split("-");
  return `${d}/${m}/${y}`;
}
const OPCIONES_ESTADO = [
  { value: "", label: "Todos los estados" },
  { value: "no_iniciado", label: "No iniciado" },
  { value: "en_proceso", label: "En proceso" },
  { value: "en_revision", label: "En revisión" },
  { value: "pendiente_aprobacion", label: "Pend. aprobación" },
  { value: "completa", label: "Completa" },
  { value: "anulada", label: "Anulada" }
];
function TablaActividades() {
  const [usuario, setUsuario] = useState(null);
  useEffect(() => {
    setUsuario(obtenerUsuario());
  }, []);
  const [actividades, setActividades] = useState([]);
  const [total, setTotal] = useState(0);
  const [pagina, setPagina] = useState(1);
  const porPagina = 20;
  const [cargando, setCargando] = useState(true);
  const [error, setError] = useState(null);
  const [filtroEstado, setFiltroEstado] = useState("");
  const cargar = useCallback(async (pag, estado) => {
    setCargando(true);
    setError(null);
    try {
      const params = new URLSearchParams({ pagina: String(pag), por_pagina: String(porPagina) });
      if (estado) params.set("estado", estado);
      const resp = await api.get(`/actividades?${params}`);
      setActividades(resp.datos);
      setTotal(resp.total);
    } catch (e) {
      setError(e instanceof Error ? e.message : "Error al cargar actividades");
    } finally {
      setCargando(false);
    }
  }, []);
  useEffect(() => {
    cargar(pagina, filtroEstado);
  }, [cargar, pagina, filtroEstado]);
  function handleFiltroEstado(e) {
    setFiltroEstado(e.target.value);
    setPagina(1);
  }
  const totalPaginas = Math.ceil(total / porPagina);
  const esLider = usuario?.rol === "admin" || usuario?.rol === "lider" || usuario?.rol === "colaborador";
  return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
    /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
      /* @__PURE__ */ jsxs("div", { children: [
        /* @__PURE__ */ jsx("h1", { className: "text-xl font-semibold text-gray-900", children: "Actividades" }),
        /* @__PURE__ */ jsxs("p", { className: "text-sm text-gray-500 mt-0.5", children: [
          total,
          " actividad",
          total !== 1 ? "es" : "",
          " registrada",
          total !== 1 ? "s" : ""
        ] })
      ] }),
      esLider && /* @__PURE__ */ jsx("a", { href: "/actividades/nueva", className: "btn-primary text-sm", children: "+ Nueva Actividad" })
    ] }),
    /* @__PURE__ */ jsx("div", { className: "flex gap-3 flex-wrap", children: /* @__PURE__ */ jsx(
      "select",
      {
        value: filtroEstado,
        onChange: handleFiltroEstado,
        className: "input text-sm py-1.5 w-48",
        children: OPCIONES_ESTADO.map((op) => /* @__PURE__ */ jsx("option", { value: op.value, children: op.label }, op.value))
      }
    ) }),
    error && /* @__PURE__ */ jsx("div", { className: "rounded-lg bg-red-50 border border-red-200 px-4 py-3 text-sm text-red-700", children: error }),
    /* @__PURE__ */ jsx("div", { className: "table-container", children: /* @__PURE__ */ jsxs("table", { className: "table", children: [
      /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
        /* @__PURE__ */ jsx("th", { children: "ID" }),
        /* @__PURE__ */ jsx("th", { children: "Actividad" }),
        /* @__PURE__ */ jsx("th", { children: "Área" }),
        /* @__PURE__ */ jsx("th", { className: "hidden sm:table-cell", children: "Tipo" }),
        /* @__PURE__ */ jsx("th", { children: "Riesgo" }),
        /* @__PURE__ */ jsx("th", { children: "Estado" }),
        /* @__PURE__ */ jsx("th", { className: "hidden lg:table-cell", children: "Fecha Inicio" }),
        /* @__PURE__ */ jsx("th", { className: "hidden lg:table-cell", children: "Fecha Término" }),
        /* @__PURE__ */ jsx("th", { children: "Acciones" })
      ] }) }),
      /* @__PURE__ */ jsx("tbody", { children: cargando ? /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { colSpan: 10, className: "text-center py-12 text-gray-400", children: "Cargando actividades…" }) }) : actividades.length === 0 ? /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsxs("td", { colSpan: 10, className: "text-center py-12 text-gray-400", children: [
        "No hay actividades para mostrar.",
        " ",
        esLider && /* @__PURE__ */ jsx("a", { href: "/actividades/nueva", className: "text-blue-600 hover:underline", children: "Crear la primera" })
      ] }) }) : actividades.map((act) => /* @__PURE__ */ jsxs("tr", { className: "hover:bg-gray-50 transition-colors", children: [
        /* @__PURE__ */ jsxs("td", { className: "font-mono text-sm text-gray-500 w-16", children: [
          "#",
          String(act.numero).padStart(3, "0")
        ] }),
        /* @__PURE__ */ jsx("td", { className: "font-medium text-gray-900 max-w-xs truncate", children: act.nombre }),
        /* @__PURE__ */ jsx("td", { className: "text-gray-600 max-w-[120px] truncate", children: act.area }),
        /* @__PURE__ */ jsx("td", { className: "hidden sm:table-cell", children: /* @__PURE__ */ jsx("span", { className: "badge badge-gray text-xs", children: act.tipo_trabajo }) }),
        /* @__PURE__ */ jsx("td", { children: badgeNivel(act.nivel_riesgo) }),
        /* @__PURE__ */ jsx("td", { children: badgeEstado(act.estado) }),
        /* @__PURE__ */ jsx("td", { className: "hidden lg:table-cell text-gray-500 text-sm", children: formatFecha(act.fecha_inicio) }),
        /* @__PURE__ */ jsx("td", { className: "hidden lg:table-cell text-gray-500 text-sm", children: formatFecha(act.fecha_termino) }),
        /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx(
          "a",
          {
            href: `/actividades/${act.id}`,
            className: "text-sm text-blue-600 hover:text-blue-800 transition-colors font-medium",
            children: "Ver"
          }
        ) })
      ] }, act.id)) })
    ] }) }),
    totalPaginas > 1 && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between text-sm text-gray-500", children: [
      /* @__PURE__ */ jsxs("span", { children: [
        "Mostrando ",
        (pagina - 1) * porPagina + 1,
        "–",
        Math.min(pagina * porPagina, total),
        " de ",
        total
      ] }),
      /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
        /* @__PURE__ */ jsx(
          "button",
          {
            onClick: () => setPagina((p) => Math.max(1, p - 1)),
            disabled: pagina === 1 || cargando,
            className: "btn-secondary text-xs disabled:opacity-40",
            children: "← Anterior"
          }
        ),
        /* @__PURE__ */ jsx(
          "button",
          {
            onClick: () => setPagina((p) => Math.min(totalPaginas, p + 1)),
            disabled: pagina === totalPaginas || cargando,
            className: "btn-secondary text-xs disabled:opacity-40",
            children: "Siguiente →"
          }
        )
      ] })
    ] })
  ] });
}

const $$Index = createComponent(($$result, $$props, $$slots) => {
  return renderTemplate`${renderComponent($$result, "AppLayout", $$AppLayout, { "titulo": "Actividades", "seccionActiva": "actividades" }, { "default": ($$result2) => renderTemplate` ${renderComponent($$result2, "TablaActividades", TablaActividades, { "client:load": true, "client:component-hydration": "load", "client:component-path": "C:/Proyectos IA/Sistema de Control y Gesti\xF3n Crew Consultores/frontend/src/components/actividades/TablaActividades", "client:component-export": "default" })} ` })}`;
}, "C:/Proyectos IA/Sistema de Control y Gesti\xF3n Crew Consultores/frontend/src/pages/actividades/index.astro", void 0);

const $$file = "C:/Proyectos IA/Sistema de Control y Gestión Crew Consultores/frontend/src/pages/actividades/index.astro";
const $$url = "/actividades";

const _page = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
  __proto__: null,
  default: $$Index,
  file: $$file,
  url: $$url
}, Symbol.toStringTag, { value: 'Module' }));

const page = () => _page;

export { page };
