跳到主要内容

主题 SDK 概述

主题 SDK 是替换 NeoTavern 整个视觉外壳的版本化契约 —— 而不仅仅是换色。

主题 SDK 是什么

主题是一个控制应用外观以及主要区域如何组成的软件包(.sttheme)。 与插件不同,主题没有 JavaScript:它是 CSS、语义令牌和清单中的声明式外壳 布局。由于 SDK 是声明式的,主题无法破坏应用的行为或到达其数据。

@neotavern/theme-sdk 包提供契约本身:规范令牌名、清单校验、继承解析和 CSS 变量生成。宿主的参考实现通过把 --st-* 自定义属性写到文档根上, 并按定义好的顺序加载主题的样式表来应用主题。

三个层级

主题化分为三个层级,主题可以使用其中任何一个:

  1. 设计令牌 —— 颜色、字体、间距、圆角、阴影、z-index 层、动效和控件 大小的语义变量。组件只引用这些令牌,因此覆盖一个令牌会一致地重新 样式化整个界面。
  2. 组件皮肤 —— 通过稳定的 data-componentdata-partdata-roledata-state 钩子重新样式化组件的 CSS。
  3. 外壳布局 —— 主要区域的声明式组合:导航栏、管理面板和聊天工作区。

由于聊天逻辑、数据模型和行为不受影响,主题可以模仿操作系统、游戏主机、 视觉小说界面或移动应用布局,而不会破坏任何功能。详情请参阅 层级

无需构建步骤的创作

主题是一个包含 theme.jsoncomponents.cssshell.css 的 ZIP。 你可以手工构建一个:

  1. 打开主题管理器并下载主题入门套件。
  2. 解包并编辑 theme.jsoncomponents.cssshell.css
  3. 把文件重新压缩到归档根目录并安装软件包。
  4. 检查浅色和深色模式、移动端、键盘焦点、RTL 和安全模式,然后应用主题。

第一个主题不需要 Node.js、npm、JavaScript 或主题 SDK CLI。

安装和激活

安装软件包并不会激活它。激活会校验整个 extends 链是否存在缺失的父主题 和循环,然后在一次事务中更新启用的主题和保存的主题选择。用相同 id 更新 软件包会原子地替换其目录并保持当前的激活状态;注册表错误时恢复之前的 目录。

发行版附带一组内置主题,例如 AMOLED、GitHub Dark、Matrix、Nord、Gruvbox、 Dracula、Tokyo Night、Catppuccin Mocha、Solarized Dark 和 One Dark, 因此主题管理器永远不会空着打开。

安全

主题无法读取聊天记录、API 密钥或文件系统,并且不包含可执行代码。每个 样式表都会扫描禁止的构造,安全模式完全禁用第三方主题。保证请参阅 安全模式,完整 API 请参阅生成的 主题 SDK 参考

下一步