import type { ExtractPropTypes, PropType } from 'vue';
import type { SubsectionListItem, SubsectionMode } from '../../types/global';
import { baseProps } from '../common/props';

/**
 * SubsectionProps 分段器 props 类型定义
 * @description 分段器，支持按钮/分段模式、动画、颜色等
 */

export const SubsectionProps = {
    ...baseProps,
    /** tab的数据 */
    list: { type: Array as PropType<Array<string | SubsectionListItem>>, default: () => [] },
    /** 当前活动的tab的index */
    current: { type: [Number, String] as PropType<number | string>, default: 0 },
    /** 激活的颜色 */
    activeColor: { type: String, default: 'var(--u-main-color)' },
    /** 未激活的颜色 */
    inactiveColor: { type: String, default: 'var(--u-content-color)' },
    /** 模式选择，mode=button为按钮形式，mode=subsection时为分段模式 */
    mode: { type: String as PropType<SubsectionMode>, default: 'button' },
    /** 字体大小，单位rpx */
    fontSize: { type: [Number, String] as PropType<number | string>, default: 28 },
    /** 是否开启动画效果 */
    animation: { type: Boolean, default: true },
    /** 组件的高度，单位rpx */
    height: { type: [Number, String] as PropType<number | string>, default: 70 },
    /** 激活tab的字体是否加粗 */
    bold: { type: Boolean, default: true },
    /** mode=button时，组件背景颜色 */
    bgColor: { type: String, default: 'var(--u-divider-color)' },
    /** mode = button时，滑块背景颜色 */
    buttonColor: { type: String, default: 'var(--u-bg-white)' },
    /** 在切换分段器的时候，是否让设备震一下 */
    vibrateShort: { type: Boolean, default: false }
};

export type SubsectionProps = ExtractPropTypes<typeof SubsectionProps>;
