diff --git a/package.json b/package.json index 76e6c193..178d72c6 100644 --- a/package.json +++ b/package.json @@ -35,9 +35,6 @@ "@agentcompany/adapter-codex-local": "workspace:*", "@agentcompany/adapter-gemini-local": "workspace:*", "@agentcompany/adapter-utils": "workspace:*", - "@fontsource-variable/inter": "^5.2.8", - "@fontsource-variable/jetbrains-mono": "5.2.8", - "@fontsource/instrument-serif": "^5.2.8", "@phosphor-icons/react": "2.1.10", "@tanstack/react-virtual": "^3.13.23", "clsx": "2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1b8fafe2..0ddae833 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,15 +20,6 @@ importers: '@agentcompany/adapter-utils': specifier: workspace:* version: link:packages/adapter-utils - '@fontsource-variable/inter': - specifier: ^5.2.8 - version: 5.2.8 - '@fontsource-variable/jetbrains-mono': - specifier: 5.2.8 - version: 5.2.8 - '@fontsource/instrument-serif': - specifier: ^5.2.8 - version: 5.2.8 '@phosphor-icons/react': specifier: 2.1.10 version: 2.1.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -705,15 +696,6 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@fontsource-variable/inter@5.2.8': - resolution: {integrity: sha512-kOfP2D+ykbcX/P3IFnokOhVRNoTozo5/JxhAIVYLpea/UBmCQ/YWPBfWIDuBImXX/15KH+eKh4xpEUyS2sQQGQ==} - - '@fontsource-variable/jetbrains-mono@5.2.8': - resolution: {integrity: sha512-WBA9elru6Jdp5df2mES55wuOO0WIrn3kpXnI4+W2ek5u3ZgLS9XS4gmIlcQhiZOWEKl95meYdvK7xI+ETLCq/Q==} - - '@fontsource/instrument-serif@5.2.8': - resolution: {integrity: sha512-s+bkz+syj2rO00Rmq9g0P+PwuLig33DR1xDR8pTWmovH1pUjwnncrFk++q9mmOex8fUQ7oW80gPpPDaw7V1MMw==} - '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -3399,12 +3381,6 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@fontsource-variable/inter@5.2.8': {} - - '@fontsource-variable/jetbrains-mono@5.2.8': {} - - '@fontsource/instrument-serif@5.2.8': {} - '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.7': diff --git a/src/renderer/lib/status-colors.ts b/src/renderer/lib/status-colors.ts new file mode 100644 index 00000000..beee561a --- /dev/null +++ b/src/renderer/lib/status-colors.ts @@ -0,0 +1,108 @@ +/** + * Canonical status & priority color definitions. + * + * Every component that renders a status indicator (StatusIcon, StatusBadge, + * agent status dots, etc.) should import from here so colors stay consistent. + */ + +// --------------------------------------------------------------------------- +// Issue status colors +// --------------------------------------------------------------------------- + +/** StatusIcon circle: text + border classes */ +export const issueStatusIcon: Record = { + backlog: "text-muted-foreground border-muted-foreground", + todo: "text-blue-600 border-blue-600 dark:text-blue-400 dark:border-blue-400", + in_progress: "text-yellow-600 border-yellow-600 dark:text-yellow-400 dark:border-yellow-400", + in_review: "text-violet-600 border-violet-600 dark:text-violet-400 dark:border-violet-400", + done: "text-green-600 border-green-600 dark:text-green-400 dark:border-green-400", + cancelled: "text-neutral-500 border-neutral-500", + blocked: "text-red-600 border-red-600 dark:text-red-400 dark:border-red-400", +}; + +export const issueStatusIconDefault = "text-muted-foreground border-muted-foreground"; + +/** Text-only color for issue statuses (dropdowns, labels) */ +export const issueStatusText: Record = { + backlog: "text-muted-foreground", + todo: "text-blue-600 dark:text-blue-400", + in_progress: "text-yellow-600 dark:text-yellow-400", + in_review: "text-violet-600 dark:text-violet-400", + done: "text-green-600 dark:text-green-400", + cancelled: "text-neutral-500", + blocked: "text-red-600 dark:text-red-400", +}; + +export const issueStatusTextDefault = "text-muted-foreground"; + +// --------------------------------------------------------------------------- +// Badge colors — used by StatusBadge for all entity types +// --------------------------------------------------------------------------- + +export const statusBadge: Record = { + // Agent statuses + active: "bg-green-100 text-green-700 dark:bg-green-900/50 dark:text-green-300", + running: "bg-cyan-100 text-cyan-700 dark:bg-cyan-900/50 dark:text-cyan-300", + paused: "bg-orange-100 text-orange-700 dark:bg-orange-900/50 dark:text-orange-300", + idle: "bg-yellow-100 text-yellow-700 dark:bg-yellow-900/50 dark:text-yellow-300", + archived: "bg-muted text-muted-foreground", + + // Goal statuses + planned: "bg-muted text-muted-foreground", + achieved: "bg-green-100 text-green-700 dark:bg-green-900/50 dark:text-green-300", + completed: "bg-green-100 text-green-700 dark:bg-green-900/50 dark:text-green-300", + + // Run statuses + failed: "bg-red-100 text-red-700 dark:bg-red-900/50 dark:text-red-300", + timed_out: "bg-orange-100 text-orange-700 dark:bg-orange-900/50 dark:text-orange-300", + succeeded: "bg-green-100 text-green-700 dark:bg-green-900/50 dark:text-green-300", + error: "bg-red-100 text-red-700 dark:bg-red-900/50 dark:text-red-300", + terminated: "bg-red-100 text-red-700 dark:bg-red-900/50 dark:text-red-300", + pending: "bg-yellow-100 text-yellow-700 dark:bg-yellow-900/50 dark:text-yellow-300", + + // Approval statuses + pending_approval: "bg-amber-100 text-amber-700 dark:bg-amber-900/50 dark:text-amber-300", + revision_requested: "bg-amber-100 text-amber-700 dark:bg-amber-900/50 dark:text-amber-300", + approved: "bg-green-100 text-green-700 dark:bg-green-900/50 dark:text-green-300", + rejected: "bg-red-100 text-red-700 dark:bg-red-900/50 dark:text-red-300", + + // Issue statuses — consistent hues with issueStatusIcon above + backlog: "bg-muted text-muted-foreground", + todo: "bg-blue-100 text-blue-700 dark:bg-blue-900/50 dark:text-blue-300", + in_progress: "bg-yellow-100 text-yellow-700 dark:bg-yellow-900/50 dark:text-yellow-300", + in_review: "bg-violet-100 text-violet-700 dark:bg-violet-900/50 dark:text-violet-300", + blocked: "bg-red-100 text-red-700 dark:bg-red-900/50 dark:text-red-300", + done: "bg-green-100 text-green-700 dark:bg-green-900/50 dark:text-green-300", + cancelled: "bg-muted text-muted-foreground", +}; + +export const statusBadgeDefault = "bg-muted text-muted-foreground"; + +// --------------------------------------------------------------------------- +// Agent status dot — solid background for small indicator dots +// --------------------------------------------------------------------------- + +export const agentStatusDot: Record = { + running: "bg-cyan-400 animate-pulse", + active: "bg-green-400", + paused: "bg-yellow-400", + idle: "bg-yellow-400", + pending_approval: "bg-amber-400", + error: "bg-red-400", + archived: "bg-neutral-400", +}; + +export const agentStatusDotDefault = "bg-neutral-400"; + +// --------------------------------------------------------------------------- +// Priority colors +// --------------------------------------------------------------------------- + +export const priorityColor: Record = { + critical: "text-red-600 dark:text-red-400", + high: "text-orange-600 dark:text-orange-400", + medium: "text-yellow-600 dark:text-yellow-400", + low: "text-blue-600 dark:text-blue-400", +}; + +export const priorityColorDefault = "text-yellow-600 dark:text-yellow-400";