diff --git a/frontend/src/app/components/DynamicIsland.tsx b/frontend/src/app/components/DynamicIsland.tsx index 21155c48..76149127 100644 --- a/frontend/src/app/components/DynamicIsland.tsx +++ b/frontend/src/app/components/DynamicIsland.tsx @@ -409,9 +409,18 @@ const DynamicIsland: React.FC = () => { return parts.join(' ยท ') || 'Agents'; }, [activeAgents.length, finishedAgents.length]); + const glowKeyframes = useMemo(() => ` + @keyframes approvalGlow { + 0%, 100% { box-shadow: 0 0 6px 1px ${c.status.warning}30; } + 50% { box-shadow: 0 0 12px 3px ${c.status.warning}60; } + } + `, [c.status.warning]); + // ---- Render ---- return ( + <> + {islandState === 'compact-actionable' && } { transition={SPRING_LAYOUT} style={{ background: c.bg.secondary, - border: `0.5px solid ${c.border.medium}`, + border: islandState === 'compact-actionable' + ? `1px solid ${c.status.warning}` + : `0.5px solid ${c.border.medium}`, borderRadius: islandBorderRadius, - boxShadow: shadow, + boxShadow: islandState === 'compact-actionable' + ? `0 0 8px 1px ${c.status.warning}40` + : shadow, overflow: 'hidden', + animation: islandState === 'compact-actionable' + ? 'approvalGlow 2.5s ease-in-out infinite' + : 'none', }} > @@ -487,6 +503,7 @@ const DynamicIsland: React.FC = () => { + ); };