import { useEffect, useId, useRef, useState } from 'react'; import { NavIcon } from '../NavIcon'; import { resolveTriggerOptionsForValue } from '../../lib/emailTriggerEvents'; import { __ } from '../../lib/i18n'; function IconEnvelope(props: { className?: string }) { return ( ); } function IconBolt(props: { className?: string }) { return ( ); } function OptionRowIcon({ kind }: { kind: 'none' | 'event' }) { if (kind === 'none') { return ( ); } return ( ); } type Props = { value: string; onChange: (nextKey: string) => void; disabled?: boolean; }; /** * Rich trigger picker: title + key badge + description per row (matches Sikshya admin reference UI). */ export function TriggerEventSelect(props: Props) { const { value, onChange, disabled } = props; const listId = useId(); const wrapRef = useRef(null); const [open, setOpen] = useState(false); const options = resolveTriggerOptionsForValue(value); const selected = options.find((o) => o.key === value) ?? options[0]; useEffect(() => { if (!open) { return; } const onDoc = (e: MouseEvent) => { const el = wrapRef.current; if (el && !el.contains(e.target as Node)) { setOpen(false); } }; document.addEventListener('mousedown', onDoc); return () => document.removeEventListener('mousedown', onDoc); }, [open]); useEffect(() => { const onKey = (e: KeyboardEvent) => { if (e.key === 'Escape') { setOpen(false); } }; if (open) { window.addEventListener('keydown', onKey); return () => window.removeEventListener('keydown', onKey); } }, [open]); return (
{open ? (

{__('Select an event to trigger this email, or choose “No event” for sequence / manual use.', 'sikshya')}

{options.map((opt) => { const isActive = opt.key === value; return ( ); })}
) : null}
); }