# MyUIbrix - Režim náhledu / Preview Mode

## 🔒 Koncept izolace náhledu

MyUIbrix nyní odděluje **režim úprav (náhled)** od **produkčního zobrazení**.

---

## 🎯 Jak to funguje

### **Před uložením:**
- ✅ Změny vidíte **pouze VY** (admin v režimu úprav)
- ❌ Běžní návštěvníci webu změny **NEVIDÍ**
- 🔒 Preview mode je izolován od produkce

### **Po kliknutí "Publikovat":**
- ✅ Změny se uloží do databáze
- ✅ Stránka se automaticky obnoví
- ✅ Změny jsou **viditelné všem** návštěvníkům
- ✅ Produkční web používá nové nastavení

---

## 🛠️ Technická implementace

### 1. **Preview Events (previewMode flag)**

Všechny události pro živý náhled nyní obsahují `previewMode: true`:

```typescript
window.dispatchEvent(new CustomEvent('myuibrix-change', {
  detail: { 
    elementName, 
    variant, 
    visible, 
    previewMode: true  // ← Klíčový příznak!
  }
}));
```

**Události jsou odesílány POUZE když:**
- `isEditing === true` (editor je aktivní)
- Admin má zapnutý režim úprav

### 2. **Filtrování v hooks**

Hook `usePageElementConfig` ignoruje preview události pokud nejsou v preview mode:

```typescript
const handleMyUIbrixChange = ((event: CustomEvent) => {
  const { elementName, variant, visible, previewMode } = event.detail;
  
  // Aplikuj změny POUZE v preview mode
  if (previewMode) {
    setConfigs(prev => ({ ...prev, [elementName]: variant }));
    setVisibility(prev => ({ ...prev, [elementName]: visible }));
  }
}) as EventListener;
```

### 3. **Produkční reload po uložení**

Po úspěšném uložení se stránka automaticky obnoví:

```typescript
await batchUpdatePageElementConfigs(configsToSave);

toast({
  title: 'Změny úspěšně uloženy!',
  description: 'Změny jsou nyní viditelné na produkci.',
  status: 'success',
});

// Reload aby se načetla nová konfigurace z databáze
setTimeout(() => {
  window.location.reload();
}, 1500);
```

---

## 📋 Workflow pro administrátora

### Krok 1: Aktivace editoru
```
1. Přejděte na homepage
2. Klikněte na fialové tlačítko ✏️ (pravý dolní roh)
   NEBO použijte: /?myuibrix=edit
```

### Krok 2: Úpravy (Preview Mode)
```
✓ Vidíte horní lištu s textem "🔒 REŽIM NÁHLEDU"
✓ Pod tím text: "Změny vidíte pouze vy"
✓ Klikejte na elementy, měňte varianty
✓ Změny se zobrazují OKAMŽITĚ, ale jen VÁM
```

### Krok 3: Publikování
```
1. Klikněte "Publikovat" v horní liště
2. Zobrazí se: "Změny úspěšně uloženy!"
3. Stránka se automaticky obnoví (1.5s)
4. ✅ Změny jsou nyní viditelné všem
```

---

## 🔍 Co vidí různí uživatelé

| Uživatel | Co vidí během editace | Co vidí po uložení |
|----------|----------------------|-------------------|
| **Admin (editor zapnutý)** | ✅ Preview změn v reálném čase | ✅ Produkční verze po reloadu |
| **Admin (editor vypnutý)** | ❌ Pouze produkční verze | ✅ Produkční verze |
| **Běžný návštěvník** | ❌ Pouze produkční verze | ✅ Produkční verze |

---

## 🎨 Vizuální indikátory

### V režimu úprav uvidíte:

**1. Horní lišta:**
```
⚽ ELEMENTOR  |  🔒 REŽIM NÁHLEDU  |  Změny vidíte pouze vy
```

**2. Oranžový badge:**
- Bliká (animation pulse)
- Text: "🔒 REŽIM NÁHLEDU"
- Připomíná, že jste v preview mode

**3. Modrá ohraničení:**
- Elementy při najetí myší
- Vybraný element má modrý overlay

---

## 📁 Změněné soubory

### Frontend:
1. **`frontend/src/components/editor/MyUIbrixEditor.tsx`**
   - Přidán `previewMode: true` do všech událostí
   - Události se odesílají pouze když `isEditing === true`
   - Přidán vizuální indikátor "REŽIM NÁHLEDU"
   - Reload stránky po uložení

2. **`frontend/src/hooks/usePageElementConfig.ts`**
   - Filtrování událostí podle `previewMode` příznaku
   - Ignoruje preview události v produkci

---

## ⚠️ Důležité poznámky

### ✅ Výhody:
- Bezpečné testování změn před publikací
- Žádné nechtěné změny na produkci
- Jasné oddělení náhledu a produkce
- Lepší UX pro administrátory

### 🔄 Reload po uložení:
- **Důvod:** Zajistí, že se načte nová konfigurace z databáze
- **Trvání:** 1.5 sekundy delay (čas na zobrazení toastu)
- **Alternativa:** Mohli bychom použít SSE/WebSocket pro live reload bez refresh

### 🎯 Best Practices:
1. **Vždy testujte změny** před publikováním
2. **Klikněte na různé elementy** abyste viděli jak vypadají
3. **Zkontrolujte mobile view** pomocí viewport switcher
4. **Publikujte až když jste spokojeni** s výsledkem

---

## 🔧 Řešení problémů

### Problem: Změny se nezobrazují po uložení
**Řešení:** 
- Zkontrolujte, že se stránka automaticky obnovila
- Pokud ne, manuálně obnovte (F5)
- Vyčistěte cache prohlížeče

### Problem: Vidím změny i když nejsem v editoru
**Řešení:**
- Ujistěte se, že jste ukončili režim úprav (ESC nebo ✕)
- Obnovte stránku pro reset

### Problem: Preview se nenahrává
**Řešení:**
- Zkontrolujte konzoli prohlížeče (F12)
- Ujistěte se, že backend běží
- Zkontrolujte endpoint: `/api/v1/page-elements?page_type=homepage`

---

## 🚀 Budoucí vylepšení

Možná rozšíření:
1. **Historii změn** - Undo/Redo funkce
2. **Verzování** - Ukládání verzí konfigurací
3. **Plánované publikování** - Nastavit čas pro auto-publikaci
4. **Multi-user preview** - Sdílení preview URL s jinými adminy
5. **A/B testování** - Testování více variant najednou

---

**Implementováno:** 14. října 2025  
**Verze:** 2.0.0  
**Status:** ✅ Production Ready

---

## 📞 Kontakt

Pokud máte otázky nebo návrhy na vylepšení:
- Otevřete issue na GitHubu
- Kontaktujte vývojový tým
- Přečtěte si `MYUIBRIX_IMPROVEMENTS.md` pro více informací
