/**
 * Meta Ads MCP UI — Type definitions for components.
 */

export type StatusVariant = 'active' | 'complete' | 'paused' | 'draft' | 'error' | 'sent' | 'paid' | 'pending' | 'open' | 'won' | 'lost' | 'abandoned';
export type TrendDirection = 'up' | 'down' | 'flat';
export type MetricColor = 'default' | 'green' | 'blue' | 'purple' | 'yellow' | 'red';
export type ChartOrientation = 'horizontal' | 'vertical';

export interface StatItem { label: string; value: string; }

export interface TableColumn {
  key: string;
  label: string;
  format?: string;
  sortable?: boolean;
  width?: string;
}

export interface TableRow {
  id?: string;
  [key: string]: any;
}

export interface PageHeaderProps {
  title: string;
  subtitle?: string;
  status?: string;
  statusVariant?: StatusVariant;
  gradient?: boolean;
  stats?: StatItem[];
}

export interface DataTableProps {
  columns?: TableColumn[];
  rows?: TableRow[];
  selectable?: boolean;
  emptyMessage?: string;
  pageSize?: number;
}

export interface MetricCardProps {
  label: string;
  value: string;
  trend?: TrendDirection;
  trendValue?: string;
  color?: MetricColor;
}

export interface StatusBadgeProps {
  label: string;
  variant?: StatusVariant;
}

export interface BarChartBar { label: string; value: number; color?: string; }
export interface BarChartProps {
  bars?: BarChartBar[];
  orientation?: ChartOrientation;
  maxValue?: number;
  showValues?: boolean;
  title?: string;
}

export interface LineChartPoint { label: string; value: number; }
export interface LineChartProps {
  points?: LineChartPoint[];
  color?: string;
  showPoints?: boolean;
  showArea?: boolean;
  title?: string;
  yAxisLabel?: string;
}

export interface PieSegment { label: string; value: number; color?: string; }
export interface PieChartProps {
  segments?: PieSegment[];
  donut?: boolean;
  title?: string;
  showLegend?: boolean;
}

export interface FunnelStage { label: string; value: number; color?: string; }
export interface FunnelChartProps {
  stages?: FunnelStage[];
  showDropoff?: boolean;
  title?: string;
}
