/**
 * @file CommandPalette.tsx
 * @input Uses React, Dialog, Layout, CommandPaletteContext, SearchSource, useCombobox, useAnnounce
 * @output Exports CommandPalette root component and props
 * @position Core root component; dialog shell with searchSource-driven items
 *
 * SYNC: When modified, update these files to stay in sync:
 * - /apps/storybook/stories/CommandPalette.stories.tsx
 * - /packages/cli/assets/templates/blocks/components/CommandPalette/ (showcase blocks)
 */
import { type ReactNode } from 'react';
import type { SearchSource, SearchableItem } from '../Typeahead';
import type { BaseProps } from '../BaseProps';
export interface CommandPaletteProps<T extends SearchableItem = SearchableItem> extends Omit<BaseProps<HTMLDialogElement>, 'onChange'> {
    ref?: React.Ref<HTMLDialogElement>;
    /** Whether the command palette is open. */
    isOpen: boolean;
    /**
     * Renders command palette content inline without modal behavior.
     * Suppresses input auto-focus and initial highlighted-item auto-scroll.
     * For documentation previews and showcases only.
     * @default false
     */
    isInline?: boolean;
    /** Called when the command palette visibility changes. */
    onOpenChange: (isOpen: boolean) => void;
    /**
     * Search source providing items. Implements `search(query)` and `bootstrap()`.
     * Same interface as Typeahead's searchSource.
     * Use `createStaticSource` for simple static lists.
     */
    searchSource: SearchSource<T>;
    /**
     * The search input slot.
     * @default <CommandPaletteInput />
     */
    input?: ReactNode;
    /**
     * The footer slot.
     * @default <CommandPaletteFooter />
     */
    footer?: ReactNode;
    /**
     * Per-item render function. Receives the item and whether it is currently selected.
     * Auto-grouping by `auxiliaryData.group` is preserved.
     * When omitted, renders each item's `label` text.
     */
    renderItem?: (item: T, isSelected: boolean) => ReactNode;
    /**
     * Content shown when a search query returns no results.
     * @default 'No results'
     */
    emptySearchText?: ReactNode;
    /**
     * Content shown when there is no search query and bootstrap() returns nothing.
     * @default 'Type to search'
     */
    emptyBootstrapText?: ReactNode;
    /** Controlled selected value (for picker mode). */
    value?: string;
    /** Called when the selected value changes. */
    onValueChange?: (value: string) => void;
    /**
     * Accessible label for the command palette dialog.
     * @default 'Command palette'
     */
    label?: string;
    /**
     * Width of the command palette dialog.
     * @default 640
     */
    width?: number | string;
    /**
     * Maximum height of the command palette dialog.
     * @default 480
     */
    maxHeight?: number | string;
}
/**
 * Command palette root component.
 *
 * Uses `searchSource` for all search logic — same interface as Typeahead.
 * For static lists, use `createStaticSource` from `@astryxdesign/core/Typeahead`.
 *
 * Keyboard navigation is handled by `useCombobox` from Selector,
 * ensuring consistent arrow key, Home/End, Enter, and Escape behavior
 * across all combobox-pattern components.
 *
 * Input and footer are rendered by default — only pass them to replace the defaults.
 *
 * @compositionHint
 *   - `input` slot: CommandPaletteInput (default)
 *   - `footer` slot: CommandPaletteFooter (default)
 *   - `renderItem(item, isSelected)`: custom per-item content (grouping preserved)
 *
 * @example
 * ```
 * <CommandPalette
 *   isOpen={isOpen}
 *   onOpenChange={setIsOpen}
 *   searchSource={createStaticSource(commands)}
 * />
 * ```
 */
export declare function CommandPalette<T extends SearchableItem = SearchableItem>({ ref, isOpen, isInline, onOpenChange, searchSource, input, footer, renderItem, emptySearchText: emptySearchTextFromProps, emptyBootstrapText: emptyBootstrapTextFromProps, value: controlledValue, onValueChange, label: labelFromProps, width, maxHeight, ...rest }: CommandPaletteProps<T>): import("react").JSX.Element;
export declare namespace CommandPalette {
    var displayName: string;
}
//# sourceMappingURL=CommandPalette.d.ts.map