mirror of
https://github.com/anotherhadi/ilovetui.git
synced 2026-06-26 00:42:33 +02:00
3da2f5898c
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
107 lines
2.2 KiB
Go
107 lines
2.2 KiB
Go
package ilovetui
|
|
|
|
import (
|
|
"image/color"
|
|
"strings"
|
|
|
|
"charm.land/lipgloss/v2"
|
|
)
|
|
|
|
// Styles holds both the raw Base16 palette and ready-to-use semantic colors
|
|
// and lipgloss styles. Access via the package-level variable S.
|
|
type Styles struct {
|
|
// Raw Base16 palette
|
|
Base00 color.Color
|
|
Base01 color.Color
|
|
Base02 color.Color
|
|
Base03 color.Color
|
|
Base04 color.Color
|
|
Base05 color.Color
|
|
Base06 color.Color
|
|
Base07 color.Color
|
|
Base08 color.Color
|
|
Base09 color.Color
|
|
Base0A color.Color
|
|
Base0B color.Color
|
|
Base0C color.Color
|
|
Base0D color.Color
|
|
Base0E color.Color
|
|
Base0F color.Color
|
|
|
|
// Semantic color aliases
|
|
Background color.Color
|
|
SubtleBg color.Color
|
|
Selection color.Color
|
|
Subtle color.Color
|
|
Muted color.Color
|
|
Text color.Color
|
|
Primary color.Color
|
|
Success color.Color
|
|
Warning color.Color
|
|
Error color.Color
|
|
|
|
// Pre-built text styles
|
|
Bold lipgloss.Style
|
|
Faint lipgloss.Style
|
|
|
|
// Pre-built panel styles (rounded border)
|
|
Panel lipgloss.Style
|
|
PanelFocused lipgloss.Style
|
|
}
|
|
|
|
func newStyles(c colorsYAML) Styles {
|
|
lc := func(s string) color.Color {
|
|
s = strings.TrimSpace(s)
|
|
if s != "" && s[0] != '#' {
|
|
s = "#" + s
|
|
}
|
|
return lipgloss.Color(s)
|
|
}
|
|
|
|
b00 := lc(c.Base00)
|
|
b01 := lc(c.Base01)
|
|
b02 := lc(c.Base02)
|
|
b03 := lc(c.Base03)
|
|
b04 := lc(c.Base04)
|
|
b05 := lc(c.Base05)
|
|
b06 := lc(c.Base06)
|
|
b07 := lc(c.Base07)
|
|
b08 := lc(c.Base08)
|
|
b09 := lc(c.Base09)
|
|
b0A := lc(c.Base0A)
|
|
b0B := lc(c.Base0B)
|
|
b0C := lc(c.Base0C)
|
|
b0D := lc(c.Base0D)
|
|
b0E := lc(c.Base0E)
|
|
b0F := lc(c.Base0F)
|
|
|
|
return Styles{
|
|
Base00: b00, Base01: b01, Base02: b02, Base03: b03,
|
|
Base04: b04, Base05: b05, Base06: b06, Base07: b07,
|
|
Base08: b08, Base09: b09, Base0A: b0A, Base0B: b0B,
|
|
Base0C: b0C, Base0D: b0D, Base0E: b0E, Base0F: b0F,
|
|
|
|
Background: b00,
|
|
SubtleBg: b01,
|
|
Selection: b02,
|
|
Subtle: b03,
|
|
Muted: b04,
|
|
Text: b05,
|
|
Primary: b0D,
|
|
Success: b0B,
|
|
Warning: b09,
|
|
Error: b08,
|
|
|
|
Bold: lipgloss.NewStyle().Bold(true),
|
|
Faint: lipgloss.NewStyle().Foreground(b03).Faint(true),
|
|
|
|
Panel: lipgloss.NewStyle().
|
|
Border(lipgloss.RoundedBorder()).
|
|
BorderForeground(b03),
|
|
|
|
PanelFocused: lipgloss.NewStyle().
|
|
Border(lipgloss.RoundedBorder()).
|
|
BorderForeground(b0D),
|
|
}
|
|
}
|