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

Text input packs

Optional element and compose packs for story input chrome. Files live under themes/<name>.json (same folder as choice packs).

No pack is required. Omit style / input_style / layout.text_input.style and the field/confirm use dialogue colours plus flat fills. Ship a pack only for a custom look.

Confirm button

Same keys as choice / nav packs (normal_bg, normal_texture, hover_texture, texture_9slice, font_color, …).

With no pack, confirm uses the theme buttons colours/corners but keeps a compact width (menu min_width is not applied) and matches the field’s font size. Named packs can set their own font_size.

Author chrome: confirm.label (default OK), confirm.visible (false hides the button; Enter / Esc still confirm).

Field

Colors inherit dialogue text by default. Optional overrides:

KeyRole
field_font_colorTyped text (caret follows unless overridden)
field_font_sizeTyped text size (default: typography.sizes.dialogue)
field_caret_colorCaret only
field_placeholder_colorPlaceholder
field_normal_bg / field_focus_bg / field_read_only_bgFlat fill when no texture
field_borderFlat border color
field_padding_left / _right / _top / _bottomContent margins
field_normal_texture / field_focus_texture / field_read_only_textureFace textures (Texture specs)
field_texture_9slice or texture_9slice[L, T, R, B] nine-slice margins

Empty / omitted textures → flat colors. Focus without its own texture reuses field_normal_texture. Flipbook frames animate while the field is shown.

Example (still field + textured confirm):

{
  "field_normal_texture": "ui/field_normal.png",
  "field_focus_texture": { "file": "ui/field_focus.png", "modulate": "#ffffff" },
  "field_texture_9slice": [12, 8, 12, 8],
  "field_padding_left": 14,
  "field_padding_right": 14,
  "normal_texture": "ui/ok_normal.png",
  "hover_texture": "ui/ok_hover.png",
  "texture_9slice": [8, 8, 8, 8],
  "font_color": "#e8e6e1"
}

Prompt label uses the same font color/size as dialogue (typography.sizes.dialogue) unless you only care about field chrome.

theme_style does not restyle input chrome (same rule as choice packs).

Compose pack (source)

A compose pack may include container, field, confirm, and optional style. Merged under node / layout defaults at show time.

Precedence

Node input.style → sticky input_style → layout.text_input.style → code fallbacks.