"use client"; import { Compass, Search, SearchX } from "lucide-react"; import Link from "next/link"; import { useState } from "react"; import { useDebounce } from "react-use"; import Image from "@/components/image"; import { Card, CardHeader, CardTitle } from "@/components/ui/card"; import { InputGroup, InputGroupAddon, InputGroupInput, } from "@/components/ui/input-group"; import { Spinner } from "@/components/ui/spinner"; import type { guides } from "@/lib/db/schema"; import { cn } from "@/lib/utils"; import { searchGuide } from "./api"; export function GuideList({ initialList, }: { initialList: (typeof guides.$inferSelect)[]; }) { const [list, setList] = useState(initialList); const [loading, setLoading] = useState(2); const [search, setSearch] = useState(""); useDebounce( () => { if (loading === 2) return setLoading(0); setLoading(1); searchGuide(search) .then(setList) .finally(() => setLoading(0)); }, 200, [search], ); return (
ไกด์ตัวละคร
setSearch(ev.target.value)} /> {loading === 1 ? : }
{list.length === 0 && loading === 0 ? (

ไม่พบตัวละครที่ค้นหา

ลองคำอื่นที่ความหมายใกล้เคียงกันดูนะ

) : ( list.map((card) => ( {card.name}
{card.image && ( {card.name} )}
)) )}
); }