<!-- CWA Design 0.1.0-alpha.4; Registry sha256:89fa672035ff6dded40573b81274804d8eb2ed6aa8473a30329912a769c9202a -->

[组件 ](/cwa-design/components/)/基础

# Button按钮

执行动作的原生按钮；表单提交需显式 type="submit"。

Alpha

提交表单、保存设置或触发操作；同一区域只保留一个主操作。

[交互示例 ](#examples)[API ](#api)[Storybook ↗ ](/cwa-design/storybook/?path=/story/components-button--primary)[Registry ↗ ](/cwa-design/downloads/registry/0.1.0-alpha.4/manifest.json)

## 引入

TSX复制

```
import { Button } from "@cwa-design/react";
import "@cwa-design/react/styles.css"; // 应用入口引入一次
```

当前通过源码 workspace 使用。[查看有效安装步骤 → ](/cwa-design/docs/getting-started/)

## 交互示例

可切换示例主题、开启实色降级并重置状态。应用根部需要 CwaProvider。

### Button 基础用法

可运行示例 · 与复制源码同源

重置

正在准备交互示例…

button-basic示例主题跟随网站浅色示例深色示例实色降级

查看与复制源码TSX复制

```
// 可编译示例：button-basic。examples:check 以 tsc 编译验证（T24 回填 digest）。
import { Button } from "@cwa-design/react";

export function ButtonBasic() {
  return (
    <Button
      variant="primary"
      onClick={() => {
        // 业务动作
      }}
    >
      保存设置
    </Button>
  );
}

```

在应用根部引入 styles.css 并配置 CwaProvider。源码 SHA-256：0c141d8dad24

### Button 加载状态

可运行示例 · 与复制源码同源

重置

正在准备交互示例…

button-loading示例主题跟随网站浅色示例深色示例实色降级

查看与复制源码TSX复制

```
import { Button } from "@cwa-design/react";
import { useState } from "react";

// 可编译示例：loading 期间禁止重复提交，结束后恢复。
export function ButtonLoading() {
  const [saving, setSaving] = useState(false);
  return (
    <Button
      variant="primary"
      loading={saving}
      onClick={() => {
        setSaving(true);
        setTimeout(() => setSaving(false), 1500);
      }}
    >
      {saving ? "保存中…" : "保存设置"}
    </Button>
  );
}

```

在应用根部引入 styles.css 并配置 CwaProvider。源码 SHA-256：d311e0b1d527

## API

下表读取本版本组件契约。原生与 Base UI 继承属性的完整定义保留在 TypeScript 声明中。

类型：ButtonProps · 继承 React.ButtonHTMLAttributes<HTMLButtonElement>；disabled、onClick、name/value、form、aria-* 等原生属性直接透传 · [候选源类型 ↗ ](/cwa-design/downloads/source/packages/react/src/button/button.tsx)

属性说明类型默认值

variant见类型定义"primary" | "secondary" | "ghost" | "danger""primary"

size见类型定义"sm" | "md" | "lg""md"

loading见类型定义booleanfalse

refReact.Ref<HTMLButtonElement>React.Ref<HTMLButtonElement>—

childrenReactNode；内容由调用方提供ReactNode；内容由调用方提供—

type实现为原生 type 提供 button 默认值"button" | "submit" | "reset""button"

## 材质与状态

继承父级表面材质规则来自源 metadata。覆盖玻璃区域的浮层按实际重叠关系选择较厚或实色材质。

控件自身使用 tint/实色填充，不额外叠加 backdrop blur；与父玻璃壳共享光学层。

适用的状态与行为见示例及本页 API；系统减少透明与显式 solid 配置会启用回退。

[阅读材质指南 → ](/cwa-design/design/materials/)

## 关联 Token

以下变量从组件源样式的实际引用生成。共享光学规则还使用全局玻璃 Token。

--cwa-design-space-2--cwa-design-font-family--cwa-design-font-size-body--cwa-design-radius-control--cwa-design-color-glass-reflection--cwa-design-color-glass-inner-highlight--cwa-design-color-glass-inner-shade--cwa-design-shadow-contact-y--cwa-design-shadow-contact-blur--cwa-design-color-glass-contact-shadow--cwa-design-motion-control--cwa-design-focus-width--cwa-design-color-focus--cwa-design-focus-offset--cwa-design-color-accent--cwa-design-color-on-accent--cwa-design-color-text--cwa-design-color-surface--cwa-design-color-glass-rim-bottom--cwa-design-color-glass-rim-top--cwa-design-color-danger--cwa-design-space-3--cwa-design-space-4--cwa-design-space-5--cwa-design-font-size-title--cwa-design-color-border-strong

[在主题实验室调整公开 Token → ](/cwa-design/themes/)

## 无障碍与使用约束

- semantic-content
- visible-focus-for-interactive-parts
- keyboard-behavior-from-native-or-base-ui

这些是组件契约与使用要求。具体业务页面仍需验证标签、阅读顺序与实际背景下的对比度。

[查看无障碍使用指南 → ](/cwa-design/design/accessibility/)

## 相关组件

[CwaProvider全局配置 ](/cwa-design/components/provider/)[Surface材质表面 ](/cwa-design/components/surface/)[IconButton图标按钮 ](/cwa-design/components/icon-button/)
