"use client" import { Search } from "lucide-react"; import React, { useEffect, useState } from "react"; import { CommandDialog, CommandInput, CommandItem, CommandEmpty, CommandGroup, CommandList } from "@/components/ui/command"; import { useParams, useRouter } from "next/navigation"; interface ServerSearchProps { data: { label: string; type: "channel" | "member"; data: { icon: React.ReactNode; name: string; id: string; }[] | undefined }[]; } export const ServerSearch = ({ data }: ServerSearchProps) => { const [open, setOpen] = useState(false); const router = useRouter(); const params = useParams(); useEffect(() => { const down = (e: KeyboardEvent) => { if (e.key === "k" && (e.metaKey || e.ctrlKey)) { e.preventDefault(); setOpen((open) => !open); } } document.addEventListener("keydown", down); return () => document.removeEventListener("keydown", down); }, []); const onClick = ({ id, type }: { id: string, type: "channel" | "member"}) => { setOpen(false); if (type === "member") { return router.push(`/servers/${params?.serverId}/conversations/${id}`); } if (type === "channel") { return router.push(`/servers/${params?.serverId}/channels/${id}`); } } return ( <> No Results Found {data.map(({ label, type, data }) => { if (!data?.length) return null; return ( {data?.map(({ id, icon, name }) => { return ( onClick({ id, type})} key={id}> {icon} {name} ) })} ) })} ) }