Textarea
最小行数と最大行数の間で、書いた内容に合わせて滑らかに伸びる複数行テキストです。カウンター、バリデーション、送信ショートカットを備えています。
Grows with your text, then scrolls.
pnpm dlx shadcn@latest add https://hextaui.com/r/textarea.jsonコンポーネント、HextaUIのテーマトークン、依存するHextaUIコンポーネントを追加します。
まだ追加していない場合は、グローバルCSSにテーマトークンを追加してください。
依存関係をインストールします。
pnpm add @base-ui/react class-variance-authority cn次のコードをコピーしてプロジェクトに貼り付けてください。
components/ui/textarea.tsx components/ui/input.tsx components/ui/number-flow.tsx lib/motion.ts インポートパスは、お使いのプロジェクト構成に合わせて更新してください。
ボックスはテキストに合わせて伸び、ジャンプせず新しい行になめらかに変化し、minRows から maxRows まで伸びた後はスクロールします。アニメーションが入力を遅らせることはありません。
ショートカットで送信
submitOnShortcut は、⌘ + Enter または Ctrl + Enter でフォームを送信します。Enter だけでは引き続き改行されます。
文字数
Field の内側で maxLength を指定すると、FieldCounter が入力に合わせて数え、上限に達すると揺れて知らせます。
行数
minRows と maxRows は、伸び始めと止まる位置を設定します。
固定サイズ
autoResize={false} は、縦のリサイズハンドルを備えた固定の高さを保ちます。
状態
無効、読み取り専用、無効(invalid)。無効な textarea は、フォーム送信が失敗すると揺れます。
右から左
テキスト、プレースホルダー、キャレットは文字の読み方向に従います。
| キー | アクション |
|---|---|
| Enter | 改行します。 |
| ⌘Enter | submitOnShortcut でフォームを送信します。Windows と Linux では Ctrl + Enter です。 |
FieldLabelまたはaria-labelでラベルを付けます。- タッチスクリーンではテキストが最低16pxになるため、フォーカスしても iOS がズームしません。
- ショートカットは、入力メソッドの変換中は待機するため、日本語や中国語の単語を確定してもメッセージが送信されることはありません。
- 視差効果の軽減が有効な場合、ボックスは即座にリサイズされます。
| プロパティ | 型 | デフォルト |
|---|---|---|
autoResize固定の高さの代わりに、テキストに合わせて伸びます。 | boolean | true |
minRows | number | 3 |
maxRows | number | 10 |
submitOnShortcut⌘/Ctrl + Enter で親のフォームを送信します。 | boolean | false |
shakeフォーム送信で無効と判定されたときに揺れます。 | boolean | true |
| 属性 | 説明 |
|---|---|
data-slot="textarea" | textarea。 |
data-autoresize | テキストに合わせて伸びるときに付きます。 |
--textarea-min-rows / --textarea-max-rows | minRows と maxRows から設定されます。 |
- Input3つのサイズ、無効状態と読み取り専用状態、ネイティブのバリデーションスタイル、スマートフォンでズームされない16pxのタッチ用フォントを備えたテキスト入力です。
- useAutosizeテキストエリアを、書いた内容に合わせて最小の高さと最大の高さの間で伸ばします。変化ごとにアニメーションしますが、テキストには一切触れません。
- useComposedRef自分の要素へのrefを保持しつつ、親から渡されたrefにもそのまま転送します。
- useInvalidShake送信を試みて無効だったとき、フォームコントロールを揺らします。入力中は揺らしません。
- Calendar単一、範囲、複数選択に対応する日付グリッドです。月のスライド、範囲のプレビュー、タッチしやすいサイズの日付セルを備えています。
- Checkboxチェックが描かれるように表示されるチェックボックスです。中間状態の親、グループ、ホバーを共有するラベルに対応します。
使用しているブロック
Textarea の上に構築されるブロック。
- TeamAIプロダクトのワークスペース設定向けの、チームメンバーと招待です。入力中の招待をプレビューするシートメーター、貼り付けたリストを確認済みのチップに変える招待ボックス、ロール、検索、フィルター、並べ替えを備えたメンバー、再送のクールダウンとコピーできるリンクを持つ保留中の招待、入力による確認つきのオーナー移譲、取り消しできる削除を備えています。
- Tool Callsエージェントの動作を、1ステップにつき1行で表示します。読み取りと検索は短い要約にまとめられ、編集、コマンド、承認、エラーは表示されたままになります。各ステップは、ファイル、差分、ターミナル、結果といった実際のビューに展開できます。AI SDKのすべてのツール状態に対応し、理由を添えて断る承認も含みます。