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:
| Key | Role |
|---|---|
field_font_color | Typed text (caret follows unless overridden) |
field_font_size | Typed text size (default: typography.sizes.dialogue) |
field_caret_color | Caret only |
field_placeholder_color | Placeholder |
field_normal_bg / field_focus_bg / field_read_only_bg | Flat fill when no texture |
field_border | Flat border color |
field_padding_left / _right / _top / _bottom | Content margins |
field_normal_texture / field_focus_texture / field_read_only_texture | Face 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.