import type { Route } from './+types/index'
import Fuse from 'fuse.js'
import {
AwardIcon,
BanIcon,
FileBadgeIcon,
HatGlassesIcon,
LaptopIcon
} from 'lucide-react'
import { Suspense, useMemo } from 'react'
import { Await, NavLink, useSearchParams } from 'react-router'
import { cloudflareContext } from '@repo/auth/context'
import { createSearch } from '@repo/util/meili'
import { SearchForm } from '@repo/ui/components/search-form'
import { Skeleton } from '@repo/ui/components/skeleton'
import {
Card,
CardFooter,
CardHeader,
CardTitle
} from '@repo/ui/components/ui/card'
import {
Empty,
EmptyDescription,
EmptyHeader,
EmptyMedia,
EmptyTitle
} from '@repo/ui/components/ui/empty'
import { Kbd } from '@repo/ui/components/ui/kbd'
import { Spinner } from '@repo/ui/components/ui/spinner'
import {
Tooltip,
TooltipContent,
TooltipTrigger
} from '@repo/ui/components/ui/tooltip'
import type { Course } from './edit'
import placeholder from '@/assets/placeholder.webp'
import { cn } from '@repo/ui/lib/utils'
export function meta({}: Route.MetaArgs) {
return [{ title: 'Gerenciar seus cursos' }]
}
export const loader = async ({ context }: Route.ActionArgs) => {
const cloudflare = context.get(cloudflareContext)
const courses = createSearch({
index: 'saladeaula_courses',
sort: ['created_at:desc'],
hitsPerPage: 100,
env: cloudflare.env
})
return {
data: courses
}
}
export default function Component({
loaderData: { data }
}: Route.ComponentProps) {
const [searchParams, setSearchParams] = useSearchParams()
const term = searchParams.get('term') as string
return (
Gerencie seus cursos com facilidade e organize seu conteúdo.
Tempo de acesso ao curso
Perído de validade do certificado