import type { ExtractPropTypes, PropType } from 'vue'
import { baseProps, makeNumberProp, numericProp } from '../common/props'
import type { BadgeProps } from '../wd-badge/types'

/**
 * 折叠面板子项
 */
export interface TabbarItem {
  // 唯一标识
  name: string | number
}

export const tabbarItemProps = {
  ...baseProps,
  /**
   * 标签页的标题
   */
  title: String,
  /**
   * 唯一标识符
   */
  name: numericProp,
  /**
   * 图标
   */
  icon: String,
  /**
   * 徽标显示值
   */
  value: {
    type: [Number, String, null] as PropType<number | string | null>,
    default: null,
  },
  /**
   * 是否点状徽标
   */
  isDot: {
    type: Boolean,
    default: undefined,
  },
  /**
   * 徽标最大值
   */
  max: Number,
  /**
   * 徽标属性，透传给 Badge 组件
   */
  badgeProps: Object as PropType<BadgeProps>,
}

export type TabbarItemProps = ExtractPropTypes<typeof tabbarItemProps>
