ChatInput
チャット入力コンポーネント。テキスト入力と送信ボタンを組み合わせたUIです。
インポート
個別サブパス(バンドルサイズを抑えたい場合):
基本的な使い方
Loading...
ツールバー付き
toolbarLeftプロパティで、送信ボタンの左側にカスタム要素を追加できます。
Loading...
無効状態
Loading...
キーボードショートカット
- Cmd+Enter (Mac) / Ctrl+Enter (Windows): メッセージを送信
AI生成中の状態(isLoading)
isLoading を true にすると、送信ボタンが停止ボタン(bg-destructive + Squareアイコン)に切り替わります。AI応答をストリーミング中に停止操作を提供する用途を想定しています。
Loading...
送信ボタン左側にも要素を追加(toolbarRight)
toolbarRight で送信/停止ボタンの左側にカスタム要素を追加できます(toolbarLeft はテキストエリア下の左端、toolbarRight は送信ボタンのすぐ左)。
文字数カウンター(showCounter)
showCounter を true にすると、入力が maxLength の80%に達した時点でツールバーに文字数カウンター(現在数/maxLength)が表示されます。上限に達すると赤字(text-destructive)になります。
Props
| Prop | Type | Default | Description |
|---|---|---|---|
value* | string | - | 入力値 |
onChange* | (value: string) => void | - | 入力変更ハンドラ |
onSend* | () => void | - | 送信ハンドラ |
placeholder | string | 'メッセージ...' | プレースホルダー |
maxLength | number | 500 | 最大文字数 |
maxRows | number | 5 | 最大行数(超えるとスクロール) |
toolbarLeft | React.ReactNode | - | ツールバー左側に表示する要素 |
toolbarRight | React.ReactNode | - | ツールバー右側(送信/停止ボタンの左)に表示する要素 |
isLoading | boolean | false | AI生成中の状態。trueのとき送信ボタンが停止ボタンに切り替わる(onSendが停止操作として呼ばれる) |
ariaLabel | string | 'メッセージ入力' | テキストエリアのaria-label |
showCounter | boolean | false | trueのとき、maxLengthの80%に達した時点で文字数カウンターを表示する |
disabled | boolean | false | 無効状態 |