Select选择器
字符串值单选;选择值用 Select,动作菜单用 DropdownMenu。
从较多候选中选择一个,支持键盘导航与原生表单提交。
引入
import { Select, SelectContent, SelectItem } from "@cwa-design/react";
import "@cwa-design/react/styles.css"; // 应用入口引入一次当前通过源码 workspace 使用。查看有效安装步骤 →
交互示例
可切换示例主题、开启实色降级并重置状态。应用根部需要 CwaProvider。
Select 基础用法
可运行示例 · 与复制源码同源
正在准备交互示例…
查看与复制源码
// 应用入口引入 @cwa-design/react/styles.css,并将此示例置于 CwaProvider 内。
import { Select, SelectContent, SelectItem } from "@cwa-design/react";
export default function Example() {
return (
<Select
defaultValue="design"
name="workspace"
items={{ design: "设计团队", engineering: "研发团队" }}
>
<Select.Trigger aria-label="工作区">
<Select.Value />
</Select.Trigger>
<SelectContent>
<SelectItem value="design">设计团队</SelectItem>
<SelectItem value="engineering">研发团队</SelectItem>
</SelectContent>
</Select>
);
}
在应用根部引入 styles.css 并配置 CwaProvider。源码 SHA-256:59ba00c9968f
API
下表读取本版本组件契约。原生与 Base UI 继承属性的完整定义保留在 TypeScript 声明中。
类型:SelectRootPropsAlias · 继承 @base-ui/react/select#SelectRootProps<Value extends string>;value/defaultValue/onValueChange、open/defaultOpen/onOpenChange、name/items/disabled 等完整继承;Multiple 泛型固定为默认 false · 候选源类型 ↗
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
children | ReactNode;内容由调用方提供 | ReactNode;内容由调用方提供 | — |
Select.Trigger
默认样式的触发器:自动附加 cwa-design-select__trigger 类;children 未含 <Select.Icon> 时追加一个默认展开指示,已含自定义 Icon 时不追加(可关闭重复);render 接管时由调用方负责;className(含函数)/ref 合并保留。
类型:SelectTriggerProps · 继承 @base-ui/react/select#SelectTriggerProps;直接使用 Base UI 1.8.0 完整类型(含原生属性、render/ref) · 候选源类型 ↗
没有新增 CWA 属性;完整继承属性见上方源类型声明。
Select.Value
Base UI Value 的直接导出;未自动附加 CWA Content 组合样式。
类型:SelectValueProps · 继承 @base-ui/react/select#SelectValueProps;直接使用 Base UI 1.8.0 完整类型(含原生属性、render/ref) · 候选源类型 ↗
没有新增 CWA 属性;完整继承属性见上方源类型声明。
Select.Icon
Base UI Icon 的直接导出;未自动附加 CWA Content 组合样式。
类型:SelectIconProps · 继承 @base-ui/react/select#SelectIconProps;直接使用 Base UI 1.8.0 完整类型(含原生属性、render/ref) · 候选源类型 ↗
没有新增 CWA 属性;完整继承属性见上方源类型声明。
Select.Portal
Base UI Portal 的直接导出;未自动附加 CWA Content 组合样式。
类型:SelectPortalProps · 继承 @base-ui/react/select#SelectPortalProps;直接使用 Base UI 1.8.0 完整类型(含原生属性、render/ref) · 候选源类型 ↗
没有新增 CWA 属性;完整继承属性见上方源类型声明。
Select.Positioner
Base UI Positioner 的直接导出;未自动附加 CWA Content 组合样式。
类型:SelectPositionerProps · 继承 @base-ui/react/select#SelectPositionerProps;直接使用 Base UI 1.8.0 完整类型(含原生属性、render/ref) · 候选源类型 ↗
没有新增 CWA 属性;完整继承属性见上方源类型声明。
Select.Popup
Base UI Popup 的直接导出;未自动附加 CWA Content 组合样式。
类型:SelectPopupProps · 继承 @base-ui/react/select#SelectPopupProps;直接使用 Base UI 1.8.0 完整类型(含原生属性、render/ref) · 候选源类型 ↗
没有新增 CWA 属性;完整继承属性见上方源类型声明。
Select.List
Base UI List 的直接导出;未自动附加 CWA Content 组合样式。
类型:SelectListProps · 继承 @base-ui/react/select#SelectListProps;直接使用 Base UI 1.8.0 完整类型(含原生属性、render/ref) · 候选源类型 ↗
没有新增 CWA 属性;完整继承属性见上方源类型声明。
Select.Item
Base UI Item 的直接导出;未自动附加 CWA Content 组合样式。
类型:SelectItemProps · 继承 @base-ui/react/select#SelectItemProps;直接使用 Base UI 1.8.0 完整类型(含原生属性、render/ref) · 候选源类型 ↗
没有新增 CWA 属性;完整继承属性见上方源类型声明。
Select.ItemText
Base UI ItemText 的直接导出;未自动附加 CWA Content 组合样式。
类型:SelectItemTextProps · 继承 @base-ui/react/select#SelectItemTextProps;直接使用 Base UI 1.8.0 完整类型(含原生属性、render/ref) · 候选源类型 ↗
没有新增 CWA 属性;完整继承属性见上方源类型声明。
Select.ItemIndicator
Base UI ItemIndicator 的直接导出;未自动附加 CWA Content 组合样式。
类型:SelectItemIndicatorProps · 继承 @base-ui/react/select#SelectItemIndicatorProps;直接使用 Base UI 1.8.0 完整类型(含原生属性、render/ref) · 候选源类型 ↗
没有新增 CWA 属性;完整继承属性见上方源类型声明。
Select.Group
Base UI Group 的直接导出;未自动附加 CWA Content 组合样式。
类型:SelectGroupProps · 继承 @base-ui/react/select#SelectGroupProps;直接使用 Base UI 1.8.0 完整类型(含原生属性、render/ref) · 候选源类型 ↗
没有新增 CWA 属性;完整继承属性见上方源类型声明。
Select.GroupLabel
Base UI GroupLabel 的直接导出;未自动附加 CWA Content 组合样式。
类型:SelectGroupLabelProps · 继承 @base-ui/react/select#SelectGroupLabelProps;直接使用 Base UI 1.8.0 完整类型(含原生属性、render/ref) · 候选源类型 ↗
没有新增 CWA 属性;完整继承属性见上方源类型声明。
SelectContent
主题化 Portal、Positioner 与 Popup 的 CWA 组合。
类型:SelectContentProps · 候选源类型 ↗
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
children | ReactNode;内容由调用方提供 | ReactNode;内容由调用方提供 | — |
className | 附加样式类;具体合并行为以实现为准 | string | — |
material | 见类型定义 | "glass" | "solid" | "glass" |
SelectItem
字符串单选项,包含文字与选中标记。
类型:SelectItemProps · 候选源类型 ↗
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
value必填 | 见类型定义 | string | — |
children | ReactNode;内容由调用方提供 | ReactNode;内容由调用方提供 | — |
disabled | 见类型定义 | boolean | — |
className | 附加样式类;具体合并行为以实现为准 | string | — |
材质与状态
材质规则来自源 metadata。覆盖玻璃区域的浮层按实际重叠关系选择较厚或实色材质。
默认 glass;Provider material="solid" 优先。实际玻璃背景重叠时使用 solid;系统减少透明、增强对比、forced-colors 或不支持 blur 时按公共材质规则降级。
媒体对照舞台
打开浮层,检查玻璃透色、边缘与阴影在真实亮/暗照片上的表现。
适用的状态与行为见示例及本页 API;系统减少透明与显式 solid 配置会启用回退。
阅读材质指南 →关联 Token
以下变量从组件源样式的实际引用生成。共享光学规则还使用全局玻璃 Token。
--cwa-design-color-control-focus--cwa-design-color-control-focus-halo--cwa-design-space-2--cwa-design-space-3--cwa-design-font-family--cwa-design-font-size-body--cwa-design-color-text--cwa-design-color-surface--cwa-design-color-glass-reflection--cwa-design-color-border-subtle--cwa-design-radius-control--cwa-design-color-glass-inner-shade--cwa-design-color-glass-inner-highlight--cwa-design-motion-control--cwa-design-focus-control-halo-width--cwa-design-color-danger--cwa-design-focus-control-width--cwa-design-focus-control-offset--cwa-design-color-text-muted--cwa-design-z-popup--cwa-design-space-1--cwa-design-color-surface-raised--cwa-design-shadow-contact-y--cwa-design-shadow-contact-blur--cwa-design-color-glass-contact-shadow--cwa-design-shadow-ambient-y--cwa-design-shadow-ambient-blur--cwa-design-color-glass-ambient-shadow--cwa-design-color-accent--cwa-design-color-border-strong--cwa-design-focus-width无障碍与使用约束
accessible-name-required-for-controlsvisible-focus-for-interactive-partskeyboard-behavior-from-native-or-base-ui
这些是组件契约与使用要求。具体业务页面仍需验证标签、阅读顺序与实际背景下的对比度。
查看无障碍使用指南 →