'use client' import { createContext, useContext, useMemo, useState } from 'react' import { Input } from '@/components/ui/input' import { cn } from '@/lib/utils' import { useAutomationSuggestions, type AutomationSuggestion, } from '@/lib/mail-automation/use-automation-suggestions' import type { AutomationSuggestionKind } from '@/lib/mail-automation/condition-helpers' interface AutomationSuggestionsContextValue { suggestionsFor: (kind: AutomationSuggestionKind) => AutomationSuggestion[] } const AutomationSuggestionsContext = createContext(null) export function AutomationSuggestionsProvider({ children }: { children: React.ReactNode }) { const { suggestionsFor } = useAutomationSuggestions() const value = useMemo(() => ({ suggestionsFor }), [suggestionsFor]) return ( {children} ) } function useAutomationSuggestionsContext() { return useContext(AutomationSuggestionsContext) } interface AutomationSuggestInputProps { kind: AutomationSuggestionKind value: string onChange: (value: string) => void placeholder?: string className?: string disabled?: boolean } export function AutomationSuggestInput({ kind, value, onChange, placeholder, className, disabled, }: AutomationSuggestInputProps) { const ctx = useAutomationSuggestionsContext() const [listId] = useState(() => `automation-suggest-${kind}-${Math.random().toString(36).slice(2, 9)}`) const suggestions = kind === 'none' || !ctx ? [] : ctx.suggestionsFor(kind) const filtered = useMemo(() => { if (!value.trim()) return suggestions.slice(0, 40) const q = value.trim().toLowerCase() return suggestions .filter( (s) => s.value.toLowerCase().includes(q) || (s.label?.toLowerCase().includes(q) ?? false) ) .slice(0, 40) }, [suggestions, value]) if (kind === 'none' || suggestions.length === 0) { return ( onChange(e.target.value)} /> ) } return (
onChange(e.target.value)} /> {filtered.map((s) => ( ))} {filtered.length > 0 && value.trim() && !disabled ? ( ) : null}
) }