组件
Field 表单字段
标签、提示、控件与错误组成一个完整的输入单元。
使用 Field 包裹 Input、Textarea 或原生 Select,自动关联标签、说明与错误。需要组合触发器、清空按钮等多个交互元素时启用 compound,不要把它们全部塞进一个 label。
安装
pnpm dlx shadcn@4.22.1 add http://127.0.0.1:3040/r/v0.3.0/field.json首次使用请先完成 Registry 与主题接入。
状态与组合
<Field label="工作区名称" hint="显示给协作者的名称" error={error}>
<Input name="workspaceName" required maxLength={60} />
</Field>Field 显示调用方错误、表单字段错误或本地约束反馈。Input、Textarea、Select 使用相同边界、焦点和禁用语义;ChoiceRow 将原生选择项与说明组合。
Props
| API / 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
Field.label | string | 必填 | 可见字段名称 |
Field.children | ReactNode | 必填 | 字段控件 |
Field.compound | boolean | false | 独立 label 与复合控件关联 |
Field.errorPlacement | inline / external | inline | 错误由字段内或外部渲染 |
Field.hint / error / errorId | string | — | 辅助说明、错误与错误标识 |
Input / Textarea / Select | 对应原生属性 | — | 支持原生约束 |
键盘与约束
保持原生输入键盘行为。name 是提交和字段错误映射的共同键;复合控件要让可见触发器被正确标记并接收焦点。external 模式下调用方必须渲染相同 errorId 的错误节点。
避免这样使用
占位符不能代替 label;不要把多个互不相关字段包进同一个 Field;不要只标红边框而不说明如何改正。
来源与版本
0.1.0,来自 Subtic apps/web/components/ui/field.tsx 与 form-context.ts。保留语义关联,去除产品平台与翻译依赖。
查看由当前源码生成的类型参考
只展示 Kitseed 自身定义的属性,原生 HTML 与 Base UI 透传属性请参阅对应上游说明。
Field
| 属性 | 类型 | 默认值 |
|---|---|---|
label | string | — |
compound? | boolean | false |
errorPlacement? | "inline" | "external" | "inline" |
hint? | string | — |
error? | string | — |
errorId? | string | — |
children | ReactNode | — |
formatError? | (message: string) => ReactNode | (message) => message |
Input
| 属性 | 类型 | 默认值 |
|---|---|---|
ref? | Ref<HTMLInputElement> | — |
unstyled? | boolean | false |
Textarea
| 属性 | 类型 | 默认值 |
|---|---|---|
unstyled? | boolean | false |
Select
| 属性 | 类型 | 默认值 |
|---|---|---|
unstyled? | boolean | false |
ChoiceRow
| 属性 | 类型 | 默认值 |
|---|---|---|
children | ReactNode | — |
unstyled? | boolean | false |
inputClassName? | string | — |