towerops/lib/towerops_web/live/admin/user_live/index.html.heex
Graham McIntire 5a7cdc7138 refactor: apply custom color palette across entire codebase
- Replace gray->cool-steel, blue/indigo->cerulean, red->sweet-salmon, yellow/amber->wheat
- Dark sidebar: sidebar/footer use cool-steel-800 bg, text lightened for contrast
- ~11,600 color replacements across ~99 files
- Update tests for new color class names
2026-06-23 10:58:48 -05:00

45 lines
1.9 KiB
Text

<Layouts.admin flash={@flash} timezone={@timezone}>
<div class="space-y-6">
<div>
<h1 class="text-2xl font-bold text-cool-steel-900 dark:text-white">{t("All Users")}</h1>
<p class="text-cool-steel-600 dark:text-cool-steel-400">Manage system users</p>
</div>
<div class="bg-white dark:bg-cool-steel-800/50 rounded-lg border border-cool-steel-200 dark:border-white/10">
<.table id="users" rows={@users}>
<:col :let={user} label={t("Email")}>{user.email}</:col>
<:col :let={user} label={t("Superuser")}>
{if user.is_superuser, do: "Yes", else: "No"}
</:col>
<:col :let={user} label={t("Organizations")}>{length(user.organizations)}</:col>
<:col :let={user} label={t("Devices")}>{user.device_count || 0}</:col>
<:col :let={user} label={t("Joined")}>
{ToweropsWeb.TimeHelpers.format_date(user.inserted_at, @timezone)}
</:col>
<:col :let={user} label="">
<div class="flex gap-2">
<form action={~p"/admin/impersonate/#{user.id}"} method="post">
<input type="hidden" name="_csrf_token" value={Phoenix.Controller.get_csrf_token()} />
<button
type="submit"
disabled={user.id == @current_scope.user.id}
class="text-sm text-cerulean-600 dark:text-cerulean-400 hover:text-cerulean-800 dark:hover:text-cerulean-300 disabled:text-cool-steel-400 disabled:cursor-not-allowed"
>
{t("Impersonate")}
</button>
</form>
<.button
phx-click="delete_user"
phx-value-id={user.id}
data-confirm={t("Are you sure you want to delete this user?")}
disabled={user.is_superuser}
variant="danger"
>
{t("Delete")}
</.button>
</div>
</:col>
</.table>
</div>
</div>
</Layouts.admin>