/* * SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD * * SPDX-License-Identifier: MIT */ #pragma once #include #include #include #include #include namespace view { class SelectMenuPage { public: struct MenuItem { std::string label; std::function onClick; }; struct MenuSection { std::string title; std::vector items; }; SelectMenuPage(std::vector sections); void update(); private: std::vector _sections; std::unique_ptr _pannel; std::vector> _labels; std::vector> _buttons; int _pending_section_index = -1; int _pending_item_index = -1; void create_selection_label(int x, int y, std::string_view text); void create_item_button(int y, const MenuItem& item, int section_idx, int item_idx); }; } // namespace view