import * as React from 'react'; import { CommandItem } from '../../../ui/command.js'; export interface CommandMenuOption { /** Unique identifier for the option */ id: string; /** Display label for the option */ label: string; /** Optional subtitle (e.g., @username, email) */ subtitle?: string; /** Optional icon to display (mutually exclusive with avatar) */ icon?: React.ReactNode; /** Optional avatar configuration */ avatar?: { src?: string; fallback?: string; }; /** Whether the option is disabled */ disabled?: boolean; /** Keyboard shortcut to display */ shortcut?: string; } export interface CommandMenuGroup { /** Unique identifier for the group */ id: string; /** Group label/heading */ label: string; /** Options in this group */ options: CommandMenuOption[]; } export interface CommandMenuFooterHint { /** Icon or keyboard key indicator */ keys: React.ReactNode; /** Text describing the action */ label: string; } export interface CommandMenuProps { /** Whether the command menu is open */ open?: boolean; /** Callback when open state changes */ onOpenChange?: (open: boolean) => void; /** Placeholder text for the search input */ placeholder?: string; /** Text to show when no results found */ emptyText?: string; /** Empty state content (replaces emptyText when provided) */ emptyState?: React.ReactNode; /** Whether to render results and the empty state below search */ showResults?: boolean; /** Flat list of options */ options?: CommandMenuOption[]; /** Grouped options */ groups?: CommandMenuGroup[]; /** Callback when an option is selected */ onSelect?: (id: string, option: CommandMenuOption) => void; /** Whether to show keyboard shortcut badge in input */ showShortcut?: boolean; /** Keyboard shortcut text to display (auto-detects platform when omitted) */ shortcutText?: string; /** Whether to show the footer with navigation hints */ showFooter?: boolean; /** Custom footer hints */ footerHints?: CommandMenuFooterHint[]; /** Whether to show settings button in footer */ showSettingsButton?: boolean; /** Callback when settings button is clicked */ onSettingsClick?: () => void; /** Additional class name for the dialog */ className?: string; /** Maximum height of the list */ maxHeight?: number; /** Custom filter function */ filter?: (value: string, search: string) => number; /** Children for custom content */ children?: React.ReactNode; } declare function CommandShortcutBadge({ children, className, }: { children: React.ReactNode; className?: string; }): React.JSX.Element; declare namespace CommandShortcutBadge { var displayName: string; } declare function FooterNavIcon({ children, className, }: { children: React.ReactNode; className?: string; }): React.JSX.Element; declare namespace FooterNavIcon { var displayName: string; } declare function FooterNavText({ children, className, }: { children: React.ReactNode; className?: string; }): React.JSX.Element; declare namespace FooterNavText { var displayName: string; } declare const defaultFooterHints: CommandMenuFooterHint[]; export interface CommandMenuFooterProps { hints?: CommandMenuFooterHint[]; showSettingsButton?: boolean; onSettingsClick?: () => void; className?: string; } declare function CommandMenuFooter({ hints, showSettingsButton, onSettingsClick, className, }: CommandMenuFooterProps): React.JSX.Element; declare namespace CommandMenuFooter { var displayName: string; } export interface CommandMenuItemProps extends Omit, 'onSelect' | 'showCheckIndicator' | 'value'> { option: CommandMenuOption; onSelect?: (id: string, option: CommandMenuOption) => void; } declare function CommandMenuItem({ option, onSelect, className, ...props }: CommandMenuItemProps): React.JSX.Element; declare namespace CommandMenuItem { var displayName: string; } declare function CommandMenuGroupHeader({ children, className, ...props }: React.ComponentProps<'h3'>): React.JSX.Element; declare namespace CommandMenuGroupHeader { var displayName: string; } declare function CommandMenu({ open, onOpenChange, placeholder, emptyText, emptyState, showResults, options, groups, onSelect, showShortcut, shortcutText, showFooter, footerHints, showSettingsButton, onSettingsClick, className, maxHeight, filter, children, }: CommandMenuProps): React.JSX.Element; declare namespace CommandMenu { var displayName: string; } export interface CommandMenuPanelProps extends Omit { /** Additional class name */ className?: string; } declare function CommandMenuPanel({ placeholder, emptyText, emptyState, showResults, options, groups, onSelect, showShortcut, shortcutText, showFooter, footerHints, showSettingsButton, onSettingsClick, className, maxHeight, filter, children, }: CommandMenuPanelProps): React.JSX.Element; declare namespace CommandMenuPanel { var displayName: string; } export { CommandMenu, CommandMenuFooter, CommandMenuGroupHeader, CommandMenuItem, CommandMenuPanel, CommandShortcutBadge, defaultFooterHints, FooterNavIcon, FooterNavText, };