summaryrefslogtreecommitdiffhomepage
path: root/internal/tui/page
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-03-21 18:20:28 +0100
committerKujtim Hoxha <[email protected]>2025-03-21 18:20:28 +0100
commit4b0ea68d7af9a6031a7ffda7ad66e0cb83315750 (patch)
tree8220c1bf6f107ea76dd78c7f57b77000c0c98a22 /internal/tui/page
downloadopencode-4b0ea68d7af9a6031a7ffda7ad66e0cb83315750.tar.gz
opencode-4b0ea68d7af9a6031a7ffda7ad66e0cb83315750.zip
initial
Diffstat (limited to 'internal/tui/page')
-rw-r--r--internal/tui/page/init.go37
-rw-r--r--internal/tui/page/logs.go25
-rw-r--r--internal/tui/page/page.go3
-rw-r--r--internal/tui/page/repl.go19
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(),
+ },
+ )
+}