<%# app/views/admin/perfis_acesso/_form.html.erb O ADM marca o que o perfil enxerga. As caixas vêm agrupadas por área do catálogo (Permissao.por_grupo) e cada uma traz a descrição do EFEITO real — "Registrar pagamento" sem a linha de baixo não diz se inclui estornar. %> <%= form_with model: [:admin, perfil], url: (perfil.persisted? ? admin_perfil_path(perfil) : admin_perfis_path), data: { turbo: false }, class: 'space-y-6' do |f| %> <% if perfil.errors.any? %>

<%= icone :erro, cor: 'text-red-400' %> Não foi possível salvar

<% end %> <%# ── Identificação ──────────────────────────────────── %>
<%= f.label :nome, 'Nome do perfil', class: 'block text-sm font-medium text-gray-300 mb-1.5' %> <%= f.text_field :nome, required: true, placeholder: 'Ex.: Gerente sem configurações', class: 'w-full px-4 py-3 bg-[#0a0a0a] border border-white/10 rounded-xl text-white focus:outline-none focus:border-[#f97316]' %>
<%= f.label :descricao, 'Para que serve', class: 'block text-sm font-medium text-gray-300 mb-1.5' %> <%= f.text_field :descricao, placeholder: 'Quem usa este perfil e por quê', class: 'w-full px-4 py-3 bg-[#0a0a0a] border border-white/10 rounded-xl text-white focus:outline-none focus:border-[#f97316]' %>
<%= f.label :ativo, 'Perfil ativo', class: 'block text-sm font-medium text-gray-300' %>

Desativado, quem estiver nele perde os acessos marcados aqui.

<%= f.check_box :ativo, class: 'w-5 h-5 accent-orange-500' %>
<% if perfil.sistema? %>

<%= icone :alerta, cor: 'text-amber-400' %> Perfil que vem com o sistema: pode ser editado e desativado, mas não excluído.

<% end %>
<%# ── Permissões ───────────────────────────────────────── O campo vazio antes das caixas é obrigatório: sem ele, desmarcar TUDO faria o parâmetro sumir do POST e o controller entenderia "não mexeu". %> <%= hidden_field_tag 'perfil_acesso[permissoes][]', '' %> <% marcadas = perfil.permissoes_validas %> <% Permissao.por_grupo.each do |grupo, itens| %>

<%= Permissao.grupo_label(grupo) %>

<%= itens.count { |chave, _| marcadas.include?(chave) } %> de <%= itens.size %>
<% itens.each do |chave, cfg| %> <% end %>
<% end %>
<%= f.submit perfil.persisted? ? 'Salvar perfil' : 'Criar perfil', class: 'bg-orange-500 hover:bg-orange-600 text-black font-bold px-6 py-3.5 rounded-xl min-h-[48px] cursor-pointer' %> <%= link_to 'Cancelar', admin_perfis_path, class: 'px-5 py-3.5 text-gray-300 hover:text-white border border-[#2a2a2a] rounded-xl min-h-[48px] flex items-center' %>
<% end %>