summaryrefslogtreecommitdiff
path: root/ui/views/tabs.go
diff options
context:
space:
mode:
Diffstat (limited to 'ui/views/tabs.go')
-rw-r--r--ui/views/tabs.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/ui/views/tabs.go b/ui/views/tabs.go
new file mode 100644
index 0000000..edfd02a
--- /dev/null
+++ b/ui/views/tabs.go
@@ -0,0 +1,37 @@
+package views
+
+import (
+ "fmt"
+
+ "github.com/charmbracelet/lipgloss"
+)
+
+// TabType represents the available tabs
+
+type TabType int
+
+var (
+ highlightColor = lipgloss.Color("#7ee2a8")
+ tabStyle = lipgloss.NewStyle().Border(lipgloss.RoundedBorder()).BorderForeground(highlightColor).Padding(0, 2)
+ inactiveTabStyle = tabStyle
+ activeTabStyle = tabStyle
+ altCodeStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("#666666")).Bold(true)
+ windowStyle = lipgloss.NewStyle().BorderForeground(highlightColor).Padding(2, 0).Align(lipgloss.Center).Border(lipgloss.RoundedBorder())
+)
+
+func getTabsRow(tabsText []string, activeTab TabType) string {
+ tabs := make([]string, len(tabsText))
+
+ for i, tab := range tabsText {
+ if TabType(i) == activeTab {
+ tabs[i] = fmt.Sprintf("%s %s", altCodeStyle.Render(fmt.Sprintf("Alt+%d", i+1)), lipgloss.NewStyle().Bold(true).Foreground(highlightColor).Render(tab))
+ tabs[i] = activeTabStyle.Foreground(highlightColor).Render(tabs[i])
+ } else {
+ tabs[i] = fmt.Sprintf("%s %s", altCodeStyle.Render(fmt.Sprintf("Alt+%d", i+1)), lipgloss.NewStyle().Render(tab))
+ tabs[i] = inactiveTabStyle.Foreground(highlightColor).Render(tabs[i])
+ }
+ }
+
+ return lipgloss.JoinHorizontal(lipgloss.Top, tabs...)
+
+}