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
Section titled “x-lt-display”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.
Section options (x-lt-section-options)
Section titled “Section options (x-lt-section-options)”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.
Value formatting
Section titled “Value formatting”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.
