mirror of
https://github.com/anotherhadi/spilltea.git
synced 2026-05-20 01:32:33 +02:00
e8e64eff12
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
101 lines
2.7 KiB
Go
101 lines
2.7 KiB
Go
package style
|
|
|
|
import (
|
|
"image/color"
|
|
|
|
"charm.land/bubbles/v2/help"
|
|
"charm.land/lipgloss/v2"
|
|
"github.com/anotherhadi/spilltea/internal/config"
|
|
)
|
|
|
|
type Styles struct {
|
|
Primary color.Color
|
|
Success color.Color
|
|
Error color.Color
|
|
Warning color.Color
|
|
SubtleBg color.Color
|
|
Selection color.Color
|
|
Text color.Color
|
|
MutedFg color.Color
|
|
Subtle color.Color
|
|
|
|
Bold lipgloss.Style
|
|
Faint lipgloss.Style
|
|
|
|
Panel lipgloss.Style
|
|
PanelFocused lipgloss.Style
|
|
|
|
PagerDotActive string
|
|
PagerDotInactive string
|
|
}
|
|
|
|
var S *Styles
|
|
|
|
func Init(cfg *config.Config) {
|
|
c := cfg.TUI.Colors
|
|
|
|
subtleBg := lipgloss.Color("#" + c.Base01) // Lighter Background (status bars)
|
|
selection := lipgloss.Color("#" + c.Base02) // Selection Background
|
|
subtle := lipgloss.Color("#" + c.Base03) // Faint text, borders
|
|
mutedFg := lipgloss.Color("#" + c.Base04) // Muted foreground
|
|
text := lipgloss.Color("#" + c.Base05) // Default Foreground
|
|
errCol := lipgloss.Color("#" + c.Base08) // Red: errors
|
|
warning := lipgloss.Color("#" + c.Base09) // Orange: warnings
|
|
success := lipgloss.Color("#" + c.Base0B) // Green: success
|
|
primary := lipgloss.Color("#" + c.Base0D) // Accent: primary
|
|
|
|
S = &Styles{
|
|
Primary: primary,
|
|
Success: success,
|
|
Error: errCol,
|
|
Warning: warning,
|
|
SubtleBg: subtleBg,
|
|
Selection: selection,
|
|
MutedFg: mutedFg,
|
|
Text: text,
|
|
Subtle: subtle,
|
|
|
|
Bold: lipgloss.NewStyle().Bold(true),
|
|
Faint: lipgloss.NewStyle().Foreground(subtle).Faint(true),
|
|
|
|
Panel: lipgloss.NewStyle().
|
|
Border(lipgloss.RoundedBorder()).
|
|
BorderForeground(subtle),
|
|
|
|
PanelFocused: lipgloss.NewStyle().
|
|
Border(lipgloss.RoundedBorder()).
|
|
BorderForeground(primary),
|
|
|
|
PagerDotActive: lipgloss.NewStyle().Foreground(primary).SetString("•").String(),
|
|
PagerDotInactive: lipgloss.NewStyle().Foreground(subtle).SetString("•").String(),
|
|
}
|
|
}
|
|
|
|
func NewHelp() help.Model {
|
|
h := help.New()
|
|
h.Styles.ShortKey = lipgloss.NewStyle().Foreground(S.Primary)
|
|
h.Styles.ShortDesc = lipgloss.NewStyle().Foreground(S.MutedFg)
|
|
h.Styles.ShortSeparator = lipgloss.NewStyle().Foreground(S.Subtle)
|
|
h.Styles.FullKey = lipgloss.NewStyle().Foreground(S.Primary)
|
|
h.Styles.FullDesc = lipgloss.NewStyle().Foreground(S.MutedFg)
|
|
h.Styles.FullSeparator = lipgloss.NewStyle().Foreground(S.Subtle)
|
|
h.Styles.Ellipsis = lipgloss.NewStyle().Foreground(S.Subtle)
|
|
return h
|
|
}
|
|
|
|
func (s *Styles) Method(method string) lipgloss.Style {
|
|
base := lipgloss.NewStyle().Bold(true).Width(7)
|
|
switch method {
|
|
case "GET":
|
|
return base.Foreground(s.Success)
|
|
case "POST":
|
|
return base.Foreground(s.Warning)
|
|
case "PUT", "PATCH":
|
|
return base.Foreground(s.Primary)
|
|
case "DELETE":
|
|
return base.Foreground(s.Error)
|
|
default:
|
|
return base.Foreground(s.Text)
|
|
}
|
|
}
|