#pragma once
#include "core/ui/rect.h"
// prune_button — layout for the bank_panel's Prune button in the tail-footer strip. Panel shell
// owns SWELL/LICE/dispatch; this owns whether a click lands on it.
//
// Placement: right-anchored in the footer, inset from the right edge, just left of the version
// readout, set apart from the footer_bar left group (mode toggle / count / Tail). Suppressed
// (empty rect) rather than drawn overlapping when the footer is too narrow — the command stays
// reachable via its binding either way.

namespace reasampler::ui {

using FooterRect = Rect;
using ButtonRect = Rect;

// Layout inputs, in pixels; defaults match the bank_panel footer metrics.
//   * rightInset   — gap from the footer's right edge to the button's right edge, clearing the
//                    right-aligned version readout. COUPLED to drawFooter's version-readout
//                    margin (panel_render.cpp) and to FooterBarSpec::rightReserve, which must
//                    exceed rightInset + buttonWidth so the left group never runs under this
//                    button. Update together if either margin changes.
//   * minLeftInset — button's left edge must stay this far from the footer left edge (room for
//                    the footer-left group); otherwise the button is suppressed.
struct PruneButtonSpec {
    int buttonWidth = 72;
    int rightInset = 84;
    int verticalInset = 4;
    int minLeftInset = 120;
};

// Right-anchored rect within `footer`, vertically centred. Empty when the footer is degenerate
// or the resulting left edge would fall closer to the footer's left than minLeftInset.
ButtonRect computePruneButton(const FooterRect& footer, const PruneButtonSpec& spec);

// Half-open bounds, matching computePruneButton. Empty button never claims a point.
bool hitTestPruneButton(int px, int py, const ButtonRect& button);

} // namespace reasampler::ui
