abstracttui 0.6.0

A reactive, compositor-grade terminal UI engine: fine-grained signals, layered rendering with damage tracking, images (kitty/iTerm2/sixel/mosaic), software-rasterized 3D (GLB), themes and animation.
Documentation
//! Themes: semantic design tokens and the AbstractUIC theme family.
//!
//! Widgets consume [`TokenId`]s resolved against the active theme's
//! [`TokenSet`]; they never hold raw colors. The registry ports the
//! AbstractUIC palette family (abstract dark/light, observer-night,
//! catppuccin x4, rose-pine x3, tokyo-night, nord, one-dark/light,
//! dracula, monokai, gruvbox, solarized x2, everforest x2) hex-for-hex
//! from `theme.css`; tokens the CSS lacks are derived by documented,
//! contrast-guarded rules. Runtime theme switching is a signal write.
//!
//! Contrast floors and role hygiene are test-pinned (see
//! `docs/design/theme-identity.md` for the full token model and floors).
//!
//! Apps bring their own theme through the same pipeline the built-ins
//! ride: [`Palette`] (your ~12 authored colors) → [`Palette::derive`] (the
//! engine's derivation, not a copy of it) → [`register()`] (the audit). See
//! [`palette`] for why the derivation is public rather than left as an
//! afternoon's reimplementation.
//!
//! OWNER: DESIGN.

pub mod contrast;
pub mod derive;
pub mod mode;
pub mod palette;
pub mod register;
pub mod registry;
pub mod seeds;
pub mod tokens;

pub use contrast::{audit, contrast_ratio, Violation};
pub use mode::{themes_by_mode, ThemeMode};
pub use palette::{BadHex, Palette, PaletteError};
pub use register::{register, RegisterError, RegisterMode, Registration, ThemeCandidate};
pub use registry::{default_theme, get, list, resolve, themes, Theme, DEFAULT_THEME_ID};
pub use tokens::{TokenId, TokenSet};