Input
Inputは、ユーザーからテキストデータを収集するための基本的なフォーム要素です。メール、パスワード、検索など、様々な種類のテキスト入力に対応します。
2
Variants
5
Sizes
2
Icon Slot
Field
Field
Playground
プレビュー
defaultD44px / font 16px
Variant
Size
Radius
Icon
State
Field
Focus
<Input placeholder="Type here..." />Variants
Default
標準的なボーダースタイル。フォームの一般的な入力欄に使用。
一般的なフォーム
Filled
背景色付きスタイル。視覚的に目立たせたい入力欄に。
検索バー、主要入力
Sizes
xs高さ36px
横パディング12px
フォント13px
アイコン14px
sm高さ40px
横パディング12px
フォント14px
アイコン14px
default高さ44px
横パディング16px
フォント16px
アイコン16px
lg高さ48px
横パディング16px
フォント16px
アイコン16px
xl高さ56px
横パディング16px
フォント16px
アイコン16px
| Size | 高さ | 横パディング | フォント | アイコン | 用途 | プレビュー |
|---|---|---|---|---|---|---|
xs | 36px | 12px | 13px | 14px | コンパクト | |
sm | 40px | 12px | 14px | 14px | 小さめ | |
default | 44px | 16px | 16px | 16px | 標準(推奨) | |
lg | 48px | 16px | 16px | 16px | ゆったり | |
xl | 56px | 16px | 16px | 16px | 大きめ |
タッチターゲット: WCAG 2.5.8基準では最小24pxのタッチ領域が必要です。最小のxs(36px)でもWCAG基準を満たしています。
iOS Safari対応: フォントサイズ16px以上でiOS Safariの自動ズームを防止できます。default以上のサイズは16pxフォント・16pxアイコンを使用しています。
Features
With Icons
<Input leftIcon={<Search />} placeholder="検索..." />
<Input rightIcon={<Mail />} placeholder="メールアドレス" />
<Input leftIcon={<Lock />} rightIcon={<Eye />} type="password" placeholder="パスワード" />States
Default通常
0/50
Errorエラー
必須項目です
Disabled無効
フォーカス状態
focusRing: false(デフォルト): クリック時はボーダー変化のみ、キーボードTab時はフォーカスリング自動表示。focusRing: true: 常にフォーカスリングを表示。
API
Props
variant"default""default" | "filled"インプットの視覚スタイル
size"default""xs" | "sm" | "default" | "lg" | "xl"インプットの高さ (36/40/44/48/56px) - Input専用スケール
radius"default""none" | "sm" | "base" | "default" | "lg" | "xl" | "2xl" | "3xl" | "full"角丸のサイズ (6px)
leftIconundefinedReactNode左側アイコン
rightIconundefinedReactNode右側アイコン
focusRingfalsebooleanカスタムフォーカスリング表示。falseでもキーボード操作時は自動表示
errorundefinedbooleanエラー状態(赤いボーダー)
disabledundefinedboolean無効状態
placeholderundefinedstringプレースホルダーテキスト
typeundefinedstringインプットタイプ (text, email, password, etc.)。HTMLデフォルト: text
| Name | Type | Default | Description |
|---|---|---|---|
variant | "default" | "filled" | "default" | インプットの視覚スタイル |
size | "xs" | "sm" | "default" | "lg" | "xl" | "default" | インプットの高さ (36/40/44/48/56px) - Input専用スケール |
radius | "none" | "sm" | "base" | "default" | "lg" | "xl" | "2xl" | "3xl" | "full" | "default" | 角丸のサイズ (6px) |
leftIcon | ReactNode | undefined | 左側アイコン |
rightIcon | ReactNode | undefined | 右側アイコン |
focusRing | boolean | false | カスタムフォーカスリング表示。falseでもキーボード操作時は自動表示 |
error | boolean | undefined | エラー状態(赤いボーダー) |
disabled | boolean | undefined | 無効状態 |
placeholder | string | undefined | プレースホルダーテキスト |
type | string | undefined | インプットタイプ (text, email, password, etc.)。HTMLデフォルト: text |
Field
errorfalsebooleanエラー状態。Field.Error と Input に自動伝播
disabledfalseboolean無効状態。Field.Label と Input に自動伝播
gap"default""none" | "xs" | "sm" | "default" | "lg"子要素間の間隔 (0 / 4 / 6 / 8 / 12px)
| Name | Type | Default | Description |
|---|---|---|---|
error | boolean | false | エラー状態。Field.Error と Input に自動伝播 |
disabled | boolean | false | 無効状態。Field.Label と Input に自動伝播 |
gap | "none" | "xs" | "sm" | "default" | "lg" | "default" | 子要素間の間隔 (0 / 4 / 6 / 8 / 12px) |
Field.Label
requiredfalseboolean必須マーク(*)をラベル末尾に表示
| Name | Type | Default | Description |
|---|---|---|---|
required | boolean | false | 必須マーク(*)をラベル末尾に表示 |
Anatomy
1
2
Email address
4
3
user@example.com
5
6
Please enter a valid email address
1
Field
Field ラッパー
2
Label
ラベル
3
Input Area
テキスト入力
4
Left Icon
左アイコン(任意)
5
Right Icon
右アイコン(任意)
6
Helper Text
補助テキスト(任意)
Best Practices
✓
推奨
- ✓ラベルを必ず付ける(または aria-label)
- ✓適切なinput typeを使用(email, tel等)
- ✓エラー時は明確なフィードバックを表示
- ✓十分なタッチ領域を確保(WCAG 2.5.8: 24px以上)
✕
避けるべき
- ✗プレースホルダーをラベル代わりにしない
- ✗不要なautocompleteをオフにしない
- ✗エラー表示が色のみにならないようにする
- ✗入力制限を設ける場合は事前に明示する
Accessibility
キーボード操作
Tabフォーカス移動
Enterフォーム送信
Esc入力キャンセル
WCAG 2.2 準拠
- フォーカスインジケーター
- aria-invalid(エラー時)
- autocomplete サポート
- コントラスト比 4.5:1 以上