# Phase 7: Admin Forms & Lists - Context **Gathered:** 2026-02-04 **Status:** Ready for planning ## Phase Boundary YAML-driven form and list generation for the admin backend. Developers define `fields.yaml` and `columns.yaml`, the system renders corresponding forms and tables with standard widgets, filters, and validation display. RelationController-style relations and WinterCMS repeater behavior included. ## Implementation Decisions ### Form widget styling - Modern minimal aesthetic: clean lines, whitespace, subtle borders (Linear/Notion feel) - Labels positioned above inputs (stacked layout) - Sections collapsible, expanded by default - Action buttons (Save, Cancel) at bottom of form - Required fields indicated with red asterisk - Help text always visible below fields - Field width configurable via YAML (span: left, cssClass grid system) — similar to WinterCMS - Disabled fields render as read-only appearance (normal styling, not editable) - Multiple sections use horizontal tabs - Dark mode supported with user toggle in preferences ### Relations and repeaters - Relation fields use RelationController-style behavior: modal-based, rich list/form within, highly customizable through YAML - Repeater fields match WinterCMS behavior: inline add/remove, drag handles for reorder, collapsible items, configurable min/max ### List presentation - Table density user-selectable (comfortable/compact toggle) - Row click navigates to edit/preview screen (configurable) - Bulk actions toolbar above list: Create, Delete Selected, etc. — operates on checkbox-selected records - Traditional pagination (page numbers, explicit navigation) - Columns auto-size by content or explicit YAML width; user can drag to resize - Row reordering is separate feature controlled by model trait ### Validation UX - Validation on submit only (no real-time or on-blur) - Error messages inline under each invalid field - Auto-scroll to first error with highlight/pulse animation - Two save actions: "Save" (stay on form + flash), "Save and close" (redirect to list + flash) ### YAML syntax design - WinterCMS-inspired but improved — cleaner patterns, better defaults - Conditional visibility via `trigger` property (WinterCMS style) - Custom widgets registered via plugin boot lifecycle (explicit, not convention) - YAML anchors/aliases supported for field reuse (standard YAML mixins) - Validation rules defined in Scala model only (type-safe, not in YAML) ### Claude's Discretion - Specific animation/transition implementations - Exact color palette within "modern minimal" aesthetic - Internal component architecture - Widget rendering optimizations ## Specific Ideas - Forms and lists should feel like WinterCMS to experienced users, but with cleaner visuals - RelationController is important — rich modal-based relation management, not simple dropdowns - Repeater must match WinterCMS exactly: collapse/expand items, drag reorder, add/remove inline - Column resizing like Excel — drag borders, but auto-fit by default ## Deferred Ideas None — discussion stayed within phase scope --- *Phase: 07-admin-forms-lists* *Context gathered: 2026-02-04*