From 396acf3bbbe00a192cb0ea0a9ccf91b1d8d2850b Mon Sep 17 00:00:00 2001
From: Fuwn <50817549+Fuwn@users.noreply.github.com>
Date: Sat, 24 Jan 2026 13:09:50 +0000
Subject: Initial commit
Created from https://vercel.com/new
---
src/app/(main)/admin/users/UsersTable.tsx | 84 +++++++++++++++++++++++++++++++
1 file changed, 84 insertions(+)
create mode 100644 src/app/(main)/admin/users/UsersTable.tsx
(limited to 'src/app/(main)/admin/users/UsersTable.tsx')
diff --git a/src/app/(main)/admin/users/UsersTable.tsx b/src/app/(main)/admin/users/UsersTable.tsx
new file mode 100644
index 0000000..9c10f3e
--- /dev/null
+++ b/src/app/(main)/admin/users/UsersTable.tsx
@@ -0,0 +1,84 @@
+import { DataColumn, DataTable, Icon, MenuItem, Modal, Row, Text } from '@umami/react-zen';
+import Link from 'next/link';
+import { useState } from 'react';
+import { DateDistance } from '@/components/common/DateDistance';
+import { useMessages } from '@/components/hooks';
+import { Edit, Trash } from '@/components/icons';
+import { MenuButton } from '@/components/input/MenuButton';
+import { ROLES } from '@/lib/constants';
+import { UserDeleteForm } from './UserDeleteForm';
+
+export function UsersTable({
+ data = [],
+ showActions = true,
+}: {
+ data: any[];
+ showActions?: boolean;
+}) {
+ const { formatMessage, labels } = useMessages();
+ const [deleteUser, setDeleteUser] = useState(null);
+
+ return (
+ <>
+
+
+ {(row: any) => {row.username}}
+
+
+ {(row: any) =>
+ formatMessage(
+ labels[Object.keys(ROLES).find(key => ROLES[key] === row.role)] || labels.unknown,
+ )
+ }
+
+
+ {(row: any) => row._count.websites}
+
+
+ {(row: any) => }
+
+ {showActions && (
+
+ {(row: any) => {
+ const { id } = row;
+
+ return (
+
+
+
+
+ );
+ }}
+
+ )}
+
+
+ {
+ setDeleteUser(null);
+ }}
+ />
+
+ >
+ );
+}
--
cgit v1.2.3