Banja
About
Services
Products
Case Studies
Lab
Contact Us
Let us pitch to you

LET'S BUILD
THE FUTURE.

Start a Project
or
Meet Jett
banja.au

We build digital products for people who move fast.

Explore

•About•Case Studies•Blog•Careers•Contact

Services

•Product Design & Build•AI Agents & Automation•Website & Brand Setup

Products

•Boosta

Contact

helloremovethis@andthisbanja.au
50 Miller St
North Sydney NSW 2060

© 2026 Banja Labs. All rights reserved.

Privacy PolicyTerms of Use

Banja Lab / Benchmarks / Test

AYGAT-0001UI components · hard

Keyboard-operable modal dialog with focus trap and return

The same task, run on 27 models. Compare the outputs side by side, or open any one in a popup to inspect it.

Top result: claude-opus-4-8 (low reasoning) at 100.0% composite. Lowest: deepseek-v4-flash at 0.0%. 27 models compared on this task.

How it ran
  • Each model was given the brief below in a fresh, isolated session with no access to our tools, and returned a single self-contained index.html (inline CSS and JS, no external requests, no build step).
  • The rendered output was scored 1 to 5 on brief fidelity, visual design, craft, and impact by a four-family vision panel - Anthropic (Claude Opus 4.8), OpenAI (GPT-5.5), Google (Gemini 3.1 Pro), and xAI (Grok 4.3) - using one identical prompt so the scores compare. The published judge score is leave-one-family-out: a model is never scored by a judge of its own family, so same-family self-preference is removed.
The brief

Build a single self-contained page as one HTML file (`index.html`) that renders with no build step and no network calls (inline all CSS and JS, no external fonts or scripts). The page has a trigger button with id="open-dialog" and the visible text "Subscribe". Activating that button (by mouse OR by keyboard) opens a modal dialog. Requirements: - The dialog container has role="dialog" and aria-modal="true". The trigger carries aria-expanded, "false" while the dialog is closed and "true" while it is open. - When the dialog opens, keyboard focus moves into the dialog (to the first focusable control inside it). The dialog must contain an email input with id="email", a Cancel button with id="cancel", and a confirm button with id="confirm". - While the dialog is open, Tab and Shift+Tab are TRAPPED inside the dialog: tabbing past the last control wraps to the first, and shift-tabbing past the first wraps to the last. Focus never lands on the page behind the dialog. - Pressing Escape (or activating Cancel) closes the dialog AND returns keyboard focus to the trigger button (id="open-dialog"). The dialog must be fully operable with the keyboard alone. Use plain, readable, accessible markup. Seed real-looking copy.

Anthropicclaude-opus-4-8
Low reasoning
claude-opus-4-8 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 100.0%
Open
Composite 100.0%Objective 100.0%
Open outputFull run
Anthropicclaude-opus-4-8
Medium reasoning
claude-opus-4-8 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 100.0%
Open
Composite 100.0%Objective 100.0%
Open outputFull run
Anthropicclaude-opus-4-8
High reasoning
claude-opus-4-8 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 100.0%
Open
Composite 100.0%Objective 100.0%
Open outputFull run
Anthropicclaude-sonnet-4-6
High reasoning
claude-sonnet-4-6 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 100.0%
Open
Composite 100.0%Objective 100.0%
Open outputFull run
Anthropicclaude-sonnet-5
High reasoning
claude-sonnet-5 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 100.0%
Open
Composite 100.0%Objective 100.0%
Open outputFull run
Anthropicclaude-fable-5
High reasoning
claude-fable-5 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 100.0%
Open
Composite 100.0%Objective 100.0%
Open outputFull run
OpenAIgpt-5.5
High reasoning
gpt-5.5 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 100.0%
Open
Composite 100.0%Objective 100.0%
Open outputFull run
OpenAIgpt-5.4-mini
High reasoning
gpt-5.4-mini rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 100.0%
Open
Composite 100.0%Objective 100.0%
Open outputFull run
Googlegemini-3.1-pro-preview
High reasoning
gemini-3.1-pro-preview rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 100.0%
Open
Composite 100.0%Objective 100.0%
Open outputFull run
Anthropicclaude-opus-4-8
High reasoning
claude-opus-4-8 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 100.0%
Open
Composite 100.0%Objective 100.0%
Open outputFull run
Anthropicclaude-fable-5
High reasoning
claude-fable-5 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 100.0%
Open
Composite 100.0%Objective 100.0%
Open outputFull run
DeepSeekdeepseek-v4-pro
default reasoning
deepseek-v4-pro rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 100.0%
Open
Composite 100.0%Objective 100.0%
Open outputFull run
Moonshotkimi-k2.7-code
default reasoning
kimi-k2.7-code rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 98.1%
Open
Composite 98.1%Objective 98.1%
Open outputFull run
xAIgrok-composer-2.5-fast
default reasoning
grok-composer-2.5-fast rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 98.1%
Open
Composite 98.1%Objective 98.1%
Open outputFull run
Anthropicclaude-opus-4-8
Extra-high reasoning
claude-opus-4-8 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 96.3%
Open
Composite 96.3%Objective 96.3%
Open outputFull run
Anthropicclaude-sonnet-4-6
High reasoning
claude-sonnet-4-6 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 96.3%
Open
Composite 96.3%Objective 96.3%
Open outputFull run
Anthropicclaude-haiku-4-5
default reasoning
claude-haiku-4-5 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 94.4%
Open
Composite 94.4%Objective 94.4%
Open outputFull run
Anthropicclaude-opus-4-8
Max reasoning
claude-opus-4-8 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 0.0%
Open
Composite 0.0%Objective 0.0%
Open outputFull run
Anthropicclaude-haiku-4-5
High reasoning
claude-haiku-4-5 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 0.0%
Open
Composite 0.0%Objective 0.0%
Open outputFull run
Zhipuglm-5.2
default reasoning
glm-5.2 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 0.0%
Open
Composite 0.0%Objective 0.0%
Open outputFull run
Googlegemini-3.5-flash
default reasoning
gemini-3.5-flash rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 0.0%
Open
Composite 0.0%Objective 0.0%
Open outputFull run
Googlegemini-3.1-flash-lite
default reasoning
gemini-3.1-flash-lite rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 0.0%
Open
Composite 0.0%Objective 0.0%
Open outputFull run
xAIgrok-4.3
default reasoning
grok-4.3 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 0.0%
Open
Composite 0.0%Objective 0.0%
Open outputFull run
xAIgrok-4.20-reasoning
default reasoning
grok-4.20-reasoning rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 0.0%
Open
Composite 0.0%Objective 0.0%
Open outputFull run
xAIgrok-build-0.1
default reasoning
grok-build-0.1 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 0.0%
Open
Composite 0.0%Objective 0.0%
Open outputFull run
Anthropicclaude-sonnet-5
High reasoning
claude-sonnet-5 rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 0.0%
Open
Composite 0.0%Objective 0.0%
Open outputFull run
DeepSeekdeepseek-v4-flash
default reasoning
deepseek-v4-flash rendering of the Keyboard-operable modal dialog with focus trap and return benchmark - composite 0.0%
Open
Composite 0.0%Objective 0.0%
Open outputFull run