authorgravatar for maria@kuuro.netmaria <maria@kuuro.net> 2026-09-21 02:10:36-03:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-21 02:10:36-03:00
log30e3649c3281fe88b3d8d125293f1bb58132a3c2
treefcd8daac907e1074ef3772733bdd58a8e4d4fbdf
parent790be6d755026d61bd13a970dd77176c12ca0425
signature Signed by PGP key B5690EEEBB952194

fix(web): match thread notification icons to sidebar status (#12806)


1 files changed, 28 insertions(+), 1 deletions(-)

apps/web/src/components/ThreadNotificationCoordinator.tsx+28-1
......@@ -2,6 +2,12 @@ import { useAtomValue } from "@effect/atom-react";
22import { useNavigate, useParams } from "@tanstack/react-router";
33import type { EnvironmentId, ThreadId } from "@t3tools/contracts";
44import * as Option from "effect/Option";
5import {
6 CircleAlertIcon,
7 CircleCheckIcon,
8 MessageCircleQuestionIcon,
9 ShieldQuestionIcon,
10} from "lucide-react";
511import { useCallback, useEffect, useRef } from "react";
612
713import { getClientSettings, useClientSettings } from "../hooks/useSettings";
......@@ -154,7 +160,28 @@ function EnvironmentNotifications({
154160 type: kind === "completion" ? "success" : status === "failed" ? "error" : "warning",
155161 title,
156162 description: thread.title,
157 data: { hideCopyButton: true },
163 data: {
164 hideCopyButton: true,
165 leadingIcon:
166 kind === "completion" ? (
167 <CircleCheckIcon
168 aria-hidden
169 className="size-4 text-emerald-700 dark:text-emerald-300"
170 />
171 ) : status === "approval" ? (
172 <ShieldQuestionIcon
173 aria-hidden
174 className="size-4 text-amber-700 dark:text-amber-300"
175 />
176 ) : status === "failed" ? (
177 <CircleAlertIcon aria-hidden className="size-4 text-red-700 dark:text-red-300" />
178 ) : (
179 <MessageCircleQuestionIcon
180 aria-hidden
181 className="size-4 text-indigo-600 dark:text-indigo-300"
182 />
183 ),
184 },
158185 actionProps: {
159186 children: "Open thread",
160187 onClick: () => {