import type { Route } from './+types/route'
import { PlusIcon } from 'lucide-react'
import { Suspense } from 'react'
import { Await, Link, useSearchParams } from 'react-router'
import { MeiliSearchFilterBuilder } from 'meilisearch-helper'
import { DataTable } from '@repo/ui/components/data-table'
import { SearchForm } from '@repo/ui/components/search-form'
import { Skeleton } from '@repo/ui/components/skeleton'
import { Button } from '@repo/ui/components/ui/button'
import { Kbd } from '@repo/ui/components/ui/kbd'
import { createSearch } from '@repo/util/meili'
export function meta({}: Route.MetaArgs) {
return [
{ title: 'Colaboradores' },
{
name: 'description',
content: 'Adicione colaboradores e organize sua equipe de forma prĂ¡tica'
}
]
}
import { columns, type User } from './columns'
export async function loader({ params, context, request }: Route.LoaderArgs) {
const { searchParams } = new URL(request.url)
const { orgid } = params
const query = searchParams.get('q') || ''
const sort = searchParams.get('sort') || 'createDate:desc'
const page = Number(searchParams.get('p')) + 1
const hitsPerPage = Number(searchParams.get('perPage')) || 25
let builder = new MeiliSearchFilterBuilder().where('tenant_id', '=', orgid)
const users = createSearch({
index: 'betaeducacao-prod-users_d2o3r5gmm4it7j',
filter: builder.build(),
sort: [sort],
query,
page,
hitsPerPage,
env: context.cloudflare.env
})
return { data: users }
}
export default function Route({ loaderData: { data } }) {
const [searchParams, setSearchParams] = useSearchParams()
return (
Adicione colaboradores e organize sua equipe de forma prĂ¡tica.