Register all active platform services and base features in core DB so admin can manage them, add delivery/hospitality/sports-center backend phases, update apps catalog and production deploy tooling. Co-authored-by: Cursor <cursoragent@cursor.com>
854 B
854 B
Form Patterns
- Library: React Hook Form + Zod +
@hookform/resolvers - Feedback: FieldError under controls; Sonner for server errors
- Submit: disable while
mutation.isPending - Dirty: rely on RHF
formState.isDirtyfor future autosave - Server validation: map
AccountingApiError.messageto toast (field mapping when backend returns field errors) - Money:
MoneyInputonly — never plain<Input type="number">for currency; parse withparseMoneyInputbefore API if needed - Party / item:
PartyCombobox/ItemCombobox— AJAX from registered masters, not free text
Voucher create uses useFieldArray with minimum two balanced lines (enforced by Zod + backend).
Operational invoices/orders use line item comboboxes bound to inventory items and party comboboxes bound to customers/suppliers.