@extends('layouts.app') @section('title', $labels['plural'].' — '.config('app.name')) {{-- Listagem de professores E de clientes. Um arquivo só, renderizado pelas duas telas, porque elas são a mesma tabela com rótulos diferentes. Duas cópias divergiriam na primeira correção feita de um lado só — e o bug apareceria numa tela apenas, que é o tipo mais caro de encontrar. Segue o PADRÃO DE LISTAGEM de users/index.blade.php: page-head → filtros no cabeçalho do card → tabela → paginação @param array $labels plural, singular, subtitle @param string $routes prefixo dos nomes de rota ('instructors'|'customers') --}} @section('content')

{{ $labels['plural'] }}

{{ $labels['subtitle'] }}

@can('create', App\Models\User::class) Novo {{ $labels['singular'] }} @endcan
@include('partials.status')
{{-- Só a busca é limpável. O recorte por perfil não aparece aqui porque não é um filtro: está na rota, e não há estado a limpar. --}}
@if (filled($search)) @endif
@if ($managesModalities ?? false) @endif @forelse ($members as $member) @if ($managesModalities ?? false) {{-- Modalidades como badges. `modalities` vem eager-loaded do controller (sem N+1). Sem nenhuma, um traço em vez de espaço vazio. --}} @endif @empty @endforelse
NomeModalidadesTelefone Situação Ações
{{ $member->name }} {{ $member->email }}
@forelse ($member->modalities as $modality) {{ $modality->name }} @empty @endforelse @if ($member->formattedPhone() !== '') {{-- O link discável usa só os dígitos; a máscara é para o olho humano. --}} {{ $member->formattedPhone() }} @else @endif @if ($member->active) Ativo @else Inativo @endif @include('partials.row-actions', [ 'label' => $member->name, 'editUrl' => auth()->user()->can('update', $member) ? route($routes.'.edit', $member) : null, 'deleteUrl' => auth()->user()->can('delete', $member) ? route($routes.'.destroy', $member) : null, ])
Nenhum {{ $labels['singular'] }} encontrado.
{{ $members->links() }}
@endsection