<%= render 'shared/flash' %>
<%= form_with(model: usuario, url: usuario.new_record? ? admin_usuarios_path : admin_usuario_path(usuario),
method: usuario.new_record? ? :post : :patch,
class: 'bg-[#1a1a1a] rounded-2xl border border-white/5 p-8 space-y-6') do |f| %>
<% if usuario.errors.any? %>
<%= pluralize(usuario.errors.count, 'erro', 'erros') %> encontrado<%= usuario.errors.count > 1 ? 's' : '' %>:
<% usuario.errors.full_messages.each do |msg| %>
<%= msg %>
<% end %>
<%# Nome %>
<%= f.label :nome, 'Nome completo', class: 'block text-sm font-medium text-gray-300 mb-1.5' %>
<%= f.text_field :nome,
class: 'w-full px-4 py-3 bg-[#0a0a0a] border border-white/10 rounded-xl text-white
placeholder-gray-600 focus:outline-none focus:border-[#f97316] focus:ring-1
focus:ring-[#f97316] transition-colors',
placeholder: 'João da Silva' %>
<%# TIPO DE CONTA x PERFIL DE ACESSO — são coisas diferentes:
• tipo de conta define COMO a pessoa entra e onde ela vive (motorista
entra por PIN e tem painel próprio);
• perfil de acesso define O QUE ela enxerga (Permissao::TODAS).
Antes este select se chamava "Perfil de acesso" e editava `role`.
Os dois só aparecem para quem pode alterar acesso — e nunca na própria
ficha, senão qualquer usuário se promoveria editando o próprio cadastro
(o controller também filtra os campos, não só a tela). %>
<% if pode_alterar_acesso? %>
<%= f.label :role, 'Tipo de conta', class: 'block text-sm font-medium text-gray-300 mb-1.5' %>
<%= f.select :role,
options_for_select(role_options_for_select, usuario.role),
{},
class: 'w-full px-4 py-3 bg-[#0a0a0a] border border-white/10 rounded-xl text-white
focus:outline-none focus:border-[#f97316] focus:ring-1 focus:ring-[#f97316]
transition-colors cursor-pointer' %>
<%= f.label :perfil_acesso_id, 'Perfil de acesso', class: 'block text-sm font-medium text-gray-300 mb-1.5' %>
<%= f.select :perfil_acesso_id,
options_from_collection_for_select(PerfilAcesso.ativos.ordenados, :id, :nome, usuario.perfil_acesso_id),
{ include_blank: 'Sem perfil (usa o padrão do tipo de conta)' },
class: 'w-full px-4 py-3 bg-[#0a0a0a] border border-white/10 rounded-xl text-white
focus:outline-none focus:border-[#f97316] focus:ring-1 focus:ring-[#f97316]
transition-colors cursor-pointer' %>
Define o que a pessoa enxerga.
<%= link_to 'Gerenciar perfis', admin_perfis_path, class: 'text-orange-500 hover:underline' %>
<% else %>
Tipo de conta
<%= usuario.role_label %>
Só quem administra usuários altera tipo de conta e perfil de acesso.
<% end %>
<%# Ativo toggle %>
<%= f.label :ativo, 'Usuário ativo', class: 'block text-sm font-medium text-gray-300' %>
Usuários inativos não conseguem fazer login
<%= f.check_box :ativo, class: 'sr-only peer' %>
PIN de acesso
<%= f.label :pin_code, 'PIN (4 dígitos)', class: 'block text-sm font-medium text-gray-300 mb-1.5' %>
<%= f.text_field :pin_code,
maxlength: 4,
pattern: '\d{4}',
inputmode: 'numeric',
class: 'w-full px-4 py-3 bg-[#0a0a0a] border border-white/10 rounded-xl text-white
placeholder-gray-600 focus:outline-none focus:border-[#f97316] focus:ring-1
focus:ring-[#f97316] transition-colors text-center text-2xl tracking-[0.5em] font-bold',
placeholder: '0000' %>
Deve ser único entre todos os motoristas
<%= link_to 'Cancelar', admin_usuarios_path,
class: 'px-6 py-3 text-gray-400 hover:text-white border border-white/10
hover:border-white/20 rounded-xl transition-colors' %>
<%= f.submit usuario.new_record? ? 'Criar Usuário' : 'Salvar Alterações',
class: 'px-8 py-3 bg-[#f97316] hover:bg-orange-500 text-white font-semibold
rounded-xl transition-colors cursor-pointer min-h-[48px]' %>