gpui-ai

Guide

Accessibility and motion

Reduced motion, keyboard reach, and contrast, and what each of them guarantees.

Reduced motion resolves to a useful frame

Every effect in the library is built on GPUI’s animation system, so a reduced-motion run is not a run with the animation skipped and nothing in its place. One-shot reveals settle at their end state; repeating effects — the text shimmer, the breathing signal — render at rest. A reader who has asked for less motion sees the finished answer, not an empty box that was waiting to be animated into.

Nothing installs idle redraw on its own. A component animates because it was asked to, which is why a page of them does not keep a machine awake.

The demos on this site honour the setting too, and any of them can be pinned either way with motion=reduced or motion=full — see Browser demo limits.

Keyboard and focus

Interactive components are reachable and operable from the keyboard, and every control carries an accessible name and role rather than relying on the shape it happens to be drawn as. Composites expose their structure — a conversation is a list of messages, a gate is a group with a question and two answers — so a screen reader can move through them rather than reading a wall.

One caveat, and it is the browser’s: keyboard action dispatch is native-only on the pinned GPUI revision under WebAssembly. Pointer activation works in both.

Contrast

The bundled themes are shown exactly as published, including where a palette makes a choice we would not have. What this site does guarantee is its own chrome: secondary text is painted from a derived token measured against the background it actually sits on, for every one of the 55 themes, rather than from a value that happened to look right in one of them.

A theme is a set of numbers, and whether those numbers read is a property of the numbers. If a theme on the Themes page is hard to read here, it will be hard to read in an application, which is the useful thing to learn before shipping it.