"use client"; import { IconStar } from "@tabler/icons-react"; import { DropdownMenuCheckboxItem } from "@kandev/ui/dropdown-menu"; import { cn } from "@/lib/utils"; import { useTranslation } from "react-i18next"; type SavedQueryDefaultControlProps = { label: string; isDefault: boolean; disabled?: boolean; pending?: boolean; testId?: string; onToggle: () => void; }; function useSavedQueryDefaultPresentation( label: string, isDefault: boolean, disabled: boolean, pending: boolean, ) { const { t } = useTranslation(); const actionLabel = t( isDefault ? "integrations:clearSavedQueryAsDefaultView" : "integrations:setSavedQueryAsDefaultView", { label }, ); return { accessibleLabel: disabled ? t("integrations:savedQueryDefaultUpdateInProgress", { action: actionLabel }) : actionLabel, iconClassName: cn( "h-4 w-4", isDefault && "fill-amber-500 text-amber-500", pending && !isDefault && "fill-amber-500 text-amber-500 opacity-60", pending && "animate-pulse motion-reduce:animate-none", ), }; } export function SavedQueryDefaultDropdownItem({ label, isDefault, disabled = false, pending = false, testId, onToggle, }: SavedQueryDefaultControlProps) { const { accessibleLabel, iconClassName } = useSavedQueryDefaultPresentation( label, isDefault, disabled, pending, ); return ( event.preventDefault()} onCheckedChange={() => onToggle()} showIndicator={false} className="h-7 min-h-7 w-7 shrink-0 cursor-pointer justify-center p-0 text-muted-foreground hover:text-foreground" > ); } export function SavedQueryDefaultButton({ label, isDefault, disabled = false, pending = false, testId, onToggle, }: SavedQueryDefaultControlProps) { const { accessibleLabel, iconClassName } = useSavedQueryDefaultPresentation( label, isDefault, disabled, pending, ); return ( ); }