# Documentazione Sidebar Modulare NetGesCon

## Struttura Directory
```
resources/views/components/menu/
├── sidebar.blade.php              # File principale sidebar
└── sections/                      # Componenti modulari
    ├── header.blade.php           # Header con logo, data, news
    ├── dashboard.blade.php        # Menu Dashboard
    ├── stabili.blade.php          # Menu Stabili (con sottomenu)
    ├── condomini.blade.php        # Menu Condomini (con sottomenu)
    ├── contabilita.blade.php      # Menu Contabilità (con sottomenu)
    ├── fiscale.blade.php          # Menu Fiscale (con sottomenu)
    ├── menu-semplici.blade.php    # Menu senza sottomenu
    ├── footer.blade.php           # Footer con info utente e app
    ├── menu-helpers.blade.php     # Helper per gestione permessi
    └── permissions.blade.php      # Configurazione permessi
```

## Sistema Permessi

### Ruoli Definiti
- **super_admin**: Accesso completo a tutto
- **admin**: Accesso quasi completo
- **amministratore**: Gestione condomini standard
- **collaboratore**: Operazioni base
- **ragioniere**: Solo sezioni economiche
- **condomino**: Solo comunicazioni e tickets
- **guest**: Nessun accesso

### Funzioni Helper

#### `canUserAccessMenu($menuSection, $userRole = null)`
Verifica se l'utente può accedere a una specifica sezione.

```php
@if(canUserAccessMenu('stabili'))
    @include('components.menu.sections.stabili')
@endif
```

#### `canUserAccessAnyMenu($menuSections, $userRole = null)`
Verifica se l'utente può accedere ad almeno una delle sezioni specificate.

```php
@if(canUserAccessAnyMenu(['contabilita', 'fiscale']))
    <div>Sezione Economica</div>
@endif
```

#### `hasMinimumRole($requiredRole, $userRole = null)`
Verifica se l'utente ha un ruolo minimo richiesto.

```php
@if(hasMinimumRole('amministratore'))
    <div>Solo amministratori e superiori</div>
@endif
```

#### `getCurrentUserRole()`
Ottiene il ruolo dell'utente corrente.

```php
<span>Ruolo: {{ ucfirst(getCurrentUserRole()) }}</span>
```

## Sezioni Menu Disponibili

### Sempre Incluse
- **header**: Logo, data/ora, news ticker
- **footer**: Info utente e applicazione

### Con Controllo Permessi
- **dashboard**: Dashboard principale
- **stabili**: Gestione stabili e unità immobiliari
- **condomini**: Gestione anagrafica condomini
- **contabilita**: Bilanci, movimenti, contabilità
- **fiscale**: Adempimenti fiscali, F24, dichiarazioni
- **assemblee**: Gestione assemblee condominiali
- **risorse-economiche**: Gestione risorse economiche
- **comunicazioni**: Sistema comunicazioni
- **affitti**: Gestione contratti affitto
- **pratiche**: Gestione pratiche burocratiche
- **consumi**: Gestione consumi utenze
- **tickets**: Sistema ticket supporto

## Personalizzazione

### Aggiungere Nuova Sezione
1. Creare file in `sections/nuova-sezione.blade.php`
2. Aggiungere la sezione ai permessi in `menu-helpers.blade.php`
3. Includere nel `sidebar.blade.php` con controllo permessi:

```php
@if(canUserAccessMenu('nuova-sezione'))
    @include('components.menu.sections.nuova-sezione')
@endif
```

### Modificare Permessi
Editare l'array `$permissions` in `menu-helpers.blade.php`:

```php
$permissions = [
    'nuovo_ruolo' => [
        'dashboard', 'sezione1', 'sezione2'
    ],
    // ...
];
```

## Stili CSS

### Variabili Principali
- Colore primario: `#fbbf24` (giallo NetGesCon)
- Colore bordi: `#f59e0b`
- Transizioni: `0.2s ease`

### Dark Mode
Supporto completo per modalità scura con classe `.dark`.

### Responsive
- Desktop: Sidebar fissa laterale
- Mobile: Sidebar collassabile con overlay

## JavaScript Incluso

### Funzionalità Header
- Aggiornamento automatico data/ora
- News ticker con contenuti dinamici
- Link a pagina news

### Funzionalità Menu
- Toggle automatico sottomenu
- Evidenziazione menu attivo
- Gestione stati espansi/collassati

### Funzionalità Footer
- Links supporto e contatti
- Apertura sito web

## Note Implementazione

1. **Cache Laravel**: Dopo modifiche eseguire `php artisan optimize:clear`
2. **Permessi**: Il sistema è pronto per integrazione con Auth Laravel
3. **Ruoli**: Attualmente usa ruolo fisso, modificare per utilizzare `auth()->user()->role`
4. **Responsive**: Testare su dispositivi mobili
5. **Accessibilità**: Tutti i menu supportano navigazione da tastiera

## Roadmap Future

- [ ] Integrazione con sistema autenticazione reale
- [ ] Gestione permessi granulari per singole voci
- [ ] Cache permessi per performance
- [ ] Personalizzazione sidebar per utente
- [ ] Temi personalizzabili
- [ ] Menu contestuali
- [ ] Breadcrumb automatici
