import React from "react";
/**
 * Pill component props
 *
 * A simplified, focused component for filters, tags, and selectable chips.
 * Single outline style - use Badge for colorful semantic variations.
 *
 * @example Basic usage
 * ```tsx
 * <Pill>Design</Pill>
 * ```
 *
 * @example Selectable filter
 * ```tsx
 * <Pill
 *   selected={isSelected}
 *   onSelect={setIsSelected}
 * >
 *   Frontend
 * </Pill>
 * ```
 */
export interface PillProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "onChange" | "onSelect" | "onAnimationStart" | "onDragStart" | "onDragEnd" | "onDrag"> {
    /** Content to display inside the pill */
    children: React.ReactNode;
    /** Size of the pill */
    size?: PillSize;
    /**
     * Icon element to display at the start (before the content)
     * Note: Replaced by CheckIcon when pill is selected
     */
    iconStart?: React.ReactNode;
    /** Whether the pill is selected (controlled state) */
    selected?: boolean;
    /**
     * Callback when selection state changes
     * @param selected - The new selected state
     */
    onSelect?: (selected: boolean) => void;
    /**
     * Whether the pill is read-only (non-interactive)
     * Read-only pills don't show hover effects and can't be interacted with
     * @default false
     */
    readOnly?: boolean;
    /** Additional class name for customization (highest priority) */
    className?: string;
    /** Theme overrides for component styling */
    theme?: PillThemeOverrides;
}
/**
 * Pill size variants
 */
export type PillSize = "sm" | "md" | "lg";
/**
 * Theme overrides for Pill component
 *
 * Allows customization of component styling while maintaining
 * the shadcn approach where className prop takes highest priority.
 */
export interface PillThemeOverrides {
    /** Base style - structure and default colors */
    baseStyle?: string;
    /** Hover state - applied when interactive and NOT selected */
    hoverStyle?: string;
    /** Selected state - applied when selected */
    selectedStyle?: string;
    /** Size-specific styles */
    sizes?: Partial<Record<PillSize, string>>;
    /** Icon sizes for iconStart and CheckIcon */
    iconSizes?: Partial<Record<PillSize, string>>;
}
/**
 * Complete theme interface for Pill component
 */
export interface PillTheme {
    baseStyle: string;
    hoverStyle: string;
    selectedStyle: string;
    sizes: Record<PillSize, string>;
    iconSizes: Record<PillSize, string>;
}
