import React from 'react';

export interface BaseComponentProps {
  className?: string;
  children?: React.ReactNode;
  id?: string;
}

export interface VariantProps<T> {
  variant?: keyof T;
  size?: 'sm' | 'md' | 'lg' | 'xl';
}

export interface ComponentMetadata {
  name: string;
  type: string;
  variants: string[];
  sizes?: string[];
  category: 'layout' | 'form' | 'navigation' | 'content' | 'feedback';
  description?: string;
}

export interface ComponentSelectionCriteria {
  useCase: string;
  variant?: string;
  size?: string;
  props?: Record<string, any>;
  isComposite?: boolean;
}

export interface ComponentSelectionResult {
  component: ComponentMetadata | null;
  confidence: number;
  alternatives: ComponentMetadata[];
}
