import type { StyleValue } from 'vue'

export interface menuListType {
  key: string | number
  name: string
  hidden?: boolean | Function
  disabled?: boolean | Function
}

export interface DasTabsoptionsType {
  
  key?: string | number
  
  tab?: string
  
  disabled?: boolean
  
  hidden?: boolean
  
  forceRender?: boolean
  
  tabSlot?: string
  
  closeIconSlot?: string
  
  contentSlot?: string
  [propName: string]: any
}

export interface Props {
  theme: 'default' | 'kjl' | 'cjb' | 'ssl'

  
  activeKey?: string | number

  
  type?: 'line' | 'card' | 'lattice' | 'editable-card'

  
  isStrict?: boolean

  
  hideAdd?: boolean

  
  tabsStyle?: StyleValue

  
  size?: 'large' | 'medium' | 'small'

  
  contextmenu?: boolean

  
  width?: string | number

  
  options: Array<DasTabsoptionsType>

  
  constomMenuList?: Array<menuListType>

  
  tabWidth?: string | number

  
  tabMaxWidth?: string | number

  
  tabPadding?: string

  
  defualtProps?: { key?: string; tab?: string }

  
  menuPoppverAttrs?: Record<any, any>

  
  fontColor?: string

  
  backgroudColor?: string

  
  borderColor?: string

  
  moreIconType?: 'default' | 'arrow'

  
  hideOverflow?: boolean
}

export interface Emits {
  (e: 'update:activeKey', value: string | number): void

  
  (e: 'tabClick', activeKey: any): void

  
  (e: 'menuClick', menu: menuListType, item: any): void
}
