Files
2026-08-14 23:41:57 +08:00

17 lines
721 B
Go

package ui
import "charm.land/lipgloss/v2"
// Width reports the number of terminal cells the rendered string s occupies. It
// delegates to lipgloss v2's width measurement, which strips ANSI escape
// sequences and counts East Asian wide / fullwidth runes (CJK, emoji) as two
// columns. This is the single width primitive the TUI and REPL layers style
// through (per the tui-agent SPEC), so alignment stays consistent across the
// codebase instead of each caller hand-rolling its own East-Asian-width table.
//
// For multi-line input, Width returns the width of the widest line (lipgloss
// measures the bounding box), matching how the renderer lays text out.
func Width(s string) int {
return lipgloss.Width(s)
}