import { ProductCardConfig } from "../../../../plus/productSelect/ProductCard/SkuCard/type.js";

//#region src/components/ticketBooking/components/ProductDisplayAdapter/types.d.ts
/** 预设配置的字符串键 */
type ProductDisplayPresetKey = 'product-select' | 'sku-list-a1' | 'sku-list-a2' | 'sku-list-a5' | 'default';
/** ProductSelect 布局配置 */
interface ProductSelectLayout {
  grid: boolean;
  config: string;
}
type NumberBoolean = 0 | 1;
/** ProductSelect 列表设置 */
interface ProductListSetting {
  /** 是否显示产品封面 */
  isProductCover?: NumberBoolean;
  /** 是否显示标题 */
  isTitle?: NumberBoolean;
  /** 是否显示副标题 */
  isSubtitle?: NumberBoolean;
  /** 是否显示价格 */
  isPrice?: NumberBoolean;
  /** 是否显示原价 */
  isOriginPrice?: NumberBoolean;
  /** 是否显示库存 */
  isStock?: NumberBoolean;
}
/** ProductSelect 模式配置 */
interface ProductSelectConfig {
  /** 是否显示搜索框 */
  showSearch?: boolean;
  /** 是否显示分类Tab */
  showTab?: boolean;
  /** 布局配置 */
  layout?: ProductSelectLayout;
  /** 产品列表设置 */
  productListSetting?: ProductListSetting;
}
/**
 * SkuCard 配置
 * 直接使用 ProductCardConfig 类型，保持类型同步
 *
 * @see packages/private-materials/src/plus/productSelect/ProductCard/SkuCard/type.ts ProductCardConfig
 */
type SkuCardAllConfig = ProductCardConfig;
/** List 布局类型 */
type ListLayoutType = 'grid' | 'list';
/** Tab 样式类型 */
type TabStyleType = 'switch' | 'anchor' | 'none';
/** List 组件配置 */
interface ListConfig {
  /** 布局类型 */
  layout?: ListLayoutType;
  /** 列数 */
  columns?: number;
  /** 是否显示分页 */
  showPagination?: boolean;
  /** 是否显示Tab */
  showTab?: boolean;
  /** Tab 样式类型：switch-切换模式，anchor-锚点模式，none-不显示 */
  tabStyle?: TabStyleType;
  /** Tab 是否吸顶 */
  stickyTop?: boolean;
  /** Tab配置 */
  tabConfig?: any;
  /** 分页配置 */
  paginationConfig?: any;
  [key: string]: any;
}
/** SkuList 模式配置 */
interface SkuListConfig {
  /** List 组件配置 */
  listConfig?: ListConfig;
  /** SkuCard 配置 */
  skuCardAllConfig?: SkuCardAllConfig;
}
/** 展示模式类型 */
type DisplayMode = 'product-select' | 'sku-list';
/**
 * 产品展示配置
 * 用于配置化控制产品展示的方式
 */
interface ProductDisplayConfig {
  /** 展示模式 */
  displayMode: DisplayMode;
  /** ProductSelect 模式配置 */
  productSelectConfig?: ProductSelectConfig;
  /** SkuList 模式配置 */
  skuListConfig?: SkuListConfig;
}
//#endregion
export { ProductDisplayConfig, ProductDisplayPresetKey };