Icon Button

图标按钮用于没有文字标签的紧凑操作。下方预览由 pingo 引擎实时渲染——可以点击、聚焦,并跟随站点主题切换明暗。

用法

import { IconButton } from "@dopejs/pingo-ui";

root.render(
  <IconButton
    icon={<text value="★" />}
    semanticLabel="收藏"
    variant="outline"
    onPress={() => toggleFavorite()}
  />,
);

icon 是一个透传的插槽,接受任意 PingoNode——图标字体、SVG 或文本字形都可以。因为没有可见文字,semanticLabel 是必填的。

示例

变体

variant 与 Button 完全对齐:default、secondary、outline、ghost、destructive。

已知限制

size 支持 default、sm、lg,但当前皮肤没有为 icon 变体编写 sm/lg 的复合规则,图标尺寸会覆盖尺寸修饰,sm/lg 暂无视觉效果。

Props

Prop 类型 默认值 说明
icon PingoNode — 图标插槽,原样透传(必填)
semanticLabel string — 无障碍名称(必填)
variant "default" | "secondary" | "outline" | "ghost" | "destructive" "default" 视觉变体
size "default" | "sm" | "lg" "default" 尺寸(sm/lg 暂无效,见上文)
disabled boolean false 禁用态
onPress () => void — 指针/键盘激活回调
className string — 追加在组件类名之后

无障碍

图标按钮没有可见文本,屏幕阅读器只能依赖 semanticLabel,因此该 prop 为必填。按钮具备 button 语义与键盘激活支持。

最后更新: