diff options
| author | Kujtim Hoxha <[email protected]> | 2025-03-21 18:20:28 +0100 |
|---|---|---|
| committer | Kujtim Hoxha <[email protected]> | 2025-03-21 18:20:28 +0100 |
| commit | 4b0ea68d7af9a6031a7ffda7ad66e0cb83315750 (patch) | |
| tree | 8220c1bf6f107ea76dd78c7f57b77000c0c98a22 /internal/tui/page | |
| download | opencode-4b0ea68d7af9a6031a7ffda7ad66e0cb83315750.tar.gz opencode-4b0ea68d7af9a6031a7ffda7ad66e0cb83315750.zip | |
initial
Diffstat (limited to 'internal/tui/page')
| -rw-r--r-- | internal/tui/page/init.go | 37 | ||||
| -rw-r--r-- | internal/tui/page/logs.go | 25 | ||||
| -rw-r--r-- | internal/tui/page/page.go | 3 | ||||
| -rw-r--r-- | internal/tui/page/repl.go | 19 |
4 files changed, 84 insertions, 0 deletions
diff --git a/internal/tui/page/init.go b/internal/tui/page/init.go new file mode 100644 index 000000000..884aaf9f9 --- /dev/null +++ b/internal/tui/page/init.go @@ -0,0 +1,37 @@ +package page + +import ( + tea "github.com/charmbracelet/bubbletea" + "github.com/kujtimiihoxha/termai/internal/tui/layout" +) + +var InitPage PageID = "init" + +type initPage struct { + layout layout.SinglePaneLayout +} + +func (i initPage) Init() tea.Cmd { + return nil +} + +func (i initPage) Update(_ tea.Msg) (tea.Model, tea.Cmd) { + return i, nil +} + +func (i initPage) View() string { + return "Initializing..." +} + +func NewInitPage() tea.Model { + return layout.NewSinglePane( + &initPage{}, + layout.WithSinglePaneFocusable(true), + layout.WithSinglePaneBordered(true), + layout.WithSignlePaneBorderText( + map[layout.BorderPosition]string{ + layout.TopMiddleBorder: "Welcome to termai", + }, + ), + ) +} diff --git a/internal/tui/page/logs.go b/internal/tui/page/logs.go new file mode 100644 index 000000000..17b1f2340 --- /dev/null +++ b/internal/tui/page/logs.go @@ -0,0 +1,25 @@ +package page + +import ( + tea "github.com/charmbracelet/bubbletea" + "github.com/kujtimiihoxha/termai/internal/tui/components/logs" + "github.com/kujtimiihoxha/termai/internal/tui/layout" +) + +var LogsPage PageID = "logs" + +func NewLogsPage() tea.Model { + p := layout.NewSinglePane( + logs.NewLogsTable(), + layout.WithSinglePaneFocusable(true), + layout.WithSinglePaneBordered(true), + layout.WithSignlePaneBorderText( + map[layout.BorderPosition]string{ + layout.TopMiddleBorder: "Logs", + }, + ), + layout.WithSinglePanePadding(1), + ) + p.Focus() + return p +} diff --git a/internal/tui/page/page.go b/internal/tui/page/page.go new file mode 100644 index 000000000..578e0aa9a --- /dev/null +++ b/internal/tui/page/page.go @@ -0,0 +1,3 @@ +package page + +type PageID string diff --git a/internal/tui/page/repl.go b/internal/tui/page/repl.go new file mode 100644 index 000000000..829b6f545 --- /dev/null +++ b/internal/tui/page/repl.go @@ -0,0 +1,19 @@ +package page + +import ( + tea "github.com/charmbracelet/bubbletea" + "github.com/kujtimiihoxha/termai/internal/tui/components/repl" + "github.com/kujtimiihoxha/termai/internal/tui/layout" +) + +var ReplPage PageID = "repl" + +func NewReplPage() tea.Model { + return layout.NewBentoLayout( + layout.BentoPanes{ + layout.BentoLeftPane: repl.NewThreadsCmp(), + layout.BentoRightTopPane: repl.NewMessagesCmp(), + layout.BentoRightBottomPane: repl.NewEditorCmp(), + }, + ) +} |
