mirror of
https://github.com/anotherhadi/spilltea.git
synced 2026-05-20 01:32:33 +02:00
Init
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user