Skip to content

Dictionary display

Read-only facts (order numbers, quantities, product names) render as a dense definition list when dictionary display is on: labels beside values in a compact grid, with a run of consecutive facts merged into one list. Use it for reference data the resolver reads and never edits.

Token Placement Purpose
x-lt-display Field or schema root "dictionary" renders read-only fields as definition rows
x-lt-section-options Schema root Per-section display settings, keyed by section name

x-lt-display: "dictionary" applies at three levels. The nearest wins:

Level Placement Applies to
Field On the property That field
Section x-lt-section-options at the schema root Read-only fields in that section
Schema At the schema root Every read-only field

Only readOnly: true fields render as dictionary rows. Editable fields keep their inputs. Content widgets (markdown, attachment, image) and embed widgets (link, escalation, escalation-list, invoke, roster) keep their block rendering whatever the display setting.

{
"x-lt-layout": "two-column",
"x-lt-display": "dictionary",
"properties": {
"sku": { "type": "string", "title": "SKU", "readOnly": true, "x-lt-section": "The order" },
"orderId": { "type": "string", "title": "Order ID", "readOnly": true, "x-lt-section": "The order" },
"width": { "type": "number", "title": "Width", "readOnly": true, "x-lt-section": "The order" },
"height": { "type": "number", "title": "Height", "readOnly": true, "x-lt-section": "The order" },
"approved": { "type": "boolean", "x-lt-section": "The decision" }
}
}

The four facts render as one two-column dictionary under “The order”; approved stays a checkbox.

Per-section settings live at the schema root, keyed by section name:

{
"x-lt-section-options": {
"The order": { "display": "dictionary", "columns": 2 }
}
}
Option Values Meaning
display "dictionary" Read-only fields in the section render as dictionary rows
columns 1 or 2 Dictionary column count. Defaults to 2 in two-column layouts, 1 otherwise

Two-column dictionaries fill row by row: consecutive items share a row, so field order controls pairing. Declare width and height together and they render side by side, width first.

Strings and numbers render as they are. Booleans render as Yes or No. Objects and arrays render as compact JSON. Empty values (null, "") render as a dash.

Labels resolve the same way as form labels: the title keyword when present, otherwise the key with snake and kebab separators title-cased. Declare title on every fact ("SKU", "Order ID") so labels read like product copy.

Presentation tokens (x-lt-display, x-lt-section-options, x-lt-column-group) leave validation and the submitted payload unchanged: a schema validates identically with or without them.