<.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_click={fn role -> JS.navigate(~p"/admin/roles/#{role}") end}
>
<:col :let={role} label={gettext("Name")}>
{role.name}
<%= if role.is_system_role do %>
{gettext("System Role")}
<% end %>
<:col :let={role} label={gettext("Description")}>
<%= if role.description do %>
{role.description}
<% else %>
{gettext("No description")}
<% end %>
<:col :let={role} label={gettext("Permission Set")}>
{role.permission_set_name}
<:col :let={role} label={gettext("Type")}>
<%= if role.is_system_role do %>
{gettext("System")}
<% else %>
{gettext("Custom")}
<% end %>
<:col :let={role} label={gettext("Users")}>
{get_user_count(role, @user_counts)}
<:action :let={role}>
<.link navigate={~p"/admin/roles/#{role}"}>{gettext("Show")}
<%= if can?(@current_user, :update, Mv.Authorization.Role) do %>
<.link navigate={~p"/admin/roles/#{role}/edit"} class="btn btn-ghost btn-sm">
<.icon name="hero-pencil" class="size-4" />
{gettext("Edit")}
<% end %>
<:action :let={role}>
<%= if can?(@current_user, :destroy, Mv.Authorization.Role) and not role.is_system_role do %>
<.link
phx-click={JS.push("delete", value: %{id: role.id}) |> hide("#row-#{role.id}")}
data-confirm={gettext("Are you sure?")}
class="btn btn-ghost btn-sm text-error"
>
<.icon name="hero-trash" class="size-4" />
{gettext("Delete")}
<% else %>
<% end %>