mirror of
https://github.com/sourcebot-dev/sourcebot.git
synced 2025-12-18 07:15:21 +00:00
40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
|
|
'use client';
|
||
|
|
import { useEffect, useMemo, useState } from "react";
|
||
|
|
import { User } from "@sourcebot/db";
|
||
|
|
import { DataTable } from "@/components/ui/data-table";
|
||
|
|
import { InviteColumnInfo, inviteTableColumns } from "./inviteTableColumns"
|
||
|
|
|
||
|
|
export interface InviteInfo {
|
||
|
|
id: string;
|
||
|
|
email: string;
|
||
|
|
createdAt: Date;
|
||
|
|
}
|
||
|
|
|
||
|
|
interface InviteTableProps {
|
||
|
|
initialInvites: InviteInfo[];
|
||
|
|
}
|
||
|
|
|
||
|
|
export const InviteTable = ({ initialInvites }: InviteTableProps) => {
|
||
|
|
const [invites, setInvites] = useState<InviteInfo[]>(initialInvites);
|
||
|
|
|
||
|
|
const inviteRows: InviteColumnInfo[] = useMemo(() => {
|
||
|
|
return invites.map(invite => {
|
||
|
|
return {
|
||
|
|
id: invite.id!,
|
||
|
|
email: invite.email!,
|
||
|
|
createdAt: invite.createdAt!,
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}, [invites]);
|
||
|
|
|
||
|
|
return (
|
||
|
|
<div>
|
||
|
|
<DataTable
|
||
|
|
columns={inviteTableColumns()}
|
||
|
|
data={inviteRows}
|
||
|
|
searchKey="email"
|
||
|
|
searchPlaceholder="Search invites..."
|
||
|
|
/>
|
||
|
|
</div>
|
||
|
|
)
|
||
|
|
}
|