这些样式选项适用于由
ThunderPhoneWidget React 组件和 ThunderPhone.mount() CDN 方法渲染的预构建小组件。如果您需要完全自定义的 UI,请改用无头 Hook。主题
theme 属性控制小组件的配色方案。它会将 tp--light 或 tp--dark 类应用到小组件根元素:
两种主题均采用带有背景模糊和细微透明效果的毛玻璃风格栏设计。
CSS 自定义属性
该组件公开了可覆盖的 CSS 自定义属性(变量),让您无需修改单个类即可更改颜色。这些属性由应用于.tp-widget 根元素的主题类(.tp--light 或 .tp--dark)定义:
覆盖自定义属性
通过primaryColor 属性设置强调色:
.tp-widget.tp--light / .tp-widget.tp--dark),这样无论样式表顺序如何,您的规则都会优先于定义默认值的主题类:
CSS 类
所有小部件类均以tp- 为前缀,以避免与您现有的样式冲突。
示例
通过 Props 自定义强调色
为小组件添加品牌风格的最简单方式:通过 CSS 自定义颜色
覆盖自定义属性以完全控制颜色。请注意,强调色来自primaryColor prop,而不是 CSS:
自定义尺寸
通过调整栏、按钮和文本尺寸,使小组件变大或变小:隐藏文本标签
小组件的所有文本均位于.tp-meta 中。完全隐藏它,仅保留波形和按钮:
空闲标签位于
.tp-name/.tp-sub 中,而非 .tp-status——仅隐藏 .tp-status 时,小组件空闲时仍会显示标题。特定主题覆盖
使用主题类定位特定主题:使用 className 设定作用域
使用 React 组件时,传入className prop,将覆盖规则限定到特定的小组件实例:
primaryColor prop 为每个实例设置独立的强调色(CSS 无法覆盖 --tp-accent——它以内联方式设置)。
完全自定义 UI
如果 CSS 覆盖不足以满足需求,无头 Hook 可让您完全掌控。您提供所有 HTML 和样式,而useThunderPhone 负责处理语音会话。该 Hook 还提供 audioLevelRef,用于构建波形等音频响应式可视化效果。