// 共享的赛程组件类型定义

// 队伍比赛信息
export interface TeamMatchInfo {
  name: string; // 队伍名称
  img: string; // 队伍logo
  score: string; // 队伍得分
  win?: boolean; // 是否胜利队伍
  isMine?: boolean; // 是否我的队伍
  tag?: 'champion' | 'runner-up' | 'third' | 'qi'; // 队伍标签 冠军、亚军、季军、弃权
}

// 轮次Tab
export interface RoundTab {
  name: string;
  status: 'waiting' | 'ing' | 'end';
  showIngTag?: boolean; // 是否显示进行中标签
}

// 比赛项
export interface MatchItem {
  schId: string | number;
  teamA: TeamMatchInfo;
  teamB: TeamMatchInfo;
  tips: string;
  status: 'waiting' | 'ing' | 'end'; // waiting 未开始 ing 进行中 end 已结束
  scheCodeName?: string; // 赛程代号名称
  onClickLive?: (schId: string | number) => void; // 点击直播回调
  onClickTeams?: (schId: string | number) => void; // 点击队伍回调
}

// 轮次数据
export interface RoundData {
  name: string;
  scheCodeName?: string; // 赛程代号名称
  list: MatchItem[];
}

// 冠军赛程项
export interface ChampoinScheduleItem {
  teamA: TeamMatchInfo;
  teamB: TeamMatchInfo;
  tips: string;
  status: 'waiting' | 'ing' | 'end'; // waiting 未开始 ing 进行中 end 已结束
  schId: string | number;
  subscribeStatus: 'subscribed' | 'unsubscribed'; // 订阅比赛状态
  onChampoinClickLive?: (schId: string | number) => void; // 点击直播回调
  onChampoinClickTeams?: (schId: string | number) => void; // 点击队伍回调
  onChampoinSubscribeClick?: () => void; // 订阅比赛点击回调
  showVsTag?: boolean; // 是否显示 VS 文字（否则显示冒号图标）
}

// 通用的赛程容器 Props（ScheTree 和 SchePage 共享）
export interface BaseScheContainerProps {
  title?: string; // 标题
  groupCount?: number; // 分组数量（用于计算滑块位置） 大于1时显示滑块
  activeTab?: string; // 当前赛程类型
  onTabChange?: (tab: string) => void; // tab 切换回调
  roundTabList?: RoundTab[]; // 轮次tab列表
  roundList?: RoundData[]; // 轮次赛程数据
  typeTabs?: { name: string; value: string }[]; // 赛程类型tab列表
  myScheNum?: number; // 我的赛程数量
  selectGroup?: (groupIndex: number) => void; // 选择分组回调
  onRoundChange?: (startIndex: number) => void; // 轮次显示变化回调
  showMySche?: boolean; // 是否显示我的赛程
  onMyScheClick?: () => void; // 我的赛程点击回调
  onBackClick?: () => void; // 返回按钮点击回调
  onClickLive?: (schId: string | number) => void; // 点击直播回调
  onClickTeams?: (schId: string | number) => void; // 点击队伍回调
  showSubscribe?: boolean; // 是否显示订阅比赛
  onSubscribeClick?: () => void; // 订阅比赛点击回调
  subscribeStatus?: 'subscribed' | 'unsubscribed'; // 订阅比赛状态
  battleNavList?: { id: number; title: string }[]; // 比赛导航列表
  activeIndex?: number; // 当前比赛导航索引
  navClick?: (id: number) => void; // 比赛导航点击回调
  groupTabs?: { value: number; title: string }[]; // 分组tab列表
  activeGroupTab?: number; // 当前分组tab索引
  onGroupTabChange?: (value: number) => void; // 分组tab点击回调
  showEmpty?: boolean; // 是否显示空状态
  emptyText?: string; // 空状态提示文字
}

// 通用的赛程容器 State（ScheTree 和 SchePage 共享）
export interface BaseScheContainerState {
  sliderPosition: number; // 滑块位置 (0 到 1)
  isDragging: boolean; // 是否正在拖拽
  currentGroupIndex: number; // 当前分组索引 (1 到 groupCount)
  contentScrollLeft: number; // content-box 横向滚动位置
  currentRoundIndex: number; // 当前轮次索引
  contentOpacity: number; // 赛程内容透明度 (0 到 1)
}
