---
name: toolbar
kind: component
lang: cpp
domain: core
version: "1.0.0"
purity: pure
signature: "void fn_ui::toolbar_begin(); void fn_ui::toolbar_separator(); void fn_ui::toolbar_end()"
description: "Grupo horizontal de acciones (buttons/icon_buttons) con spacing coherente y separadores verticales. Patron begin/separator/end."
tags: [imgui, ui, toolbar, layout, tokens]
uses_functions: ["tokens_cpp_core"]
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: [imgui]
tested: true
tests:
  - "compiles and links against Catch2 (placeholder, visual cubierto en 0048)"
test_file_path: "cpp/tests/test_toolbar.cpp"
file_path: "cpp/functions/core/toolbar.cpp"
framework: imgui
params: []
output: "Inicializa/cierra un grupo horizontal con spacing sm; toolbar_separator dibuja una linea vertical sutil entre grupos"
---

# toolbar

Contenedor horizontal para agrupar acciones con spacing consistente. El caller es responsable de llamar a `ImGui::SameLine()` entre widgets consecutivos — `toolbar_separator()` ya incluye `SameLine` implicito.

## Patron

```cpp
#include "core/toolbar.h"
#include "core/button.h"
#include "core/icon_button.h"
using namespace fn_ui;

toolbar_begin();
    if (button("New", ButtonVariant::Primary)) { /* ... */ }
    ImGui::SameLine();
    if (button("Open")) { /* ... */ }
  toolbar_separator();
    if (icon_button("##reload", "\xe2\x86\xbb", "Reload")) { /* ... */ }
toolbar_end();
```

## Notas

- Para alinear la toolbar a la derecha del page_header usar
  `ImGui::SameLine(ImGui::GetWindowWidth() - estimated_width)` antes del begin,
  o usar un Table de 2 columnas con la derecha stretch.
- El separador usa `colors::border` de tokens y ocupa 70% de `GetFrameHeight`.
