/// <reference types="react" />
import { LayoutConfig } from "../../pro/Selector/types.js";

//#region src/plus/skuOptionsSelection/types.d.ts
/**
 * SKU Card 文本样式配置
 */
interface SkuCardTextConfig {
  /** 是否显示 */
  visible?: boolean;
  /** 字体大小 */
  fontSize?: number;
  /** 颜色 */
  color?: string;
  /** 字体粗细 */
  fontWeight?: 'normal' | 'bold' | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
  /** 展示行数 */
  lineClamp?: number;
}
/**
 * SKU Card 图片配置
 */
interface SkuCardImageConfig {
  /** 是否显示 */
  visible?: boolean;
  /** 宽度 */
  width?: number;
  /** 高度 */
  height?: number;
  /** 圆角 */
  borderRadius?: number | string;
  /** 边框 */
  border?: string;
}
/**
 * SKU Card 禁用文本配置
 */
interface SkuCardDisabledTextConfig extends Omit<SkuCardTextConfig, 'lineClamp'> {
  /** 文本（可能是多语言） */
  text?: string;
}
/**
 * SKU Card 配置
 */
interface SkuCardConfig {
  /** 主标题配置 */
  title?: SkuCardTextConfig;
  /** 副标题配置 */
  subTitle?: SkuCardTextConfig;
  /** 价格配置 */
  price?: Omit<SkuCardTextConfig, 'lineClamp'>;
  /** 图片配置 */
  image?: SkuCardImageConfig;
  /**
   * @description 是否在「组合规格选项卡片（VariantCard）」展示价格
   * - 默认不展示，避免影响现有业务 UI
   */
  variantPriceVisible?: boolean;
  /** 禁用文本配置 */
  disabledText?: SkuCardDisabledTextConfig;
}
interface IProps {
  /** 数据源 */
  dataSource: DataSource;
  /** 原始值 */
  value: SkuValue;
  /** 配置 */
  config?: {
    /** 是否禁用 */overSold?: 0 | 1;
  };
  /** SKU Card 配置 */
  skuCardConfig?: SkuCardConfig;
  /** 选中变更回调 */
  onChange: (value: SkuValue) => void;
  /** 自定义滚动容器 */
  customScrollParent?: HTMLElement | string;
  /** 自定义样式 */
  style?: React.CSSProperties;
  /** 自定义配置 */
  customConfig?: {
    /** 弹窗宽度 */modalWidth?: number | string; /** 选项布局 */
    selectorLayout?: LayoutConfig | null;
  };
  /** 主题 */
  theme: {
    token?: {
      colorPrimary?: string;
    };
  };
}
interface DataSource {
  /** 单规格组数据 */
  option_group?: Array<OptionGroupItem>;
  /** 组合规格组装后的数据 */
  variant?: Array<VariantProductItem>;
  /** 组合规格组数据 */
  variant_group?: Array<VariantGroupItem>;
  /** 套餐商品组数据 */
  bundle_group?: Array<BundleItem>;
}
/**
 * 单规格组数据
 */
interface OptionGroupItem {
  /** 创建者id */
  create_account_id?: number;
  /** 创建时间 */
  created_at?: string;
  /** 删除时间 */
  deleted_at?: string | null;
  /** 模板id */
  template_id?: number;
  /** 更新者id */
  update_account_id?: number;
  /** 更新时间 */
  updated_at?: string;
  /** 单规格组id */
  id?: number;
  /** 是否启用 */
  is_enabled?: 0 | 1;
  /** 是否多选 */
  is_multiple?: 0 | 1;
  /** 最大选择数量 */
  max_quantity?: number;
  /** 最小选择数量 */
  min_quantity?: number;
  /** 单规格组名称 */
  name?: string;
  /** 单规格组下规格数据 */
  option_item?: Array<OptionItem>;
  /** 商品id */
  product_id?: number;
  /** 是否必选 */
  required?: 0 | 1;
  /** 店铺id */
  shop_id?: number;
  /** 排序 */
  sort?: number;
  /** 状态 */
  status?: 0 | 1;
}
/**
 * 单规格组下选项数据
 */
interface OptionItem {
  /** 创建者id */
  create_account_id?: number;
  /** 创建时间 */
  created_at?: string;
  /** 删除时间 */
  deleted_at?: string | null;
  /** 模板id */
  template_id?: number;
  /** 更新者id */
  update_account_id?: number;
  /** 更新时间 */
  updated_at?: string;
  /** 加价 */
  add_price?: string;
  /** 封面 */
  cover?: string;
  /** 描述 */
  description?: string;
  /** 规格id */
  id?: number;
  /** 是否启用 */
  is_enabled?: 0 | 1;
  /** 最大选择数量 */
  max_quantity?: number;
  /** 规格名称 */
  name?: string;
  /** 规格组id */
  option_group_id?: number;
  /** 原价 */
  original_price?: string;
  /** 商品id */
  product_id?: number;
  /** 店铺id */
  shop_id?: number;
  /** 排序 */
  sort?: number;
  /** 状态 */
  status?: 0 | 1;
}
/**
 * 组合规格组数据
 */
interface VariantGroupItem {
  /** 创建者id */
  create_account_id?: number;
  /** 创建时间 */
  created_at?: string;
  /** 删除时间 */
  deleted_at?: string | null;
  /** 更新者id */
  update_account_id?: number;
  /** 更新时间 */
  updated_at?: string;
  /** 组合规格组id */
  id?: number;
  /** 组合规格组名称 */
  name?: string;
  /** 位置id */
  position_id?: number;
  /** 商品id */
  product_id?: number;
  /** 店铺id */
  shop_id?: number;
  /** 排序 */
  sort?: number;
  /** 状态 */
  status?: 0 | 1;
  /** 组合规格组下选项数据 */
  variant_item?: Array<VariantItem>;
}
/**
 * 组合规格组下选项数据
 */
interface VariantItem {
  /** 创建者id */
  create_account_id?: number;
  /** 创建时间 */
  created_at?: string;
  /** 删除时间 */
  deleted_at?: string | null;
  /** 更新者id */
  update_account_id?: number;
  /** 更新时间 */
  updated_at?: string;
  /** 店铺id */
  shop_id?: number;
  /** 排序 */
  sort?: number;
  /** 规格id */
  id?: number;
  /** 是否默认 */
  is_default?: 0 | 1;
  /** 变体名称 */
  name?: string;
  /** 位置id */
  position_id?: number;
  /** 商品id */
  product_id?: number;
  /** 状态 */
  status?: 0 | 1;
  /** 组合规格组id */
  variant_group_id?: number;
}
/**
 * 组合规格商品数据
 */
interface VariantProductItem {
  /** 创建者id */
  create_account_id?: number;
  /** 创建时间 */
  created_at?: string;
  /** 更新者id */
  update_account_id?: number;
  /** 更新时间 */
  updated_at?: string;
  /** 条形码 */
  barcode?: string;
  /** 基础价格 */
  base_price?: string;
  /** 箱规数量 */
  box_specification_quantity?: number;
  /** 编码 */
  code?: string;
  /** 成本价格 */
  cost_price?: string;
  /** 封面 */
  cover?: string;
  /** 描述 */
  description?: string | null;
  /** 是否禁用 */
  disabled?: 0 | 1;
  /** 组合规格商品id */
  id?: number;
  /** 是否收税 */
  is_charge_tax?: 0 | 1;
  /** 是否发货 */
  is_delivery?: 0 | 1;
  /** 是否收税 */
  is_gst?: 0 | 1;
  /** 是否跟踪库存 */
  is_track?: 0 | 1;
  /** 名称 */
  name?: Record<string, string>;
  /** 开售重量 */
  open_sold_weight?: number;
  /** 原价 */
  original_price?: string;
  /** 是否超卖 */
  over_sold?: 0 | 1;
  /** 价格 */
  price?: string;
  /** 商品id */
  product_id?: number;
  /** 折扣类型 */
  rebate_type?: string;
  /** 折扣值 */
  rebate_value?: number;
  /** 标题 */
  title?: Record<string, string>;
  /** 单位 */
  unit?: string;
  /** 单位值 */
  unit_value?: number;
  /** 重量单位 */
  weight_unit?: string;
  /** 重量值 */
  weight_value?: string;
}
/**
 * 套餐商品组下选项数据
 */
interface BundleItem {
  /** 店铺id */
  shop_id?: number;
  /** 排序 */
  sort?: number;
  /** 条形码 */
  barcode?: string;
  /** 套餐商品id */
  bundle_product_id?: number;
  /** 套餐商品变体id */
  bundle_variant_id?: number;
  /** 编码 */
  code?: string;
  /** 封面 */
  cover?: string;
  /** 扩展id */
  extension_id?: number;
  /** 扩展类型 */
  extension_type?: string;
  /** 套餐商品组id */
  group_id?: number;
  /** 套餐商品id */
  id: string | number;
  /** 是否跟踪库存 */
  is_track?: 0 | 1;
  /** 最大选择数量 */
  max_quantity?: number;
  /** 单规格组数据 */
  option_group?: Array<OptionGroupItem>;
  /** 是否允许超卖 */
  over_sold?: 0 | 1;
  /** 价格 */
  price?: string;
  /** 价格类型: mark_up==>加价 | mark_down==>减价 */
  price_type?: 'mark_up' | 'mark_down';
  /** 价格类型扩展: product_price==>商品价格 */
  price_type_ext?: '' | 'product_price';
  /** 商品id */
  product_id?: number;
  /** 商品价格 */
  product_price?: string;
  /** 商品副标题 */
  product_subtitle?: string;
  /** 库存数量 */
  stock_quantity?: number;
  /** 标题 */
  title?: string;
}
/**
 * sku value
 */
interface SkuValue {
  /** 商品id */
  product_id: number;
  /** 多规格商品id */
  product_variant_id: number;
  /** 多规格商品选项字符串 */
  product_option_string?: string;
  /** 套餐商品组数据 */
  bundle: Array<any>;
  /** 价格 */
  price?: string | number;
  /** 单规格组数据 */
  option: Array<OptionItem & {
    num: number;
    price: string;
    product_option_item_id: number;
  }>;
}
//#endregion
export { IProps, SkuValue };