"use client"; import { IconTrash, IconRefresh, IconPlayerPlay, IconPlayerPause, IconRestore, } from "@tabler/icons-react"; import { Button } from "@kandev/ui/button"; import { Badge } from "@kandev/ui/badge"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@kandev/ui/table"; import { Tooltip, TooltipContent, TooltipTrigger } from "@kandev/ui/tooltip"; import { useToast } from "@/components/toast-provider"; import { useAppStore } from "@/components/state-provider"; import type { IssueWatch } from "@/lib/types/github"; type IssueWatchTableProps = { watches: IssueWatch[]; // showWorkspace renders a Workspace column when the table aggregates rows // from every workspace (install-wide settings page). showWorkspace?: boolean; onEdit: (watch: IssueWatch) => void; onDelete: (id: string) => void; onTrigger: (id: string) => void; onReset: (id: string) => void; onToggleEnabled: (watch: IssueWatch) => void; }; function formatLastPolled(dateStr: string | null): string { if (!dateStr) return "Never"; const diff = Date.now() - new Date(dateStr).getTime(); const minutes = Math.floor(diff / 60000); if (minutes < 1) return "Just now"; if (minutes < 60) return `${minutes}m ago`; const hours = Math.floor(minutes / 60); if (hours < 24) return `${hours}h ago`; return `${Math.floor(hours / 24)}d ago`; } function formatRepoNames(watch: IssueWatch): string { if (watch.repos.length === 0) return "All repositories"; return watch.repos .map((r) => (r.name === "" ? `${r.owner}/*` : `${r.owner}/${r.name}`)) .join(", "); } function formatLabels(watch: IssueWatch): string { if (!watch.labels || watch.labels.length === 0) return ""; return watch.labels.join(", "); } type WatchActionsProps = { watch: IssueWatch; onToggleEnabled: (watch: IssueWatch) => void; onTrigger: (id: string) => void; onReset: (id: string) => void; onDelete: (id: string) => void; }; function WatchActions({ watch, onToggleEnabled, onTrigger, onReset, onDelete }: WatchActionsProps) { const { toast } = useToast(); return (
No issue watches configured. Create one to start monitoring GitHub issues.
); } return (