{
  "$schema": "https://pi-tui.ratstack.sh/schema/pattern.schema.json",
  "aka": [
    "Countdown dialog"
  ],
  "animated": true,
  "apis": [
    {
      "name": "ctx.ui.select",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/extensions.md#interact-with-the-user"
    },
    {
      "name": "ExtensionUIDialogOptions",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/extensions.md#interact-with-the-user"
    },
    {
      "name": "ctx.ui.setWidget",
      "url": null
    }
  ],
  "applicability": [
    "Use this when a prompt should expire without user input."
  ],
  "category": "dialogs",
  "categoryLabel": "Overlays and dialogs",
  "consequences": [
    "Transient prompts can end without user input.",
    "Callers must treat timeout as a cancellation result."
  ],
  "family": "behavioral",
  "familyLabel": "Behavioral",
  "id": "dialog-fuse",
  "implementation": [
    "Handle the timeout result as cancellation.",
    "Clear timer resources when the view closes."
  ],
  "intent": "Show remaining time before a transient dialog automatically dismisses.",
  "jsonUrl": "https://pi-tui.ratstack.sh/patterns/dialog-fuse.json",
  "kind": "screen",
  "knownUses": [
    {
      "example": "nico-dialog-timeout-countdown",
      "moreRefs": 0,
      "refs": [
        {
          "file": "packages/coding-agent/src/core/extensions/types.ts",
          "lines": "45-60",
          "sha": "77477f61",
          "url": "https://github.com/earendil-works/pi/blob/77477f6166be8e0eb1ca2f7ab9fc3c271fde6586/packages/coding-agent/src/core/extensions/types.ts#L45-L60"
        }
      ],
      "repo": "earendil-works/pi",
      "repoUrl": "https://github.com/earendil-works/pi",
      "title": "Auto-dismiss extension dialogs with a live countdown"
    },
    {
      "example": "welcome-overlay",
      "moreRefs": 0,
      "refs": [
        {
          "file": "index.ts",
          "lines": "3584-3648",
          "sha": "859dee67",
          "url": "https://github.com/nicobailon/pi-powerline-footer/blob/859dee671b633fb533b07ceba3e6c1ab1c43360a/index.ts#L3584-L3648"
        }
      ],
      "repo": "pi-powerline-footer",
      "repoUrl": "https://github.com/nicobailon/pi-powerline-footer",
      "title": "Timed dismissible welcome overlay"
    }
  ],
  "linkedFrom": [
    {
      "how": "uses a fixed expiry deadline",
      "id": "idle-fuse",
      "jsonUrl": "https://pi-tui.ratstack.sh/patterns/idle-fuse.json",
      "mdUrl": "https://pi-tui.ratstack.sh/patterns/idle-fuse.md",
      "name": "Idle Fuse",
      "url": "https://pi-tui.ratstack.sh/patterns/idle-fuse/"
    }
  ],
  "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/dialog-fuse.md",
  "motivation": "Nico's upstream dialog timeout adds a visible countdown before automatic dismissal.",
  "name": "Dialog Fuse",
  "participants": [
    {
      "name": "ctx.ui.select",
      "role": "Returns a selected string or cancellation.",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/extensions.md#interact-with-the-user"
    },
    {
      "name": "ExtensionUIDialogOptions",
      "role": "Carries a timeout or abort signal for a built-in dialog.",
      "url": "https://github.com/earendil-works/pi/blob/v1.0.3/packages/coding-agent/docs/extensions.md#interact-with-the-user"
    },
    {
      "name": "Deadline",
      "role": "Ends the prompt with a cancellation result when time runs out.",
      "url": null
    }
  ],
  "pi": "1.0.3",
  "related": [
    {
      "how": "expires from inactivity instead",
      "id": "idle-fuse",
      "jsonUrl": "https://pi-tui.ratstack.sh/patterns/idle-fuse.json",
      "mdUrl": "https://pi-tui.ratstack.sh/patterns/idle-fuse.md",
      "name": "Idle Fuse",
      "url": "https://pi-tui.ratstack.sh/patterns/idle-fuse/"
    }
  ],
  "sampleCode": {
    "code": "// Dialog Fuse: a fixed deadline cancels a prompt without user input.\nimport type { ExtensionUIDialogOptions } from \"@earendil-works/pi-coding-agent\";\nimport type { PatternStory } from \"../../../src/pattern.ts\";\n\nexport const story: PatternStory = {\n  id: \"dialog-fuse\", title: \"Dialog Fuse\", kind: \"screen\",\n  apis: [\"ctx.ui.select\", \"ExtensionUIDialogOptions\", \"ctx.ui.setWidget\"],\n  states: [\n    { id: \"initial\", label: \"Countdown starts\", animated: true, steps: [{ type: \"tick\", ms: 100 }] },\n    { id: \"ticking\", label: \"Time remaining\", animated: true, steps: [{ type: \"tick\", ms: 1000 }] },\n    { id: \"expired\", label: \"Timeout result\", steps: [\n      { type: \"tick\", ms: 1000 }, { type: \"resize\", rows: 12 },\n    ] },\n  ],\n  setup({ ui, theme }) {\n    const deadline: ExtensionUIDialogOptions = { timeout: 2000 };\n    ui.setEditorText(\"Draft remains unchanged\");\n    ui.setWidget(\"deadline\", [theme.fg(\"muted\", \"Transient prompt · fixed 2s deadline\")]);\n    ui.setStatus(\"prompt\", theme.fg(\"muted\", \"pending\"));\n    void ui.select(\"Choose next task\", [\"Review patch\", \"Run tests\"], deadline).then(selection => {\n      if (selection === undefined) {\n        ui.setWidget(\"deadline\", [\n          theme.fg(\"success\", \"Expired · selection is undefined\"),\n          theme.fg(\"muted\", \"No task started · draft kept\"),\n        ]);\n        ui.setStatus(\"prompt\", theme.fg(\"muted\", \"expired\"));\n        return;\n      }\n      ui.setWidget(\"deadline\", [theme.fg(\"success\", \"Selected: \" + selection)]);\n      ui.setStatus(\"prompt\", theme.fg(\"success\", \"answered\"));\n    });\n  },\n};\n",
    "lang": "ts",
    "path": "stories/patterns/behavioral/dialog-fuse.ts"
  },
  "states": [
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Dialog Fuse, Countdown starts state, 40 columns, dark theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-40-dark.anim.38cbc2166106.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-40-dark.df5574c806a3.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Dialog Fuse, Countdown starts state, 40 columns, light theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-40-light.anim.27aeba53772d.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-40-light.802c52b03b15.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Dialog Fuse, Countdown starts state, 60 columns, dark theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-60-dark.anim.550aa08eaa1b.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-60-dark.0b339d0896af.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Dialog Fuse, Countdown starts state, 60 columns, light theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-60-light.anim.c830a91d7f41.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-60-light.57c8aa5a3e65.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Dialog Fuse, Countdown starts state, 80 columns, dark theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-80-dark.anim.97b2647c053f.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-80-dark.2bd4fd3f96fd.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Dialog Fuse, Countdown starts state, 80 columns, light theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-80-light.anim.870136e8e734.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-80-light.9db0268d108c.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Dialog Fuse, Countdown starts state, 120 columns, dark theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-120-dark.anim.14862bdd147b.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-120-dark.89fd80b6a5b9.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Dialog Fuse, Countdown starts state, 120 columns, light theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-120-light.anim.568a1947fd28.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/initial-120-light.b087f2f56eaa.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Show a synthetic selection prompt with its timeout countdown.",
      "id": "initial",
      "label": "Countdown starts",
      "problems": []
    },
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Dialog Fuse, Time remaining state, 40 columns, dark theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-40-dark.anim.fa8cbff6cb8c.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-40-dark.df5574c806a3.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Dialog Fuse, Time remaining state, 40 columns, light theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-40-light.anim.19744127b0eb.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-40-light.802c52b03b15.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Dialog Fuse, Time remaining state, 60 columns, dark theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-60-dark.anim.a1dfaaa898b1.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-60-dark.0b339d0896af.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Dialog Fuse, Time remaining state, 60 columns, light theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-60-light.anim.b4ed4e977254.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-60-light.57c8aa5a3e65.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Dialog Fuse, Time remaining state, 80 columns, dark theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-80-dark.anim.fe15dfd279c3.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-80-dark.2bd4fd3f96fd.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Dialog Fuse, Time remaining state, 80 columns, light theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-80-light.anim.3790898ebdd4.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-80-light.9db0268d108c.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Dialog Fuse, Time remaining state, 120 columns, dark theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-120-dark.anim.f4071e62142f.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-120-dark.89fd80b6a5b9.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Dialog Fuse, Time remaining state, 120 columns, light theme, 18 rows, animated",
          "animated": true,
          "animation": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-120-light.anim.ae9ecaa59ba0.webp",
          "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": 792,
          "rows": 18,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/ticking-120-light.b087f2f56eaa.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Advance the visible countdown without a selection.",
      "id": "ticking",
      "label": "Time remaining",
      "problems": []
    },
    {
      "dont": false,
      "expectFail": [],
      "frames": [
        {
          "alt": "Dialog Fuse, Timeout result state, 40 columns, dark theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/expired-40-dark.595729d76d7b.webp",
          "theme": "dark",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Dialog Fuse, Timeout result state, 40 columns, light theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/expired-40-light.2f8296554c6c.webp",
          "theme": "light",
          "w": 800,
          "width": 40
        },
        {
          "alt": "Dialog Fuse, Timeout result state, 60 columns, dark theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/expired-60-dark.f796e39ad351.webp",
          "theme": "dark",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Dialog Fuse, Timeout result state, 60 columns, light theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/expired-60-light.914d10e53879.webp",
          "theme": "light",
          "w": 1200,
          "width": 60
        },
        {
          "alt": "Dialog Fuse, Timeout result state, 80 columns, dark theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/expired-80-dark.521aa79ab37e.webp",
          "theme": "dark",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Dialog Fuse, Timeout result state, 80 columns, light theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/expired-80-light.cf2ce9b072ec.webp",
          "theme": "light",
          "w": 1600,
          "width": 80
        },
        {
          "alt": "Dialog Fuse, Timeout result state, 120 columns, dark theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/expired-120-dark.faa5be5957b9.webp",
          "theme": "dark",
          "w": 2400,
          "width": 120
        },
        {
          "alt": "Dialog Fuse, Timeout result state, 120 columns, light theme, 11 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": 484,
          "rows": 11,
          "still": "https://pi-tui.ratstack.sh/frames/dialog-fuse/expired-120-light.362b5a04cda6.webp",
          "theme": "light",
          "w": 2400,
          "width": 120
        }
      ],
      "how": "Show the host receiving an undefined selection after expiry.",
      "id": "expired",
      "label": "Timeout result",
      "problems": []
    }
  ],
  "structure": "dialog + timeout -> countdown\nzero -> cancellation result",
  "thumbnails": {
    "dark": {
      "animation": "https://pi-tui.ratstack.sh/thumbs/dialog-fuse/dark.anim.b9d472ea540b.webp",
      "src": "https://pi-tui.ratstack.sh/thumbs/dialog-fuse/dark.ef6a73d59f50.webp"
    },
    "light": {
      "animation": "https://pi-tui.ratstack.sh/thumbs/dialog-fuse/light.anim.97d84b023fe7.webp",
      "src": "https://pi-tui.ratstack.sh/thumbs/dialog-fuse/light.2f6fd92fd0ab.webp"
    }
  },
  "url": "https://pi-tui.ratstack.sh/patterns/dialog-fuse/",
  "widths": [
    40,
    60,
    80,
    120
  ]
}
