@micka_design: 新组件发布:聊天式消息编辑器,带自动调整大小的文本区域,灵活的左/右操作槽。简洁…
摘要
Fluid Functionalism 发布了一个开源的聊天式消息编辑器组件,具有自动调整大小的文本区域和灵活的左/右操作槽。
查看缓存全文
缓存时间: 2026/06/06 01:23
新组件发布:聊天风格消息编辑器,具备自动调整大小的文本区域、灵活的左右操作插槽。简洁、高效。开源地址:https://fluidfunctionalism.com/docs/input-message…
Fluid Functionalism
来源:https://www.fluidfunctionalism.com/docs/input-message
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| value | string | — | 受控的文本区域值。 |
| onValueChange | (value: string) => void | — | 每次文本区域内容变化时,以新值调用该函数。 |
| onSend | (value: string, files: File[]) => void | — | 按下 Enter(不带 Shift)或点击发送按钮时触发。接收修剪后的值和当前附加的文件。当值为空且未附加文件时跳过。 |
| placeholder | string | “Ask me anything…” | 文本区域为空时显示的占位符。当文件被拖拽到组件上方(且附件功能启用)时,占位符切换为“将文件拖拽到此处以添加到聊天”。 |
| leftSlot | ReactNode | (ctx) => ReactNode | — | 渲染在左下角操作区域的内容。可以是渲染函数,接收 { openFilePicker, files } —— openFilePicker(acceptOverride?) 打开原生文件选择器(可选限定接收类型子集,例如 "image/*")。 |
| rightSlot | ReactNode | (ctx) => ReactNode | — | 渲染在右下角操作区域(内置发送按钮之前)的内容。渲染函数形式与 leftSlot 相同。 |
| disabled | boolean | false | 禁用文本区域、发送按钮以及拖放功能。 |
| minRows | number | 1 | 文本区域增长前的最小可见行数。 |
| maxRows | number | 8 | 文本区域开始滚动前的最大可见行数。 |
| clickToFocus | boolean | true | 为 true 时,点击周围容器(按钮/链接/输入框之外)的任意位置可聚焦文本区域。 |
| sendLabel | string | “Send” | 发送按钮的可访问标签。 |
| files | File[] | — | 受控的已附加文件列表。与 onFilesChange 配合可启用拖放和文件选择器插槽帮助程序。省略时,附件行为被禁用。 |
| onFilesChange | (files: File[]) => void | — | 文件被添加(通过拖放或选择器)或通过预览图标的 × 按钮移除时调用。重复拖放同一文件(相同名称+大小+最后修改时间)会被静默去重。 |
| accept | string | “image/png,image/jpeg,application/pdf” | 以逗号分隔的接受的 MIME 类型字符串。用于文件选择器和拖放过滤。 |
| maxFiles | number | — | 最大可附加文件数。超出此限制的多余文件将被丢弃。 |
| filePreviewSize | number | 80 | 每个预览图标的边长(像素)。图像使用 object-cover;PDF 通过 pdfjs 渲染首页;其他类型回退为居中图标。 |
| textareaProps | TextareaHTMLAttributes | — | 传递给底层文本区域的额外属性(value、onChange、onKeyDown、disabled 和 placeholder 由组件控制)。 |
相似文章
@micka_design: 对 AskUserQuestions 组件两个最常被请求的调整进行了一些生活质量改进: - 自由格式"…"
AskUserQuestions 组件的体验优化:基于社区反馈,新增自由文本的“其他”文本框和左对齐的标签布局。
@Replit:最好的设计工作不会发生在聊天框里。你需要空间来探索想法、创建变体并迭代。认识一下…
Replit 推出了 Canvas,这是一款用于构建网站、应用和营销素材的智能设计工具,强调在空间中进行探索,而非基于聊天的设计。
@nolansym:免费开源的 Shadcn 组件
cult-ui 发布了 92+ 开源 AI 代理 UI 模式和全栈 Next.js 模板,用于借助 shadcn 构建可复制的组件库。
@dav_pukha: Framer + composer 2.5 真是太疯狂了... 大约一小时内构建了这个交互式英雄区域
一位开发者称赞Framer和composer 2.5能够在约一小时内快速创建一个交互式英雄组件。
@geekbb: 发现一个丝滑的 Markdown 编辑器,专为 AI 聊天上下文管理场景设计。 基于 Tauri + React + TypeScript 构建,跨平台支持 macOS / Windows / Linux。 左侧 CodeMirror 6…
marka.md is a cross-platform Markdown editor specialized for AI context management, built with Tauri, React, and TypeScript. It features live preview, Vim mode, themes, and a context tray to bundle notes for AI chats like Claude, ChatGPT, and Gemini.