VOZEB-COMPONENT-FOUNDATION-R2 — 输入与生成偏好组件候选
Task ID: VOZEB-COMPONENT-FOUNDATION-R2
目标用户结果: 在 VOZEB React/Next 组件实验室中提供可复用的输入、筛选、分页和生成偏好字段
Base SHA: bc6330950063685846ee0095d1776a22fe616b5c
允许修改: web/src/components/ocean/**、web/src/components/ui/component-manifest.*、
web/src/app/components/**、docs/oceanway/VOZEB-COMPONENT-FOUNDATION-R2.md、
docs/oceanway/VOZEB-COMPONENT-INVENTORY-01.md
禁止修改: retail-platform、User Web/Vue、API/领域契约、路由整合、Canvas/Space 迁移、生产配置
状态: DESIGN_CANDIDATE / REVIEW_REQUIRED / NOT_FROZEN1. 范围与设计边界
本候选只在 oceanway-vozeb 的 React/Next 工作区新增无业务副作用的视觉组件。组件只接
可序列化 props、children 和 callbacks,不读取 store、router、session、API、模型、积分、
账务或持久化事实。retail-platform 仅作为内容语义参考,本候选未修改它。
本轮从原始 creative-generation-preference-fields.tsx 提取四个生成偏好字段,并补充三个
通用浏览/输入原子:
OceanRangeField:原生 range、token 轨道、值输出和键盘语义;OceanSegmentedControl:单选分段、受控/非受控 API、roving focus 与方向键;OceanPagination:有界页码、ellipsis、上一页/下一页和aria-current;OceanVideoQualityField:preset/custom 清晰度;OceanSuggestedPositiveIntegerField:preset/custom 正整数;OceanPositiveNumberField:开放正数偏好输入;OceanSwitchPreference:委托OceanSwitch的紧凑偏好行。
正数归一化只保留原始组件已有的最小规则(trim、safe integer、finite positive);业务侧仍 负责模型能力、范围限制、单位、任务执行和账务语义。正数控件明确不用于价格、钱包、积分 或用量账本。
2. Ocean token 与动效规则
- 所有颜色、边界、阴影和 surface 都读取
--ocean-air-*/--ocean-glass-*语义 token; 本轮未新增独立色板,也未在组件 JSX/CSS 写入蓝色正文或 hex 色值。 - 组件只使用轻量 CSS transition;
prefers-reduced-motion时取消 transition,prefers-reduced-transparency时切换为不透明 surface,forced-colors时使用系统颜色。 - 分段、分页和 range 不创建 WebGL、RAF 或全局事件监听器;页面级背景 renderer 保持唯一。
- 无 callback 时组件进入只读/禁用预览状态,避免实验室展示暗中改变业务事实。
3. 实验室与清单
/components 的 Foundation Lab 新增“输入与浏览控件”面板,使用合成状态展示 range、
segmented、pagination、质量、正整数、正数和 switch preference 的受控回调。材质 Showcase
的四个 slider 同时改用 OceanRangeField,避免页面专用 range 样式漂移。
component-manifest.ts 登记上述七个 built candidate;清单总数由 235 增至 242,built 由
89 增至 96,其余 readiness 数量保持不变。VOZEB-COMPONENT-INVENTORY-01.md 的统计和
Foundation 展示规则已同步。
4. 验收证据
本候选 worktree 的验证结果(2026-08-28):
focused Vitest:5 files / 24 tests passed
full Vitest:516 files passed、4 files skipped;2338 tests passed、9 tests skipped
pnpm exec tsc --noEmit --pretty false:passed
pnpm exec eslint . --quiet:passed
pnpm exec prettier --check .:passed
pnpm run check:release:passed(含安全审计、lint、Vitest、tsc、隔离 Next build)
Next production build:静态页面 63/63;standalone 产物检查通过
git diff --check:passed浏览器复核至少覆盖:桌面 /components 无横向溢出、控件回调可见、深色主题、390px 移动
布局、reduced-motion/transparency 静态回退,以及单一背景 canvas。实际复核结果为:桌面
1280px scrollWidth === clientWidth、控件 marker 可见(range 5、segmented 3、pagination
1、四类偏好字段各 1)、背景 canvas 1;390px 下无横向溢出且控件布局折叠为单列;控制台
无 error/warn。浏览器结果是候选证据,
不替代独立 Testing,也不意味着 Gate 1/FROZEN。
5. 未覆盖 Gap
- Prompt、Work、Media Browser 等 Tier A 组件仍需独立 view-model 提取;本轮未改业务页面。
- 组件仍未逐页接入 VOZEB 路由,完整页面迁移、User Web 和后台整合不在范围内。
- 正式 Testing/Operations、跨浏览器色彩校准和 Gate 1 用户视觉确认仍待后续停点。
- React Bits
SlicedWaves仍是实验室研究候选,不进入产品页面,也不与现有背景并挂。
交接状态必须保持 DESIGN_CANDIDATE / REVIEW_REQUIRED / NOT_FROZEN。