@@ -148,7 +148,7 @@ func renderItem(t ListIemStyles, title string, info string, focused bool, width
148148 for _, rng := range ranges {
149149 start, stop := bytePosToVisibleCharPos(title, rng)
150150 if start > lastPos {
151− parts = append(parts, title[lastPos:start])
151+ parts = append(parts, ansi.Cut(title, lastPos, start))
152152 }
153153 // NOTE: We're using [ansi.Style] here instead of [lipglosStyle]
154154 // because we can control the underline start and stop more
@@ -157,13 +157,13 @@ func renderItem(t ListIemStyles, title string, info string, focused bool, width
157157 // with other style
158158 parts = append(parts,
159159 ansi.NewStyle().Underline(true).String(),
160− title[start:stop+1],
160+ ansi.Cut(title, start, stop+1),
161161 ansi.NewStyle().Underline(false).String(),
162162 )
163163 lastPos = stop + 1
164164 }
165− if lastPos < len(title) {
166− parts = append(parts, title[lastPos:])
165+ if lastPos < ansi.StringWidth(title) {
166+ parts = append(parts, ansi.Cut(title, lastPos, ansi.StringWidth(title)))
167167 }
168168
169169 content = strings.Join(parts, "")