MaunaHIG
Все разделы

Тема как открытая структура

Токены переопределяются через конфигурационный файл. Структура хранится и читается из TOML или JSON при инициализации темы.

mauna_theme.hC99
typedef struct {
    MaunaColor bg_canvas;
    MaunaColor bg_chrome;
    MaunaColor text_primary;
    MaunaColor text_secondary;
    MaunaColor line;
    MaunaColor accent;
    MaunaFont  font_doc;
    MaunaFont  font_ui;
    float      line_height_doc;
    float      line_height_ui;
    int        radius_sm;
    int        radius_lg;
} MaunaTheme;
typedef struct {
    MaunaColor bg_canvas;
    MaunaColor bg_chrome;
    MaunaColor text_primary;
    MaunaColor text_secondary;
    MaunaColor line;
    MaunaColor accent;
    MaunaFont  font_doc;
    MaunaFont  font_ui;
    float      line_height_doc;
    float      line_height_ui;
    int        radius_sm;
    int        radius_lg;
} MaunaTheme;

Движок обращается только к структуре MaunaTheme, без привязки к конкретным пресетам. Пресеты Paper, Ink, Sepia, Midnight: заполненные экземпляры структуры.

Ограничение при валидации конфига: контраст текста к фону не ниже WCAG AA, 4.5 к 1 для обычного текста.