diff --git a/packages/stack-server/src/components/data-table/elements/cells.tsx b/packages/stack-server/src/components/data-table/elements/cells.tsx
index 49edfdbd6..f594d42ea 100644
--- a/packages/stack-server/src/components/data-table/elements/cells.tsx
+++ b/packages/stack-server/src/components/data-table/elements/cells.tsx
@@ -15,10 +15,13 @@ import { Badge } from "@/components/ui/badge";
import { cn } from "@/lib/utils";
-export function TextCell(props: { children: React.ReactNode, size?: number }) {
+export function TextCell(props: { children: React.ReactNode, size?: number, icon?: React.ReactNode }) {
return (
-
- {props.children}
+
+
+ {props.children}
+
+ {props.icon &&
{props.icon}
}
);
}
diff --git a/packages/stack-server/src/components/data-table/elements/data-table.tsx b/packages/stack-server/src/components/data-table/elements/data-table.tsx
index 132325b42..cde0c3915 100644
--- a/packages/stack-server/src/components/data-table/elements/data-table.tsx
+++ b/packages/stack-server/src/components/data-table/elements/data-table.tsx
@@ -33,15 +33,17 @@ interface DataTableProps
{
columns: ColumnDef[],
data: TData[],
toolbarRender?: (table: TableType) => React.ReactNode,
+ defaultVisibility?: VisibilityState,
}
export function DataTable({
columns,
data,
toolbarRender,
+ defaultVisibility,
}: DataTableProps) {
const [rowSelection, setRowSelection] = React.useState({});
- const [columnVisibility, setColumnVisibility] = React.useState({});
+ const [columnVisibility, setColumnVisibility] = React.useState(defaultVisibility || {});
const [columnFilters, setColumnFilters] = React.useState([]);
const [sorting, setSorting] = React.useState([]);
diff --git a/packages/stack-server/src/components/data-table/team-member-table.tsx b/packages/stack-server/src/components/data-table/team-member-table.tsx
index e4cd6caa8..d78654739 100644
--- a/packages/stack-server/src/components/data-table/team-member-table.tsx
+++ b/packages/stack-server/src/components/data-table/team-member-table.tsx
@@ -34,7 +34,7 @@ function RemoveUserDialog(props: {
onOpenChange={props.onOpenChange}
okButton={{
label: "Remove user from team",
- onClick: async () => await props.team.removeUser(props.user.id)
+ onClick: async () => { await props.team.removeUser(props.user.id); }
}}
cancelButton
confirmText="I understand this will cause the user to lose access to the team."
@@ -99,5 +99,10 @@ export function TeamMemberTable(props: { members: ServerTeamMember[], team: Serv
}).catch(console.error);
}, [props.members, props.team]);
- return ;
+ return ;
}
\ No newline at end of file
diff --git a/packages/stack-server/src/components/data-table/user-table.tsx b/packages/stack-server/src/components/data-table/user-table.tsx
index 228aef611..f47f96605 100644
--- a/packages/stack-server/src/components/data-table/user-table.tsx
+++ b/packages/stack-server/src/components/data-table/user-table.tsx
@@ -14,6 +14,8 @@ import { DateField, InputField, SwitchField } from "../form-fields";
import { ActionDialog } from "../action-dialog";
import Typography from "../ui/typography";
import { standardFilterFn } from "./elements/utils";
+import { CircleAlert } from "lucide-react";
+import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../ui/tooltip";
export type ExtendedServerUser = ServerUser & {
authType: string,
@@ -85,7 +87,7 @@ function EditUserDialog(props: {
>
)}
- onSubmit={async (values) => await props.user.update(values)}
+ onSubmit={async (values) => { await props.user.update(values); }}
cancelButton
/>;
}
@@ -153,18 +155,30 @@ export const commonUserColumns: ColumnDef[] = [
{
accessorKey: "primaryEmail",
header: ({ column }) => ,
- cell: ({ row }) => {row.original.primaryEmail},
+ cell: ({ row }) =>
+
+
+
+
+
+ Email not verified
+
+
+ }>
+ {row.original.primaryEmail}
+ ,
+ },
+ {
+ accessorKey: "emailVerified",
+ header: ({ column }) => ,
+ cell: ({ row }) => {row.original.emailVerified === 'verified' ? '✓' : '✗'},
+ filterFn: standardFilterFn
},
];
const columns: ColumnDef[] = [
...commonUserColumns,
- {
- accessorKey: "emailVerified",
- header: ({ column }) => ,
- cell: ({ row }) => {row.original.emailVerified === 'verified' ? '✓' : ''},
- filterFn: standardFilterFn
- },
{
accessorKey: "authType",
header: ({ column }) => ,
@@ -192,5 +206,10 @@ export function extendUsers(users: ServerUser[]): ExtendedServerUser[] {
export function UserTable(props: { users: ServerUser[] }) {
const extendedUsers: ExtendedServerUser[] = useMemo(() => extendUsers(props.users), [props.users]);
- return ;
+ return ;
}
\ No newline at end of file