llms.txt
A machine-readable summary of the library for LLM and tooling context. You can also serve this as a raw text file at /llms.txt if desired.
# SuggestMenu
Headless suggestion menu component library for Tiptap. Build @mentions, /commands, #tags, emoji pickers, and any trigger-driven UI. Accessible (listbox/option, keyboard nav), composable (useSuggestMenu or simple props), unstyled.
## Stack
- React, Tiptap (@tiptap/suggestion), Base UI, Fuse.js (optional).
## API
- SuggestMenu (root), SuggestMenu.Portal, Positioner, Popup, List, Group, GroupLabel, Item, Empty.
- useSuggestMenu(editor, options) returns the composable instance; pass that returned value to SuggestMenu via menu prop.
- useListKeyboard for custom list UIs. SuggestMenu.useContext() for state inside tree.
- SuggestMenuExtension.configure({ pills }) for Tiptap; pills = InlineNodeConfig[] for inline nodes (chips).
- createFilter(filterOptions?), createInlineNode(config).
## Concepts
- One SuggestMenu (root) per trigger character. Only one session active at a time across triggers.
- Session: from trigger match to dismiss or selection. onOpenChange, onSessionStart (cleanup return), onSessionEnd, onQueryChange.
- Filter: default Fuse.js (weighted keys, threshold). Use items for internal filtering, or controlled filteredItems + onQueryChange for fully external results.
- Groups: pass real SuggestionGroup objects, or mix groups and standalone items with SuggestionEntry[].
- Collaboration: shouldShow(transaction) to hide menu for remote changes (e.g. Yjs).
- Decoration: suggest-active, suggest-closing. data-highlighted on item, data-empty on popup.
## Styling
- Decoration classes: suggest-active, suggest-closing (decorationClass override). data-suggest-state, data-suggest-placeholder.
- No built-in styles. Bring your own CSS or Tailwind.