# Arquitetura V2: Sistema de Navegação Dinâmica

Este documento detalha o funcionamento do novo sistema de navegação e registro de módulos da V2, focado em escalabilidade, produtividade e persistência de UX.

## 🏗️ 1. Registro de Módulos (ModuleProviders)

Cada módulo na V2 deve possuir um arquivo `ModuleProvider.php` em sua raiz. Este arquivo atua como o "RG" do módulo para o sistema.

### Por que esta abordagem?
- **Dados vs Apresentação**: As configurações são objetos de dados puros, desacoplados do HTML.
- **Contrato Estrito**: O uso da `ModuleProviderInterface` garante que nenhum módulo esqueça campos vitais.
- **Hierarquia Infinita**: Suporte nativo a sub-módulos (Nível 1 e 2) com controle de ícones e rotas.

### Exemplo de Implementação:
```php
class ModuleProvider implements ModuleProviderInterface {
    public function getConfig(): array {
        return [
            'title' => 'Notícias',
            'group' => 'CONTEUDO',
            'icon' => 'fa fa-newspaper-o',
            'active_pattern' => 'cms/noticias*',
            'subModulesLevel1' => [
                ['title' => 'Listagem', 'route' => 'v2.noticias.index', 'position' => 1]
            ]
        ];
    }
}
```

---

## 🧭 2. Sidebar Inteligente (O Motor)

A Sidebar V2 não é estática; ela é orquestrada por dois componentes centrais:

### A. SidebarComposer
Localizado em `app/V2/Core/ViewComposers/SidebarComposer.php`, ele faz o "Auto-Discovery" de todos os módulos.
- **Ordenação Alfabética**: Grupos e módulos são ordenados de A-Z automaticamente para consistência.
- **Agrupamento**: Organiza os módulos sob cabeçalhos lógicos (GERAL, SISTEMA, etc).

### B. Interface Dinâmica (`sidebar.blade.php`)
- **Busca Global**: Um campo de pesquisa que filtra títulos até o Nível 2 em tempo real.
- **Auto-Expansão**: Ao pesquisar um sub-item, a árvore de menus se abre automaticamente para mostrá-lo.
- **Animações Suaves**: Transições de `slideUp/Down` de 200ms integradas ao AdminLTE.

---

## 💾 3. Persistência de Estado (UX Memory)

Para melhorar a produtividade, a Sidebar lembra as preferências do usuário:
- **Tecnologia**: Utiliza `localStorage` (chave: `v2_sidebar_states`).
- **Comportamento**: Se você fechar o grupo "DESENVOLVIMENTO", ele permanecerá fechado mesmo após atualizar a página ou navegar entre módulos.
- **Isolamento**: Esta lógica é 100% Client-Side, não onerando o banco de dados nem a sessão do servidor.

---

## 🛠️ 4. Guia de Manutenção

- **Adicionar Novo Grupo**: Basta definir um novo valor na chave `'group'` de qualquer `ModuleProvider`. O `SidebarComposer` o criará automaticamente.
- **Ajustar Estética**: O CSS e JS estão centralizados no `@push` dentro de `resources/V2/cms/layouts/sidebar.blade.php`.
- **Debugging**: O motor de persistência loga eventos no console do navegador (`Sidebar V2: Engine carregada`).
