A unified framework for building single-record editing screens across Master Data, Transactional, and Setup applications—ensuring consistent user experience, minimal navigation, and clear separation between reference and editable content.
Form_Screen_-_Standard_System_Page_Design_0_0_1.jsonThe Standard Form Design defines a consistent screen architecture for viewing and editing individual records within Fuuz applications. It establishes patterns for layout, component organization, and interaction behaviors that apply universally across MES, WMS, QMS, Asset Management, and custom industrial applications.
The standard form screen follows a fixed two-column layout with a persistent header:
┌─────────────────────────────────────────────────────────────────┐
│ ScreenHeaderAndActions (40px fixed) [Save] [Delete]│
├─────────────────────────────────────────────┬───────────────────┤
│ │ │
│ MainContentForm (flexGrow, Y-scroll) │ SidebarContainer │
│ │ (280px fixed) │
│ ┌─────────────────────────────────────┐ │ │
│ │ PrimaryContent Card │ │ ┌─────────────┐ │
│ └─────────────────────────────────────┘ │ │ Essential │ │
│ ┌─────────────────────────────────────┐ │ │ Details │ │
│ │ RelatedRecords Card │ │ └─────────────┘ │
│ └─────────────────────────────────────┘ │ ┌─────────────┐ │
│ ┌─────────────────────────────────────┐ │ │ Activity │ │
│ │ CodeContent Card │ │ └─────────────┘ │
│ └─────────────────────────────────────┘ │ ┌─────────────┐ │
│ ┌─────────────────────────────────────┐ │ │ Quick │ │
│ │ SettingsContent Card │ │ │ Actions │ │
│ └─────────────────────────────────────┘ │ └─────────────┘ │
│ ┌─────────────────────────────────────┐ │ │
│ │ AttachmentsContent Card │ │ │
│ └─────────────────────────────────────┘ │ │
│ ┌─────────────────────────────────────┐ │ │
│ │ CustomFieldContent Card │ │ │
│ └─────────────────────────────────────┘ │ │
│ │ │
└─────────────────────────────────────────────┴───────────────────┘ROOT (Screen)
├── ScreenHeaderAndActions
│ └── SaveAction, DeleteAction, etc.
└── MainContainer
├── MainContentForm (scrollable)
│ ├── PrimaryContent
│ ├── RelatedRecords (optional)
│ ├── CodeContent (optional)
│ ├── SettingsContent (optional)
│ ├── AttachmentsContent (optional)
│ ├── NotesContent (optional)
│ └── CustomFieldContent (optional)
└── SidebarContainer (fixed 280px)
├── EssentialDetails
├── DataChangeActivity
├── QuickActionsContainer
└── [Deployment-specific sections]| Property | Value |
|---|---|
| Height | 40px (fixed) |
| Layout | Flex row, space-between, center aligned |
| Border | Bottom: 1px solid #e2e8f0 |
| Shadow | true (subtle drop shadow) |
| Property | Value |
|---|---|
| Width | flexGrow: true (fills remaining space) |
| Height | 100% of MainContainer |
| Overflow-Y | auto (vertical scroll when needed) |
| Overflow-X | hidden (no horizontal scroll) |
| Padding | 12px |
| Scrollbar | thin, branded colors (#5b30df / #e2e8f0) |
| Card Layout | Grid, 1 column, 12px gap |
Default ordering prioritizes the most commonly accessed information:
All cards follow a consistent structural pattern:
| Element | Specification |
|---|---|
| Container | width: 100%, shadow: true, borderRadius: 6px, background: paper |
| Header Row | height: 40px, padding: 12px, borderBottom: 1px solid #e2e8f0 |
| Header Icon | 24x24px, color: primary, variant: light |
| Header Label | font-size: 16px, font-weight: bold, font-family: Roboto |
| Content Area | padding: varies by card type, flexGrow: true |
| Card | Element Name | Icon | Visibility |
|---|---|---|---|
| Primary Content | PrimaryContent |
tag | Always visible |
| Related Records | RelatedRecords |
link | When model has relationships |
| Code Content | CodeContent |
brackets-curly | When model has code/JSON fields |
| Settings | SettingContent |
gear | When model has boolean settings |
| Attachments | AttachmentsContent |
paperclip | When model supports attachments |
| Notes | NotesContent |
message-lines | When model supports notes |
| Custom Fields | CustomFieldContent |
pen-field | When custom fields are defined |
Purpose: Contains all general editable fields for the current record. This is the primary workspace for user input.
Purpose: Displays and manages child/related entities.
Purpose: Contains JSON schemas, JSONata expressions, SQL queries, or other structured code fields.
JSONInput componentPurpose: Contains boolean configuration values as switches or checkboxes.
Purpose: Manages file attachments, documents, images, and media.
Common attachment types:
Purpose: Displays user-defined custom fields that extend the base data model.
CustomFieldsInput with dataPath: _customFieldsexpandGroups property| Property | Value |
|---|---|
| Width | 280px (fixed) |
| Height | 100% of MainContainer |
| Layout | Grid, 1 column, 12px gap |
| Padding | 8px |
| Background | default (light gray) |
| Overflow | hidden |
Purpose: Displays immutable reference information that identifies the record.
Standard Components:
Parent Hierarchy Display Pattern:
HIERARCHY
Sales Order: SO-2024-0847 →
└─ Production Order: PO-2024-1923 →
└─ Work Order: WO-2024-4521 (current)Purpose: Displays audit trail information showing who created and last modified the record.
createdAt, createdByUser.email, updatedAt, updatedByUser.emailPurpose: Provides contextual actions relevant to the current record.
Standard Actions:
Deployment-Specific Actions (examples):
The sidebar supports additional custom sections as required by specific deployments:
Display in Essential Details sidebar as read-only reference links. For relationships 3-4 levels deep, show the full lineage with clickable links at each level.
| Scenario | Pattern |
|---|---|
| 1-2 child types, simple | Related Records card with expandable sections |
| 3+ child types, complex | Tabs within Primary Content, one per child type |
Use a slide-out drawer pattern:
Work Order > Operation 10 > Material IssueFor highly relational entities (BOMs, Routings, Process Flows), use a dedicated Relationship Explorer:
┌─────────────────────────────────────────────┐
│ 🔗 Relationships [↗] │
├─────────────────────────────────────────────┤
│ [Tree View] [List View] │
│ │
│ ▼ Operations (4) │
│ ├─ OP10: Cut ─┬─ Materials (3) │
│ │ └─ Tools (1) │
│ ├─ OP20: Weld │
│ └─ ... │
│ ▶ Quality Checks (2) │
│ ▶ Documents (5) │
└─────────────────────────────────────────────┘| Card | Visibility Condition |
|---|---|
| Primary Content | Always visible |
| Related Records | When model has defined child relationships |
| Code Content | When model contains JSON/code field types |
| Settings Content | When model has boolean settings fields |
| Attachments Content | When model supports file attachments |
| Notes Content | When model supports notes/comments |
| Custom Fields Content | When custom fields are defined for the model |
| Token | Value | Usage |
|---|---|---|
| primary | #5b30df | Icons, active states, links |
| text-primary | #1e293b | Primary text, labels |
| text-secondary | #64748b | Descriptions, help text |
| border | #e2e8f0 | Dividers, card borders |
| success | #2e7d32 | Active status, save enabled |
| brand-gradient | 90deg, #39005a → #5b30df → #03caaf | Section separators |
| Token | Value | Usage |
|---|---|---|
| card-gap | 12px | Gap between cards |
| card-padding | 12px | Internal card padding |
| field-padding | 6px | Form field padding |
| header-height | 40px | Screen header, card headers |
| sidebar-width | 280px | Fixed sidebar width |
| border-radius | 6px (cards), 4px (inputs) | Rounded corners |
| Element | Style |
|---|---|
| Card Header | Roboto, 16px, Bold |
| Field Label | body1, uppercase, color: #64748b |
| Field Value | body1 |
| Help Text | body2, color: #64748b |
| Status Badge | 12px, centered |
| Element Type | Naming Pattern |
|---|---|
| Layout Containers | PascalCase describing purpose (e.g., MainContentForm, SidebarContainer) |
| Card Containers | [CardType]Content (e.g., PrimaryContent, CodeContent) |
| Card Headers | [CardType]HeaderContainer (e.g., PrimaryContentHeaderContainer) |
| Icons | [Context]Icon (e.g., PrimaryContentIcon, QuickActionsIcon) |
| Labels | [Context]Label (e.g., PrimaryContentLabel, SettingLabel) |
| Forms | Form[N] or descriptive name (e.g., Form1, PrimaryForm) |
| Separators | BrandSeparatorContainer[N] |
Each card containing editable fields should have its own Form element:
api: "Application"model: [DataModel name]dataPath: "edges[0]"autoLoad: true (for display), false (for save-only)blockNavigationWhenDirty: trueTo confirm correct implementation of the Standard Form Design:
overflow-x: hidden is set on the MainContentForm containerblockNavigationWhenDirty: true and form dirty state is being trackedhidden: trueoverflow: hidden and fixed width of 280pxbackground-image: linear-gradient(90deg, #39005a, #5b30df, #03caaf) is applied