---
"@ux-team/tvu-design-system": minor
---

**`<Form disabled>` 现在会真的下传给每个字段控件**（INFRA-F120，owner 2026-09-04 裁定立项）。此前 `Form` 的 `disabled` 只让容器整体变淡（`opacity: 0.6` + `pointer-events: none`），字段本身还是"看起来可交互"——原生 `disabled` 属性没变、也没走各组件真实的 Figma disabled 配色。

- `useFormContext.ts` 新增共享的 `useFormDisabled()` 组合式函数（CE-safe，处理 `defineCustomElement` 边界下 provide/inject 不生效的情况）。
- **10 个表单控件各自接入了 ambient Form 的 disabled 状态**，不管是通过 `FormItem` 默认渲染出来的，还是消费者自己塞进 slot 的都会生效：`InputBoxFilled` / `InputBoxLine` / `SelectBoxFilled` / `SelectBoxLine`（`enable:'on'|'off'`）、`Radio` / `CheckBox` / `Switch`（`enable:'yes'|'no'`）、`InputNumber` / `Slider`（`disabled: boolean`）、`ButtonBridge`（`status:'disable'`，Submit/Reset 按钮这类场景）。
- `Form.vue` 容器级的 `opacity: 0.6` 已整段移除——10 个组件现在各自渲染真实的 disabled 视觉，容器再叠一层透明度只会把它们洗回"整体变淡"的旧效果。`pointer-events: none` 保留，作为非 canonical 内容（原生 HTML / 第三方组件）的交互兜底。

**顺带修掉的 docs demo 视觉 bug**：Form 页 demo 的 Submit / Reset 是手写 `<button class="form-demo-button">`（不走 DS Button），其 `:disabled` 样式误用了 Checkbox/Radio/Slider 那套 `--control-disabled-*` 控件形状 token —— 实测标签文字对比度 dark 1.66:1 / light 1.16:1，几乎不可读。改为对齐真实 Button 组件的两套 disable 配色：Submit（filling）用 `--bg-grey-btn-dis` + `--text-placeholder`，Reset（ghost）用透明底 + `--bg-grey-btn-en` 描边，保住两者的主次层级。**仅影响 docs demo 页，不在 npm 包内**；为什么两道现有闸都拦不住这类问题已登记为 INFRA-F145。

**consumer 影响**：非破坏性 additive/修复——`<Form disabled>` 下的字段现在会真正进入各自的 disabled 态（原生 `disabled` 属性、正确的边框/文字颜色），而不是被容器透明度笼统地"调暗"。如果你的代码依赖过旧的"整体变淡但字段本身可交互"这个行为（比如自定义了 hover/focus 逻辑绕过视觉禁用），需要重新检查。组件 API（props/events/slots）零变化。
