import { type ReactNode, type ElementType } from 'react';
/**
 * EntityCard - Composant de card standardisé SmartStack
 *
 * Design de référence: /administration/ai/settings (Provider cards)
 *
 * Caractéristiques:
 * - Header coloré distinct avec avatar carré arrondi
 * - Badge avec tooltip en haut à droite du header
 * - Corps avec description, stats, liens
 * - Boutons d'action en bas (push to bottom avec flex)
 * - Support des couleurs d'accent dynamiques
 *
 * Usage:
 * ```tsx
 * <EntityCard
 *   avatar={{ letter: 'O', color: '#10a37f' }}
 *   title="OpenAI"
 *   subtitle="openai"
 *   description="OpenAI GPT models (GPT-4, GPT-4o, GPT-3.5)"
 *   stats="15 modèle(s)"
 *   badge={{ icon: Shield, tooltip: 'API Admin supportée' }}
 *   links={[
 *     { icon: ExternalLink, label: 'Site officiel', href: 'https://openai.com' },
 *     { icon: BookOpen, label: 'Documentation API', href: 'https://platform.openai.com/docs' },
 *   ]}
 *   actions={[
 *     { label: 'Obtenir une clé API', href: 'https://...', variant: 'primary', icon: Key },
 *     { label: 'Obtenir une clé API Admin', href: 'https://...', variant: 'secondary', icon: Shield },
 *   ]}
 * />
 * ```
 */
export interface EntityCardAvatar {
    /** Single letter to display */
    letter: string;
    /** Background color (CSS color) */
    color: string;
    /** Optional image URL (replaces letter if provided) */
    imageUrl?: string;
}
export interface EntityCardBadge {
    /** Icon component */
    icon?: ElementType;
    /** Tooltip text */
    tooltip?: string;
    /** Custom color override */
    color?: string;
}
export interface EntityCardLink {
    /** Icon component */
    icon: ElementType;
    /** Link label */
    label: string;
    /** URL (opens in new tab) */
    href?: string;
    /** Or onClick handler */
    onClick?: () => void;
}
export interface EntityCardAction {
    /** Button label */
    label: string;
    /** URL (makes it an <a> tag) */
    href?: string;
    /** Or onClick handler (makes it a <button>) */
    onClick?: () => void;
    /** Button variant */
    variant?: 'primary' | 'secondary' | 'ghost';
    /** Optional icon */
    icon?: ElementType;
    /** Disabled state */
    disabled?: boolean;
    /** Loading state */
    loading?: boolean;
}
export interface EntityCardTag {
    /** Tag label */
    label: string;
    /** Tag variant/color */
    variant?: 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';
    /** Click handler (makes tag interactive) */
    onClick?: () => void;
}
export interface EntityCardProps {
    /** Avatar configuration */
    avatar?: EntityCardAvatar;
    /** Card title */
    title: string;
    /** Subtitle/code below title */
    subtitle?: string;
    /** Description text */
    description?: string | ReactNode;
    /** Stats text (e.g., "15 modèle(s)") */
    stats?: string | ReactNode;
    /** Optional badge in header top-right */
    badge?: EntityCardBadge;
    /** Array of link items */
    links?: EntityCardLink[];
    /** Array of action buttons */
    actions?: EntityCardAction[];
    /** Array of tags */
    tags?: EntityCardTag[];
    /** Click handler for entire card */
    onClick?: () => void;
    /** Additional className */
    className?: string;
    /** Custom header content (replaces default header) */
    customHeader?: ReactNode;
    /** Custom body content (replaces default body) */
    customBody?: ReactNode;
    /** Custom footer content (replaces default footer) */
    customFooter?: ReactNode;
}
export declare function EntityCard({ avatar, title, subtitle, description, stats, badge, links, actions, tags, onClick, className, customHeader, customBody, customFooter, }: EntityCardProps): import("react/jsx-runtime").JSX.Element;
/**
 * ProviderCard - Preset for AI provider cards
 * Matches the design in /administration/ai/settings
 */
export interface ProviderCardProps {
    name: string;
    code: string;
    description: string;
    modelCount: number;
    color: string;
    websiteUrl?: string;
    docsUrl?: string;
    apiKeyUrl?: string;
    adminApiKeyUrl?: string;
    hasAdminKey?: boolean;
    badgeIcon?: ElementType;
    badgeTooltip?: string;
    onGetApiKey?: () => void;
    onGetAdminApiKey?: () => void;
    /** i18n labels */
    labels?: {
        websiteLabel?: string;
        docsLabel?: string;
        apiKeyLabel?: string;
        adminApiKeyLabel?: string;
        modelsLabel?: string;
    };
}
export declare function ProviderCard({ name, code, description, modelCount, color, websiteUrl, docsUrl, apiKeyUrl, adminApiKeyUrl, hasAdminKey, badgeIcon, badgeTooltip, onGetApiKey, onGetAdminApiKey, labels, }: ProviderCardProps): import("react/jsx-runtime").JSX.Element;
/**
 * TemplateCard - Preset for email/workflow templates
 */
export interface TemplateCardProps {
    name: string;
    code: string;
    category: string;
    isActive?: boolean;
    isSystem?: boolean;
    icon?: ElementType;
    iconColor?: string;
    translationsCount?: number;
    onEdit?: () => void;
    onDelete?: () => void;
    onClick?: () => void;
    /** i18n labels */
    labels?: {
        systemLabel?: string;
        inactiveLabel?: string;
        activeLabel?: string;
        editLabel?: string;
        deleteLabel?: string;
    };
}
export declare function TemplateCard({ name, code, category, isActive, isSystem, icon: IconComponent, iconColor, translationsCount, onEdit, onDelete, onClick, labels, }: TemplateCardProps): import("react/jsx-runtime").JSX.Element;
export default EntityCard;
//# sourceMappingURL=EntityCard.d.ts.map