import { Card, CardContent } from "@/components/ui/card"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { useTranslation } from "react-i18next"; import type { RuleEngineEvent } from "@karakeep/shared/types/rules"; import { BookmarkListSelector } from "../lists/BookmarkListSelector"; import { TagAutocomplete } from "../tags/TagAutocomplete"; interface EventSelectorProps { value: RuleEngineEvent; onChange: (event: RuleEngineEvent) => void; } export function EventSelector({ value, onChange }: EventSelectorProps) { const { t } = useTranslation(); const handleTypeChange = (type: RuleEngineEvent["type"]) => { switch (type) { case "bookmarkAdded": onChange({ type: "bookmarkAdded" }); break; case "tagAdded": onChange({ type: "tagAdded", tagId: "" }); break; case "tagRemoved": onChange({ type: "tagRemoved", tagId: "" }); break; case "addedToList": onChange({ type: "addedToList", listId: "" }); break; case "removedFromList": onChange({ type: "removedFromList", listId: "" }); break; case "favourited": onChange({ type: "favourited" }); break; case "archived": onChange({ type: "archived" }); break; default: { const _exhaustiveCheck: never = type; return null; } } }; return (
{/* Additional fields based on event type */} {(value.type === "tagAdded" || value.type === "tagRemoved") && ( onChange({ type: value.type, tagId: t ?? "" })} /> )} {(value.type === "addedToList" || value.type === "removedFromList") && ( onChange({ type: value.type, listId: l })} /> )}
); }