# IconBar

**コントロール機能**：複数のクリック可能なSVGアイコンボタンを含むアイコンツールバーを作成。選択状態のサポートおよびイベント発行に対応。  
**タイプ**：コンテナーコントロール  
**親クラスコントロール**：`bricks.HBox`

## 初期化パラメータ

| パラメータ名 | 型 | 説明 |
|------------|----|------|
| `opts.cheight` | Number | 子コントロールの高さ（文字単位）。デフォルト値は `2` |
| `opts.rate` | Number | 拡大縮小率。アイコンサイズに影響を与える。デフォルト値は `1` |
| `opts.margin` | String | アイコン間の左右マージン。CSS形式（例：`'10px'`） |
| `opts.tools` | Array | ツール項目の配列。各ツール項目は以下のフィールドを持つオブジェクト：<br>- `name`: ツール名（識別およびイベント用）<br>- `icon`: SVGアイコンのURL<br>- `rate`: 当該アイコンの拡大縮小率（任意）<br>- `dynsize`: サイズを動的に調整するかどうか（真偽値）<br>- `tip`: ツールチップテキスト（任意） |

> `cheight` または `rate` が指定されていない場合、自動的にデフォルト値が設定されます。

## 主なイベント

| イベント名 | 発火条件 | 持たされるデータ |
|----------|---------|-----------------|
| `desc.name`（すなわち `tools[i].name`） | アイコンがクリックされたときに発火。イベント名はそのアイコンの `name` フィールド | 対応するアイコンの `desc` オブジェクトを渡す |
| `command` | 全てのアイコンクリックで発火する共通イベント | 現在のアイコンの `desc` オブジェクトを渡す |

> イベントは `dispatch` によって発行され、外部から特定のコマンドや汎用操作を監視するために使用可能。

---

# IconTextBar

**コントロール機能**：`IconBar` を拡張し、各ツール項目が「アイコン＋テキスト」の組み合わせで表示される。ラベル付き説明が必要なツールバーに適している。  
**タイプ**：コンテナーコントロール  
**親クラスコントロール**：`bricks.IconBar`

## 初期化パラメータ

`IconBar` のすべてのパラメータを継承し、`tools` 配列内の各項目のサポートを強化：

| パラメータ名 | 型 | 説明 |
|------------|----|------|
| `opts.tools[i].label` | String | アイコン横に表示されるテキストラベル |
| `opts.tools[i].tip` | String | マウスホバー時のツールチップテキスト。アイコンとテキストを含む全体のコンテナに適用される |
| その他のパラメータ（`IconBar` と同じ） | —— | `name`, `icon`, `rate`, `dynsize` などをサポート |

> 各ツール項目は水平レイアウト（`HBox`）として構築され、内部には順に `Svg` および `Text` コントロールが追加される。

## 主なイベント

`IconBar` と完全に一致：

| イベント名 | 発火条件 | 持たされるデータ |
|----------|---------|-----------------|
| `desc.name` | 特定の項目がクリックされたときに発火。イベント名はその `name` フィールド | 対応する `desc` オブジェクト |
| `command` | 全てのクリックで発火する共通イベント | 現在の項目の `desc` オブジェクト |

> イベントは全体の `HBox` にバインドされており、アイコンまたはテキストのいずれかをクリックしても発火する。

---

# FloatIconBar

**コントロール機能**：フローティング式のアイコンツールバー。初期状態では「外側に飛び出すアイコン」のみ表示され、マウスカーソルを乗せると完全な `IconBar` が展開される。サイドバーのフロートツールバーなどに使用される。  
**タイプ**：コンテナーコントロール  
**親クラスコントロール**：`bricks.HBox`

## 初期化パラメータ

| パラメータ名 | 型 | 説明 |
|------------|----|------|
| `opts` | Object | 内部の `IconBar` に渡される設定オブジェクト。構造は `IconBar` の `opts.tools` などと同じ |
| 内部で `bricks_resource('imgs/float-out.png')` を使用 | —— | 固定のフロート展開ボタンアイコン |

> 実際のツール項目は渡された `opts` により内部の `IconBar` が構築される。

## 主なイベント

内部の `IconBar` と一致：

| イベント名 | 発火条件 | 持たされるデータ |
|----------|---------|-----------------|
| `desc.name` | 展開後に特定のアイコンがクリックされたとき発火 | 対応するアイコンの `desc` オブジェクト |
| `command` | 全てのアイコンクリックで発火 | 現在のアイコンの `desc` オブジェクト |

> イベントは内蔵された `IconBar` インスタンスから発行され、自動的に透過される。

さらに以下の動作イベントも存在：
- `mousemove`：フロートアイコン上で発火し、メニューを展開
- ページ上の任意の位置での `click`：メニューを折りたたむ（`bricks.Body` のリスニングにより実現）

---

# FloatIconTextBar

**コントロール機能**：フローティング式の「アイコン＋テキスト」ツールバー。`FloatIconBar` の拡張版であり、展開後に文字ラベル付きのツール項目を表示する。  
**タイプ**：コンテナーコントロール  
**親クラスコントロール**：`bricks.FloatIconBar`

## 初期化パラメータ

`FloatIconBar` と同じ：

| パラメータ名 | 型 | 説明 |
|------------|----|------|
| `opts` | Object | `tools` 配列およびその他の設定を含み、内部で `IconTextBar` を構築する際に使用 |

> 内部では `build_bar(opts)` を呼び出して `IconTextBar` インスタンスを作成するため、`label`、`tip` などのテキスト関連属性をサポート。

## 主なイベント

`IconTextBar` と一致：

| イベント名 | 発火条件 | 持たされるデータ |
|----------|---------|-----------------|
| `desc.name` | 展開後に特定の項目がクリックされたとき発火 | 当該項目の `desc` オブジェクト |
| `command` | 全てのクリックで発火 | 現在の項目の `desc` オブジェクト |

> 全てのイベントは内部の `IconTextBar` インスタンスから発行され、自動的に上位へバブルアップする。