'use client'; import * as React from 'react'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { useQuery } from '@tanstack/react-query'; import { Plus, Search } from 'lucide-react'; import { listTenants, type TenantListItem, type TenantStatus } from '@/lib/api/tenants'; import { formatDate } from '@/lib/format'; import { Button } from '@/components/ui/button'; import { DataTable, type DataTableColumn } from '@/components/ui/data-table'; import { Input } from '@/components/ui/input'; import { StatusPill } from '@/components/ui/status-pill'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { TenantStatusDialog } from '@/components/domain/tenant-status-dialog'; const STATUS_OPTIONS: { value: TenantStatus | 'todos'; label: string }[] = [ { value: 'todos', label: 'Todos os status' }, { value: 'trial', label: 'Trial' }, { value: 'ativo', label: 'Ativo' }, { value: 'inadimplente', label: 'Inadimplente' }, { value: 'suspenso', label: 'Suspenso' }, { value: 'cancelado', label: 'Cancelado' }, ]; const LIMIT = 20; export default function TenantsPage() { const router = useRouter(); const [busca, setBusca] = React.useState(''); const [status, setStatus] = React.useState('todos'); const [page, setPage] = React.useState(1); const [statusTarget, setStatusTarget] = React.useState(null); const { data, isLoading } = useQuery({ queryKey: ['master', 'tenants', { busca, status, page }], queryFn: () => listTenants({ busca: busca || undefined, status: status === 'todos' ? undefined : status, page, limit: LIMIT, }), placeholderData: (prev) => prev, }); const columns: DataTableColumn[] = [ { id: 'nome', header: 'Tenant', primary: true, cell: (row) => (
{row.nome_fantasia || row.razao_social} {row.documento && {row.documento}}
), }, { id: 'status', header: 'Status', primary: true, cell: (row) => , }, { id: 'plano', header: 'Plano', cell: (row) => row.plano?.nome ?? '—' }, { id: 'criado_em', header: 'Criado em', cell: (row) => formatDate(row.criado_em) }, ]; return (

Tenants

Clientes da plataforma SeConectai Vendas

{ setBusca(e.target.value); setPage(1); }} />
row.id} loading={isLoading} emptyTitle="Nenhum tenant encontrado" emptyDescription="Ajuste os filtros ou cadastre um novo tenant." emptyAction={ } onRowClick={(row) => router.push(`/master/tenants/${row.id}`)} rowActions={(row) => ( <> )} pagination={ data ? { page: data.meta.page, limit: data.meta.limit, total: data.meta.total, onPageChange: setPage } : undefined } /> !open && setStatusTarget(null)} />
); }