From 4e04863e32a23a5252485e3143df803ffbdf19a7 Mon Sep 17 00:00:00 2001 From: Lukas May Date: Wed, 4 Mar 2026 07:52:22 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20Polish=20pass=20=E2=80=94=20display=20f?= =?UTF-8?q?ont=20on=20headings,=20empty=20states,=20card=20interactivity,?= =?UTF-8?q?=20panel=20dividers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Apply font-display (Plus Jakarta Sans) to all page h1/h2 headings - Wire interactive Card prop on initiative cards and agent cards - Redesign empty states with icons: agents (Users), inbox (Inbox/MessageSquare), right panels (Terminal) - Unify initiative detail tabs to border-b-2 indicator style matching settings - Strengthen two-panel dividers on agents and inbox pages (lg:border-r) - Clean up filter pill badges — replace nested Badge with simpler span - Increase PhaseAccordion spacing for better readability - Fix error state styling in settings to use status tokens - Increase settings/projects section spacing --- apps/web/src/components/InboxList.tsx | 26 +++++++------- apps/web/src/components/InitiativeCard.tsx | 3 +- apps/web/src/components/PhaseAccordion.tsx | 28 ++++++++------- apps/web/src/routes/agents.tsx | 41 +++++++++++----------- apps/web/src/routes/inbox.tsx | 12 ++++--- apps/web/src/routes/initiatives/$id.tsx | 12 ++++--- apps/web/src/routes/initiatives/index.tsx | 2 +- 7 files changed, 64 insertions(+), 60 deletions(-) diff --git a/apps/web/src/components/InboxList.tsx b/apps/web/src/components/InboxList.tsx index b1e186a..097a1a5 100644 --- a/apps/web/src/components/InboxList.tsx +++ b/apps/web/src/components/InboxList.tsx @@ -1,9 +1,8 @@ import { useMemo, useState } from "react"; -import { RefreshCw } from "lucide-react"; +import { Inbox, RefreshCw } from "lucide-react"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { MessageCard } from "@/components/MessageCard"; -import { cn } from "@/lib/utils"; interface Agent { id: string; @@ -119,11 +118,11 @@ export function InboxList({ ]; return ( -
+
{/* Header */}
-

Agent Inbox

+

Agent Inbox

{joined.length}
))} @@ -235,12 +231,14 @@ function AgentsPage() { className="grid grid-cols-1 gap-4 lg:grid-cols-[320px_1fr] min-h-0 flex-1" > {/* Left: Agent List */} -
+
{filtered.length === 0 ? ( -
-

- No agents match this filter -

+
+ +
+

No agents match this filter

+

Try selecting a different filter above

+
) : ( filtered.map((agent, i) => ( @@ -255,10 +253,9 @@ function AgentsPage() { }} > setSelectedAgentId(agent.id)} >
@@ -321,10 +318,12 @@ function AgentsPage() { onStop={handleStop} /> ) : ( -
-

- Select an agent to view output -

+
+ +
+

No agent selected

+

Select an agent from the list to view output

+
)}
diff --git a/apps/web/src/routes/inbox.tsx b/apps/web/src/routes/inbox.tsx index d7cc2cb..50e6399 100644 --- a/apps/web/src/routes/inbox.tsx +++ b/apps/web/src/routes/inbox.tsx @@ -1,7 +1,7 @@ import { useState } from "react"; import { createFileRoute } from "@tanstack/react-router"; import { motion } from "motion/react"; -import { AlertCircle } from "lucide-react"; +import { AlertCircle, MessageSquare } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; import { Skeleton } from "@/components/Skeleton"; @@ -255,10 +255,12 @@ function InboxPage() { {/* Empty detail panel placeholder */} {!selectedAgent && ( -
-

- Select an agent to view details -

+
+ +
+

No message selected

+

Select an agent from the inbox to view details

+
)}
diff --git a/apps/web/src/routes/initiatives/$id.tsx b/apps/web/src/routes/initiatives/$id.tsx index e8944ae..350634b 100644 --- a/apps/web/src/routes/initiatives/$id.tsx +++ b/apps/web/src/routes/initiatives/$id.tsx @@ -4,6 +4,7 @@ import { AlertCircle } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Skeleton } from "@/components/Skeleton"; import { trpc } from "@/lib/trpc"; +import { cn } from "@/lib/utils"; import { InitiativeHeader } from "@/components/InitiativeHeader"; import { ContentTab } from "@/components/editor/ContentTab"; import { ExecutionTab } from "@/components/ExecutionTab"; @@ -114,7 +115,7 @@ function InitiativeDetailPage() { /> {/* Tab bar */} - - {tab} + {tab.charAt(0).toUpperCase() + tab.slice(1)} ))} - + {/* Tab content */} {/* Page header */}
-

Initiatives

+

Initiatives