Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Named button packs

Button chrome that is not the root buttons block: a file themes/<name>.json, and/or a same-named object inside themes/default.json. Same keys as buttons.

// themes/default.json (root objects)
"info_close_button": {
  "min_width": 0,
  "border_width": 0,
  "corner_radius": 6,
  "normal_bg": "#343a5280",
  "hover_bg": "#5b6a82c0"
},
"locale_button": {
  "min_width": 0,
  "corner_radius": 6,
  "padding_left": 10,
  "padding_right": 10
},
"locale_button_active": {
  "min_width": 0,
  "normal_bg": "#c4693ad0",
  "font_color": "#ffffff"
}

Usually you need

Pack idRole
info_close_buttonDefault chrome close control when button_style is empty
locale_buttonInactive locale chip
locale_button_activeActive locale chip
icon_close_button / hud_icon_button / hud_menu_buttonOptional pack files for icon chrome / HUD glyph buttons

How resolve works

  1. Start from root buttons (unless the call skips it).
  2. Load themes/<prefix>.json if present.
  3. Else merge root object default.json[<prefix>] if present.
  4. Merge inline style last.

Locale switcher (screens)

{
  "bind": "locale",
  "label": "Language",
  "label_key": "screen.settings.language",
  "style": "locale_button",
  "active_style": "locale_button_active"
}

Built from game.json → i18n.locales. Active locale uses active_style and is non-interactive.

Chrome close

Screen chrome with empty button_style uses info_close_button. Authored screens often set "button_style": "icon_close_button" (pack file) instead.

Keys

Identical to buttons. Styling model · Localization · Layer: chrome.