import { CSSProperties, MouseEvent, ReactNode } from "react";

//#region src/components/pisellExport/types.d.ts
/**
 * 展示形态
 * @description icon：仅图标；button：图标 + 文案
 */
type VariantType = 'icon' | 'button';
/**
 * 尺寸
 * @description 小、中、大三种尺寸，对应设计稿 padding 与字体
 */
type SizeType = 'small' | 'medium' | 'large';
/**
 * 视觉类型
 * @description default：默认边框/灰字；primary：主色描边或填充
 */
type ExportButtonType = 'default' | 'primary';
/**
 * PisellExport 组件 Props
 * @description 导出触发器 UI 组件，仅负责展示与点击回调，不内置导出逻辑
 */
interface PisellExportProps {
  /**
   * 展示形态
   * @default 'button'
   */
  variant?: VariantType;
  /**
   * 尺寸
   * @default 'medium'
   */
  size?: SizeType;
  /**
   * 视觉类型（默认样式 / 主色样式）
   * @default 'default'
   */
  type?: ExportButtonType;
  /**
   * 是否禁用
   * @default false
   */
  disabled?: boolean;
  /**
   * Button 形态下的文案，不传时使用国际化默认文案
   */
  label?: ReactNode;
  /**
   * 自定义图标，不传时使用内置下载图标（download-cloud-01）
   */
  icon?: ReactNode;
  /**
   * 点击触发导出
   * @description 由调用方在此回调中实现导出请求、轮询、下载等逻辑
   */
  onExport?: (e: MouseEvent<HTMLElement>) => void;
  /**
   * 自定义类名
   */
  className?: string;
  /**
   * 自定义样式
   */
  style?: CSSProperties;
}
//#endregion
export { ExportButtonType, PisellExportProps, SizeType, VariantType };