# Elementor-Style Visual Editor

## 🎨 Overview

The Elementor-Style Visual Editor brings WordPress Elementor-like page building capabilities to your football club website. Edit your homepage visually with live element highlighting, drag-free controls, and professional styling options.

## ✨ Key Features

### Visual Editing Mode
- **Live Element Highlighting**: Hover over any element to see it highlighted with a blue dashed border
- **Element Badges**: Click on element badges to instantly open their settings
- **Selected Element**: Active element shows a solid blue border with semi-transparent overlay
- **No Page Reload**: Changes preview live (refresh to see final result)

### Professional Controls
- **Left Control Panel**: Quick access toolbar with edit mode toggle, undo/redo, device preview, and save
- **Right Settings Drawer**: Comprehensive element configuration panel
- **Search Elements**: Quickly find the element you want to edit
- **Template Import/Export**: Save and reuse your configurations

### Advanced Features
- **Undo/Redo History**: Full editing history with navigation
- **Device Preview**: Switch between Desktop, Tablet, and Mobile views
- **Template Management**: Export configurations as JSON and import them later
- **Batch Save**: All changes saved in one operation

## 🚀 How to Use

### Entering Edit Mode

1. **Login** as administrator
2. **Navigate** to the homepage
3. **Click** the purple edit button in the bottom-left control panel
4. **Watch** as all editable elements get highlighted with badges

### Editing Elements

**Method 1: Click Element Badge**
- Hover over any element (header, hero, news, etc.)
- Click the element name badge that appears
- Settings drawer opens automatically

**Method 2: Use Settings Panel**
- Click the settings (gear) icon in the left control panel
- Browse or search for elements in the "Elements" tab
- Click on an element to expand its settings

### Configuring Variants

1. **Select Element**: Click on the element or find it in the panel
2. **Choose Variant**: Select from available style variants in dropdown
3. **View Description**: Each variant shows a description below
4. **See Changes**: Element updates immediately in the preview

### Saving Changes

1. **Make Changes**: Edit multiple elements as needed
2. **Review**: Check the orange "unsaved changes" badge
3. **Click Save**: Green save button in left panel or settings tab
4. **Wait**: Page automatically refreshes to apply changes

## 📐 Control Panel Breakdown

### Left Floating Panel (Bottom-Left)

```
┌────────────┐
│  👁️ / ✏️   │ ← Edit Mode Toggle
├────────────┤
│    ⚙️      │ ← Settings Drawer
│    ↶      │ ← Undo
│    ↷      │ ← Redo
├────────────┤
│   🖥️ / 📱  │ ← Device Preview
├────────────┤
│    💾      │ ← Save Changes
└────────────┘
```

### Right Settings Drawer

**Elements Tab**:
- Search bar for quick element finding
- Accordion list of all editable elements
- Current variant shown below element name
- Expand to see variant selector and description

**Settings Tab**:
- Page information
- History controls (undo/redo with count)
- Save button with change indicator
- Template export/import buttons

## 🎯 Available Elements & Variants

### Header
Visual style of the top header/logo area

- **Unified**: Classic horizontal header with logo and text
- **Edge**: Modern centered header with gradient background
- **Minimal**: Clean minimal centered header
- **Modern**: Bold header with accent colors and shadow

### Hero
Main featured content section

- **Grid**: 3-column grid (1 large + 2 small cards)
- **Swiper**: Swipeable carousel slider
- **Swiper Full**: Full-width hero carousel
- **Edge**: Dramatic full-screen hero from Edge style

### News
Article/blog listing section

- **Grid**: Card grid layout
- **Scroller**: Horizontal scrolling cards
- **List**: Traditional vertical list
- **Magazine**: Magazine-style with categories

### Matches
Match display section

- **Compact**: Minimal match cards
- **Expanded**: Detailed match information with stats
- **Timeline**: Timeline view of fixtures

### Sponsors
Sponsor logos section

- **Grid**: Grid with title sponsor
- **Slider**: Infinite scrolling slider
- **Scroller**: Horizontal scroller
- **Pyramid**: Pyramid/tiered layout

## ⌨️ Keyboard Shortcuts

| Shortcut | Action |
|----------|--------|
| `Ctrl/Cmd + Z` | Undo |
| `Ctrl/Cmd + Y` | Redo |
| `Ctrl/Cmd + S` | Save Changes |
| `Esc` | Close Settings Drawer |

## 💡 Pro Tips

### Fast Editing Workflow

1. **Enter edit mode** once
2. **Click element badges** directly (faster than using panel)
3. **Make all changes** before saving
4. **Export template** for backup before major changes
5. **Save once** to apply all changes

### Best Practices

- **Preview Before Save**: Check all changes in different device views
- **Use Undo/Redo**: Don't hesitate to experiment, you can always undo
- **Export Templates**: Save successful configurations as templates
- **Test Mobile**: Always check mobile device preview before saving
- **Batch Changes**: Edit multiple elements in one session for efficiency

### Element Selection Tips

- **Header**: First impression matters - choose based on brand identity
- **Hero**: Drive engagement - swiper for content variety, grid for stability
- **News**: Match visitor behavior - grid for scanning, scroller for browsing
- **Matches**: Consider info density - compact for many matches, expanded for detail
- **Sponsors**: Balance visibility - grid for fewer sponsors, slider for many

## 🔧 Advanced Usage

### Template Management

**Export Template**:
1. Configure all elements as desired
2. Click "Export" button in drawer header
3. JSON file downloads with all configurations
4. Save for backup or sharing

**Import Template**:
1. Click "Import" button in drawer header
2. Select previously exported JSON file
3. All configurations apply immediately
4. Review and save to persist

### History Management

- **View Count**: Settings tab shows "X / Y changes"
- **Navigate**: Use undo/redo buttons or keyboard
- **Limit**: Last 50 changes stored
- **Reset**: Save to clear history

### Device Preview

**Desktop View** (default):
- Full-width preview
- All elements visible
- No overlay

**Tablet View**:
- 768px viewport simulation
- Dark overlay on sides
- Restricted width preview

**Mobile View**:
- 375px viewport simulation
- Dark overlay on sides
- Mobile-optimized preview

## 🐛 Troubleshooting

### Element Not Highlighting

**Problem**: Element doesn't show border/badge on hover

**Solutions**:
- Ensure edit mode is ON (purple button pressed)
- Check element has `data-element` attribute
- Refresh page if overlays disappeared

### Changes Not Saving

**Problem**: Save button doesn't work or changes lost

**Solutions**:
- Check browser console for errors
- Verify you're logged in as admin
- Try saving one element at a time
- Export template as backup, then try again

### Preview Not Updating

**Problem**: Changes don't show in preview

**Solutions**:
- Some changes need page refresh to see
- Try toggling device preview
- Click save to apply changes permanently

### Can't Find Element

**Problem**: Element not in the list

**Solutions**:
- Use search bar to filter
- Check if element is wrapped with `EditableElement`
- Verify element name in `ELEMENT_VARIANTS`

## 🎓 For Developers

### Adding Editable Elements

Wrap any section with `EditableElement`:

```tsx
import EditableElement from '../components/editor/EditableElement';

<EditableElement elementName="myElement">
  <div>Your content here</div>
</EditableElement>
```

### Defining Variants

Add to `services/pageElements.ts`:

```typescript
export const ELEMENT_VARIANTS: Record<string, ElementVariant[]> = {
  myElement: [
    { 
      value: 'variant1', 
      label: 'Variant 1', 
      description: 'Clean and simple layout' 
    },
    { 
      value: 'variant2', 
      label: 'Variant 2', 
      description: 'Bold and colorful design' 
    },
  ],
};
```

### Using Variant in Component

```tsx
const { getVariant } = useAllPageElementConfigs('homepage');
const myVariant = getVariant('myElement', 'variant1');

// Render based on variant
{myVariant === 'variant1' && <Variant1Component />}
{myVariant === 'variant2' && <Variant2Component />}
```

## 🎉 Comparison with WordPress Elementor

| Feature | Elementor | Our Editor | Notes |
|---------|-----------|------------|-------|
| Visual Editing | ✅ | ✅ | Live element highlighting |
| Drag & Drop | ✅ | ❌ | Not needed for variant switching |
| Live Preview | ✅ | ⚠️ | Needs refresh for full preview |
| Undo/Redo | ✅ | ✅ | Full history support |
| Device Preview | ✅ | ✅ | Desktop/Tablet/Mobile |
| Template Library | ✅ | ✅ | Export/Import JSON |
| Advanced Styling | ✅ | 🔄 | Coming soon with AdvancedStyleControls |
| Widget Library | ✅ | ⚠️ | Predefined variants instead |
| Responsive Editing | ✅ | 🔄 | Per-device settings planned |
| Custom CSS | ✅ | 🔄 | Planned feature |

✅ = Fully implemented  
⚠️ = Partially implemented  
❌ = Not implemented  
🔄 = Planned

## 📚 Related Documentation

- `VISUAL_ELEMENT_EDITOR.md` - Technical implementation details
- `QUICK_START_VISUAL_EDITOR.md` - Quick start guide
- `NAVIGATION_SYSTEM.md` - Navigation configuration
- `README.md` - General documentation

## 🆘 Support

For issues or questions:
1. Check this documentation
2. Review browser console for errors
3. Test in different browser
4. Check `page_element_configs` database table
5. Review component source code

---

**Version**: 2.0  
**Last Updated**: 2025-01-13  
**Compatibility**: React 18+, Chakra UI 2+
