import { CSSProperties, ReactNode } from "react";

//#region src/components/pisellActionPanel/types.d.ts
/**
 * 操作项层级（主/次/危险）
 */
type ActionPanelItemPriority = 'primary' | 'secondary' | 'danger' | 'default';
/**
 * Action Panel 单条操作项
 * 对应设计文档 Action Item，可渲染为 Button / IconButton
 */
interface PisellActionPanelItem {
  /** 唯一 key，用于 React key；不传则用 index */
  key?: string;
  /** 展示文案（Button 时显示） */
  label?: string;
  /** 图标节点（可单独图标或与 label 同显） */
  icon?: ReactNode;
  /** 点击回调 */
  onClick?: () => void;
  /** 是否禁用 */
  disabled?: boolean;
  /** 是否显示（条件显隐） @default true */
  visible?: boolean;
  /** 层级：主/次/危险/默认，影响按钮样式 */
  priority?: ActionPanelItemPriority;
  /** 单项内联样式 */
  style?: CSSProperties;
  /** 单项类名 */
  className?: string;
}
/**
 * Action Panel 分组
 * 对应设计文档 Action Group，内包含多个 Action Item
 */
interface PisellActionPanelGroup {
  /** 唯一 key；不传则用 index */
  key?: string;
  /** 本组操作项 */
  items: PisellActionPanelItem[];
  /** 组内整体优先级（可影响组内按钮默认 priority） */
  priority?: ActionPanelItemPriority;
  /** 是否显示该组 @default true */
  visible?: boolean;
  /** 组内对齐方式（组内多个 item 时的对齐） */
  align?: 'start' | 'center' | 'end';
  /** 组容器类名 */
  className?: string;
  /** 组容器样式 */
  style?: CSSProperties;
}
/**
 * Panel 布局方式
 */
type ActionPanelLayout = 'horizontal' | 'vertical' | 'grid';
/**
 * Panel 对齐方式
 */
type ActionPanelAlign = 'left' | 'center' | 'right' | 'space-between';
/**
 * 溢出策略：换行 / 滚动 / 更多菜单收纳
 */
type ActionPanelOverflowStrategy = 'wrap' | 'scroll' | 'moreMenu';
/**
 * PisellActionPanel 组件 Props
 * 设计文档：Action Panel (pcp_ge_actionPanel_V1.0)
 */
interface PisellActionPanelProps {
  /** 操作分组列表，顺序即展示顺序 */
  groups: PisellActionPanelGroup[];
  /** 布局方式 @default 'horizontal' */
  layout?: ActionPanelLayout;
  /** 整体对齐方式 @default 'left' */
  align?: ActionPanelAlign;
  /** 溢出策略 @default 'wrap' */
  overflowStrategy?: ActionPanelOverflowStrategy;
  /** 组与组之间的间距（CSS gap 或 number px） */
  groupGap?: number | string;
  /** 组内操作项之间的间距（CSS gap 或 number px） */
  itemGap?: number | string;
  /** 根节点类名 */
  className?: string;
  /** 根节点样式 */
  style?: CSSProperties;
}
//#endregion
export { ActionPanelAlign, ActionPanelItemPriority, ActionPanelLayout, ActionPanelOverflowStrategy, PisellActionPanelGroup, PisellActionPanelItem, PisellActionPanelProps };