diff --git a/apps/web/src/app/[locale]/openclaw/live-ops-space/page.tsx b/apps/web/src/app/[locale]/openclaw/live-ops-space/page.tsx index b6f275286..3bf13d898 100644 --- a/apps/web/src/app/[locale]/openclaw/live-ops-space/page.tsx +++ b/apps/web/src/app/[locale]/openclaw/live-ops-space/page.tsx @@ -110,11 +110,11 @@ function stateLabel(t: ReturnType, state: string): strin } function stateClass(state: string): string { - if (state === "working") return "border-[#4a90d9] bg-[#eef5ff] text-[#1f5b9b]"; - if (state === "verified") return "border-[#8fc29a] bg-[#f0faf2] text-[#17602a]"; - if (state === "blocked") return "border-[#e2a29b] bg-[#fff0ef] text-[#9f2f25]"; - if (state === "waiting") return "border-[#d9b36f] bg-[#fff7e8] text-[#8a5a08]"; - return "border-[#d8d3c7] bg-white text-[#5f5b52]"; + if (state === "working") return "border-[#4a90d9] bg-white/70 backdrop-blur-[20px] text-[#4a90d9] shadow-[0_0_15px_rgba(74,144,217,0.4)]"; + if (state === "verified") return "border-[#8fc29a] bg-white/70 backdrop-blur-[20px] text-[#17602a]"; + if (state === "blocked") return "border-[#e2a29b] bg-white/70 backdrop-blur-[20px] text-[#9f2f25]"; + if (state === "waiting") return "border-[#d9b36f] bg-white/70 backdrop-blur-[20px] text-[#8a5a08]"; + return "border-[#d8d3c7] bg-white/70 backdrop-blur-[20px] text-[#5f5b52]"; } function stateFromWorkItemStatus(status: string): string { @@ -289,13 +289,13 @@ export default function OpenClawLiveOpsSpacePage({
- + - + {zone.label}
@@ -307,7 +307,7 @@ export default function OpenClawLiveOpsSpacePage({ key={item.work_item_id} data-testid="openclaw-work-token" className={cn( - "openclaw-work-token absolute h-8 w-20 -translate-x-1/2 -translate-y-1/2 border px-2 py-1 text-[10px] font-semibold shadow-[0_8px_20px_rgba(54,72,88,0.16)]", + "openclaw-work-token absolute h-8 w-24 -translate-x-1/2 -translate-y-1/2 rounded-full border px-3 py-1 text-[10px] font-semibold shadow-[0_8px_20px_rgba(54,72,88,0.12)] flex items-center justify-center", stateClass(stateFromWorkItemStatus(item.status)), )} style={{ @@ -316,7 +316,7 @@ export default function OpenClawLiveOpsSpacePage({ animationDelay: `${index * 0.35}s`, }} > - {item.work_item_id} + {item.work_item_id} ))} @@ -324,34 +324,39 @@ export default function OpenClawLiveOpsSpacePage({
-
+ {agent.state === "working" && ( +
)} - > - -
-
+
{agent.label}
@@ -553,6 +558,32 @@ export default function OpenClawLiveOpsSpacePage({ opacity: 0; } } + @keyframes openclaw-ripple { + 0% { + transform: scale(0.8); + opacity: 1; + } + 100% { + transform: scale(2.4); + opacity: 0; + } + } + .openclaw-working-ripple { + animation: openclaw-ripple 2s cubic-bezier(0, 0, 0.2, 1) infinite; + } + @keyframes openclaw-bounce-slow { + 0%, 100% { + transform: translateY(-8%); + animation-timing-function: cubic-bezier(0.8, 0, 1, 1); + } + 50% { + transform: translateY(0); + animation-timing-function: cubic-bezier(0, 0, 0.2, 1); + } + } + .animate-bounce-slow { + animation: openclaw-bounce-slow 2s infinite; + } .openclaw-flow-packet { animation: openclaw-flow-packet 5.8s ease-in-out infinite; will-change: transform, opacity;