"use client"; import { useState, useTransition } from "react"; import Link from "next/link"; import { useRouter, usePathname } from "next/navigation"; import { PlusCircle, Sparkles, Link2, Search, X } from "lucide-react"; import { useTranslations } from "next-intl"; import { Button } from "@/components/ui/button"; import { buttonVariants } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { AiGenerateDialog } from "./ai-generate-dialog"; import { UrlImportDialog } from "./url-import-dialog"; import { cn } from "@/lib/utils"; export function RecipesHeader({ count, initialQuery = "" }: { count: number; initialQuery?: string }) { const router = useRouter(); const pathname = usePathname(); const t = useTranslations("recipes"); const [aiOpen, setAiOpen] = useState(false); const [urlOpen, setUrlOpen] = useState(false); const [query, setQuery] = useState(initialQuery); const [, startTransition] = useTransition(); function handleSearch(value: string) { setQuery(value); startTransition(() => { const params = new URLSearchParams(); if (value.trim()) params.set("q", value.trim()); router.push(`${pathname}?${params.toString()}`); }); } return ( <>

{t("title")}

{count === 0 ? t("subtitle") : t(count !== 1 ? "resultPlural" : "resultSingular", { count })}

{t("new")}
handleSearch(e.target.value)} placeholder={t("search")} className="pl-9 pr-9" /> {query && ( )}
); }