{
  "$schema": "https://pi-tui.ratstack.sh/schema/pattern.schema.json",
  "aka": [
    "Field focus"
  ],
  "animated": false,
  "apis": [
    {
      "name": "Focusable",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/tui.md#handle-keyboard-input-and-focus"
    },
    {
      "name": "CURSOR_MARKER",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/tui.md#handle-keyboard-input-and-focus"
    },
    {
      "name": "Input",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/tui.md#compose-built-in-components"
    },
    {
      "name": "matchesKey",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/tui.md#handle-keyboard-input-and-focus"
    },
    {
      "name": "SelectList",
      "url": null
    }
  ],
  "applicability": [
    "Use this when a picker combines a target and an optional text prompt."
  ],
  "category": "keys",
  "categoryLabel": "Keys and focus",
  "consequences": [
    "List movement and task typing remain separate interactions.",
    "The wrapper must propagate child focus for correct cursor positioning."
  ],
  "family": "behavioral",
  "familyLabel": "Behavioral",
  "id": "field-baton",
  "implementation": [
    "Forward focused state to the child text input for cursor positioning.",
    "Keep list navigation separate from task text editing."
  ],
  "intent": "Switch keyboard focus between a choice list and an editable task field.",
  "jsonUrl": "https://pi-tui.ratstack.sh/patterns/field-baton.json",
  "kind": "component",
  "knownUses": [
    {
      "example": "handover-multifocus-async-list",
      "moreRefs": 0,
      "refs": [
        {
          "file": "ui/handover-picker.ts",
          "lines": "61-180",
          "sha": "a5fad4df",
          "url": "https://github.com/nicobailon/pi-intercom/blob/a5fad4df2a9fe4909bf4d9b06263c8316976b57d/ui/handover-picker.ts#L61-L180"
        }
      ],
      "repo": "pi-intercom",
      "repoUrl": "https://github.com/nicobailon/pi-intercom",
      "title": "Separate task-field focus and retain remote selection through async refresh"
    }
  ],
  "linkedFrom": [
    {
      "how": "separates target and task input",
      "id": "identity-anchor",
      "jsonUrl": "https://pi-tui.ratstack.sh/patterns/identity-anchor.json",
      "mdUrl": "https://pi-tui.ratstack.sh/patterns/identity-anchor.md",
      "name": "Identity Anchor",
      "url": "https://pi-tui.ratstack.sh/patterns/identity-anchor/"
    }
  ],
  "links": {
    "agentGuide": "https://pi-tui.ratstack.sh/llms.txt",
    "index": "https://pi-tui.ratstack.sh/patterns.md",
    "skill": "https://pi-tui.ratstack.sh/skills/build-pi-tui-component.md"
  },
  "mdUrl": "https://pi-tui.ratstack.sh/patterns/field-baton.md",
  "motivation": "Intercom's handover picker combines target navigation with an optional editable task field.",
  "name": "Field Baton",
  "participants": [
    {
      "name": "Focusable",
      "role": "Carries focused state to the cursor-owning component.",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/tui.md#handle-keyboard-input-and-focus"
    },
    {
      "name": "CURSOR_MARKER",
      "role": "Marks the hardware cursor position for IME placement.",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/tui.md#handle-keyboard-input-and-focus"
    },
    {
      "name": "Input",
      "role": "Owns single-line editing and cursor state.",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/tui.md#compose-built-in-components"
    },
    {
      "name": "matchesKey",
      "role": "Recognizes explicit terminal key combinations.",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/tui.md#handle-keyboard-input-and-focus"
    },
    {
      "name": "Focus selector",
      "role": "Routes list keys and task typing to their respective owners.",
      "url": null
    }
  ],
  "pi": "1.0.3",
  "related": [
    {
      "how": "keeps target identity through refresh",
      "id": "identity-anchor",
      "jsonUrl": "https://pi-tui.ratstack.sh/patterns/identity-anchor.json",
      "mdUrl": "https://pi-tui.ratstack.sh/patterns/identity-anchor.md",
      "name": "Identity Anchor",
      "url": "https://pi-tui.ratstack.sh/patterns/identity-anchor/"
    }
  ],
  "sampleCode": {
    "code": "// Field Baton: pass focus between a target list and the draft-owning Input.\nimport { Input, SelectList, matchesKey, truncateToWidth, type Component, type Focusable } from \"@earendil-works/pi-tui\";\nimport type { PatternStory } from \"../../../src/pattern.ts\";\n\nexport const story: PatternStory = {\n  id: \"field-baton\",\n  title: \"Field Baton\",\n  kind: \"component\",\n  apis: [\"Focusable\", \"Input\", \"SelectList\", \"matchesKey\", \"CURSOR_MARKER\"],\n  rows: 10,\n  states: [\n    { id: \"list\", label: \"List owns keys\" },\n    { id: \"task\", label: \"Task owns keys\", steps: [\n      { type: \"keys\", data: \"\\t\" }, { type: \"text\", text: \"Review the parser tests\" },\n    ] },\n    { id: \"returned\", label: \"List focus returns\", steps: [\n      { type: \"keys\", data: \"\\t\" }, { type: \"keys\", data: \"\\x1b[B\" },\n    ] },\n  ],\n  setup({ theme, tui }) {\n    const task = new Input({ prompt: \"> \", placeholder: \"Optional handover task\" });\n    const targets = new SelectList([\n      { value: \"parser\", label: \"Parser session\" },\n      { value: \"tests\", label: \"Test session\" },\n      { value: \"review\", label: \"Review session\" },\n    ], 3, {\n      selectedPrefix: text => theme.fg(\"accent\", text),\n      selectedText: text => theme.fg(\"accent\", text),\n      description: text => theme.fg(\"muted\", text),\n      scrollInfo: text => theme.fg(\"dim\", text),\n      noMatch: text => theme.fg(\"warning\", text),\n    });\n    class FocusSelector implements Component, Focusable {\n      private active: \"list\" | \"task\" = \"list\";\n      private hasFocus = false;\n      get focused() { return this.hasFocus; }\n      set focused(value: boolean) {\n        this.hasFocus = value;\n        task.focused = value && this.active === \"task\";\n      }\n      invalidate() { targets.invalidate(); task.invalidate(); }\n      handleInput(data: string) {\n        if (matchesKey(data, \"tab\")) {\n          this.active = this.active === \"list\" ? \"task\" : \"list\";\n          this.focused = this.hasFocus;\n        } else if (this.active === \"task\") task.handleInput(data);\n        else targets.handleInput(data);\n        tui.requestRender();\n      }\n      render(width: number) {\n        return [\n          theme.fg(\"accent\", \"Field Baton · handover\"),\n          theme.fg(this.active === \"list\" ? \"success\" : \"muted\", \"Targets\" + (this.active === \"list\" ? \" · FOCUSED\" : \"\")),\n          ...targets.render(width),\n          theme.fg(this.active === \"task\" ? \"success\" : \"muted\", \"Task draft\" + (this.active === \"task\" ? \" · FOCUSED\" : \"\")),\n          ...task.render(width), // Input emits CURSOR_MARKER when focused.\n          theme.fg(\"muted\", truncateToWidth(\"Tab switch · arrows select · draft stays\", width)),\n        ];\n      }\n    }\n    return new FocusSelector();\n  },\n};\n",
    "lang": "ts",
    "path": "stories/patterns/behavioral/field-baton.ts"
  },
  "states": [
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Field Baton, List owns keys state, 40 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/list-40-dark.8bba9771077a.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Field Baton, List owns keys state, 40 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/list-40-light.ffad1778be82.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Field Baton, List owns keys state, 60 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/list-60-dark.774992368fef.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Field Baton, List owns keys state, 60 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/list-60-light.162455280d65.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Field Baton, List owns keys state, 80 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/list-80-dark.2e6f85fe166a.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Field Baton, List owns keys state, 80 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/list-80-light.a3c1dace2895.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Field Baton, List owns keys state, 120 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/list-120-dark.77b6a27fd626.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Field Baton, List owns keys state, 120 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/list-120-light.a59255ed54f6.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Show the target list highlighted and the task field inactive.",
      "id": "list",
      "label": "List owns keys",
      "problems": []
    },
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Field Baton, Task owns keys state, 40 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/task-40-dark.2d9b09cb8387.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Field Baton, Task owns keys state, 40 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/task-40-light.31c41f117fd0.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Field Baton, Task owns keys state, 60 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/task-60-dark.62d6c9d94f68.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Field Baton, Task owns keys state, 60 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/task-60-light.c40a525c0deb.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Field Baton, Task owns keys state, 80 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/task-80-dark.0ebef77565e9.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Field Baton, Task owns keys state, 80 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/task-80-light.1125dfbd0555.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Field Baton, Task owns keys state, 120 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/task-120-dark.df73f6bfbe7a.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Field Baton, Task owns keys state, 120 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/task-120-light.248b05e32119.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Switch with Tab and show the text cursor in the task field.",
      "id": "task",
      "label": "Task owns keys",
      "problems": []
    },
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Field Baton, List focus returns state, 40 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/returned-40-dark.5215883727c5.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Field Baton, List focus returns state, 40 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/returned-40-light.8862b2013bb4.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Field Baton, List focus returns state, 60 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/returned-60-dark.5f39044d7de1.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Field Baton, List focus returns state, 60 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/returned-60-light.70e8a01a38e4.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Field Baton, List focus returns state, 80 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/returned-80-dark.c9194bccf81f.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Field Baton, List focus returns state, 80 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/returned-80-light.7ebba70eff68.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Field Baton, List focus returns state, 120 columns, dark theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/returned-120-dark.ec2be533d3a2.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Field Baton, List focus returns state, 120 columns, light theme, 8 rows",
          "animated": false,
          "animation": null,
          "checks": [
            {
              "evidence": [],
              "name": "width",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "style-leak",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "hard-coded-colour",
              "status": "pass",
              "verdict": "pass"
            },
            {
              "evidence": [],
              "name": "height",
              "status": "pass",
              "verdict": "pass"
            }
          ],
          "h": 352,
          "rows": 8,
          "still": "https://pi-tui.ratstack.sh/frames/field-baton/returned-120-light.6900fed19f2b.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Switch back without losing the typed draft.",
      "id": "returned",
      "label": "List focus returns",
      "problems": []
    }
  ],
  "structure": "Tab -> list <-> task Input\nfocused Input -> CURSOR_MARKER",
  "thumbnails": {
    "dark": {
      "animation": null,
      "src": "https://pi-tui.ratstack.sh/thumbs/field-baton/dark.82dc87e6188c.webp"
    },
    "light": {
      "animation": null,
      "src": "https://pi-tui.ratstack.sh/thumbs/field-baton/light.97b048814487.webp"
    }
  },
  "url": "https://pi-tui.ratstack.sh/patterns/field-baton/",
  "widths": [
    40,
    60,
    80,
    120
  ]
}
