Basic Structure
Every Data Form follows this structure:Top-Level Properties
name
- Type:
string - Required: Yes
- Description: Human-readable name of the data form
description
- Type:
string - Required: No
- Description: Detailed description of the form’s purpose and usage
cards
- Type:
array - Required: Yes
- Description: List of card configurations that make up the form
Card Configuration
Each card in thecards array has these core properties:
type
- Type:
string - Required: Yes
- Description: The card component type in camelCase (e.g.,
label,dataStoreGrid,tabs) - Example:
type: transposedGridRollup
id
- Type:
string - Required: Yes
- Description: Unique identifier for the card within the form
- Naming Convention: Use descriptive, kebab-case names (e.g.,
main-grid,revenue-section)
properties
- Type:
object - Required: No (but most cards require some properties)
- Description: Card-specific configuration options
- Example:
layout
- Type:
object - Required: Yes
- Description: Grid positioning and size
- Properties:
x: Column position (0-11)y: Row position (0+)w: Width in columns (1-12)h: Height in rows (1+)
children
- Type:
array - Required: No
- Description: Nested cards for container components (tabs, cardGroup, cardPanel)
- Note: Only available on cards where
supportsChildren: true
Grid Layout System
The layout uses a 12-column grid:Column Width Examples
Positioning Examples
Common Patterns
Full-Width Header
Two-Column Layout
Three-Column Layout
Tabbed Container
Property Types
String Properties
Boolean Properties
Number Properties
Array Properties
Object Properties
Validation
Required Properties
Cards will fail to render if required properties are missing. Check each card’s documentation for required properties.Example error:
Type Validation
Properties must match their expected types:Best Practices
1. Use Descriptive IDs
2. Document Complex Forms
3. Group Related Cards
4. Consistent Sizing
Use consistent heights for rows to create visual alignment:5. Test Incrementally
Build forms incrementally:- Start with a simple label card
- Add one functional card at a time
- Test after each addition
- Add complexity gradually
Troubleshooting
Card Not Rendering
Check:
- Card type is spelled correctly (camelCase)
- All required properties are present
- Layout coordinates are valid (x: 0-11, y: 0+)
- Width doesn’t exceed 12 columns
Layout Issues
Check:
- Cards don’t overlap (same x, y position)
- Cards don’t exceed grid width (x + w ≤ 12)
- Height is sufficient for content
Property Errors
Check:
- Property names match card documentation exactly
- Values match expected types
- Required properties are not null/undefined
