import type { Route } from './+types/route' import { useToggle } from 'ahooks' import { EllipsisIcon, PencilIcon, UserRoundMinusIcon } from 'lucide-react' import { Suspense, type MouseEvent } from 'react' import { Await, NavLink, useParams, useRevalidator } from 'react-router' import { toast } from 'sonner' import { Abbr } from '@repo/ui/components/abbr' import { Skeleton } from '@repo/ui/components/skeleton' import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from '@repo/ui/components/ui/alert-dialog' import { Avatar, AvatarFallback } from '@repo/ui/components/ui/avatar' import { Button } from '@repo/ui/components/ui/button' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@repo/ui/components/ui/dropdown-menu' import { Spinner } from '@repo/ui/components/ui/spinner' import { initials } from '@repo/ui/lib/utils' import { request as req } from '@repo/util/request' type Admin = { sk: string name: string email: string } export function meta({}: Route.MetaArgs) { return [{ title: 'Gestores' }] } export async function loader({ context, request, params }: Route.LoaderArgs) { const users = req({ url: `/orgs/${params.orgid}/admins`, context, request }).then((r) => r.json()) return { users } } export default function Route({ loaderData: { users } }: Route.ComponentProps) { return ( }>

Gestores

Adicione gestores e organize sua equipe de forma prática.

{({ items }) => (
{items.map(({ sk, name, email }: Admin) => { const [_, id] = sk.split('#') return (
{initials(name)}

{name}

{email}

) })}
)}
) } function ActionMenu({ id }: { id: string }) { return ( e.preventDefault()}> {({ isPending }) => ( <> {isPending ? : } Editar )} ) } function RevokeItem({ id }: { id: string }) { const [loading, { set }] = useToggle(false) const { orgid } = useParams() const { revalidate } = useRevalidator() const revoke = async (e: MouseEvent) => { e.preventDefault() set(true) const r = await fetch(`/~/api/orgs/${orgid}/admins/${id}`, { method: 'DELETE' }) if (r.ok) { toast.info('Os privilégios foram revogados') revalidate() } } return ( e.preventDefault()} > Revogar privilégios Tem certeza absoluta? Esta ação não pode ser desfeita. Isso{' '} revogará permanentemente os privilégios {' '} deste gestor. Cancelar ) }