|
1 | 1 | import React, { useEffect, useState } from 'react'; |
2 | 2 | import { |
| 3 | + ArrowLeft, |
3 | 4 | ArrowUpCircle, |
4 | 5 | Bug, |
5 | 6 | Check, |
@@ -164,13 +165,13 @@ const LOOP_EXAMPLES: Array<{ icon: LucideIcon; title: string; desc: string; prom |
164 | 165 | /** Hand-holding empty state: what a loop is, how it works, and ready-to-run examples. */ |
165 | 166 | function LoopsEmpty({ onStart }: { onStart: (request?: string) => void }): React.ReactElement { |
166 | 167 | return ( |
167 | | - <div className="mx-auto max-w-3xl pb-10"> |
| 168 | + <div className="pb-10"> |
168 | 169 | <div className="mb-3 inline-flex items-center gap-2 rounded-full border border-border bg-panel2 px-3 py-1 text-xs font-medium text-muted"> |
169 | 170 | <Repeat className="h-3.5 w-3.5 text-accent" strokeWidth={2.5} /> |
170 | 171 | Autonomous loops |
171 | 172 | </div> |
172 | 173 | <h2 className="text-2xl font-semibold tracking-tight">Hand off a goal — CodeRouter works until it’s actually done.</h2> |
173 | | - <p className="mt-3 text-sm leading-relaxed text-muted"> |
| 174 | + <p className="mt-3 max-w-3xl text-sm leading-relaxed text-muted"> |
174 | 175 | A loop is an agent on autopilot <span className="text-text">with a finish line</span>. You describe the outcome you |
175 | 176 | want — “make the tests pass”, “get coverage to 80%”, “clear all the type errors”. CodeRouter turns it into a plan |
176 | 177 | you approve, then repeats <span className="text-text">edit → run your checks → fix what failed</span> over and |
@@ -292,9 +293,10 @@ function NewLoop({ |
292 | 293 | }; |
293 | 294 |
|
294 | 295 | return ( |
295 | | - <div className="mx-auto max-w-3xl"> |
296 | | - <button className="mb-4 text-sm text-muted hover:text-text" onClick={onCancel}> |
297 | | - ← back |
| 296 | + <div> |
| 297 | + <button className="mb-4 flex items-center gap-1.5 text-sm text-muted transition-colors hover:text-text" onClick={onCancel}> |
| 298 | + <ArrowLeft className="h-4 w-4" strokeWidth={2} /> |
| 299 | + Back |
298 | 300 | </button> |
299 | 301 |
|
300 | 302 | <Section title="What do you want done?"> |
@@ -495,9 +497,10 @@ function LoopDetail({ cwd, id, onBack }: { cwd: string; id: string; onBack: () = |
495 | 497 | const running = loop.status === 'running' || loop.status === 'queued'; |
496 | 498 |
|
497 | 499 | return ( |
498 | | - <div className="mx-auto w-full max-w-5xl"> |
499 | | - <button className="mb-4 text-sm text-muted hover:text-text" onClick={onBack}> |
500 | | - ← all loops |
| 500 | + <div> |
| 501 | + <button className="mb-4 flex items-center gap-1.5 text-sm text-muted transition-colors hover:text-text" onClick={onBack}> |
| 502 | + <ArrowLeft className="h-4 w-4" strokeWidth={2} /> |
| 503 | + All loops |
501 | 504 | </button> |
502 | 505 |
|
503 | 506 | <div className="mb-4 flex items-start justify-between gap-4"> |
|
0 commit comments