Renders an autocomplete dropdown for slash-command suggestions, displaying each command as a styled card with icon, label, description, and optional action buttons. ## Key Components **`SlashCommandSuggestions`** — Primary export. Renders a `role="menu"` container populated with `MingoOnboardingCard` rows, one per command. Returns `null` when `commands` is empty. **`SlashCommandSuggestionsProps`** — Interface defining: - `commands` — Filtered `SlashCommandSummary[]` to display - `highlightedIdx` — Keyboard/hover cursor position - `onHover` / `onSelect` — Sync callbacks for mouse and keyboard navigation - `onAction` — Optional handler for inline action buttons (browse, search, find, etc.) - `resolveSourceIcon` — Legacy fallback icon resolver for commands without `iconName` - `className` — Positioning override (e.g. `absolute bottom-full`) **Icon resolution priority:** 1. `cmd.iconName` → `resolveIcon` (v2 registry, production path) 2. `cmd.primarySourceId` → `resolveSourceIcon` (legacy fallback) 3. `FileIcon` (default inside `resolveIcon`) **Display label priority:** `cmd.label` → `legacyMeta.label` → `cmd.id` ## Usage Example ```typescript setActiveIdx(idx)} onSelect={(cmd) => prefillInput(`/${cmd.id} `)} onAction={(cmd, actionId) => dispatch({ cmd, actionId })} resolveSourceIcon={(sourceId) => legacyIconMap[sourceId]} className="absolute bottom-full" /> ``` ## Notes - Uses `role="menu"` with `role="menuitem"` rows (not `listbox`/`option`) to allow interactive action buttons inside each row per ARIA 1.2 - `aria-current` marks the highlighted row; action button clicks call `stopPropagation` to prevent double-firing `onSelect` - Mirrors the empty-state onboarding card design via shared `MingoOnboardingCard` component