/**
 * 定义颜色比例尺，从最浅(50)到最深(950)的颜色梯度
 * 用于构建一致的颜色系统，每个数字代表颜色的深浅程度
 */
export type ColorScale = {
    50: string;  // 最浅色调
    100: string; // 非常浅色调
    200: string; // 浅色调
    300: string; // 中浅色调
    400: string; // 中等偏浅色调
    500: string; // 基准色调
    600: string; // 中等偏深色调
    700: string; // 深色调
    800: string; // 很深色调
    900: string; // 非常深色调
    950: string; // 最深色调
    DEFAULT: string; // Tailwind 默认值，通常对应 500
}
/**
 * 主题的基础颜色配置
 * 定义系统中使用的所有基础色板
 */
export type ThemeColors = {
    primary: ColorScale;   // 主要品牌色
    secondary: ColorScale; // 次要品牌色
    neutral: ColorScale;   // 中性色，通常用于文本和背景
    success: ColorScale;   // 成功状态颜色
    warning: ColorScale;   // 警告状态颜色
    error: ColorScale;     // 错误状态颜色
    info: ColorScale;      // 信息状态颜色
}
/**
 * 主题的语义化颜色配置
 * 定义具体UI元素的颜色应用场景
 */
export type ThemeSemantics = {
    colors: ThemeColors,
    /** 文本颜色相关配置 */
    textColor: {
        DEFAULT: string;      // 默认文本颜色
        primary: string;      // 主要文本
        secondary: string;    // 次要文本
        tertiary: string;     // 第三级文本
        disabled: string;     // 禁用状态
        inverse: string;      // 反色文本
        success: string;      // 成功状态
        warning: string;      // 警告状态
        error: string;        // 错误状态
        info: string;         // 信息提示
        link: string;         // 链接文本
        linkHover: string;    // 链接悬浮
        placeholder: string;  // 占位符文本
        highlight: string;    // 高亮文本
    };

    /** 背景颜色相关配置 */
    backgroundColor: {
        DEFAULT: string;           // 默认背景色
        paper: string;             // 卡片/纸张背景
        subtle: string;            // 轻微背景
        inverse: string;           // 反色背景
        success: string;           // 成功状态背景
        warning: string;           // 警告状态背景
        error: string;             // 错误状态背景
        info: string;              // 信息提示背景
        primaryHover: string;      // 主要按钮悬浮
        primaryActive: string;     // 主要按钮激活
        primaryDisabled: string;   // 主要按钮禁用
        secondaryHover: string;    // 次要按钮悬浮
        secondaryActive: string;   // 次要按钮激活
        secondaryDisabled: string; // 次要按钮禁用
        selected: string;          // 选中状态
        hover: string;             // 通用悬浮态
        focused: string;           // 聚焦状态
        disabled: string;          // 禁用状态
        overlay: string;           // 遮罩层
    };

    /** 边框颜色配置 */
    border: {
        DEFAULT: string;      // 默认边框
        subtle: string;       // 轻微边框
        strong: string;       // 强调边框
        focus: string;        // 聚焦边框
        inverse: string;      // 反色边框
        success: string;      // 成功状态边框
        warning: string;      // 警告状态边框
        error: string;        // 错误状态边框
        info: string;         // 信息提示边框
        disabled: string;     // 禁用状态边框
    };
}


export type ThemeToken = ThemeSemantics
export interface Theme {
    token: ThemeToken;
    isDark: boolean;
}
export interface ThemeSeed {
    colors: {
        primary: string;
        secondary: string;
        neutral: string;
        success?: string;
        warning?: string;
        error?: string;
        info?: string;
    }

    isDark?: boolean;
}
