import * as react from 'react';
import { ReactNode, ButtonHTMLAttributes } from 'react';

/**
 * SelectionButton component for Analytica Ensino platforms
 *
 * Um botão com ícone e texto para ações e navegação com estado de seleção.
 * Ideal para filtros, tags, categorias, seleção de tipos, etc.
 * Compatível com Next.js 15 e React 19.
 * Suporta forwardRef para acesso programático ao elemento DOM.
 *
 * @param icon - O ícone a ser exibido no botão
 * @param label - O texto/label a ser exibido
 * @param selected - Estado de seleção do botão
 * @param className - Classes CSS adicionais
 * @param props - Todos os outros atributos HTML padrão de button
 * @returns Um elemento button estilizado
 *
 * @example
 * ```tsx
 * <SelectionButton
 *   icon={<TagIcon />}
 *   label="Categoria"
 *   selected={false}
 *   onClick={() => handleSelection()}
 * />
 * ```
 *
 * @example
 * ```tsx
 * // Usando ref para foco programático
 * const buttonRef = useRef<HTMLButtonElement>(null);
 *
 * const handleFocus = () => {
 *   buttonRef.current?.focus();
 * };
 *
 * <SelectionButton
 *   ref={buttonRef}
 *   icon={<TagIcon />}
 *   label="Categoria"
 *   selected={isSelected}
 *   onClick={() => setSelected(!isSelected)}
 * />
 * ```
 */
declare const SelectionButton: react.ForwardRefExoticComponent<{
    /** Ícone a ser exibido no botão */
    icon: ReactNode;
    /** Texto/label a ser exibido ao lado do ícone */
    label: string;
    /** Estado de seleção do botão */
    selected?: boolean;
    /** Additional CSS classes to apply */
    className?: string;
} & ButtonHTMLAttributes<HTMLButtonElement> & react.RefAttributes<HTMLButtonElement>>;

export { SelectionButton as default };
