# Tjedni meni

Funkcionalnost za prikaz tjednog jelovnika kao slike na javnoj stranici i upravljanje sadržajem putem admin panela.

## Pohrana podataka

**Nema baze podataka.** Konfiguracija se čuva u JSON datoteci:

```
storage/app/tjedni-meni.json
```

Struktura JSON-a:

```json
{
    "enabled": true,
    "image": "naziv-slike.jpg",
    "title": "Tjedni meni",
    "subtitle": "21. - 27. travnja 2026."
}
```

Slike se pohranjuju u:

```
storage/app/public/images/tjedni-meni/
```

Dostupne su putem `storage/images/tjedni-meni/{naziv-slike}`.

## Rute

| Metoda | URL | Naziv rute | Opis |
|--------|-----|-----------|------|
| GET | `/tjedni-meni` | `tjedni-meni` | Javna stranica |
| GET | `/admin/tjedni-meni` | `tjedni-meni.index` | Admin upravljanje |

Admin ruta je zaštićena `auth` middlewareom (unutar admin grupe u `routes/web.php`).

## Datoteke

| Datoteka | Opis |
|----------|------|
| `app/Livewire/Admin/TjedniMeniManager.php` | Livewire komponenta za admin |
| `resources/views/livewire/admin/tjedni-meni-manager.blade.php` | View Livewire komponente |
| `resources/views/admin/tjedni-meni/index.blade.php` | Admin stranica (embeds Livewire) |
| `resources/views/pages/tjedni-meni.blade.php` | Javna stranica |

## Admin komponenta (TjedniMeniManager)

Livewire komponenta s `WithFileUploads` traitom.

### Polja

| Polje | Tip | Opis |
|-------|-----|------|
| `enabled` | `bool` | Uključen/isključen prikaz |
| `title` | `string` | Naslov (obavezno, max 100 znakova) |
| `subtitle` | `string` | Podnaslov, npr. raspon tjedna (opcionalno, max 100) |
| `currentImage` | `string` | Naziv trenutne slike |
| `newImage` | `mixed` | Upload nove slike (max 5 MB, JPG/PNG/WebP) |

### Logika

- `mount()` — učitava JSON konfiguraciju u Livewire propertije
- `save()` — validira, sprema novu sliku (ako postoji) sa slugificiranim imenom, upisuje JSON
- `loadConfig()` / `saveConfig()` — čitanje i pisanje `tjedni-meni.json`
- Nakon uspješnog spreme dispatcha event `tjedni-meni-saved` kojeg Alpine.js hvata i prikazuje success alert 4 sekunde

Svaka promjena slike i svako spremanje logira se u Laravel log (`Log::info`).

## Javna stranica

Blade direktno čita JSON iz `storage/app/tjedni-meni.json` (ne koristi Livewire).

**Ako je `enabled = true` i `image` nije prazan** — prikazuje se:
- Naslov i podnaslov
- Slika punom širinom (col-md-8, centrirana)
- 3 info boxova ispod (Svježe pripravljeno / Naručite odmah / Kuhano s ljubavlju)

**Ako je `enabled = false` ili nema slike** — prikazuje se poruka "Tjedni meni je u pripremi" s brojem telefona `091 9576 395`.

## Navigacija

Tjedni meni je vidljiv u headeru (`resources/views/partials/bistro/header.blade.php`):
- Javni link u glavnoj navigaciji
- Admin link u admin dropdownu

## Dodavanje/izmjena tjednog menija (upute za korisnika)

1. Idi na `/admin/tjedni-meni`
2. Postavi status na **Uključen**
3. Unesi naslov (npr. `Tjedni meni`) i podnaslov s rasponom tjedna
4. Upload slike menija (preporučena širina min. 800px, max 5 MB)
5. Klikni **Spremi**

Za skrivanje menija (npr. između tjedana) — postavi status na **Isključen** i spremi, bez potrebe za brisanjem slike.
