Files
WooNooW/admin-spa
dwindown 921c1b6f80 feat(frontend): Complete Customer module with vertical tab forms
Implemented full Customer CRUD following PROJECT_SOP.md standards

1. Customers Index Page (index.tsx):
 List with pagination (20 per page)
 Search by name/email
 Bulk delete with confirmation
 Refresh button (required by SOP)
 Desktop: Table with columns (Name, Email, Orders, Total Spent, Registered)
 Mobile: Cards with same data
 Empty state with CTA
 Proper toolbar styling (red delete button, refresh button)
 FAB config for 'New Customer'

2. CustomerForm Component (CustomerForm.tsx):
 Vertical tabs: Personal Data | Billing Address | Shipping Address
 Personal Data tab:
   - First/Last name (required)
   - Email (required)
   - Username (auto-generated from email if empty)
   - Password (auto-generated if empty for new)
   - Send welcome email checkbox (create only)
 Billing Address tab:
   - Company, Address 1/2, City, State, Postcode, Country, Phone
 Shipping Address tab:
   - Same fields as billing
   - 'Same as billing' checkbox with auto-copy
 Mobile: Horizontal tabs
 Desktop: Vertical sidebar tabs
 Proper form validation

3. Customer New Page (New.tsx):
 Uses CustomerForm in create mode
 Page header with Back + Create buttons
 Form ref for header submit
 Success toast with customer name
 Redirects to list after create
 Error handling

4. Customer Edit Page (Edit.tsx):
 Uses CustomerForm in edit mode
 Loads customer data
 Page header with Back + Save buttons
 Loading skeleton
 Error card with retry
 Success toast
 Redirects to list after save

5. Routes (App.tsx):
 /customers → Index
 /customers/new → New
 /customers/:id/edit → Edit
 Consistent with products/coupons pattern

Features:
- Full WooCommerce integration
- Billing/shipping address management
- Order statistics display
- Email uniqueness validation
- Password auto-generation
- Welcome email option
- Responsive design (mobile + desktop)
- Vertical tabs for better UX
- Follows all PROJECT_SOP.md standards

Next: Testing and verification
2025-11-20 22:55:45 +07:00
..
2025-11-13 10:13:17 +07:00