# CLAUDE.md — sargilla/flatlab4

## Compatibilidad
- Laravel: 10.x | PHP: >= 8.2
- Ref recomendada para L10: rama `master` / tag `v2.x`
- Predecesor legacy (Laravel 5.8): paquete distinto `sargilla/flatlab2` (repo separado), no una rama de este.

## Instalación (constraint composer)
```
"sargilla/flatlab4": "^2.0"   // requiere repo satis https://satis.papro.com.ar/
```

## Requiere
- php ^8.2, illuminate/support ^10.0
- laravel/ui ^4.2 (auth scaffolding — reemplaza `Route::auth()` del core)
- spatie/laravel-permission ^6.3, spatie/laravel-menu ^4.0
- yajra/laravel-datatables-oracle ^10.0 (listados server-side)
- sargilla/configuraciones ^2.0, sargilla/toastr ^2.0|^3.0
- creativeorange/gravatar ^1.0, intervention/image ^2.7, intervention/imagecache ^2.5

## Integración
- Namespace PSR-4: `Sargilla\Flatlab4\`
- Provider: `Sargilla\Flatlab4\Flatlab4ServiceProvider` (auto-discovery)
- Config publicable: `config('flatlab4')` — claves: `name`, `prefix`, `guestuser`, `gravatar`
- Vistas (namespace blade): `flatlab::...`, cargadas desde `resources/views/flatlab4/`
  - Layouts: `flatlab::layout`, `flatlab::layout_login` (mismos nombres que flatlab2)
  - Secciones: `main-content`, `breadcrumbs`, `header_title`, `scripts`, `htmlheader` (idénticas a flatlab2)
  - Helpers sin cambio: `flatlab::helpers.{modal,form-modal,toastr}`, `flatlab::errors.list`
- Menú: DB-driven (tabla `menus`, modelo `Flatlab4Menu`, `Composers/MenuComposer.php`). No se llama
  `Menu::` desde la app consumidora.
- DataTables: las pantallas propias del paquete (usuarios/roles/permisos) usan yajra `serverSide:true`.

## Notas de migración desde sargilla/flatlab2 (Laravel 5.8)
- **Partials renombrados** (prefijo `_`, carpetas aplanadas):
  - `flatlab::partials.htmlheader` → `flatlab::_htmlheader`
  - `flatlab::partials.sidebar` → `flatlab::_sidebar`
  - `flatlab::partials.mainheader` → `flatlab::_mainheader`
  - `flatlab::partials.login.social_login` → `flatlab::login.social_login`
  - `flatlab::partials.topbar.*` → `flatlab::topbar.*`
- **Config:** `config('flatlab.*')` → `config('flatlab4.*')`. Revisar todas las referencias PHP del
  proyecto consumidor (típicamente `routes/web.php` y `RedirectIfAuthenticated` middleware).
  ⚠️ Bug conocido: `layout.blade.php` de flatlab4 aún lee `config('flatlab.right-sidebar')` (sin el `4`) —
  parchear o publicar esa clave si el right sidebar no aparece.
- **Overrides vendor obsoletos:** si el proyecto consumidor tiene `resources/views/vendor/flatlab/` con
  copias publicadas de flatlab2, hay que **purgarlas y re-publicar** — pisan las vistas nuevas y rompen
  por los paths de partials renombrados.
- **Auth:** requiere `laravel/ui` en vez del `Route::auth()` core (removido en Laravel 8+). El paquete trae
  sus propias vistas `flatlab4/auth/*`.
- Los componentes Vue de negocio del proyecto consumidor (no del paquete) **no se ven afectados**: siguen
  siendo Vue 2 y viven fuera de flatlab4.

## Estado
✅ L10-ready
