1.4 KiB
1.4 KiB
AI 输入框共享壳与抽屉复用经验
更新日期:2026-05-17
背景
画布底部 AI 输入框和对话抽屉输入框看起来很像,但它们的职责并不一样。
- 画布侧要承载固定定位、灵感板、选择监听、工作流等上下文。
- 抽屉侧只需要对话输入、选中内容预览、附件、模型和参数控制。
如果直接复用整块 AIInputBar,会把画布业务一并拖进去,耦合会越来越重。
架构变更
- 抽出
AIInputComposerShell,只保留输入壳的布局和插槽,不承载业务逻辑。 - 画布侧继续使用
variant="canvas",保留原有业务能力。 - 抽屉侧使用
variant="drawer",复用同一套壳和控件层。 - 抽屉输入框改成纯 textarea,不再包一层额外的输入面板。
- 删除全局
textarea:hover/textarea:focus橙色描边,避免污染所有输入场景。
经验规则
- 共享的是布局壳,不是整块业务组件。
- 同源输入框优先用
variant区分差异,不要复制两套 wrapper。 - 全局 textarea 样式不要写 hover / focus 边框,容易制造“内层框”。
- 需要统一视觉时,优先保留单一主容器边界,textarea 只保留无边框状态。
- 结构复用比纯 CSS 修补更稳,后续抽屉和画布都更容易继续收敛。
验证
EnhancedChatInput单测通过drawnix:typecheck通过- 抽屉输入框内层橙色边框已移除