Alune 组件

ToolbarButton

在导航、动作与主操作之间保持清晰层级;text 与 count 提供文字和提交计数。

使用方式

工具栏按钮由宿主传入状态和回调,适合在不同应用和文档中复用。先完成快速开始中的 Provider 与样式配置。

import { ToolbarButton, ToolbarCount } from '@alune/ui';

接入要求见快速开始,选择依据见 交互与无障碍规范。

运行示例

运行与复制源码来自同一 TSX 文件。浮层、状态和主题独立于文档;所有回调只更新本地模拟数据。

真实示例 TSX 独立预览 ↗
查看运行源码
源码文件
import { useState } from 'react';
import { ToolbarButton, StatusButton, CommandButton, DialogIcon, Space } from '@alune/ui';

export default function Example() {
  const [active, setActive] = useState('files');
  const [count, setCount] = useState(0);
  return (
    <div className="example">
      <section className="example-group">
        <h2 className="example-title">视图切换</h2>
        <Space wrap size="middle">
          <ToolbarButton
            label="文件"
            active={active === 'files'}
            onClick={() => setActive('files')}
          >
            <DialogIcon name="folder" />
            文件
          </ToolbarButton>
          <ToolbarButton
            label="历史"
            active={active === 'history'}
            onClick={() => setActive('history')}
          >
            <DialogIcon name="clock" />
            历史
          </ToolbarButton>
        </Space>
      </section>
      <section className="example-group">
        <h2 className="example-title">操作与连接状态</h2>
        <Space wrap size="middle">
          <ToolbarButton
            label="拉取"
            variant="action"
            text="拉取"
            count={2}
            countTone="behind"
            onClick={() => setCount((n) => n + 1)}
          >
            <DialogIcon name="cloud-down" />
          </ToolbarButton>
          <ToolbarButton
            label="运行示例"
            variant="primary"
            text="运行"
            count={count || undefined}
            onClick={() => setCount((n) => n + 1)}
          />
          <ToolbarButton label="不可用操作" variant="action" disabled>
            不可用
          </ToolbarButton>
          <StatusButton label="状态" active>
            已连接
          </StatusButton>
          <CommandButton label="刷新示例" onClick={() => setCount((n) => n + 1)}>
            <DialogIcon name="refresh" />
          </CommandButton>
        </Space>
      </section>
      <p className="example-status" role="status">
        当前:{active} · 操作次数:{count}
      </p>
    </div>
  );
}

API

ToolbarButton

ToolbarButton 是通用组合成员,具体属性见关联 Props 表,运行效果见上方示例。

查看 ToolbarButton 实现 ↗

ToolbarButtonVariant

export type ToolbarButtonVariant = 'nav' | 'action' | 'primary' | 'icon';

查看 ToolbarButtonVariant 实现 ↗

ToolbarButtonProps

属性 / 方法 类型 默认值 必填 说明
label string — 是 可访问名称或展示文案。
tooltip string label 否 悬停或聚焦时的说明。
active boolean false 否 当前激活状态。
variant ToolbarButtonVariant 'nav' 否 视觉或内容变体。
text ReactNode — 否 Visible text after the icon; omit for icon-only buttons.
count ReactNode — 否 数量,0 也会显示。
countTone "behind" — 否 参见类型定义及对应实现。

查看 ToolbarButtonProps 实现 ↗

ToolbarCount

ToolbarCount 是通用组合成员,具体属性见关联 Props 表,运行效果见上方示例。

查看 ToolbarCount 实现 ↗

ToolbarCountProps

属性 / 方法 类型 默认值 必填 说明
tone "behind" — 否 语义色调。
children ReactNode — 是 渲染的子内容。

查看 ToolbarCountProps 实现 ↗

同时支持原生 button 属性与事件,例如 disabled、onClick、children、aria-*。 原生按钮属性 ↗

交互与使用限制

为每个操作提供可访问名称,为输入关联 label;使用语义化组件和清晰焦点。不要只靠颜色传达状态,禁用与等待时避免重复执行。

宿主负责状态、业务操作、错误处理与真实内容。组件不读取业务 store、路由或 Electron。示例中的反馈和等待均为本地模拟。

键盘、焦点、风险确认与通知策略的完整约定见交互规范。