summaryrefslogtreecommitdiff
path: root/makima/frontend/src/components/directives/DirectiveList.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'makima/frontend/src/components/directives/DirectiveList.tsx')
-rw-r--r--makima/frontend/src/components/directives/DirectiveList.tsx143
1 files changed, 0 insertions, 143 deletions
diff --git a/makima/frontend/src/components/directives/DirectiveList.tsx b/makima/frontend/src/components/directives/DirectiveList.tsx
deleted file mode 100644
index 5afa36e..0000000
--- a/makima/frontend/src/components/directives/DirectiveList.tsx
+++ /dev/null
@@ -1,143 +0,0 @@
-import { useState } from "react";
-import type { DirectiveSummary, DirectiveStatus } from "../../lib/api";
-
-interface DirectiveListProps {
- directives: DirectiveSummary[];
- loading: boolean;
- onSelect: (id: string) => void;
- onCreate: () => void;
- onDelete?: (directive: DirectiveSummary) => void;
- selectedId?: string;
-}
-
-const statusColors: Record<DirectiveStatus, string> = {
- draft: "text-[#888]",
- planning: "text-yellow-400",
- active: "text-green-400",
- paused: "text-orange-400",
- completed: "text-blue-400",
- archived: "text-[#555]",
- failed: "text-red-400",
-};
-
-export function DirectiveList({
- directives,
- loading,
- onSelect,
- onCreate,
- selectedId,
-}: DirectiveListProps) {
- const [filter, setFilter] = useState<DirectiveStatus | "all">("all");
-
- const filteredDirectives =
- filter === "all"
- ? directives
- : directives.filter((d) => d.status === filter);
-
- if (loading) {
- return (
- <div className="panel h-full flex items-center justify-center">
- <div className="font-mono text-[#9bc3ff] text-sm">Loading...</div>
- </div>
- );
- }
-
- return (
- <div className="panel h-full flex flex-col">
- {/* Header */}
- <div className="p-4 border-b border-dashed border-[rgba(117,170,252,0.35)]">
- <div className="flex items-center justify-between mb-3">
- <h2 className="font-mono text-sm text-[#75aafc] uppercase tracking-wider">
- Directives
- </h2>
- <button
- onClick={onCreate}
- className="px-3 py-1.5 font-mono text-xs text-[#dbe7ff] bg-[#0f3c78] border border-[#3f6fb3] hover:bg-[#153667] transition-colors uppercase"
- >
- + New
- </button>
- </div>
-
- {/* Filter tabs */}
- <div className="flex gap-1 flex-wrap">
- {(["all", "draft", "planning", "active", "paused", "completed", "failed"] as const).map(
- (status) => (
- <button
- key={status}
- onClick={() => setFilter(status)}
- className={`
- px-2 py-1 font-mono text-[10px] uppercase tracking-wider transition-colors
- ${
- filter === status
- ? "bg-[rgba(117,170,252,0.1)] text-[#9bc3ff] border border-[rgba(117,170,252,0.3)]"
- : "text-[#555] hover:text-[#75aafc]"
- }
- `}
- >
- {status}
- </button>
- )
- )}
- </div>
- </div>
-
- {/* List */}
- <div className="flex-1 overflow-y-auto">
- {filteredDirectives.length === 0 ? (
- <div className="p-4 text-center">
- <p className="font-mono text-sm text-[#555]">
- {filter === "all"
- ? "No directives yet"
- : `No ${filter} directives`}
- </p>
- </div>
- ) : (
- <div className="divide-y divide-[rgba(117,170,252,0.15)]">
- {filteredDirectives.map((directive) => (
- <button
- key={directive.id}
- onClick={() => onSelect(directive.id)}
- className={`
- w-full text-left p-4 transition-colors
- ${
- selectedId === directive.id
- ? "bg-[rgba(117,170,252,0.1)]"
- : "hover:bg-[rgba(117,170,252,0.05)]"
- }
- `}
- >
- <div className="flex items-start justify-between gap-2 mb-2">
- <h3 className="font-mono text-sm text-[#dbe7ff] truncate">
- {directive.title}
- </h3>
- <span
- className={`text-[10px] font-mono uppercase shrink-0 ${
- statusColors[directive.status] || "text-[#888]"
- }`}
- >
- {directive.status}
- </span>
- </div>
-
- {directive.goal && (
- <p className="font-mono text-xs text-[#555] mb-2 line-clamp-2">
- {directive.goal}
- </p>
- )}
-
- <div className="flex items-center gap-3 text-[10px] font-mono text-[#555]">
- {directive.chainCount > 0 && (
- <span>{directive.chainCount} chains</span>
- )}
- {directive.stepCount > 0 && (
- <span>{directive.stepCount} steps</span>
- )}
- </div>
- </button>
- ))}
- </div>
- )}
- </div>
- </div>
- );
-}