diff --git a/apps/web/src/components/Sidebar.tsx b/apps/web/src/components/Sidebar.tsx
index 30ff310eb8..239520a3d7 100644
--- a/apps/web/src/components/Sidebar.tsx
+++ b/apps/web/src/components/Sidebar.tsx
@@ -437,7 +437,7 @@ function SidebarThreadTooltip({
) : null}
{thread.session?.lastError ? (
-
+
@@ -562,8 +562,8 @@ function SortableThreadRow(props: {
// Unsent work shares one look: the new-thread draft rows and thread rows
// with unsent composer text both use this tint and pen so they read alike.
-const draftSurfaceClassName = "bg-amber-400/[0.04] hover:bg-amber-400/[0.08]";
-const draftPenClassName = "size-3 shrink-0 text-amber-600 dark:text-amber-300/80";
+const draftSurfaceClassName = "bg-warning/4 hover:bg-warning/8";
+const draftPenClassName = "size-3 shrink-0 text-warning-foreground";
// Structural list items — the section headers and the
// empty-section placeholders — take part in the sortable list so they shift
@@ -706,7 +706,7 @@ function SidebarSectionHeader(props: {
const className = cn(
"flex h-full w-full items-center gap-2 px-2 text-left text-xs font-medium",
compact && "justify-center px-0",
- snoozed ? "text-blue-600 dark:text-blue-400" : "text-sidebar-muted-foreground/60",
+ snoozed ? "text-info-foreground" : "text-sidebar-muted-foreground/60",
props.dragging && "text-sidebar-foreground/80",
props.isDropTarget && "text-primary",
);
@@ -725,7 +725,7 @@ function SidebarSectionHeader(props: {
className={cn(
"h-px min-w-2 flex-1",
compact && "hidden",
- snoozed ? "bg-blue-500/20 dark:bg-blue-400/15" : "bg-sidebar-border/60",
+ snoozed ? "bg-info/20" : "bg-sidebar-border/60",
props.dragging && "bg-sidebar-foreground/25",
props.isDropTarget && "bg-primary/50",
)}
@@ -1266,7 +1266,7 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: {
? {
label: "Approval",
icon: "approval" as const,
- className: "text-amber-700 dark:text-amber-300",
+ className: "text-warning-foreground",
}
: status === "input"
? {
@@ -1278,19 +1278,19 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: {
? {
label: "Failed",
icon: "failed" as const,
- className: "text-red-700 dark:text-red-300",
+ className: "text-destructive-foreground",
}
: isWoke
? {
label: "Woke",
icon: "woke" as const,
- className: "text-amber-700 dark:text-amber-300",
+ className: "text-warning-foreground",
}
: isUnread
? {
label: "Done",
icon: "done" as const,
- className: "text-emerald-700 dark:text-emerald-300",
+ className: "text-success-foreground",
}
: null);
const isWokeStatus = topStatus?.icon === "woke";
@@ -1924,7 +1924,7 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: {
{variantAction === "unsnooze" && props.snoozeWakeLabelText !== null ? (
// Snoozed rows show when they come BACK, not when they were
// last touched — the return ticket is the row's whole story.
-
+
{props.snoozeWakeLabelText}
) : isWoke ? (
@@ -1937,7 +1937,7 @@ const SidebarThreadRow = memo(function SidebarThreadRow(props: {
type="button"
aria-label="Dismiss Woke notification"
onClick={handleAcknowledgeWokeClick}
- className="inline-flex cursor-pointer items-center gap-1 rounded-sm text-xs font-medium text-warning outline-none hover:underline focus-visible:ring-2 focus-visible:ring-ring"
+ className="inline-flex cursor-pointer items-center gap-1 rounded-sm text-xs font-medium text-warning-foreground outline-none hover:underline focus-visible:ring-2 focus-visible:ring-ring"
>
Woke
diff --git a/apps/web/src/components/ThreadNotificationCoordinator.tsx b/apps/web/src/components/ThreadNotificationCoordinator.tsx
index 743d8f40f3..f2d6b75c6f 100644
--- a/apps/web/src/components/ThreadNotificationCoordinator.tsx
+++ b/apps/web/src/components/ThreadNotificationCoordinator.tsx
@@ -177,22 +177,13 @@ function EnvironmentNotifications({
hideCopyButton: true,
leadingIcon:
state.phase === "completed" ? (
-
+
) : state.phase === "waiting_for_approval" ? (
-
+
) : state.phase === "failed" ? (
-
+
) : (
-
+
),
},
actionProps: {