import React from 'react';
/**
 * Command item type
 */
export interface CommandItem {
    /** Unique identifier for the command */
    id: string;
    /** Display label for the command */
    label: string;
    /** Subtitle for the command */
    subtitle?: string;
    /** Content to display at the start (icon, avatar, etc.) */
    contentStart?: React.ReactNode;
    /** Content to display at the end (keyboard shortcuts, badges, etc.) */
    contentEnd?: React.ReactNode;
    /** Keyboard shortcut to display (convenience prop - renders as Kbd component in contentEnd) */
    shortcut?: string | string[];
    /** Category/group for the command */
    group?: string;
    /** Action to execute when command is selected */
    onSelect: () => void;
    /** Keywords for search matching */
    keywords?: string[];
    /** Whether the command is disabled */
    disabled?: boolean;
}
/**
 * Command group type
 */
export interface CommandGroup {
    /** Unique identifier for the group */
    id: string;
    /** Display label for the group */
    label: string;
    /** Commands in this group */
    commands: CommandItem[];
}
/**
 * CommandPalette component props
 */
export interface CommandPaletteProps {
    /** Whether the command palette is open */
    isOpen: boolean;
    /** Called when the palette should close */
    onClose: () => void;
    /** Array of commands or command groups */
    commands: CommandItem[] | CommandGroup[];
    /** Placeholder text for search input */
    placeholder?: string;
    /** Custom empty state message */
    emptyMessage?: string;
    /** Maximum height of the command list */
    maxHeight?: string | number;
    /** Additional class name for the container */
    className?: string;
    /** Additional class name for the overlay */
    overlayClassName?: string;
    /** Component-level theme overrides */
    theme?: CommandPaletteThemeOverrides;
    /** Whether to group commands by category */
    grouped?: boolean;
    /** Called when search value changes */
    onSearchChange?: (value: string) => void;
    /** Custom filter function */
    filterFunction?: (command: CommandItem, searchValue: string) => boolean;
    /** Whether clicking the overlay should close the palette (default: true) */
    closeOnOverlayClick?: boolean;
    /** Whether pressing Escape should close the palette (default: true) */
    closeOnEsc?: boolean;
    /** Footer content rendered below the command list (e.g., keyboard hints) */
    footer?: React.ReactNode;
    /** Additional class name for the footer */
    footerClassName?: string;
}
/**
 * Theme overrides for the CommandPalette component
 */
export interface CommandPaletteThemeOverrides {
    /** Style for the overlay backdrop */
    overlay?: string;
    /** Style for the modal container */
    container?: string;
    /** Style for the search input wrapper */
    searchWrapper?: string;
    /** Style for the search input */
    searchInput?: string;
    /** Style for group labels */
    groupLabel?: string;
    /** Style for command items (uses data-[highlighted] and data-[disabled] selectors) */
    commandItem?: string;
    /** Style for empty state */
    emptyState?: string;
    /** Style for the footer area */
    footer?: string;
}
