参与贡献:模板、风格与 QA
写演示时不改模板。这份文档写给想给 slidehtml 本身加东西的人:新模板、新风格、新配色、新图标。改完都要跑一遍完整检查。
原则
- 只有当某类内容反复出现、现有模板都放不下时,才新增模板。能用现有模板拆页、换角度解决的,不加。
- 模板说明(适合、避免、内容上限、props、示例)只写在
src/kit/catalog.ts一处。docs/*/components.md和skills/slidehtml/references/都由它生成,不要手改。 - 不写死颜色:强调色一律用
var(--accent)、var(--accent-ink)、var(--accent-wash)、var(--accent-soft),半透明写rgb(var(--accent-rgb) / 0.16),否则换配色时不会跟着变。 - 不引用远程资源,不放真实品牌名、Logo、真实公司数据。示例内容保持中性。
新增模板
- 在
src/kit/新建组件,props 继承SlideBase,并用SlideHead/SlideFoot保持统一的头尾样式。 - 样式写进
src/styles/下对应的样式表,只使用u单位(24u是设计稿上的 24px)和:root里的颜色变量。内联style不经过u换算,只能放无单位的数值或 CSS 变量。最小字号 17u。 - 要支持逐条展开时,在每一项的最外层加
data-build(Reveal上写build);几个元素要同时出现时给它们相同的值,比如data-build={row}。同一个数字在相邻两页出现时,可以给它们加同一个data-morph(或在Numeral上传morph),翻页时会连起来过渡。 - 在
src/kit/index.ts导出组件,在src/kit/catalog.ts登记:写清适合、避免、内容上限、props 和示例。风格专属模板在“适合”里写明风格。 - 在某份示例演示里加一页来演示它,
demo指向这一页的 id,deck写这份示例演示的名字。 - 想支持
tone: 'dark'/'accent',要在深色和强调色下都检查过,并更新 guide.md 第 13 节 的列表。 - 运行
npx slidehtml docs重新生成参考文档,再运行npx slidehtml check <示例演示名>。
新增风格
风格只改标题和大数字的字体、圆角系数、底色和装饰,不改正文字号和间距,这样每个模板的内容上限在所有风格下都有效。
- 参照已有的风格预设(例如
src/kit/styles/bento.ts)新建一个StylePreset:label、note(一句话:长什么样、适合什么场合)、radius、paper,整份默认深色的再加tone: 'dark'。 - 在
src/kit/theme.ts的STYLES里登记,样式放进src/styles/下对应的样式表。 - 打开
#/kit/styles,确认每个模板在新风格下都没有破版;默认深色的风格要逐个检查深色下的可读性。 - 加一份用这种风格的示例演示,运行
npx slidehtml docs和npx slidehtml check。
新增配色
在 src/kit/theme.ts 的 THEMES 里加一项,每个字段都要填:accent、ink、wash、rgb、soft(用在深色背景上)和一组 paper(底色、卡片、分隔线往强调色方向偏一点)。在 #/kit 用“强调色”切换器把所有模板过一遍。
新增图标
精选集里没有合适的图标时,到 solar-icons.vercel.app 找名字,在 src/kit/icon-set.ts 对应分组里加一行 name: XxxIcon(从 @solar-icons/react/dynamic 导入),类型检查和图标索引会自动更新。名字要说清它画的是什么:Solar 的 ScaleIcon 是体重秤,所以登记为 weight-scale,而不是 scale。
QA 规则
npx slidehtml check 依次运行字体子集、类型检查、构建和自动 QA,最后一行是 PASS 或 FAIL (n)。自动 QA 在 1920×1080、1366×768、2560×1440、1440×900 四种窗口下逐页检查:
- 文字是否超出安全区、互相重叠、被容器裁切
- 字号是否小于 17u,字体是否加载
- 是否有外部网络请求
- 翻页键是否被拦截,逐条展开、总览、Bento 详情能否正常进出
- 模板库页面能否正常打开,
catalog.ts的demo是否指向存在的页面 - 页面下半部分是否偏空(只出 WARN)
报错的修法见 guide.md 第 8 节。截图存在 qa/,结果写在 qa/report.json。
QA 抓不到的也要看:逐页打开 qa/slide-NN-1920x1080.png,手绘圈、高亮、箭头这类装饰件放大 2 倍检查,位置要对准,强调的内容要和文字一致。
重新生成文档
npx slidehtml docs
改了 src/kit/catalog.ts、风格预设或配色之后都要运行。它会重新生成各语言的 docs/*/components.md 和 skills/slidehtml/references/ 下的模板表、风格表。
提交前
npx slidehtml check对受影响的示例演示输出PASS- 截图逐页看过
npx slidehtml docs已运行,生成的文件一起提交- 新增的第三方字体、图标、代码已写进
THIRD_PARTY_LICENSES.md