<.header>
{gettext("Listing Roles")}
<:subtitle>
{gettext("Manage user roles and their permission sets.")}
<:actions>
<%= if can?(@current_user, :create, Mv.Authorization.Role) do %>
<.button variant="primary" navigate={~p"/admin/roles/new"}>
<.icon name="hero-plus" /> {gettext("New Role")}
<% end %>
<.table
id="roles"
rows={@roles}
row_id={fn role -> "role-#{role.id}" end}
row_click={fn role -> JS.navigate(~p"/admin/roles/#{role}") end}
row_tooltip={gettext("Click for role details")}
>
<:col :let={role} label={gettext("Name")}>
{role.name}
<.badge :if={role.is_system_role} variant="warning" size="sm">
{gettext("System Role")}
<:col :let={role} label={gettext("Description")}>
<%= if role.description do %>
{role.description}
<% else %>
{gettext("No description")}
<% end %>
<:col :let={role} label={gettext("Permission Set")}>
<.badge variant={permission_set_badge_variant(role.permission_set_name)} size="sm">
{role.permission_set_name}
<:col :let={role} label={gettext("Type")}>
<.badge :if={role.is_system_role} variant="warning" size="sm">
{gettext("System")}
<.badge :if={!role.is_system_role} variant="neutral" size="sm">
{gettext("Custom")}
<:col :let={role} label={gettext("Users")}>
<.badge variant="neutral">{get_user_count(role, @user_counts)}