feat(checkout): tiered metered pricing display

Merged
MA
2mo ago
+620-54

Summary

Supersedes @strandhvilliam's #14042, rewritten against the current backend.

Graduated, collapsed. The default. From $12.00 / unit under the price, detail rows behind the #13945 toggle.

Screenshot 2026-09-02 at 17 09 18

Graduated, expanded. One row per tier. Bounds are inclusive, so a tier starts one unit past the one below it. The meter line drops its rate: repeating $12.00 directly above the row that already states it reads as two different prices.

Screenshot 2026-09-02 at 17 09 27

Volume, expanded. Same table plus one caption.

Screenshot 2026-09-02 at 17 10 31

50% discount. Every tier rate struck through and restated. The price line and the tier rows render rates through one component, so a discount cannot apply to one and not the other.

Screenshot 2026-09-02 at 17 11 12

Flat metered_unit price, unchanged.

Screenshot 2026-09-02 at 17 11 50

Checklist

  • This PR addresses a single concern (one bug fix, one feature, one refactor)
  • The diff is reasonably sized and easy to review
  • New functionality is covered by tests
  • Linting and type checking pass (uv run task lint && uv run task lint_types)
  • No unrelated changes or drive-by fixes are included