组件/ModeChip 模式芯片

ModeChip 模式芯片

表示当前模式、切换时原地变身的按钮

已验证自 0.6.0

用法

基础

示例加载中...

色调

muted 没有底色;其余色调以该色相的 -light-9 为底色,info 取主色色相。

示例加载中...

最佳实践

  • 文字随模式变化的芯片不加 aria-pressed;它只用于文字固定、开关某个模式的芯片。点击打开模式菜单时加 aria-haspopup。
  • 用色调表示风险:默认或安全的模式用 muted,放开保护的模式用 danger;文字与图标也要说明模式。
  • 文字控制在两到四个词。
  • 放进 ChatComposer 时用 toolbar-left 插槽;托盘里用 muted 色调。
  • 只在用户操作或语境变化时切换,不要自动高频切换。

API 参考

属性

属性类型默认值说明
labelstring-显示的文字,也是按钮的可访问名称;必填。
iconstring''前置图标 class;为空时不占图标位。
tone'muted' | 'info' | 'success' | 'warning' | 'danger''muted'色调,复用 StatusTone。
disabledbooleanfalse禁用按钮。

CSS 变量

变量说明
--tx-mode-chip-ink文字颜色,每个色调各自设置。
--tx-mode-chip-ink-hover悬停时的文字颜色,只有 muted 设置。
--tx-mode-chip-fill底色。
--tx-mode-chip-fill-hover悬停时的底色。

概述

  • 渲染为原生 <button type="button">;label 是可访问名称,图标不参与命名。click 等原生事件与其余属性透传到根元素。
  • label、icon、tone 任一变化都会变身:图标缩放互换,50ms 后文字模糊交叉,宽度跟随新文字;中途再变会重新计时。
  • 颜色过渡只存在于变身期间(.is-morphing);悬停立即换色,muted 变为主墨色,其余色调加深底色。
  • 各色调文字在四套主题的静止与悬停态下对比度均不低于 4.5:1。
  • 减少动态效果时直接落到终态;没有 Web Animations API 时宽度直接跳到新值。
  • 禁用时半透明,光标为 not-allowed,没有悬停变化。

技术实现

  • 文字动效复用 TxTextTransformer 的 fade 模式,因此文字只来自 label,不提供插槽。
  • 动效参考:@flohoeller 的 Chatbox 组件视频。
  • 源码:packages/tuffex/packages/components/src/mode-chip/。
查看源码
packages/tuffex/packages/components/src/mode-chip/index.ts