import { type Component, createSignal, For, createEffect } from "solid-js"; import { cn } from "@/lib/utils"; export interface MentionItem { id: string; label: string; sublabel?: string; type: 'user' | 'note'; } interface MentionListProps { items: MentionItem[]; command: (item: MentionItem) => void; ref: (handlers: { onKeyDown: (e: KeyboardEvent) => boolean }) => void; } export const MentionList: Component = (props) => { const [selectedIndex, setSelectedIndex] = createSignal(0); createEffect(() => { props.items; setSelectedIndex(0); }); const selectItem = (index: number) => { const item = props.items[index]; if (item) { props.command(item); } }; props.ref({ onKeyDown: (e: KeyboardEvent) => { if (e.key === "ArrowUp") { setSelectedIndex((prev) => (prev + props.items.length - 1) % props.items.length); return true; } if (e.key === "ArrowDown") { setSelectedIndex((prev) => (prev + 1) % props.items.length); return true; } if (e.key === "Enter") { selectItem(selectedIndex()); return true; } return false; } }); return (
{(item, index) => ( )} {props.items.length === 0 && (
No results found
)}
); };