# Phase 7: Admin Forms & Lists - Context

**Gathered:** 2026-02-04
**Status:** Ready for planning

<domain>
## 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.

</domain>

<decisions>
## 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

</decisions>

<specifics>
## 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

</specifics>

<deferred>
## Deferred Ideas

None — discussion stayed within phase scope

</deferred>

---

*Phase: 07-admin-forms-lists*
*Context gathered: 2026-02-04*
