Skip to main content
该小组件呈现为带有内置浅色和深色主题的毛玻璃风格栏。可通过三个层级进行自定义:用于常见选项的属性、用于主题设置的 CSS 自定义属性,以及用于完全控制的 CSS 类覆盖。
这些样式选项适用于由 ThunderPhoneWidget React 组件和 ThunderPhone.mount() CDN 方法渲染的预构建小组件。如果您需要完全自定义的 UI,请改用无头 Hook

主题

theme 属性控制小组件的配色方案。它会将 tp--lighttp--dark 类应用到小组件根元素:
两种主题均采用带有背景模糊和细微透明效果的毛玻璃风格栏设计。

CSS 自定义属性

该组件公开了可覆盖的 CSS 自定义属性(变量),让您无需修改单个类即可更改颜色。这些属性由应用于 .tp-widget 根元素的主题类(.tp--light.tp--dark)定义:

覆盖自定义属性

通过 primaryColor 属性设置强调色:
--tp-accent 会通过 primaryColor 属性设置为内联样式,因此在样式表中覆盖 --tp-accent 不会生效。请通过该属性更改强调色。其他所有自定义属性均可在 CSS 中覆盖。
使用 CSS 覆盖其他自定义属性。请使用双类选择器(.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,将覆盖规则限定到特定的小组件实例:
然后在 CSS 中定位该类:
这样您可以在同一页面上使用多个具有不同样式的小组件实例。通过各自的 primaryColor prop 为每个实例设置独立的强调色(CSS 无法覆盖 --tp-accent——它以内联方式设置)。

完全自定义 UI

如果 CSS 覆盖不足以满足需求,无头 Hook 可让您完全掌控。您提供所有 HTML 和样式,而 useThunderPhone 负责处理语音会话。该 Hook 还提供 audioLevelRef,用于构建波形等音频响应式可视化效果。
当您需要音频响应式动画、自定义布局,或与现有组件库集成时,无头 Hook 是合适的选择。CSS 覆盖和自定义属性更适合快速调整主题。