*/ public function share(Request $request): array { return [ ...parent::share($request), 'name' => config('app.name'), 'auth' => [ 'user' => $request->user(), ], 'flash' => [ 'success' => fn () => $request->session()->get('success'), // Não partilhar flash.error quando há erros de validação na sessão: // os erros de campo são tratados pelo Inertia diretamente via form.errors // e devem aparecer abaixo dos campos, não como toast global. 'error' => fn () => $request->session()->has('errors') ? null : $request->session()->get('error'), ], 'can' => [ 'administer' => fn (): bool => $request->user()?->can('administer') ?? false, 'approveReservations' => fn (): bool => $request->user()?->can('approve-reservations') ?? false, 'operateInventory' => fn (): bool => $request->user()?->can('operate-inventory') ?? false, 'viewGlobalCalendar' => fn (): bool => $request->user()?->can('view-global-calendar') ?? false, 'viewReports' => fn (): bool => $request->user()?->can('view-reports') ?? false, 'viewAudit' => fn (): bool => $request->user()?->can('view-audit') ?? false, ], 'unreadNotifications' => fn (): int => $request->user()?->unreadNotifications()->count() ?? 0, 'sidebarOpen' => ! $request->hasCookie('sidebar_state') || $request->cookie('sidebar_state') === 'true', ]; } }