#pragma once
#include <cstddef>
#include "core/panel_menu.h"
#include "core/layouts_menu.h"
#include "core/app_settings.h"
#include "core/app_about.h"

namespace fn_ui {

// Renderiza una MainMenuBar completa con:
//   * Menu "View" (panel_menu_items con los toggles dados)        [si panels]
//   * Menu "Layouts" (layouts_menu_items con las callbacks dadas) [si layouts_cb]
//   * Menu "Settings" con submenus:                                [siempre]
//       - "Settings..." → abre la ventana de settings
//       - "About..."    → abre la ventana About
//
// Llamar despues de NewFrame() y antes del DockSpaceOverViewport.
// Si layouts_cb es nullptr, omite Layouts.
// Si panels es nullptr o count == 0, omite View.
// Las ventanas Settings y About se renderizan al final del frame en
// fn::run_app via settings_window_render() y about_window_render().
//
// Returns: true si el usuario togglo paneles, disparo accion de layouts,
// o abrio una ventana este frame.
bool app_menubar(const PanelToggle* panels, std::size_t count,
                 LayoutCallbacks* layouts_cb);

} // namespace fn_ui
