import type { Route } from './+types/route'
import Fuse from 'fuse.js'
import { AwardIcon, BanIcon, LaptopIcon } from 'lucide-react'
import { Suspense, useMemo } from 'react'
import { Await, useSearchParams } from 'react-router'
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 { cn } from '@repo/ui/lib/utils'
import { createSearch } from '@repo/util/meili'
import { request as req } from '@repo/util/request'
import placeholder from '@/assets/placeholder.webp'
type Cert = {
exp_interval: number
}
type Course = {
id: string
name: string
access_period: string
cert: Cert
metadata__unit_price?: number
}
type CustomPricing = {
sk: string
unit_price: number
}
export function meta({}: Route.MetaArgs) {
return [{ title: 'Catálogo de cursos' }]
}
export async function loader({ context, request, params }: Route.LoaderArgs) {
const courses = createSearch({
index: 'saladeaula_courses',
sort: ['created_at:desc'],
filter: 'unlisted NOT EXISTS',
hitsPerPage: 100,
env: context.cloudflare.env
})
const customPricing = req({
url: `/orgs/${params.orgid}/custom-pricing`,
context,
request
}).then((r) => r.json() as Promise<{ items: CustomPricing[] }>)
return {
data: Promise.all([courses, customPricing])
}
}
export default function Route({ loaderData: { data } }: Route.ComponentProps) {
const [searchParams, setSearchParams] = useSearchParams()
const search = searchParams.get('s') as string
return (
Explore o catálogo de cursos disponíveis para sua empresa.