1
0
mirror of https://github.com/mrusme/neonmodem.git synced 2024-06-30 06:45:24 +00:00
neonmodem/ui/toolkit/dialog.go

93 lines
1.8 KiB
Go
Raw Normal View History

2023-01-03 20:02:43 +00:00
package toolkit
import (
"strings"
"github.com/charmbracelet/lipgloss"
)
2023-01-05 02:41:13 +00:00
func (tk *ToolKit) Dialog(title string, content string, bbar bool) string {
2023-01-03 20:02:43 +00:00
var view strings.Builder = strings.Builder{}
var style lipgloss.Style
if tk.IsFocused() {
style = tk.theme.DialogBox.Titlebar.Focused
} else {
style = tk.theme.DialogBox.Titlebar.Blurred
}
titlebar := style.Align(lipgloss.Center).
Width(tk.ViewWidth()).
Render(title)
bindings := tk.KeymapHelpStrings()
2023-01-05 02:41:13 +00:00
var ui string
if bbar {
bottombar := tk.theme.DialogBox.Bottombar.
Width(tk.ViewWidth()).
Render(strings.Join(bindings, " · "))
ui = lipgloss.JoinVertical(
lipgloss.Center,
titlebar,
content,
bottombar,
)
} else {
ui = lipgloss.JoinVertical(
lipgloss.Center,
titlebar,
content,
)
}
2023-01-03 20:02:43 +00:00
var tmp string
if tk.IsFocused() {
tmp = tk.theme.DialogBox.Window.Focused.Render(ui)
} else {
tmp = tk.theme.DialogBox.Window.Blurred.Render(ui)
}
view.WriteString(tmp)
return view.String()
}
func (tk *ToolKit) ErrorDialog(title string, content string) string {
var view strings.Builder = strings.Builder{}
var style lipgloss.Style
if tk.IsFocused() {
style = tk.theme.ErrorDialogBox.Titlebar.Focused
} else {
style = tk.theme.ErrorDialogBox.Titlebar.Blurred
}
titlebar := style.Align(lipgloss.Center).
Width(tk.ViewWidth()).
Render(title)
bindings := tk.KeymapHelpStrings()
bottombar := tk.theme.ErrorDialogBox.Bottombar.
Width(tk.ViewWidth()).
Render(strings.Join(bindings, " · "))
ui := lipgloss.JoinVertical(
lipgloss.Center,
titlebar,
content,
bottombar,
)
var tmp string
if tk.IsFocused() {
tmp = tk.theme.ErrorDialogBox.Window.Focused.Render(ui)
} else {
tmp = tk.theme.ErrorDialogBox.Window.Blurred.Render(ui)
}
view.WriteString(tmp)
return view.String()
}