diff --git a/src/components/issues/IssueList.tsx b/src/components/issues/IssueList.tsx
index a500062..4f69eec 100644
--- a/src/components/issues/IssueList.tsx
+++ b/src/components/issues/IssueList.tsx
@@ -1,8 +1,7 @@
"use client";
-import { STATUS_META, STATUS_ORDER } from "@/lib/meta";
import type { Issue } from "@/lib/types";
-import { useReferenceLookups } from "@/lib/store";
+import { useReferenceLookups, useWorkflowStates } from "@/lib/store";
import { EmptyState } from "@/components/ui/EmptyState";
import { StatusIcon } from "@/components/ui/Icons";
import { IssueRow } from "./IssueRow";
@@ -31,6 +30,7 @@ export function IssueList({
emptyDescription = "Crea un nuevo issue para empezar.",
}: IssueListProps) {
const { projectById, userById, labelById } = useReferenceLookups();
+ const { meta, order } = useWorkflowStates();
if (loading) {
return ;
@@ -81,15 +81,16 @@ export function IssueList({
if (groupBy === "status") {
return (
- {STATUS_ORDER.map((status) => {
+ {order.map((status) => {
const groupIssues = issues.filter((issue) => issue.status === status);
if (groupIssues.length === 0) return null;
+ const label = meta[status]?.label ?? status;
return (
{header(
,
- STATUS_META[status].label,
+ label,
groupIssues.length,
)}
{table(groupIssues)}
diff --git a/src/components/ui/Icons.tsx b/src/components/ui/Icons.tsx
index d8b510d..0b32ce4 100644
--- a/src/components/ui/Icons.tsx
+++ b/src/components/ui/Icons.tsx
@@ -1,5 +1,8 @@
-import { PRIORITY_META, STATUS_META, TYPE_META } from "@/lib/meta";
+"use client";
+
+import { PRIORITY_META, TYPE_META, UNKNOWN_STATUS_META } from "@/lib/meta";
import type { IssuePriority, IssueStatus, IssueType } from "@/lib/types";
+import { useWorkflowStates } from "@/lib/store";
/**
* Iconografía con boxicons, igual que sam-portal y SistemaCalidad.
@@ -11,15 +14,20 @@ interface StatusIconProps {
size?: number;
}
-/** Icono de estado del issue. */
+/**
+ * Icono de estado del issue.
+ * Resuelve desde los estados configurados; si la clave no existe
+ * (estado desactivado tras asignarlo), usa el icono neutro.
+ */
export function StatusIcon({ status, size = 16 }: StatusIconProps) {
- const meta = STATUS_META[status];
+ const { meta } = useWorkflowStates();
+ const m = meta[status] ?? UNKNOWN_STATUS_META;
return (
);
}
diff --git a/src/lib/api/client.ts b/src/lib/api/client.ts
index 1374e7a..204b783 100644
--- a/src/lib/api/client.ts
+++ b/src/lib/api/client.ts
@@ -8,6 +8,8 @@ import type {
Label,
Project,
User,
+ WorkflowState,
+ WorkflowStateInput,
} from "@/lib/types";
/**
@@ -27,6 +29,11 @@ export interface ProyectosApi {
listLabels(): Promise