From 0d5d7753e2ef824f93bec02041b47bd12b8f19cb Mon Sep 17 00:00:00 2001 From: stash Date: Thu, 29 Oct 2026 12:58:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(textarea):=20=E6=96=B0=E5=A2=9E=E5=A4=9A?= =?UTF-8?q?=E8=A1=8C=E6=96=87=E6=9C=AC=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - rows / resize / invalid,样式与 Input 一致(焦点只换边框) - 契约、展示页(#inputs)、README 计数 40 → 41、变更记录同步 --- README.md | 3 ++- docs/COMPONENTS.md | 10 +++++++ site/sections/Inputs.tsx | 27 ++++++++++++++++++- src/components/Textarea.module.css | 42 ++++++++++++++++++++++++++++++ src/components/Textarea.tsx | 31 ++++++++++++++++++++++ src/index.ts | 2 ++ 6 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 src/components/Textarea.module.css create mode 100644 src/components/Textarea.tsx diff --git a/README.md b/README.md index 042c358..f009262 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ node scripts/screenshot.mjs http://127.0.0.1:5199/ shots/cards.png '#cards' # | 文档 | 内容 | 什么时候看 | | --- | --- | --- | | [DESIGN.md](DESIGN.md) | **规格总纲**:分层结构、设计令牌、视觉规则、代码约定、验收清单、决策与已知坑 | 动手前、评审时 | -| [docs/COMPONENTS.md](docs/COMPONENTS.md) | **组件目录与契约**:现有 40 个组件的 API 与边界、组合模式、候选组件、图标新增流程 | 想知道「用哪个 / 有没有 / 缺什么」 | +| [docs/COMPONENTS.md](docs/COMPONENTS.md) | **组件目录与契约**:现有 41 个组件的 API 与边界、组合模式、候选组件、图标新增流程 | 想知道「用哪个 / 有没有 / 缺什么」 | | [docs/ADDING-A-COMPONENT.md](docs/ADDING-A-COMPONENT.md) | **新增组件手册**:12 步流程、代码模板、`Spinner` 完整示例、常见错误 | 要补一个组件时照着做 | | [docs/ALRIGHT-DECOMPOSITION.md](docs/ALRIGHT-DECOMPOSITION.md) | **参考站拆解**:实测令牌、组件尺寸、交互节奏、暗色映射、保留差异 | 想核对「这个值对不对」 | | [docs/STYLE-INTAKE.md](docs/STYLE-INTAKE.md) | **外部风格接入**:截图 → 组件/令牌映射表、决策矩阵、验收清单 | 新项目给了外部设计稿、和现有风格不一致时 | @@ -120,6 +120,7 @@ stash-ui/ | `Space` | 元素间距 | `direction` `gap` `wrap` `align` `justify` | | `Divider` | 分隔线 | `orientation` `variant` `spacing` | | `Input` | 输入框 | `icon` `clearable` `onClear` `shortcut` `inputRef` | +| `Textarea` | 多行文本(Markdown / 简介) | `rows` `resize` `invalid` | | `Notice` | 提示条 | `tone` `title` `action` | | `Empty` | 空态 | `text` `action` | | `Result` | 整块结果反馈 | `status` `title` `description` `actions` | diff --git a/docs/COMPONENTS.md b/docs/COMPONENTS.md index 8a9bab1..ce7d654 100644 --- a/docs/COMPONENTS.md +++ b/docs/COMPONENTS.md @@ -20,6 +20,7 @@ | `Button` | L2 | ✅ | 操作按钮(圆角 / 胶囊) | `variant` `size` `shape` `block` `loading` `icon` | | `IconButton` | L2 | ✅ | 圆形图标按钮(28 / 36 / 44) | `label`(必填) `icon` `variant` `size` `spinning` | | `Input` | L2 | ✅ | 组合式输入框 | `icon` `clearable` `onClear` `shortcut` `inputRef` | +| `Textarea` | L2 | ✅ | 多行文本(Markdown / 简介) | `rows` `resize` `invalid` | | `Switch` | L2 | ✅ | 即时生效的开关 | `checked` `onChange` `size` `label` | | `Checkbox` | L2 | ✅ | 复选框(多选 / 确认) | `checked` `onChange` `label` | | `RadioGroup` | L2 | ✅ | 互斥单选组 | `options` `value` `onChange` `direction` | @@ -569,6 +570,14 @@ - **规则**:错误用文案而不是只换颜色(颜色不足以表达);`defaultValue` / `value` 等仍由控件自己管。 - **展示页**:`#inputs` +### 3.41 Textarea ✅ + +- **用途**:多行文本——Markdown 正文、简介、备注。 +- **不该用在哪**:单行短文本(用 `Input`);需要工具栏的富文本(页面自己拼)。 +- **Props**:透传 `