From 68a4c28d6895534976348633eabb7f22143f7022 Mon Sep 17 00:00:00 2001 From: Trey t Date: Tue, 9 Dec 2025 17:14:08 -0600 Subject: [PATCH] Add ID and Created columns to all admin pages with sortable columns MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add ID column to all admin list pages for easy record identification - Add Created column (created_at/date_joined) to pages missing it - Implement client-side column sorting in DataTable component - Fix sorting implementation to work without getSortingRowModel export 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../src/app/(dashboard)/admin-users/page.tsx | 9 +++ .../(dashboard)/apple-social-auth/page.tsx | 2 + .../src/app/(dashboard)/auth-tokens/page.tsx | 2 + .../(dashboard)/completion-images/page.tsx | 2 + .../src/app/(dashboard)/completions/page.tsx | 6 ++ .../(dashboard)/confirmation-codes/page.tsx | 2 + .../src/app/(dashboard)/contractors/page.tsx | 14 ++++ admin/src/app/(dashboard)/devices/page.tsx | 2 + .../app/(dashboard)/document-images/page.tsx | 2 + admin/src/app/(dashboard)/documents/page.tsx | 9 +++ .../app/(dashboard)/feature-benefits/page.tsx | 6 ++ .../(dashboard)/notification-prefs/page.tsx | 14 ++++ .../app/(dashboard)/notifications/page.tsx | 9 +++ .../(dashboard)/password-reset-codes/page.tsx | 2 + admin/src/app/(dashboard)/promotions/page.tsx | 8 ++- admin/src/app/(dashboard)/residences/page.tsx | 9 +++ .../src/app/(dashboard)/share-codes/page.tsx | 2 + .../app/(dashboard)/subscriptions/page.tsx | 9 +++ .../app/(dashboard)/task-templates/page.tsx | 6 ++ admin/src/app/(dashboard)/tasks/page.tsx | 14 ++++ .../app/(dashboard)/user-profiles/page.tsx | 2 + admin/src/app/(dashboard)/users/page.tsx | 9 +++ .../src/components/data-table/data-table.tsx | 67 +++++++++++++++++-- 23 files changed, 200 insertions(+), 7 deletions(-) diff --git a/admin/src/app/(dashboard)/admin-users/page.tsx b/admin/src/app/(dashboard)/admin-users/page.tsx index 4218333..343ab73 100644 --- a/admin/src/app/(dashboard)/admin-users/page.tsx +++ b/admin/src/app/(dashboard)/admin-users/page.tsx @@ -37,6 +37,15 @@ const roleColors: Record = { }; const columns: ColumnDef[] = [ + { + accessorKey: 'id', + header: 'ID', + cell: ({ row }) => ( + + {row.original.id} + + ), + }, { accessorKey: 'email', header: 'Email', diff --git a/admin/src/app/(dashboard)/apple-social-auth/page.tsx b/admin/src/app/(dashboard)/apple-social-auth/page.tsx index aa385c0..ed7cfbd 100644 --- a/admin/src/app/(dashboard)/apple-social-auth/page.tsx +++ b/admin/src/app/(dashboard)/apple-social-auth/page.tsx @@ -170,6 +170,7 @@ export default function AppleSocialAuthPage() { onCheckedChange={handleSelectAll} /> + ID User Apple ID Apple Email @@ -202,6 +203,7 @@ export default function AppleSocialAuthPage() { } /> + {entry.id} + ID User Email Token @@ -201,6 +202,7 @@ export default function AuthTokensPage() { } /> + {token.user_id} + ID Preview Task Caption @@ -202,6 +203,7 @@ export default function CompletionImagesPage() { } /> + {img.id} {img.image_url ? ( diff --git a/admin/src/app/(dashboard)/completions/page.tsx b/admin/src/app/(dashboard)/completions/page.tsx index 9a56976..fd414ff 100644 --- a/admin/src/app/(dashboard)/completions/page.tsx +++ b/admin/src/app/(dashboard)/completions/page.tsx @@ -179,12 +179,14 @@ export default function CompletionsPage() { onCheckedChange={handleSelectAll} /> + ID Task Residence Completed By Completed At Cost Photo + Created Actions @@ -212,6 +214,7 @@ export default function CompletionsPage() { } /> + {completion.id} - )} + + {new Date(completion.created_at).toLocaleDateString()} + diff --git a/admin/src/app/(dashboard)/confirmation-codes/page.tsx b/admin/src/app/(dashboard)/confirmation-codes/page.tsx index 412d843..0ff0117 100644 --- a/admin/src/app/(dashboard)/confirmation-codes/page.tsx +++ b/admin/src/app/(dashboard)/confirmation-codes/page.tsx @@ -175,6 +175,7 @@ export default function ConfirmationCodesPage() { onCheckedChange={handleSelectAll} /> + ID User Email Code @@ -208,6 +209,7 @@ export default function ConfirmationCodesPage() { } /> + {code.id} [] = [ + { + accessorKey: 'id', + header: 'ID', + cell: ({ row }) => ( + + {row.original.id} + + ), + }, { accessorKey: 'name', header: 'Name', @@ -82,6 +91,11 @@ const columns: ColumnDef[] = [ ), }, + { + accessorKey: 'created_at', + header: 'Created', + cell: ({ row }) => new Date(row.original.created_at).toLocaleDateString(), + }, { id: 'actions', cell: ({ row }) => { diff --git a/admin/src/app/(dashboard)/devices/page.tsx b/admin/src/app/(dashboard)/devices/page.tsx index efaab66..d8b2c04 100644 --- a/admin/src/app/(dashboard)/devices/page.tsx +++ b/admin/src/app/(dashboard)/devices/page.tsx @@ -269,6 +269,7 @@ export default function DevicesPage() { }} /> + ID Name User Device ID @@ -306,6 +307,7 @@ export default function DevicesPage() { }} /> + {device.id} {device.name || 'Unknown'} {device.user_id ? ( diff --git a/admin/src/app/(dashboard)/document-images/page.tsx b/admin/src/app/(dashboard)/document-images/page.tsx index 20dd346..63e2f07 100644 --- a/admin/src/app/(dashboard)/document-images/page.tsx +++ b/admin/src/app/(dashboard)/document-images/page.tsx @@ -170,6 +170,7 @@ export default function DocumentImagesPage() { onCheckedChange={handleSelectAll} /> + ID Preview Document Residence @@ -202,6 +203,7 @@ export default function DocumentImagesPage() { } /> + {img.id} {img.image_url ? ( diff --git a/admin/src/app/(dashboard)/documents/page.tsx b/admin/src/app/(dashboard)/documents/page.tsx index dfef441..b6d5d9d 100644 --- a/admin/src/app/(dashboard)/documents/page.tsx +++ b/admin/src/app/(dashboard)/documents/page.tsx @@ -40,6 +40,15 @@ const documentTypeColors: Record[] = [ + { + accessorKey: 'id', + header: 'ID', + cell: ({ row }) => ( + + {row.original.id} + + ), + }, { accessorKey: 'title', header: 'Title', diff --git a/admin/src/app/(dashboard)/feature-benefits/page.tsx b/admin/src/app/(dashboard)/feature-benefits/page.tsx index 278e5a7..e4e0d67 100644 --- a/admin/src/app/(dashboard)/feature-benefits/page.tsx +++ b/admin/src/app/(dashboard)/feature-benefits/page.tsx @@ -122,11 +122,13 @@ export default function FeatureBenefitsPage() { + ID Order Feature Free Tier Pro Tier Active + Created Actions @@ -138,6 +140,7 @@ export default function FeatureBenefitsPage() { ) : ( data?.data?.map((benefit) => ( + {benefit.id} {benefit.display_order} {benefit.feature_name} {benefit.free_tier_text} @@ -147,6 +150,9 @@ export default function FeatureBenefitsPage() { {benefit.is_active ? 'Active' : 'Inactive'} + + {new Date(benefit.created_at).toLocaleDateString()} +
+ ID Order Title Category Frequency iOS Icon Active + Created Actions @@ -256,6 +258,7 @@ export default function TaskTemplatesPage() { ) : ( data?.data?.map((template) => ( + {template.id} {template.display_order}
{template.title}
@@ -275,6 +278,9 @@ export default function TaskTemplatesPage() { {template.is_active ? 'Active' : 'Inactive'}
+ + {new Date(template.created_at).toLocaleDateString()} +
+ ) : ( + flexRender( + header.column.columnDef.header, + header.getContext() + ) + )} ))} @@ -188,5 +245,3 @@ export function DataTable({
); } - -import * as React from 'react';