package tui

import (
	"fmt"
	"path/filepath"
	"strings"

	"github.com/charmbracelet/lipgloss"
	"github.com/voocel/ainovel-cli/app"
)

// renderInputBox 渲染底部栏（两行布局）。
// 第一行：❯ + 输入框
// 第二行：左快捷键提示，右进度信息
func renderInputBox(inputView string, snap app.UISnapshot, outputDir string, width int) string {
	innerW := width - 4 // border + padding

	// 第一行：提示符 + 输入框
	prompt := lipgloss.NewStyle().Foreground(colorAccent).Bold(true).Render("❯ ")
	line1 := prompt + inputView

	// 第二行：左快捷键，右进度
	hints := lipgloss.NewStyle().Foreground(colorDim).Render("点击/Tab 切换面板 · ↑↓ 滚动 · End 跳底 · ^L 清屏 · Esc 重置 · Enter 发送")
	info := buildRightInfo(snap, outputDir)

	hintsW := lipgloss.Width(hints)
	infoW := lipgloss.Width(info)
	gap := innerW - hintsW - infoW
	if gap < 1 {
		gap = 1
	}
	line2 := hints + strings.Repeat(" ", gap) + info

	// 输入区（上横线 + 输入行）
	inputStyle := lipgloss.NewStyle().
		Width(width).
		Border(baseBorder, true, false, true, false).
		BorderForeground(colorDim).
		Padding(0, 1)
	inputBlock := inputStyle.Render(line1)

	// 提示行（无边框，紧贴下横线下方）
	hintStyle := lipgloss.NewStyle().
		Width(width).
		Padding(0, 2)
	hintBlock := hintStyle.Render(line2)

	return inputBlock + "\n" + hintBlock + "\n"
}

// buildRightInfo 构建右侧进度和目录信息。
func buildRightInfo(snap app.UISnapshot, outputDir string) string {
	var parts []string

	if snap.Provider != "" {
		parts = append(parts, snap.Provider)
	}
	if snap.ModelName != "" {
		parts = append(parts, snap.ModelName)
	}
	if snap.TotalChapters > 0 {
		parts = append(parts, fmt.Sprintf("Ch %d/%d", snap.CompletedCount, snap.TotalChapters))
	}
	if snap.TotalWordCount > 0 {
		parts = append(parts, formatNumber(snap.TotalWordCount)+"字")
	}
	if outputDir != "" {
		parts = append(parts, "./"+filepath.Base(outputDir))
	}

	if len(parts) == 0 {
		return lipgloss.NewStyle().Foreground(colorDim).Render("READY")
	}
	return lipgloss.NewStyle().Foreground(colorDim).Render(strings.Join(parts, " · "))
}
