#pragma once
#include <cstddef>

namespace fn_ui {

struct PanelToggle {
    const char* label;     // texto del MenuItem y title del panel
    const char* shortcut;  // texto cosmetico tipo "Ctrl+1"; nullptr = sin shortcut
    bool*       open;      // bool* del Begin/End del panel (no debe ser nullptr)
};

// Renderiza una MainMenuBar completa con un BeginMenu(menu_label) que lista
// cada panel como ImGui::MenuItem checkable. Toggle en el menu sincroniza
// el bool del PanelToggle (mismo bool* que el caller pasa a ImGui::Begin).
//
// - menu_label: texto del menu, p.ej. "View"
// - items: puntero a array de PanelToggle (no debe ser nullptr si count > 0)
// - count: numero de items
//
// Returns: true si el usuario togglo algun panel en este frame.
//
// Nota: la funcion abre y cierra la MainMenuBar internamente. El caller
// no debe envolver con BeginMainMenuBar.
bool panel_menu(const char* menu_label,
                const PanelToggle* items, std::size_t count);

// Dibuja solo BeginMenu(menu_label) ... EndMenu() con los toggles, SIN
// abrir/cerrar BeginMainMenuBar. Usar esto cuando se quieran componer
// varios menus dentro de una MainMenuBar propia (ver app_menubar).
// Debe llamarse solo si ya se esta dentro de un BeginMainMenuBar() exitoso.
//
// Returns: true si el usuario togglo algun panel en este frame.
bool panel_menu_items(const char* menu_label,
                      const PanelToggle* items, std::size_t count);

} // namespace fn_ui
