#pragma once
#include <functional>
#include <ftxui/component/component.hpp>
#include <ftxui/dom/elements.hpp>
namespace torlinkc::ui {
inline constexpr int kLogoWidth = 39;
// The original torlink block-art wordmark (reads as "TORLINK" -- a block
// font has no case distinction), with "C++" appended in the same
// half-block glyph style. The block art has a horizontal accent->bright
// gradient (per-cell sheen from the original simplified to a static
// gradient -- see the Phase 4 commit message).
ftxui::Element renderLogo();
// Same wordmark, with a cosine-bell highlight (ui/sheen.ts's math, ported
// to glyph columns instead of progress-bar cells) blended in at `sweepCenter`
// -- one still frame of the swipe. `sweepCenter` is in glyph-column units and
// may range outside [0, kLogoWidth) (the bell travels in from off-screen
// left and back out to the right, per sheen.ts's SHEEN_GAP).
ftxui::Element renderLogo(float sweepCenter);
// A component that animates the sweep above via FTXUI's native animation
// system (see spinner.hpp for the pattern this follows). Only keeps
// requesting frames while `isActive()` is true -- intended for the splash
// screen's logo only, so the wordmark stays static everywhere else.
ftxui::Component MakeAnimatedLogo(std::function<bool()> isActive);
} // namespace torlinkc::ui