Field Config
FieldConfig defines how each field is rendered. Most options are cross-mode, while some are mode-specific, such as sortable, width, and align in table mode and span in grid layouts.
For host-level table CSS caveats (striping overrides, grouped-control contrast, and overflow behavior), see Host CSS and Table Layout.
The gallery below shows the built-in renderAs outputs documented on this page.
Renderer Gallery
A core-only visual reference for the built-in renderAs options on this page.
item: {
fields: [
{ key: 'name', label: 'Name' },
{
key: 'salary',
label: 'Currency',
renderAs: 'currency',
renderAsOptions: {
currency: 'USD',
compact: true,
colorize: true,
negativeFormat: 'parentheses',
},
},
{
key: 'status',
label: 'Status',
renderAs: 'badge',
renderAsOptions: {
style: 'badge',
size: 'sm',
},
},
{
key: 'settlementDate',
label: 'Date',
type: 'date',
renderAs: 'date',
renderAsOptions: {
parseMode: 'iso-date',
locale: 'en-US',
},
},
{
key: 'processingLatencySec',
label: 'Duration',
type: 'duration',
renderAs: 'duration',
renderAsOptions: {
unit: 'sec',
format: 'clock',
},
},
],
layout: { type: 'auto' },
}
// Type-first baseline (semantic type only)
{ key: 'joinedAt', label: 'Joined', type: 'date' }
// renderAs override (visual renderer takes precedence)
{
key: 'joinedAt',
label: 'Joined',
type: 'date',
renderAs: 'badge',
renderAsOptions: { style: 'soft' },
}
All built-in renderAs option objects also accept className from BaseRenderAsOptions.
FieldConfig Interface
interface FieldConfig {
key: string; // entity property key (required)
label?: string; // display label
type?: 'text' | 'number' | 'date' | 'time' | 'datetime' | 'timestamp' | 'duration' | 'boolean' | 'select' | 'relation' | 'textarea' | 'email' | 'url' | 'image' | 'swatch';
sortable?: boolean;
width?: number | string; // table column width
align?: 'left' | 'center' | 'right';
showLabel?: boolean; // show label next to value in card views
wrap?: boolean; // true = wrap, false = truncate + tooltip (default)
visible?: boolean; // false = hide entirely
condition?: (entity) => boolean; // per-row hide condition
formatter?: (value, entity) => unknown; // transform raw value before rendering
span?: number; // grid column span
booleanTrueLabel?: string;
booleanFalseLabel?: string;
imageOptions?: { circular?, width?, height?, objectFit?, border?, shadow?,
backgroundColor?, borderRadius?, lightbox?, lazy?, alt? };
renderAs?: string;
renderAsOptions?: RenderAsOptions;
}
Implementation Notes
renderAstakes precedence overtype.- Temporal contract:
date,time,datetime, andtimestamprequirerenderAsOptions.parseMode;durationrequiresrenderAsOptions.unit. booleanTrueLabelandbooleanFalseLabelare applied only fortype: 'boolean'fallback rendering.formatterruns before type rendering. For domain-specific boolean wording or logic, prefer a formatter plusrenderAsortype: 'text'instead of relying on boolean labels.visibleis currently enforced in table mode field filtering.spanapplies to item layouts that use CSS grid field placement.
Built-in type Categories
Use Components field-type pages for practical usage patterns:
- Core: text, number, boolean, select, reference, textarea
- Contact and media: email, url, image, swatch
- Temporal: date, time, datetime, timestamp, duration
Precedence reminder:
typeexpresses data semantics.renderAscontrols visual output when present.
Built-in renderAs Options
Use the Components renderer pages for per-renderer usage guidance and examples:
- badge
- currency
- progress
- rating
- link
- jsonPreview
- deltaValue
- sparkTrend
- scoreMeter
- compositionBar
- date
- time
- datetime
- timestamp
- duration
Renderer Contract Notes
renderAstakes precedence overtype.- Temporal contract:
date,time,datetime, andtimestamprequirerenderAsOptions.parseMode;durationrequiresrenderAsOptions.unit. - All built-in renderer option objects accept
classNamefromBaseRenderAsOptions. RenderAsOptionsin core types is the canonical option union, including custom renderer option support.
Related Guides
- Temporal renderer deep dive: Temporal Fields Guide
Item Layout
ItemConfig.layout has moved to Item Config to keep this page focused on field-level schema and renderer contracts.
Use Field Rendering Reference for type vs renderAs guidance.