"use client"; import { ArrowRightIcon } from "@repo/ui/icons"; import Image from "next/image"; import React, { useEffect, useMemo, useState } from "react"; import Divider from "@repo/ui/shadcn/divider"; import { useRouter } from "next/navigation"; import { getSpaces } from "@/app/actions/fetchers"; import Combobox from "@repo/ui/shadcn/combobox"; import { MinusIcon } from "lucide-react"; import { toast } from "sonner"; import { createSpace } from "@/app/actions/doers"; function QueryInput({ initialQuery = "", initialSpaces = [], disabled = false, className, mini = false, handleSubmit, setInitialSpaces, }: { initialQuery?: string; initialSpaces?: { id: number; name: string; }[]; disabled?: boolean; className?: string; mini?: boolean; handleSubmit: (q: string, spaces: { id: number; name: string }[]) => void; setInitialSpaces?: React.Dispatch< React.SetStateAction<{ id: number; name: string }[]> >; }) { const [q, setQ] = useState(initialQuery); const [selectedSpaces, setSelectedSpaces] = useState([]); const options = useMemo( () => initialSpaces.map((x) => ({ label: x.name, value: x.id.toString(), })), [initialSpaces], ); const preparedSpaces = useMemo( () => initialSpaces .filter((x) => selectedSpaces.includes(x.id)) .map((x) => { return { id: x.id, name: x.name, }; }), [selectedSpaces, initialSpaces], ); return (
{/* input and action button */}
{ handleSubmit(q, preparedSpaces); setQ(""); }} className="flex gap-4 p-3" >