# My Account Settings & Frontend - Comprehensive Plan

## Overview
Complete implementation plan for My Account functionality including admin settings and customer-facing frontend.

---

## 1. ADMIN SETTINGS (`admin-spa/src/routes/Appearance/Account.tsx`)

### Settings Structure

#### **A. Layout Settings**
- **Dashboard Layout**
  - `style`: 'sidebar' | 'tabs' | 'minimal'
  - `sidebar_position`: 'left' | 'right' (for sidebar style)
  - `mobile_menu`: 'bottom-nav' | 'hamburger' | 'accordion'

#### **B. Menu Items Control**
Enable/disable and reorder menu items:
- Dashboard (overview)
- Orders
- Downloads
- Addresses (Billing & Shipping)
- Account Details (profile edit)
- Payment Methods
- Wishlist (if enabled)
- Logout

#### **C. Dashboard Widgets**
Configurable widgets for dashboard overview:
- Recent Orders (show last N orders)
- Account Stats (total orders, total spent)
- Quick Actions (reorder, track order)
- Recommended Products

#### **D. Visual Settings**
- Avatar display: show/hide
- Welcome message customization
- Card style: 'card' | 'minimal' | 'bordered'
- Color scheme for active states

---

## 2. FRONTEND IMPLEMENTATION (`customer-spa/src/pages/Account/`)

### File Structure
```
customer-spa/src/pages/Account/
├── index.tsx                 # Main router
├── Dashboard.tsx            # Overview/home
├── Orders.tsx               # Order history
├── OrderDetails.tsx         # Single order view
├── Downloads.tsx            # Downloadable products
├── Addresses.tsx            # Billing & shipping addresses
├── AddressEdit.tsx          # Edit address form
├── AccountDetails.tsx       # Profile edit
├── PaymentMethods.tsx       # Saved payment methods
└── components/
    ├── AccountLayout.tsx    # Layout wrapper
    ├── AccountSidebar.tsx   # Navigation sidebar
    ├── AccountTabs.tsx      # Tab navigation
    ├── OrderCard.tsx        # Order list item
    └── DashboardWidget.tsx  # Dashboard widgets
```

### Features by Page

#### **Dashboard**
- Welcome message with user name
- Account statistics cards
- Recent orders (3-5 latest)
- Quick action buttons
- Recommended/recently viewed products

#### **Orders**
- Filterable order list (all, pending, completed, cancelled)
- Search by order number
- Pagination
- Order cards showing:
  - Order number, date, status
  - Total amount
  - Items count
  - Quick actions (view, reorder, track)

#### **Order Details**
- Full order information
- Order status timeline
- Items list with images
- Billing/shipping addresses
- Payment method
- Download invoice button
- Reorder button
- Track shipment (if available)

#### **Downloads**
- List of downloadable products
- Download buttons
- Expiry dates
- Download count/limits

#### **Addresses**
- Billing address card
- Shipping address card
- Edit/delete buttons
- Add new address
- Set as default

#### **Account Details**
- Edit profile form:
  - First name, last name
  - Display name
  - Email
  - Phone (optional)
  - Avatar upload (optional)
- Change password section
- Email preferences

#### **Payment Methods**
- Saved payment methods list
- Add new payment method
- Set default
- Delete payment method
- Secure display (last 4 digits)

---

## 3. API ENDPOINTS NEEDED

### Customer Endpoints
```php
// Account
GET    /woonoow/v1/account/dashboard
GET    /woonoow/v1/account/details
PUT    /woonoow/v1/account/details

// Orders
GET    /woonoow/v1/account/orders
GET    /woonoow/v1/account/orders/{id}
POST   /woonoow/v1/account/orders/{id}/reorder

// Downloads
GET    /woonoow/v1/account/downloads

// Addresses
GET    /woonoow/v1/account/addresses
GET    /woonoow/v1/account/addresses/{type}  // billing or shipping
PUT    /woonoow/v1/account/addresses/{type}
DELETE /woonoow/v1/account/addresses/{type}

// Payment Methods
GET    /woonoow/v1/account/payment-methods
POST   /woonoow/v1/account/payment-methods
DELETE /woonoow/v1/account/payment-methods/{id}
PUT    /woonoow/v1/account/payment-methods/{id}/default
```

### Admin Endpoints
```php
// Settings
GET    /woonoow/v1/appearance/pages/account
POST   /woonoow/v1/appearance/pages/account
```

---

## 4. BACKEND IMPLEMENTATION

### Controllers Needed
```
includes/Api/
├── AccountController.php      # Account details, dashboard
├── OrdersController.php        # Order management (already exists?)
├── DownloadsController.php     # Downloads management
├── AddressesController.php     # Address CRUD
└── PaymentMethodsController.php # Payment methods
```

### Database Considerations
- Use WooCommerce native tables
- Customer meta for preferences
- Order data from `wp_wc_orders` or `wp_posts`
- Downloads from WooCommerce downloads system

---

## 5. SETTINGS SCHEMA

### Default Settings
```json
{
  "pages": {
    "account": {
      "layout": {
        "style": "sidebar",
        "sidebar_position": "left",
        "mobile_menu": "bottom-nav",
        "card_style": "card"
      },
      "menu_items": [
        { "id": "dashboard", "label": "Dashboard", "enabled": true, "order": 1 },
        { "id": "orders", "label": "Orders", "enabled": true, "order": 2 },
        { "id": "downloads", "label": "Downloads", "enabled": true, "order": 3 },
        { "id": "addresses", "label": "Addresses", "enabled": true, "order": 4 },
        { "id": "account-details", "label": "Account Details", "enabled": true, "order": 5 },
        { "id": "payment-methods", "label": "Payment Methods", "enabled": true, "order": 6 },
        { "id": "logout", "label": "Logout", "enabled": true, "order": 7 }
      ],
      "dashboard_widgets": {
        "recent_orders": { "enabled": true, "count": 5 },
        "account_stats": { "enabled": true },
        "quick_actions": { "enabled": true },
        "recommended_products": { "enabled": false }
      },
      "elements": {
        "avatar": true,
        "welcome_message": true,
        "breadcrumbs": true
      },
      "labels": {
        "welcome_message": "Welcome back, {name}!",
        "dashboard_title": "My Account",
        "no_orders_message": "You haven't placed any orders yet."
      }
    }
  }
}
```

---

## 6. IMPLEMENTATION PHASES

### Phase 1: Foundation (Priority: HIGH)
1. Create admin settings page (`Account.tsx`)
2. Create backend controller (`AppearanceController.php` - add account section)
3. Create API endpoints for settings
4. Create basic account layout structure

### Phase 2: Core Pages (Priority: HIGH)
1. Dashboard page
2. Orders list page
3. Order details page
4. Account details/profile edit

### Phase 3: Additional Features (Priority: MEDIUM)
1. Addresses management
2. Downloads page
3. Payment methods

### Phase 4: Polish (Priority: LOW)
1. Dashboard widgets
2. Recommended products
3. Advanced filtering/search
4. Mobile optimizations

---

## 7. MOBILE CONSIDERATIONS

- Bottom navigation for mobile (like checkout)
- Collapsible sidebar on tablet
- Touch-friendly buttons
- Swipe gestures for order cards
- Responsive tables for order details

---

## 8. SECURITY CONSIDERATIONS

- Verify user authentication on all endpoints
- Check order ownership before displaying
- Sanitize all inputs
- Validate email changes
- Secure password change flow
- Rate limiting on sensitive operations

---

## 9. UX ENHANCEMENTS

- Loading states for all async operations
- Empty states with helpful CTAs
- Success/error toast notifications
- Confirmation dialogs for destructive actions
- Breadcrumb navigation
- Back buttons where appropriate
- Skeleton loaders

---

## 10. INTEGRATION POINTS

### With Existing Features
- Cart system (reorder functionality)
- Product pages (from order history)
- Checkout (saved addresses, payment methods)
- Email system (order notifications)

### With WooCommerce
- Native order system
- Customer data
- Download permissions
- Payment gateways

---

## NEXT STEPS

1. **Immediate**: Create admin settings page structure
2. **Then**: Implement basic API endpoints
3. **Then**: Build frontend layout and routing
4. **Finally**: Implement individual pages one by one
