Migrate components to ilovetui

Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
This commit is contained in:
Hadi
2026-05-26 16:38:09 +02:00
parent c7523e69e7
commit 9ac6040629
20 changed files with 54 additions and 154 deletions
+3 -3
View File
@@ -212,9 +212,9 @@ type Model struct {
func New() Model {
return Model{
leftViewport: style.NewViewport(),
rightViewport: style.NewViewport(),
help: style.NewHelp(),
leftViewport: ilovetui.NewViewport(),
rightViewport: ilovetui.NewViewport(),
help: ilovetui.NewHelp(),
}
}
+2 -2
View File
@@ -57,8 +57,8 @@ func (m *Model) renderPanels(panelH int) string {
rightBorder = ilovetui.S.PanelFocused
}
left := ilovetui.RenderWithTitle(leftBorder, leftTitle, style.ViewportView(&m.leftViewport), leftW, panelH)
right := ilovetui.RenderWithTitle(rightBorder, rightTitle, style.ViewportView(&m.rightViewport), rightW, panelH)
left := ilovetui.RenderWithTitle(leftBorder, leftTitle, ilovetui.ViewportView(&m.leftViewport), leftW, panelH)
right := ilovetui.RenderWithTitle(rightBorder, rightTitle, ilovetui.ViewportView(&m.rightViewport), rightW, panelH)
return lipgloss.JoinHorizontal(lipgloss.Top, left, right)
}
+1 -2
View File
@@ -16,7 +16,6 @@ import (
"charm.land/lipgloss/v2"
ilovetui "github.com/anotherhadi/ilovetui"
"github.com/anotherhadi/spilltea/internal/keys"
"github.com/anotherhadi/spilltea/internal/style"
)
func readDoc(name string) string {
@@ -64,7 +63,7 @@ func New() Model {
return Model{
viewport: viewport.New(),
help: style.NewHelp(),
help: ilovetui.NewHelp(),
searchInput: ti,
}
}
+5 -6
View File
@@ -14,7 +14,6 @@ import (
ilovetui "github.com/anotherhadi/ilovetui"
"github.com/anotherhadi/spilltea/internal/db"
"github.com/anotherhadi/spilltea/internal/keys"
"github.com/anotherhadi/spilltea/internal/style"
"github.com/anotherhadi/spilltea/internal/util"
)
@@ -39,10 +38,10 @@ type Model struct {
func New() Model {
return Model{
listViewport: style.NewViewport(),
bodyViewport: style.NewViewport(),
pager: style.NewPaginator(),
help: style.NewHelp(),
listViewport: ilovetui.NewViewport(),
bodyViewport: ilovetui.NewViewport(),
pager: ilovetui.NewPaginator(),
help: ilovetui.NewHelp(),
}
}
@@ -76,7 +75,7 @@ func (m *Model) recalcSizes() {
m.help.SetWidth(m.width - 2)
inner := m.width - 2
listH, bodyH := style.SplitH(m.height, m.renderStatusBar(), 0.35)
listH, bodyH := ilovetui.SplitH(m.height, m.renderStatusBar(), 0.35)
listVH := ilovetui.ContentHeight(listH) - 1 // -1 for the pager dots row
if listVH < 0 {
+2 -2
View File
@@ -17,7 +17,7 @@ func (m Model) View() tea.View {
return tea.NewView("Loading...")
}
listH, bodyH := style.SplitH(m.height, m.renderStatusBar(), 0.35)
listH, bodyH := ilovetui.SplitH(m.height, m.renderStatusBar(), 0.35)
content := lipgloss.JoinVertical(lipgloss.Left,
m.renderListPanel(m.width, listH),
@@ -44,7 +44,7 @@ func (m *Model) renderBodyPanel(h int) string {
if len(m.findings) > 0 {
title = m.findings[m.cursor].Title
}
return ilovetui.RenderWithTitle(ilovetui.S.Panel, title, style.ViewportView(&m.bodyViewport), m.width, h)
return ilovetui.RenderWithTitle(ilovetui.S.Panel, title, ilovetui.ViewportView(&m.bodyViewport), m.width, h)
}
func (m *Model) renderList() string {
+5 -6
View File
@@ -10,7 +10,6 @@ import (
ilovetui "github.com/anotherhadi/ilovetui"
"github.com/anotherhadi/spilltea/internal/db"
"github.com/anotherhadi/spilltea/internal/keys"
"github.com/anotherhadi/spilltea/internal/style"
"github.com/anotherhadi/spilltea/internal/util"
)
@@ -45,10 +44,10 @@ func New() Model {
ti := textinput.New()
ti.Prompt = ""
return Model{
listViewport: style.NewViewport(),
bodyViewport: style.NewViewport(),
pager: style.NewPaginator(),
help: style.NewHelp(),
listViewport: ilovetui.NewViewport(),
bodyViewport: ilovetui.NewViewport(),
pager: ilovetui.NewPaginator(),
help: ilovetui.NewHelp(),
searchInput: ti,
}
}
@@ -125,7 +124,7 @@ func (m *Model) recalcSizes() {
// 2 (padding) + 2 (prefix char + space)
m.searchInput.SetWidth(m.width - 4)
listH, bodyH := style.SplitH(m.height, m.renderStatusBar(), 0.35)
listH, bodyH := ilovetui.SplitH(m.height, m.renderStatusBar(), 0.35)
inner := m.width - 2
if inner < 0 {
+2 -2
View File
@@ -18,7 +18,7 @@ func (m Model) View() tea.View {
return tea.NewView("Loading...")
}
listH, bodyH := style.SplitH(m.height, m.renderStatusBar(), 0.35)
listH, bodyH := ilovetui.SplitH(m.height, m.renderStatusBar(), 0.35)
content := lipgloss.JoinVertical(lipgloss.Left,
m.renderListPanel(m.width, listH),
@@ -45,7 +45,7 @@ func (m *Model) renderBodyPanel(h int) string {
if m.focusedPanel == panelResponse {
title = icons.I.Response + "Response"
}
return ilovetui.RenderWithTitle(ilovetui.S.Panel, title, style.ViewportView(&m.bodyViewport), m.width, h)
return ilovetui.RenderWithTitle(ilovetui.S.Panel, title, ilovetui.ViewportView(&m.bodyViewport), m.width, h)
}
func (m *Model) renderStatusBar() string {
+1 -1
View File
@@ -158,7 +158,7 @@ func (m *Model) listHalfWidths() (leftW, rightW int) {
func (m *Model) recalcSizes() {
m.help.SetWidth(m.width - 2)
listH, bodyH := style.SplitH(m.height, m.renderStatusBar(), 0.35)
listH, bodyH := ilovetui.SplitH(m.height, m.renderStatusBar(), 0.35)
bodyInner := m.width - 2
if bodyInner < 0 {
-4
View File
@@ -1,15 +1,11 @@
package intercept
import (
"charm.land/bubbles/v2/help"
"charm.land/bubbles/v2/key"
"github.com/anotherhadi/spilltea/internal/icons"
"github.com/anotherhadi/spilltea/internal/keys"
"github.com/anotherhadi/spilltea/internal/style"
)
func newHelp() help.Model { return style.NewHelp() }
type interceptKeyMap struct{ width int }
func iconBinding(b key.Binding, icon string) key.Binding {
+8 -8
View File
@@ -6,9 +6,9 @@ import (
"charm.land/bubbles/v2/textarea"
"charm.land/bubbles/v2/viewport"
tea "charm.land/bubbletea/v2"
ilovetui "github.com/anotherhadi/ilovetui"
"github.com/anotherhadi/spilltea/internal/config"
"github.com/anotherhadi/spilltea/internal/intercept"
"github.com/anotherhadi/spilltea/internal/style"
)
type panel int
@@ -48,14 +48,14 @@ type Model struct {
func New(broker *intercept.Broker) Model {
cfg := config.Global
ta := style.NewTextarea(false)
ta := ilovetui.NewTextarea(false)
ta.Blur()
lv := style.NewViewport()
rv := style.NewViewport()
bv := style.NewViewport()
p := style.NewPaginator()
rp := style.NewPaginator()
lv := ilovetui.NewViewport()
rv := ilovetui.NewViewport()
bv := ilovetui.NewViewport()
p := ilovetui.NewPaginator()
rp := ilovetui.NewPaginator()
broker.SetCaptureResponse(cfg.Intercept.DefaultCaptureResponse)
@@ -69,7 +69,7 @@ func New(broker *intercept.Broker) Model {
textarea: ta,
pager: p,
responsePager: rp,
help: newHelp(),
help: ilovetui.NewHelp(),
pendingEdits: make(map[*intercept.PendingRequest]string),
pendingResponseEdits: make(map[*intercept.PendingResponse]string),
}
+2 -2
View File
@@ -17,7 +17,7 @@ func (m Model) View() tea.View {
return tea.NewView("Loading...")
}
listH, bodyH := style.SplitH(m.height, m.renderStatusBar(), 0.35)
listH, bodyH := ilovetui.SplitH(m.height, m.renderStatusBar(), 0.35)
var listRow string
if m.captureResponse {
@@ -82,7 +82,7 @@ func (m *Model) renderBodyPanel(h int) string {
if m.editing {
body = m.textarea.View()
} else {
body = style.ViewportView(&m.bodyViewport)
body = ilovetui.ViewportView(&m.bodyViewport)
}
border := ilovetui.S.Panel
+6 -7
View File
@@ -13,7 +13,6 @@ import (
ilovetui "github.com/anotherhadi/ilovetui"
"github.com/anotherhadi/spilltea/internal/keys"
"github.com/anotherhadi/spilltea/internal/plugins"
"github.com/anotherhadi/spilltea/internal/style"
)
type Model struct {
@@ -37,7 +36,7 @@ type Model struct {
}
func New(mgr *plugins.Manager) Model {
ta := style.NewTextarea(true)
ta := ilovetui.NewTextarea(true)
ta.Placeholder = "plugin configuration..."
ta.Blur()
@@ -46,12 +45,12 @@ func New(mgr *plugins.Manager) Model {
return Model{
manager: mgr,
listViewport: style.NewViewport(),
detailViewport: style.NewViewport(),
listViewport: ilovetui.NewViewport(),
detailViewport: ilovetui.NewViewport(),
textarea: ta,
filterInput: fi,
pager: style.NewPaginator(),
help: style.NewHelp(),
pager: ilovetui.NewPaginator(),
help: ilovetui.NewHelp(),
}
}
@@ -71,7 +70,7 @@ func (m *Model) recalcSizes() {
}
m.help.SetWidth(m.width - 2)
listH, detailH := style.SplitH(m.height, m.renderStatusBar(), 0.4)
listH, detailH := ilovetui.SplitH(m.height, m.renderStatusBar(), 0.4)
inner := m.width - 2
if inner < 0 {
+2 -3
View File
@@ -10,7 +10,6 @@ import (
ilovetui "github.com/anotherhadi/ilovetui"
"github.com/anotherhadi/spilltea/internal/icons"
"github.com/anotherhadi/spilltea/internal/keys"
"github.com/anotherhadi/spilltea/internal/style"
"github.com/anotherhadi/spilltea/internal/util"
)
@@ -19,7 +18,7 @@ func (m Model) View() tea.View {
return tea.NewView(lipgloss.Place(m.width, m.height, lipgloss.Center, lipgloss.Center, ilovetui.S.Faint.Render(util.CenterLines("(._.)~*.'", "no plugins loaded"))))
}
listH, detailH := style.SplitH(m.height, m.renderStatusBar(), 0.4)
listH, detailH := ilovetui.SplitH(m.height, m.renderStatusBar(), 0.4)
content := lipgloss.JoinVertical(lipgloss.Left,
m.renderListPanel(m.width, listH),
@@ -71,7 +70,7 @@ func (m *Model) renderDetailPanel(h int) string {
ilovetui.S.Faint.Render(filepath.Base(info.FilePath)),
)
parts := []string{header, style.ViewportView(&m.detailViewport)}
parts := []string{header, ilovetui.ViewportView(&m.detailViewport)}
if m.hasConfig() {
var configLabel string
+7 -8
View File
@@ -12,7 +12,6 @@ import (
ilovetui "github.com/anotherhadi/ilovetui"
"github.com/anotherhadi/spilltea/internal/db"
"github.com/anotherhadi/spilltea/internal/keys"
"github.com/anotherhadi/spilltea/internal/style"
)
type SendToReplayMsg struct {
@@ -62,15 +61,15 @@ type Model struct {
}
func New() Model {
ta := style.NewTextarea(false)
ta := ilovetui.NewTextarea(false)
ta.Blur()
return Model{
listViewport: style.NewViewport(),
requestViewport: style.NewViewport(),
responseViewport: style.NewViewport(),
listViewport: ilovetui.NewViewport(),
requestViewport: ilovetui.NewViewport(),
responseViewport: ilovetui.NewViewport(),
textarea: ta,
pager: style.NewPaginator(),
help: style.NewHelp(),
pager: ilovetui.NewPaginator(),
help: ilovetui.NewHelp(),
}
}
@@ -150,7 +149,7 @@ func (m *Model) SetSize(w, h int) {
func (m *Model) recalcSizes() {
m.help.SetWidth(m.width - 2)
listH, bodyH := style.SplitH(m.height, m.renderStatusBar(), 0.35)
listH, bodyH := ilovetui.SplitH(m.height, m.renderStatusBar(), 0.35)
listInner := m.width - 2
if listInner < 0 {
+3 -3
View File
@@ -17,7 +17,7 @@ func (m Model) View() tea.View {
return tea.NewView("Loading...")
}
listH, bodyH := style.SplitH(m.height, m.renderStatusBar(), 0.35)
listH, bodyH := ilovetui.SplitH(m.height, m.renderStatusBar(), 0.35)
leftW, rightW := m.bodyHalfWidths()
bodyRow := lipgloss.JoinHorizontal(lipgloss.Top,
@@ -56,7 +56,7 @@ func (m *Model) renderRequestPanel(w, h int) string {
body = m.textarea.View()
border = ilovetui.S.PanelFocused
} else {
body = style.ViewportView(&m.requestViewport)
body = ilovetui.ViewportView(&m.requestViewport)
if m.focusedPanel == panelRequest {
border = ilovetui.S.PanelFocused
}
@@ -69,7 +69,7 @@ func (m *Model) renderResponsePanel(w, h int) string {
if !m.editing && m.focusedPanel == panelResponse {
border = ilovetui.S.PanelFocused
}
return ilovetui.RenderWithTitle(border, icons.I.Response+"Response", style.ViewportView(&m.responseViewport), w, h)
return ilovetui.RenderWithTitle(border, icons.I.Response+"Response", ilovetui.ViewportView(&m.responseViewport), w, h)
}
func (m *Model) renderStatusBar() string {