package main

import (
	"fmt"

	tea "github.com/charmbracelet/bubbletea"
)

// model 定义应用的状态
type model struct {
	items       []string // 列表数据
	selectedIdx int      // 当前选中的索引
}

// Init 初始化模型，返回初始命令（这里不需要，返回 nil）
func (m model) Init() tea.Cmd {
	return nil
}

// Update 处理用户输入和状态更新
func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
	switch msg := msg.(type) {
	// 处理键盘输入
	case tea.KeyMsg:
		switch msg.String() {
		// Tab 键：切换选中项（循环切换）
		case "tab":
			m.selectedIdx = (m.selectedIdx + 1) % len(m.items)
		// Ctrl+C 或 q 键：退出程序
		case "ctrl+c", "q":
			return m, tea.Quit
		}
	}
	return m, nil
}

// View 渲染界面
func (m model) View() string {
	s := "网络接口列表（按 Tab 切换选择，按 q 退出）\n\n"

	// 遍历列表项，渲染每一项
	for i, item := range m.items {
		// 标记当前选中的项
		if i == m.selectedIdx {
			s += fmt.Sprintf("→ %s (选中)\n", item)
		} else {
			s += fmt.Sprintf("  %s\n", item)
		}
	}

	return s
}

func main() {
	// 初始化模型，设置列表数据
	initialModel := model{
		items:       []string{"eth0", "eth1", "eth2", "eth3"},
		selectedIdx: 0, // 默认选中第一个项
	}

	// 启动 Bubble Tea 程序
	p := tea.NewProgram(initialModel)
	if _, err := p.Run(); err != nil {
		fmt.Printf("程序运行出错: %v\n", err)
	}
}
