From 2a6e4b9ae583d92cc5926ceb345a06a2d144ddf4 Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Tue, 13 Oct 2026 15:00:59 -0400 Subject: [PATCH] fix(web): admin users cards redesigned for mobile readability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The single-line card squeezed identity, created date, role select, and two buttons into one row — on a phone the username truncated to t…, the email to te…, and the created date wrapped vertically one fragment per line (10- / 13- / 2026 / …). Restructured into stacked full-width rows: identity (avatar + username + email), created on its own line (a full date never wraps), a labeled Role row under a divider, and Edit/Delete as side-by-side flex-1 buttons (thumb-sized on mobile, right-aligned sm+). Last-admin protections render identically in both controls. Verified on the emulator (Pixel 9, Brave): full names/emails visible, no wrapping, modal + role controls functional. --- templates/admin_users.templ | 31 +++++++++++------ templates/admin_users_templ.go | 62 +++++++++++++++++----------------- 2 files changed, 51 insertions(+), 42 deletions(-) diff --git a/templates/admin_users.templ b/templates/admin_users.templ index 2f2ad9d7..1719411b 100644 --- a/templates/admin_users.templ +++ b/templates/admin_users.templ @@ -112,14 +112,15 @@ templ AdminUsers(currentUser User, users []User, adminCount int) { @adminCreateUserForm() - +
for _, user := range users {
-
-
+
+ +
@Icon("user", "h-5 w-5") @@ -131,10 +132,15 @@ templ AdminUsers(currentUser User, users []User, adminCount int) { }

{ user.Email }

-

Created { FormatInTimezone(user.CreatedAt, currentUser.Timezone) }

-
+ +

+ Created { FormatInTimezone(user.CreatedAt, currentUser.Timezone) } +

+ +
+ Role if user.Role == "admin" && adminCount == 1 { -
} +
+
+ +