"use client"; import type { ComponentType } from "react"; import { useTranslation } from "react-i18next"; import { IconChecklist, IconChevronDown, IconPlus } from "@tabler/icons-react"; import { Button } from "@kandev/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@kandev/ui/dropdown-menu"; import { iconForIntegrationPreset, type IntegrationPresetIconName, } from "./integration-preset-icons"; export type IntegrationTaskPreset = { id: string; label: string; hint: string; icon?: ComponentType<{ className?: string }>; iconName?: IntegrationPresetIconName; }; export type IntegrationStartTaskMenuProps = { presets: T[]; onSelect: (preset: T) => void; triggerLabel?: string; triggerAriaLabel?: string; triggerTestId?: string; itemTestId?: string; }; export function IntegrationStartTaskMenu({ presets, onSelect, triggerLabel, triggerAriaLabel, triggerTestId, itemTestId, }: IntegrationStartTaskMenuProps) { const { t } = useTranslation(); if (presets.length === 0) return null; return ( {presets.map((preset) => { const PresetIcon = preset.icon ?? (preset.iconName ? iconForIntegrationPreset(preset.iconName) : IconChecklist); return ( onSelect(preset)} data-testid={itemTestId} data-preset-id={preset.id} >
{preset.label}
{preset.hint}
); })}
); }