当前位置: 首页 > news >正文

Catppuccin Palette API 参考全解析:flavors、colorEntries 与完整类型系统一次看懂

Catppuccin Palette API 参考全解析:flavors、colorEntries 与完整类型系统一次看懂

【免费下载链接】palette🎨 Soothing pastel theme to use within your projects!项目地址: https://gitcode.com/gh_mirrors/pal/palette

🎨Catppuccin Palette是一款为前端项目提供舒缓马卡龙配色的开源色板库,以@catppuccin/palette包发布。它的核心是导出flavorsflavorEntriescolorEntries等 API 和一套完整的 TypeScript 类型系统,让你可以在 Node、Deno 乃至任何 JS/TS 环境里以类型安全的方式取用 4 种口味(flavor)、每种 26 个颜色的 hex、rgb、hsl、oklch 值。本文带你一次看懂它的 API 参考与类型设计。

如需本地阅读源码,可执行:git clone https://gitcode.com/gh_mirrors/pal/palette

一、30 秒上手:安装与导入

📦 项目当前版本为1.8.0(见 deno.json 中的version字段),支持 npm 与 Deno 两种安装方式:

npm install @catppuccin/palette
import { flavors, flavorEntries, version } from "@catppuccin/palette";

整个库的对外入口只有一个文件 mod.ts,颜色数据则由 palette.json 提供,二者共同构成"数据 + 类型"的 API 参考核心。

二、flavors:四口味(flavors)核心入口

flavors是一个对象,键为 4 个口味名,值为该口味的完整色板(类型CatppuccinFlavors)。🐱 四个口味的设计定位如下:

口味Emoji明暗特点
latte🌻亮色唯一的浅色主题(dark: false
frappe🪩暗色低饱和、低对比
macchiato🌌暗色中饱和、中对比
mocha暗色高饱和、高对比

每个口味对象包含以下字段(定义见 mod.ts 的CatppuccinFlavor类型):

字段类型说明
namestring口味名称,如"Latte"
emojistring口味图标(需 Unicode 13.0+)
ordernumber在调色板规范中的顺序(0 起)
darkboolean是否为暗色主题
colorsCatppuccinColors26 个颜色的键值对
ansiColorsCatppuccinAnsiColors8 组终端 ANSI 颜色映射
colorEntriesEntries<CatppuccinColors>可类型安全遍历的颜色数组
ansiColorEntriesEntries<CatppuccinAnsiColors>可类型安全遍历的 ANSI 颜色数组

三、Catppuccin 的 26 色系统:Accent 与 Monochromatic

每个口味的colors都包含26 个颜色,由两类组成:

1. Accent(14 个强调色)

类型AccentName(mod.ts)列出了全部强调色名:

rosewater·flamingo·pink·mauve·red·maroon·peach·yellow·green·teal·sky·sapphire·blue·lavender

💡 这些颜色都标记accent: true,适合作为品牌色、链接色、图标高亮等。

2. Monochromatic(12 个中性色)

类型MonochromaticName(mod.ts)是从前景到背景的完整灰阶:

textsubtext1subtext0overlay2overlay1overlay0surface2surface1surface0basemantlecrust

🖼️ 使用建议:text系列用于文字,overlay系列用于悬浮/悬停元素,surface/base/mantle/crust从内到外层层加深背景,是搭建深色 UI 的标准骨架。

两类合并得到总类型:ColorName = AccentName | MonochromaticName

四、colorEntries 与 flavorEntries:类型安全的遍历器

Object.entries()在原生 TypeScript 里会丢失键的联合类型,而 Catppuccin Palette 专门定义了工具类型Entries<T>(mod.ts),为遍历场景提供"带类型的键值对数组":

flavorEntries.map(([flavorName, flavor]) => { console.log(`${flavor.emoji} ${flavor.name} is a ${flavor.dark ? "dark" : "light"} theme.`); flavor.colorEntries.map(([colorName, { hex, rgb, accent }]) => { // colorName 是 ColorName 联合类型,hex、rgb 都有完整补全 }); });
  • flavorEntries:遍历 4 个口味本身,元素形如["mocha", CatppuccinFlavor]
  • flavor.colorEntries:遍历单个口味的 26 个颜色,元素形如["rosewater", ColorFormat]
  • flavor.ansiColorEntries:遍历 8 组 ANSI 颜色,元素形如["blue", AnsiColorGroups]

🧭 一句话记忆:要按名取用用flavors.x.colors.y,要循环生成用各种*Entries

五、ColorFormat:一个颜色的四种色彩空间

ColorFormat是理解整个类型系统的钥匙(mod.ts),每个颜色对象都同时提供:

字段格式示例用途
name"Rosewater"规范中的显示名
order0在调色板规范中的排序
hex"#dc8a78"通用十六进制色值
rgb{ r: 220, g: 138, b: 120 }rgb()/rgba()字符串
hsl{ h: 10.8, s: 0.588, l: 0.667 }hsl(),前端微调很方便
oklch{ l: 0.714, c: 0.105, h: 33.1 }现代感知均匀色彩空间(1.8.0 新增)
accenttrue是否为强调色

✅ 这意味着无论是 CSS 变量、终端染色还是设计稿取色,一份数据即可满足所有场景,无需再做格式转换。

六、ANSI 终端配色:ansiColors 参考

🖥️ 做 CLI 工具时,ansiColors字段提供 8 组标准终端色(black/red/green/yellow/blue/magenta/cyan/white),每组内含normal(0–7 号色)与bright(8–15 号色)两个AnsiColorFormat对象,除上述色彩空间外还带code字段(ANSI 转义码编号)。

⚠️ 小细节:bright并不总是"更亮",而是更饱和;另外black组在暗色口味下映射的是surface1/surface2而非纯黑(可参考 mod.test.ts 中的断言逻辑)。

七、Web 前端用法:CSS 与 Sass

除了 JS 包,仓库还内置了 Web 生态的派生产物:

  • CSS 变量:docs/css.md 说明了如何引入@catppuccin/palette/style,之后即可写var(--ctp-mocha-text)rgba(var(--ctp-macchiato-base-rgb) / 0.9)这样的响应式变量。
  • Sass:docs/sass.md 提供两种用法——单口味@use "mocha"直接拿到$base$text变量;或引入聚合的catppuccin.$palette映射一次性生成 4 个口味的类。
  • 构建脚本:这些样式由 scripts/builders/npm/css.ts、scripts/builders/npm/scss.ts、scripts/builders/npm/less.ts 从同一份 JSON 自动生成,保证多格式颜色永不漂移。

八、数据来源与版本追踪

📌 所有颜色并非手写,而是由 scripts/gen_palette.ts 从每个口味的原始 hex 值出发,借助 colorjs.io 计算 rgb/hsl/oklch 后写入 palette.json(当前version: "1.8.0")。库导出的version常量与之保持一致,方便你的应用做兼容性检查。

📋 完整变更历史可查阅 CHANGELOG.md,例如 1.8.0 新增了oklch数值,1.5.0 引入了整套 ANSI 颜色,1.2.0 为每个口味加入了 emoji。

九、类型速查表

类型含义
FlavorName"latte" \| "frappe" \| "macchiato" \| "mocha"
AccentName/MonochromaticName14 个强调色 / 12 个中性色名
ColorName两者之并集,共 26 个
Colors<T>/AnsiColors<T>以颜色名为键、T为值的映射
ColorFormat单个颜色的 hex/rgb/hsl/oklch 结构
AnsiColorGroups/AnsiColorFormatANSI 组(normal+bright)/ 单个 ANSI 色
CatppuccinFlavor/CatppuccinFlavors单口味 / 四口味聚合对象
CatppuccinColors只读的完整颜色映射

总结

🎯 Catppuccin Palette 的 API 设计思路非常清晰:JSON 存数据、TS 类型保安全、Entries 助遍历、多色彩空间全覆盖。记住flavors(取用)、colorEntries(遍历)、ColorFormat(数据形态)这三件套,再配合 CSS/Sass 派生格式,你就能在任何项目中快速落地这套舒缓马卡龙配色了。

【免费下载链接】palette🎨 Soothing pastel theme to use within your projects!项目地址: https://gitcode.com/gh_mirrors/pal/palette

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4198558.html

相关文章:

  • LLM智能体长期记忆安全:从攻击面分析到纵深防御实践
  • 时间序列分析实战:从ARIMA到LSTM的核心技术与避坑指南
  • scrcpy 5分钟把安卓投屏到电脑,免费免装App
  • REPENTOGON 安装实战指南:以撒脚本扩展器一次跑通
  • 数学规划模型实战指南:从核心组件到工作流程与排坑
  • 多智能体系统与涌现式学习:Moltbook项目中的AI协作与同伴学习模式
  • 12X速度提升:如何用Quantus批处理指标让Faithfulness指标计算快12倍
  • 美赛D题深度解析:从团队组建到多维度量化建模的实战指南
  • MAA明日方舟助手:全日常一键长草,把重复刷图彻底交给自动化
  • klog 使用教程:Go 层级日志完整指南,三分钟上手
  • OmenSuperHub完整指南:免费为暗影精灵笔记本解锁风扇控制、功耗限制与硬件监控
  • BT 下载总卡在 99%?trackerslist 公共 Tracker 清单配置实录
  • 英雄联盟Akari助手:免费开源,把赛前准备从半小时压到三分钟
  • Unity Hair System 完整指南:从导入到实时渲染的上手路径
  • kons-9动画系统完全指南:ANIMATOR、SHAPE-ANIMATOR与MOTION-GROUP时间轴调度详解
  • 性能提升的秘密:expo-app-template中启用React Compiler的完整指南
  • Kaitai Struct Compiler 表达式语言完全指南:条件、循环与方法调用如何驱动解析逻辑
  • OpenBoardView 安装指南:.brd 查看器 4 个平台 30 分钟跑通
  • 拆解Proton Pass安全中心:如何检测密码复用、弱密码与泄露风险的4步引擎
  • 智能体抽象推理新基准ARC-AGI-3:技术原理、实现路径与实战优化
  • 如何把QQ空间历史说说全部导出成Excel?GetQzonehistory备份完整教程
  • BlueToolkit Recon侦察模块详解:如何采集目标设备的蓝牙版本、厂商与配对能力
  • 具身智能TVA-VLA形态自适应与策略泛化机制
  • 从模板到泛型编程:核心原理、技术价值与实践应用
  • Maka Agent 技能目录预算机制完整解析:2% 上下文窗口如何实现懒加载
  • C++中std::move与std::forward的深度解析:从值类别到完美转发
  • 五分钟在小程序里渲染 HTML 与 Markdown:wxParse 富文本解析完整实战
  • Kaitai Struct Compiler 源码架构全解:Scala 实现的多语言二进制解析器生成器分层设计
  • 七牛云Android SDK架构深度剖析:UploadManager如何统合DNS预解析、事务调度与配置监控
  • DWMBlurGlass Windows 标题栏模糊工具快速上手指南:新手 5 种效果一次看懂