XenoAtom.Terminal.UI uses a theme/style model built on ANSI colors and cell styling.

Theme is a set of style values used as the default environment for visuals.
Theme.Default (RGB scheme).Theme.Terminal (uses terminal default colors).Themes are resolved from the environment (Visual.GetTheme()), and can be overridden per subtree.
using XenoAtom.Terminal.UI.Controls;
using XenoAtom.Terminal.UI.Styling;
var themed = new Group(new TextArea("Themed region"))
.Style(Theme.FromScheme(ColorScheme.CherryDark));
Theme is intentionally “semantic”: controls mostly consume design tokens such as:
Surface, PopupSurface: background surfacesControlFill, ControlFillHover, ControlFillPressed: button-like fillsInputFill, InputFillFocused: text input surfacesBorder, FocusBorder: stroke colorsAccent, Selection: key interaction colorsFor RGB schemes, many tokens are derived using subtle alpha overlays. This is how the default theme achieves “lifted” panels and soft hover effects without hard-coded colors.
Controls obtain their styles from the environment:
new Button("OK").Style(new ButtonStyle { Tone = ControlTone.Primary })
Styles are records, so variations can be created with with:
var danger = ButtonStyle.Default with { Tone = ControlTone.Error };
ColorScheme represents a 16-color scheme.
Schemes can be:
Color.Basic16(...))Color.Rgb(...) / Color.RgbA(...))XenoAtom.Terminal.UI ships with a set of curated color schemes generated with Root Loops:
ColorScheme.Generate(...)ColorScheme.GetPredefinedSchemes()
Theme.Default and Theme.DefaultLight are built from:
ColorScheme.RootLoopsDarkColorScheme.RootLoopsLightYou can list all built-in schemes (for example in a demo):
var schemes = ColorScheme.GetPredefinedSchemes();
XenoAtom.Terminal.UI supports alpha-aware colors via Color.RgbA(r,g,b,a).
Even though the terminal ultimately renders a single color per cell, alpha colors are blended during rendering so
overlays and lifted surfaces look consistent.
Guidance:
0x10 to 0x40).Rendering glyphs (borders, scrollbars, etc.) are stored in styles using Rune so controls can be re-themed without changing behavior.
See also: