140 lines
3.0 KiB
Go
140 lines
3.0 KiB
Go
package styles
|
|
|
|
import "github.com/charmbracelet/lipgloss"
|
|
|
|
var (
|
|
Primary = lipgloss.Color("#7aa2f7")
|
|
Secondary = lipgloss.Color("#bb9af7")
|
|
Success = lipgloss.Color("#9ece6a")
|
|
Warning = lipgloss.Color("#e0af68")
|
|
Error = lipgloss.Color("#f7768e")
|
|
Muted = lipgloss.Color("#565f89")
|
|
Text = lipgloss.Color("#c0caf5")
|
|
Subtle = lipgloss.Color("#414868")
|
|
Border = lipgloss.Color("#7aa2f7")
|
|
)
|
|
|
|
var (
|
|
AppStyle = lipgloss.NewStyle().
|
|
Padding(1, 2)
|
|
|
|
TitleStyle = lipgloss.NewStyle().
|
|
Foreground(Primary).
|
|
Bold(true).
|
|
MarginBottom(1).
|
|
MarginTop(1)
|
|
|
|
LogoStyle = lipgloss.NewStyle().
|
|
Foreground(Secondary).
|
|
Bold(true).
|
|
Align(lipgloss.Center)
|
|
|
|
SubtitleStyle = lipgloss.NewStyle().
|
|
Foreground(Muted).
|
|
Italic(true)
|
|
|
|
BoxStyle = lipgloss.NewStyle().
|
|
Border(lipgloss.RoundedBorder()).
|
|
BorderForeground(Border).
|
|
Padding(1, 2).
|
|
MarginTop(1).
|
|
MarginBottom(1)
|
|
|
|
ActiveBoxStyle = lipgloss.NewStyle().
|
|
Border(lipgloss.ThickBorder()).
|
|
BorderForeground(Primary).
|
|
Padding(1, 2).
|
|
MarginTop(1).
|
|
MarginBottom(1)
|
|
|
|
InfoBoxStyle = lipgloss.NewStyle().
|
|
Border(lipgloss.RoundedBorder()).
|
|
BorderForeground(Secondary).
|
|
Padding(0, 1).
|
|
MarginTop(1)
|
|
|
|
WarningBoxStyle = lipgloss.NewStyle().
|
|
Border(lipgloss.RoundedBorder()).
|
|
BorderForeground(Warning).
|
|
Padding(0, 1).
|
|
MarginTop(1)
|
|
|
|
ErrorBoxStyle = lipgloss.NewStyle().
|
|
Border(lipgloss.RoundedBorder()).
|
|
BorderForeground(Error).
|
|
Padding(0, 1).
|
|
MarginTop(1)
|
|
|
|
HelpStyle = lipgloss.NewStyle().
|
|
Foreground(Muted).
|
|
MarginTop(1)
|
|
|
|
KeyStyle = lipgloss.NewStyle().
|
|
Foreground(Primary).
|
|
Bold(true)
|
|
|
|
ValueStyle = lipgloss.NewStyle().
|
|
Foreground(Text)
|
|
|
|
ActiveItemStyle = lipgloss.NewStyle().
|
|
Foreground(Primary).
|
|
Bold(true).
|
|
PaddingLeft(2)
|
|
|
|
InactiveItemStyle = lipgloss.NewStyle().
|
|
Foreground(Muted).
|
|
PaddingLeft(2)
|
|
|
|
SelectedItemStyle = lipgloss.NewStyle().
|
|
Foreground(Success).
|
|
Bold(true)
|
|
|
|
LabelStyle = lipgloss.NewStyle().
|
|
Foreground(Secondary).
|
|
Bold(true).
|
|
MarginRight(1)
|
|
|
|
InputStyle = lipgloss.NewStyle().
|
|
Foreground(Text).
|
|
Border(lipgloss.RoundedBorder()).
|
|
BorderForeground(Subtle).
|
|
Padding(0, 1)
|
|
|
|
FocusedInputStyle = lipgloss.NewStyle().
|
|
Foreground(Text).
|
|
Border(lipgloss.RoundedBorder()).
|
|
BorderForeground(Primary).
|
|
Padding(0, 1)
|
|
|
|
ProgressBarStyle = lipgloss.NewStyle().
|
|
Foreground(Primary)
|
|
|
|
ProgressTextStyle = lipgloss.NewStyle().
|
|
Foreground(Muted)
|
|
|
|
SuccessStyle = lipgloss.NewStyle().
|
|
Foreground(Success).
|
|
Bold(true)
|
|
|
|
ErrorStyle = lipgloss.NewStyle().
|
|
Foreground(Error).
|
|
Bold(true)
|
|
|
|
SpinnerStyle = lipgloss.NewStyle().
|
|
Foreground(Primary)
|
|
)
|
|
|
|
func RenderKeyValue(key, value string) string {
|
|
return KeyStyle.Render(key+":") + " " + ValueStyle.Render(value)
|
|
}
|
|
|
|
func RenderHelp(keys ...string) string {
|
|
var parts []string
|
|
for i := 0; i < len(keys); i += 2 {
|
|
if i+1 < len(keys) {
|
|
parts = append(parts, KeyStyle.Render(keys[i])+" "+HelpStyle.Render(keys[i+1]))
|
|
}
|
|
}
|
|
return HelpStyle.Render(lipgloss.JoinHorizontal(lipgloss.Left, parts...))
|
|
}
|