import type { JSX } from "react"; import { ListFilter } from "lucide-react"; import { Button, cn, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuTrigger } from "@tutti-os/ui-system"; import { useTranslation } from "../i18n/index"; import { messageCenterGroupLabel, type MessageCenterGroupBy, type MessageCenterProviderOption, type MessageCenterStatusFilter, type MessageCenterStatusOption } from "./workspaceAgentMessageCenterViewModel"; export function MessageCenterViewMenu({ filtersActive = false, groupBy, providerFilters, providerOptions, statusFilters, statusOptions, onClearFilters, onGroupByChange, onProviderToggle, onStatusToggle }: { filtersActive?: boolean; groupBy: MessageCenterGroupBy; providerFilters: Set | null; providerOptions: MessageCenterProviderOption[]; statusFilters: Set | null; statusOptions: MessageCenterStatusOption[]; onClearFilters: () => void; onGroupByChange: (groupBy: MessageCenterGroupBy) => void; onProviderToggle: (provider: string) => void; onStatusToggle: (status: MessageCenterStatusFilter) => void; }): JSX.Element { "use memo"; const { t } = useTranslation(); return ( { event.stopPropagation(); }} onCloseAutoFocus={(event) => { event.preventDefault(); }} onKeyDown={(event) => { event.stopPropagation(); }} onPointerDown={(event) => { event.stopPropagation(); }} > {t("agentHost.workspaceAgentMessageCenterGroupBy")} onGroupByChange(value as MessageCenterGroupBy) } > {(["priority", "status", "agent", "time"] as const).map((value) => ( {messageCenterGroupLabel(value, t)} ))} {t("agentHost.workspaceAgentMessageCenterFilterStatus")} {statusOptions.map((option) => ( onStatusToggle(option.value)} onSelect={(event) => event.preventDefault()} > ))} {providerOptions.length > 0 ? ( <> {t("agentHost.workspaceAgentMessageCenterFilterAgent")} {providerOptions.map((option) => ( onProviderToggle(option.value)} onSelect={(event) => event.preventDefault()} > ))} ) : null} {t("agentHost.workspaceAgentMessageCenterClearFilters")} ); } function MessageCenterOptionWithCount({ count, label }: { count: number; label: string; }): JSX.Element { return ( {label} {count} ); }