theme.ts
used by app.tsx devices.ts motion.ts
API
Fexport function panelChrome(color: RGBA = theme.line)
A panel's border and both of its title rules share one colour, because
OpenTUI has a single titleColor and no bottomTitleColor. That turns out to
be the right constraint: colour says what state the panel is in, and the label
and its hints brighten together when the panel is the one you are using.
App, CommandOutput, SerialTerminal, SidePane, WizardCardFexport function mix(from: RGBA, to: RGBA, t: number): RGBA
Blend two theme colours for an in-flight animation.
toInts() resolves an indexed or default colour to OpenTUI's own RGB
approximation of it, so a blended colour no longer defers to the terminal's
real palette. That is fine mid-fade and wrong at rest, which is why every
animation here ends by assigning the theme token rather than mix(a, b, 1).
settle · calls atFexport const settle = (from: RGBA, to: RGBA, t: number): RGBA => (t <= 0 ? from : t >= 1 ? to : mix(from, to, t))
mix, except the endpoints hand back the theme tokens so a settled frame is palette-true.
App, colorFor, createFade, titleColor · calls mixUndocumented (1)
at