#pragma once #include #include #include #include "katja/repository.hpp" namespace katja { class PageBase : public ftxui::ComponentBase { public: virtual void Load() = 0; }; using Page = std::shared_ptr; class PageContainer final : public ftxui::ComponentBase { int menu_selected{ 0 }; ftxui::Component menu; ftxui::Component content; std::vector menu_entries; public: std::function on_enter; PageContainer(std::vector> pages); ftxui::Element Render() override; bool OnEvent(ftxui::Event event) override; }; class WelcomePage final : public PageBase { public: void Load() override; ftxui::Element Render() override; }; class UpdatesPage final : public PageBase { std::vector updatable; public: explicit UpdatesPage(std::vector&& updatable); void Load() override; ftxui::Element Render() override; }; class SearchPage final : public PageBase { public: void Load() override; }; }