From 0e2e1532d270fa4381999df00ac260f4ce849602 Mon Sep 17 00:00:00 2001 From: Trey t Date: Wed, 24 Dec 2025 23:07:48 -0600 Subject: [PATCH] Add timezone display to admin Next.js frontend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Display user timezone in: - Notification Preferences table (new Timezone column) - User detail page (Basic Information card) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- admin/src/app/(dashboard)/notification-prefs/page.tsx | 9 +++++++++ admin/src/app/(dashboard)/users/[id]/client.tsx | 6 ++++++ admin/src/lib/api.ts | 2 ++ admin/src/types/models.ts | 1 + 4 files changed, 18 insertions(+) diff --git a/admin/src/app/(dashboard)/notification-prefs/page.tsx b/admin/src/app/(dashboard)/notification-prefs/page.tsx index aacf365..92fb22b 100644 --- a/admin/src/app/(dashboard)/notification-prefs/page.tsx +++ b/admin/src/app/(dashboard)/notification-prefs/page.tsx @@ -193,6 +193,15 @@ export default function NotificationPrefsPage() { /> ), }, + { + accessorKey: 'timezone', + header: 'Timezone', + cell: ({ row }) => ( + + {row.original.timezone || -} + + ), + }, { id: 'notification_times', header: () => ( diff --git a/admin/src/app/(dashboard)/users/[id]/client.tsx b/admin/src/app/(dashboard)/users/[id]/client.tsx index f0045e6..d1fd55b 100644 --- a/admin/src/app/(dashboard)/users/[id]/client.tsx +++ b/admin/src/app/(dashboard)/users/[id]/client.tsx @@ -239,6 +239,12 @@ export function UserDetailClient() {
{new Date(user.date_joined).toLocaleDateString()}
+
+
+ Timezone +
+
{user.timezone || '-'}
+
diff --git a/admin/src/lib/api.ts b/admin/src/lib/api.ts index 11a2bec..b272371 100644 --- a/admin/src/lib/api.ts +++ b/admin/src/lib/api.ts @@ -652,6 +652,8 @@ export interface NotificationPreference { task_overdue_hour: number | null; warranty_expiring_hour: number | null; daily_digest_hour: number | null; + // User timezone (IANA name, auto-captured from X-Timezone header) + timezone: string | null; created_at: string; updated_at: string; } diff --git a/admin/src/types/models.ts b/admin/src/types/models.ts index 62007a9..5ae7945 100644 --- a/admin/src/types/models.ts +++ b/admin/src/types/models.ts @@ -28,6 +28,7 @@ export interface User { export interface UserDetail extends User { residences?: ResidenceSummary[]; devices?: DeviceSummary[]; + timezone?: string; // IANA timezone (auto-captured from mobile app) } export interface ResidenceSummary {