"use client"; import { useMemo } from "react"; import { useRouter } from "next/navigation"; import { Button } from "@/components/ui/button"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; import { useTranslation } from "@/lib/i18n/client"; import { MoreHorizontal, SearchIcon, Users } from "lucide-react"; import { api } from "@karakeep/shared-react/trpc"; import { parseSearchQuery } from "@karakeep/shared/searchQueryParser"; import { ZBookmarkList } from "@karakeep/shared/types/lists"; import QueryExplainerTooltip from "../search/QueryExplainerTooltip"; import { ListOptions } from "./ListOptions"; export default function ListHeader({ initialData, }: { initialData: ZBookmarkList; }) { const { t } = useTranslation(); const router = useRouter(); const { data: list, error } = api.lists.get.useQuery( { listId: initialData.id, }, { initialData, }, ); const parsedQuery = useMemo(() => { if (!list.query) { return null; } return parseSearchQuery(list.query); }, [list.query]); if (error) { // This is usually exercised during list deletions. if (error.data?.code == "NOT_FOUND") { router.push("/dashboard/lists"); } } return (
{list.icon} {list.name} {list.hasCollaborators && (

{t("lists.shared")}

)} {list.description && ( {`(${list.description})`} )}
{parsedQuery && ( {t("lists.smart_list")}
} parsedSearchQuery={parsedQuery} className="size-6 stroke-foreground" /> )}
); }