| @@ -2124,15 +2124,6 @@ const stopRowToggle = (e: { stopPropagation: () => void }) => e.stopPropagation( · 2123 unmodified lines |
| 2124 | * only roster. Freezes to past tense when every member settles. Static dot, | 2124 | * only roster. Freezes to past tense when every member settles. Static dot, |
| 2125 | * no animation. | 2125 | * no animation. |
| 2126 | */ | 2126 | */ |
| 2127 | export const AGENT_SPAWN_CTA_CLASS_NAME = | | |
| 2128 | "@container/agent-spawn rounded-2xl border border-border/70 bg-secondary p-2 dark:border-transparent dark:bg-input/32"; | | |
| 2129 | | | |
| 2130 | export const AGENT_SPAWN_CTA_TRIGGER_CLASS_NAME = | | |
| 2131 | "group flex min-w-0 flex-1 items-center gap-1.5 overflow-hidden rounded-lg px-1 py-1.5 text-left transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"; | | |
| 2132 | | | |
| 2133 | export const resolveAgentSpawnActionLabel = (live: boolean) => | | |
| 2134 | live ? "Open agents" : "View agents"; | | |
| 2135 | | | |
| 2136 | const AgentSpawnCtaRow = memo(function AgentSpawnCtaRow(props: { workEntry: TimelineWorkEntry }) { | 2127 | const AgentSpawnCtaRow = memo(function AgentSpawnCtaRow(props: { workEntry: TimelineWorkEntry }) { |
| 2137 | const { workEntry } = props; | 2128 | const { workEntry } = props; |
| 2138 | const { agentPanelModel, onOpenAgents } = use(TimelineRowCtx); | 2129 | const { agentPanelModel, onOpenAgents } = use(TimelineRowCtx); |
| @@ -2197,12 +2188,16 @@ const AgentSpawnCtaRow = memo(function AgentSpawnCtaRow(props: { workEntry: Time · 58 unmodified lines |
| 2197 | ? `${failed} failed` | 2188 | ? `${failed} failed` |
| 2198 | : "✓ completed"; | 2189 | : "✓ completed"; |
| 2199 | | 2190 | |
| 2200 | const actionLabel = resolveAgentSpawnActionLabel(live); | 2191 | const actionLabel = live ? "Open agents" : "View agents"; |
| 2201 | | 2192 | |
| 2202 | return ( | 2193 | return ( |
| 2203 | <div className={AGENT_SPAWN_CTA_CLASS_NAME}> | 2194 | <div className="@container/agent-spawn rounded-2xl border border-border/70 bg-secondary p-2 dark:border-transparent dark:bg-input/32"> |
| 2204 | <div className="flex items-center justify-between gap-2 rounded-xl px-1"> | 2195 | <div className="flex items-center justify-between gap-2 rounded-xl px-1"> |
| 2205 | <button type="button" onClick={onOpenAgents} className={AGENT_SPAWN_CTA_TRIGGER_CLASS_NAME}> | 2196 | <button |
| | 2197 | type="button" |
| | 2198 | onClick={onOpenAgents} |
| | 2199 | className="group flex min-w-0 flex-1 items-center gap-1.5 overflow-hidden rounded-lg px-1 py-1.5 text-left transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring" |
| | 2200 | > |
| 2206 | <span className="flex min-w-0 shrink-0 items-center gap-1.5 whitespace-nowrap font-medium text-foreground text-xs leading-4"> | 2201 | <span className="flex min-w-0 shrink-0 items-center gap-1.5 whitespace-nowrap font-medium text-foreground text-xs leading-4"> |
| 2207 | <span aria-hidden className={cn("size-1.5 shrink-0 rounded-full", dotClass)} /> | 2202 | <span aria-hidden className={cn("size-1.5 shrink-0 rounded-full", dotClass)} /> |
| 2208 | <WorkEntryIconSvg name="bot" className="size-3.5 shrink-0 text-muted-foreground" /> | 2203 | <WorkEntryIconSvg name="bot" className="size-3.5 shrink-0 text-muted-foreground" /> |