/** * [INPUT]: 依赖 styles/v4/tokens.css 的 --zzm-tier-* 令牌(免费绿/会员黄/拓展红) * [OUTPUT]: 对外提供 TIER3(档位配色/文案表)、tierOf(required_level→档键)、tierInfo(→档对象) * [POS]: lib 层中立单一真相源——「课时三档长什么样」的唯一定义;被 screens/v4/course/TierPill(前台胶囊) * 消费,杜绝 LessonCard/HistoryPage 各写一份配色字面量。后台 admin/panels/courses/shared.js 的 TIERS 另有 * 段选实色/说明文需求,只与本表【文案与 tint 配色】对齐(会员/绿黄红),不强制 import(后台段选实色另定)。 * 档位=videos.required_level:免费(0/1) / 会员(2) / 拓展(3);会员与拓展同权(v21),区别仅展示归类。 * [PROTOCOL]: 变更时更新此头部,然后检查 CLAUDE.md */ // 档键(= 归一后的 required_level 档位) export const TIER_FREE = 0 export const TIER_MEMBER = 2 export const TIER_EXT = 3 // 三档配色/文案表(配色全走 tokens.css 令牌;tint=浅底胶囊背景 / ink=其上可读字色 / accent=实色) export const TIER3 = { 0: { level: 0, label: '免费', tint: 'var(--zzm-tier-free-bg)', ink: 'var(--zzm-tier-free-ink)', accent: 'var(--zzm-tier-free)' }, 2: { level: 2, label: '会员', tint: 'var(--zzm-tier-member-bg)', ink: 'var(--zzm-tier-member-ink)', accent: 'var(--zzm-tier-member)' }, 3: { level: 3, label: '拓展', tint: 'var(--zzm-tier-ext-bg)', ink: 'var(--zzm-tier-ext-ink)', accent: 'var(--zzm-tier-ext)' }, } // required_level → 档键(>=3 拓展 / >=2 会员 / 其余免费;1「客户端」历史档归免费展示,与全站判定一致) export function tierOf(requiredLevel) { const l = Number(requiredLevel ?? 0) return l >= 3 ? TIER_EXT : l >= 2 ? TIER_MEMBER : TIER_FREE } // required_level → 档对象(配色 + 文案),供 TierPill 直接消费 export function tierInfo(requiredLevel) { return TIER3[tierOf(requiredLevel)] }