summaryrefslogtreecommitdiff
path: root/internal/tui/eventstream
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-05 19:34:01 +0200
committerPaul Buetow <paul@buetow.org>2026-03-05 19:34:01 +0200
commit5fe164e91e40e8a3f749f4143f7562f940bf9f67 (patch)
treed77b03c737628fa58171de28eb89720c96f203b2 /internal/tui/eventstream
parenta44f6ee30c11963552b5b90a19698873aa9b6b6d (diff)
feat(tui): detect terminal theme and apply palettes
Diffstat (limited to 'internal/tui/eventstream')
-rw-r--r--internal/tui/eventstream/exportmodal.go7
-rw-r--r--internal/tui/eventstream/filtermodal.go7
-rw-r--r--internal/tui/eventstream/model.go14
-rw-r--r--internal/tui/eventstream/searchmodal.go7
4 files changed, 34 insertions, 1 deletions
diff --git a/internal/tui/eventstream/exportmodal.go b/internal/tui/eventstream/exportmodal.go
index ec35343..3c0e2cd 100644
--- a/internal/tui/eventstream/exportmodal.go
+++ b/internal/tui/eventstream/exportmodal.go
@@ -19,6 +19,7 @@ func NewExportModal() ExportModal {
input.Prompt = ""
input.CharLimit = 0
input.SetWidth(44)
+ input.SetStyles(textinput.DefaultStyles(true))
return ExportModal{textInput: input}
}
@@ -26,6 +27,12 @@ func (m ExportModal) Visible() bool {
return m.visible
}
+// SetDarkMode updates export modal text input styles.
+func (m ExportModal) SetDarkMode(isDark bool) ExportModal {
+ m.textInput.SetStyles(textinput.DefaultStyles(isDark))
+ return m
+}
+
func (m ExportModal) Open(defaultName string) ExportModal {
m.visible = true
m.err = ""
diff --git a/internal/tui/eventstream/filtermodal.go b/internal/tui/eventstream/filtermodal.go
index 6c7653e..bd20a03 100644
--- a/internal/tui/eventstream/filtermodal.go
+++ b/internal/tui/eventstream/filtermodal.go
@@ -49,6 +49,7 @@ func NewFilterModal() FilterModal {
input.Prompt = ""
input.CharLimit = 0
input.SetWidth(24)
+ input.SetStyles(textinput.DefaultStyles(true))
m := FilterModal{textInput: input}
m.fields = defaultFilterFields()
@@ -63,6 +64,12 @@ func (m FilterModal) Filter() Filter {
return m.filter
}
+// SetDarkMode updates filter modal text input styles.
+func (m FilterModal) SetDarkMode(isDark bool) FilterModal {
+ m.textInput.SetStyles(textinput.DefaultStyles(isDark))
+ return m
+}
+
func (m FilterModal) Open(initial Filter) FilterModal {
m.visible = true
m.activeField = 0
diff --git a/internal/tui/eventstream/model.go b/internal/tui/eventstream/model.go
index af7f67d..68b0cd5 100644
--- a/internal/tui/eventstream/model.go
+++ b/internal/tui/eventstream/model.go
@@ -53,6 +53,7 @@ type Model struct {
pendingOpenPath string
statusMessage string
exportDir string
+ isDark bool
width int
height int
@@ -69,7 +70,7 @@ type fdTraceViewState struct {
}
func NewModel(source *RingBuffer) Model {
- return Model{
+ m := Model{
source: source,
filterModal: NewFilterModal(),
exportModal: NewExportModal(),
@@ -79,7 +80,10 @@ func NewModel(source *RingBuffer) Model {
selectedCol: 0,
exportDir: ".",
showFooter: true,
+ isDark: true,
}
+ m.SetDarkMode(true)
+ return m
}
// SetViewport updates the render/scroll viewport dimensions used for
@@ -104,6 +108,14 @@ func (m *Model) SetSource(source *RingBuffer) {
m.Refresh()
}
+// SetDarkMode updates stream modal text input styles for the active theme.
+func (m *Model) SetDarkMode(isDark bool) {
+ m.isDark = isDark
+ m.filterModal = m.filterModal.SetDarkMode(isDark)
+ m.exportModal = m.exportModal.SetDarkMode(isDark)
+ m.searchModal = m.searchModal.SetDarkMode(isDark)
+}
+
// FilterModalVisible reports whether the filter modal is currently open.
func (m Model) FilterModalVisible() bool {
return m.filterModal.Visible()
diff --git a/internal/tui/eventstream/searchmodal.go b/internal/tui/eventstream/searchmodal.go
index 892b6d9..c09542b 100644
--- a/internal/tui/eventstream/searchmodal.go
+++ b/internal/tui/eventstream/searchmodal.go
@@ -27,6 +27,7 @@ func NewSearchModal() SearchModal {
input.Prompt = ""
input.CharLimit = 0
input.SetWidth(44)
+ input.SetStyles(textinput.DefaultStyles(true))
return SearchModal{textInput: input, direction: SearchForward}
}
@@ -38,6 +39,12 @@ func (m SearchModal) Direction() SearchDirection {
return m.direction
}
+// SetDarkMode updates search modal text input styles.
+func (m SearchModal) SetDarkMode(isDark bool) SearchModal {
+ m.textInput.SetStyles(textinput.DefaultStyles(isDark))
+ return m
+}
+
func (m SearchModal) Open(direction SearchDirection, defaultTerm string) SearchModal {
m.visible = true
m.err = ""