add lookup

This commit is contained in:
2025-12-01 22:27:14 -03:00
parent f3e3d9f8c2
commit 8eb5427af4
22 changed files with 548 additions and 133 deletions

View File

@@ -87,7 +87,7 @@ export default function Component({
loaderData: { data }
}: Route.ComponentProps) {
const [searchParams, setSearchParams] = useSearchParams()
const term = searchParams.get('term') as string
const s = searchParams.get('s') as string
return (
<Container className="space-y-4">
@@ -104,7 +104,7 @@ export default function Component({
<div className="flex gap-2.5">
<div className="w-full xl:w-1/3">
<SearchForm
defaultValue={term || ''}
defaultValue={s || ''}
placeholder={
<>
Digite <Kbd>/</Kbd> para pesquisar
@@ -112,7 +112,7 @@ export default function Component({
}
onChange={(value) =>
setSearchParams((searchParams) => {
searchParams.set('term', String(value))
searchParams.set('s', String(value))
return searchParams
})
}
@@ -145,14 +145,14 @@ export default function Component({
</div>
<Await resolve={data}>
{({ hits = [] }) => <List term={term} hits={hits as Enrollment[]} />}
{({ hits = [] }) => <List s={s} hits={hits as Enrollment[]} />}
</Await>
</Suspense>
</Container>
)
}
function List({ term, hits = [] }: { term: string; hits: Enrollment[] }) {
function List({ s, hits = [] }: { s: string; hits: Enrollment[] }) {
const fuse = useMemo(() => {
return new Fuse(hits, {
keys: ['course.name'],
@@ -162,12 +162,12 @@ function List({ term, hits = [] }: { term: string; hits: Enrollment[] }) {
}, [hits])
const hits_ = useMemo(() => {
if (!term) {
if (!s) {
return hits
}
return fuse.search(term).map(({ item }) => item)
}, [term, fuse, hits])
return fuse.search(s).map(({ item }) => item)
}, [s, fuse, hits])
if (hits_.length === 0) {
return (
@@ -178,7 +178,7 @@ function List({ term, hits = [] }: { term: string; hits: Enrollment[] }) {
</EmptyMedia>
<EmptyTitle>Nada encontrado</EmptyTitle>
<EmptyDescription>
Nenhum resultado para <mark>{term}</mark>.
Nenhum resultado para <mark>{s}</mark>.
</EmptyDescription>
</EmptyHeader>
</Empty>