export function box(lines: string[], width: number | 'fit' = 'fit'): string {
  if (width === 'fit') {
    width = Math.max(...lines.map((line) => line.length)) + 2 // +2 for padding
  }

  const top = `╔${'═'.repeat(width)}╗`
  const sep = `╠${'═'.repeat(width)}╣`
  const bottom = `╚${'═'.repeat(width)}╝`

  const paddedLines = lines.map((line) => {
    const raw = line.replace(/\x1b\[[0-9;]*m/g, '') // Strip ANSI for length
    const padding = width - raw.length
    return `║${line}${' '.repeat(Math.max(0, padding))}║`
  })

  return [top, ...paddedLines.slice(0, 1), sep, ...paddedLines.slice(1), bottom].join('\n')
}
