#pragma once

#include <eedb/widgets/NavigationBar.hpp>

namespace Wt::Auth {
class AbstractUserDatabase;
class Login;
}

namespace eedb {
class DefaultNavigationBar final : public NavigationBar {
  public:
    DefaultNavigationBar();

    DefaultNavigationBar(const DefaultNavigationBar &) = delete;
    DefaultNavigationBar(DefaultNavigationBar &&);

    // clang-format off
    DefaultNavigationBar & operator=(const DefaultNavigationBar &) = delete;
    DefaultNavigationBar & operator=(DefaultNavigationBar &&);
    // clang-format on
    ~DefaultNavigationBar();

    void attachTo(Wt::WContainerWidget * parent) override;
    void detach() override;

    void registerLogoutAction(std::function< void() > f) override;

  private:
    struct DefaultNavigationBarPriv;
    std::unique_ptr< DefaultNavigationBarPriv > _priv;
};
}
