主题模式切换按钮
概述
SThemeModeToggle 是一个绑定到当前 SConfigProvider 主题的上下文循环按钮。每次点击在 auto → light → dark → auto 之间推进偏好,图标始终显示当前偏好(显示器 / 太阳 / 月亮)。当头部或工具栏里下拉太重、而二元开关又无法表达 auto 时,用它作为单按钮方案切换。
用法
特性
- 🔁 每次点击在
auto→light→dark→auto之间推进 - 🖼 图标反映当前偏好,三种状态都可区分
- 🎚 通过共享主题上下文写入偏好 —— 不接受
modelValue - ♿ 可访问名称为本地化的
配色方案: <当前>文本(可用ariaLabel覆盖),同时作为提示文字 - 🎨 继承
SButtonIcon的size/color/variant/shape
演示
Basic
100%
Click to cycle auto → light → dark
API
Aria 层
1ThemeModeToggle
5 属性
属性
| 属性名 | 类型 | 默认值 | 描述 |
|---|---|---|---|
size | ThemeSize | 'md' | 按钮的视觉尺寸。 |
color | ThemeColor | 'accent' | 按钮的主题颜色。 |
variant | ButtonVariant | 'ghost' | 该按钮的视觉变体。 |
shape | ButtonShape | 'square' | 按钮的形状。 |
ariaLabel | string | — | 按钮的无障碍标签。默认显示本地化的
`Scheme: <当前首选项>` 文本,该文本同时用于生成 `title` 工具提示。 |
注意事项
适用范围
与 SThemeModeSelect、SThemeModeSwitch、SThemeModeSegment 类似,SThemeModeToggle 属于主题层组件,直接操作父级 SConfigProvider 的主题上下文。它不接受 modelValue;偏好由 provider 持有并在所有主题组件间共享。它是 SThemeModeSegment 的单按钮版本:同样三种偏好,没有下拉也没有可见选项列表。
提醒
- 组件必须渲染在提供主题上下文的
SConfigProvider内部,否则useTheme会抛出异常。 - 与
SThemeModeSwitch不同,它跟踪的是偏好而不是生效方案:处于auto时图标仍是显示器,即使解析出的方案是浅色或深色。 - 循环只向前推进,选中某个特定偏好最多需要点击两次;需要直接选择请用
SThemeModeSelect或SThemeModeSegment。