"use client"; import { BookIcon, CircuitBoard, GlobeIcon } from "lucide-react"; import { useRouter } from "next/router"; import React from "react"; import { MariadbIcon, MongodbIcon, MysqlIcon, PostgresqlIcon, RedisIcon, } from "@/components/icons/data-tools-icons"; import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, } from "@/components/ui/command"; import { authClient } from "@/lib/auth-client"; import { extractServices, type Services, } from "@/pages/dashboard/project/[projectId]"; import { api } from "@/utils/api"; import { StatusTooltip } from "../shared/status-tooltip"; export const SearchCommand = () => { const router = useRouter(); const [open, setOpen] = React.useState(false); const [search, setSearch] = React.useState(""); const { data: session } = authClient.useSession(); const { data } = api.project.all.useQuery(undefined, { enabled: !!session, }); const { data: isCloud } = api.settings.isCloud.useQuery(); React.useEffect(() => { const down = (e: KeyboardEvent) => { if (e.key === "j" && (e.metaKey || e.ctrlKey)) { e.preventDefault(); setOpen((open) => !open); } }; document.addEventListener("keydown", down); return () => document.removeEventListener("keydown", down); }, []); return (
No projects added yet. Click on Create project. {data?.map((project) => ( { router.push(`/dashboard/project/${project.projectId}`); setOpen(false); }} > {project.name} ))} {data?.map((project) => { const applications: Services[] = extractServices(project); return applications.map((application) => ( { router.push( `/dashboard/project/${project.projectId}/services/${application.type}/${application.id}`, ); setOpen(false); }} > {application.type === "postgres" && ( )} {application.type === "redis" && ( )} {application.type === "mariadb" && ( )} {application.type === "mongo" && ( )} {application.type === "mysql" && ( )} {application.type === "application" && ( )} {application.type === "compose" && ( )} {project.name} / {application.name}{" "}
{application.id}
)); })}
); };