feat: 升级到 lipgloss/bubbletea v2,实现翻译卡片组件

- 升级 charm.land/lipgloss/v2 v1.1.0 -> v2.0.2
- 升级 charm.land/bubbletea/v2 v1.3.10 -> v2.0.2
- 升级 charm.land/bubbles/v2 -> v2.1.0
- 新增翻译卡片组件:元信息行(Tokens/耗时/模型)、用户输入(碳黑背景)、翻译结果
- 卡片组件间距 5px
- 重构 model.go 适配 v2 API
- 更新 keys.go, messages.go, styles.go
This commit is contained in:
2026-04-07 04:47:58 +08:00
parent 18b191d10d
commit 217db90cfa
10 changed files with 865 additions and 287 deletions

48
internal/tui/keys.go Normal file
View File

@@ -0,0 +1,48 @@
package tui
import (
"charm.land/bubbles/v2/key"
)
type KeyMap struct {
Quit key.Binding
Clear key.Binding
SwitchLang key.Binding
ScrollUp key.Binding
ScrollDown key.Binding
ScrollTop key.Binding
ScrollBottom key.Binding
}
func NewKeyMap() KeyMap {
return KeyMap{
Quit: key.NewBinding(
key.WithKeys("ctrl+c", "esc"),
key.WithHelp("Ctrl+C", "退出"),
),
Clear: key.NewBinding(
key.WithKeys("ctrl+l"),
key.WithHelp("Ctrl+L", "清空输入"),
),
SwitchLang: key.NewBinding(
key.WithKeys("ctrl+t"),
key.WithHelp("Ctrl+T", "切换语言"),
),
ScrollUp: key.NewBinding(
key.WithKeys("up", "ctrl+up"),
key.WithHelp("↑/Ctrl+↑", "上滚"),
),
ScrollDown: key.NewBinding(
key.WithKeys("down", "ctrl+down"),
key.WithHelp("↓/Ctrl+↓", "下滚"),
),
ScrollTop: key.NewBinding(
key.WithKeys("home"),
key.WithHelp("Home", "顶部"),
),
ScrollBottom: key.NewBinding(
key.WithKeys("end"),
key.WithHelp("End", "底部"),
),
}
}