"use strict";
/**
 * 主题解析：将 token 覆盖映射转换为 CSS 变量键值对
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveTheme = resolveTheme;
function normalizeVarName(key) {
    return key.startsWith('--') ? key : `--${key}`;
}
/**
 * 判断 token 名称是否属于尺寸类（需要自动补 px 后缀）。
 * 规则：变量名中包含以下语义片段之一即视为尺寸 token。
 */
const SIZE_TOKEN_RE = /(?:^|-|_)(?:size|radius|width|height|padding|margin|gap|font-size|line-height|spacing|inset|top|right|bottom|left|border-width)(?:$|-|_)/i;
function isSizeToken(key) {
    return SIZE_TOKEN_RE.test(key);
}
/**
 * 归一化 CSS 变量值
 * - number + 尺寸类 token → `${value}px`
 * - number + 非尺寸 token → 原数字字符串
 * - string → 原值
 */
function normalizeCssVarValue(key, value) {
    if (typeof value === 'number') {
        return isSizeToken(key) ? `${value}px` : String(value);
    }
    return value;
}
/**
 * 将 token 覆盖映射解析为可直接作为 inline style 使用的 CSS 变量键值对
 *
 * @param token - token 覆盖映射，undefined/null/'' 值会被跳过
 * @returns 已归一化的 CSS 变量键值对（key 带 `--` 前缀）
 */
function resolveTheme(token) {
    if (!token)
        return {};
    const result = {};
    for (const [key, value] of Object.entries(token)) {
        if (value != null && value !== '') {
            result[normalizeVarName(key)] = normalizeCssVarValue(key, value);
        }
    }
    return result;
}
