/**
 * Twilio MCP UI Kit — Type definitions
 */

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 BarColor = "green" | "blue" | "purple" | "yellow" | "red";
export type Padding = "none" | "sm" | "md" | "lg";
export type SplitRatio = "50/50" | "33/67" | "67/33";
export type GapSize = "sm" | "md" | "lg";
export type ChartOrientation = "horizontal" | "vertical";
export type FlowNodeType = "start" | "action" | "condition" | "end";
export type FlowDirection = "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 TimelineEvent { title: string; description?: string; timestamp: string; variant?: "default" | "success" | "warning" | "error"; icon?: string; }
export interface BarChartBar { label: string; value: number; color?: string; }
export interface PieSegment { label: string; value: number; color?: string; }
export interface LineChartPoint { label: string; value: number; }
export interface FlowNode { id: string; label: string; description?: string; type?: FlowNodeType; }
export interface FlowEdge { from: string; to: string; label?: string; }

export interface PageHeaderProps { title: string; subtitle?: string; status?: string; statusVariant?: StatusVariant; gradient?: boolean; stats?: StatItem[]; }
export interface CardProps { title?: string; subtitle?: string; padding?: Padding; noBorder?: boolean; }
export interface StatsGridProps { columns?: number; }
export interface SplitLayoutProps { ratio?: SplitRatio; gap?: GapSize; }
export interface SectionProps { title?: string; description?: string; }
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 TimelineProps { events?: TimelineEvent[]; }
export interface ProgressBarProps { label: string; value: number; max?: number; color?: BarColor; showPercent?: boolean; benchmark?: number; benchmarkLabel?: string; }
export interface BarChartProps { bars?: BarChartBar[]; orientation?: ChartOrientation; maxValue?: number; showValues?: boolean; title?: string; }
export interface PieChartProps { segments?: PieSegment[]; donut?: boolean; title?: string; showLegend?: boolean; }
export interface LineChartProps { points?: LineChartPoint[]; color?: string; showPoints?: boolean; showArea?: boolean; title?: string; yAxisLabel?: string; }
