themes.go

 1package styles
 2
 3import "github.com/charmbracelet/x/exp/charmtone"
 4
 5// ThemeForProvider returns the Styles associated with the given provider
 6// ID. Unknown or empty provider IDs yield the default Charmtone Pantera
 7// theme.
 8func ThemeForProvider(providerID string) Styles {
 9	switch providerID {
10	case "hyper":
11		return HypercrushObsidiana()
12	default:
13		return CharmtonePantera()
14	}
15}
16
17// CharmtonePantera returns the Charmtone dark theme. It's the default style
18// for the UI.
19func CharmtonePantera() Styles {
20	return quickStyle(quickStyleOpts{
21		primary:   charmtone.Charple,
22		secondary: charmtone.Dolly,
23		tertiary:  charmtone.Bok,
24
25		fgBase:      charmtone.Ash,
26		fgMuted:     charmtone.Squid,
27		fgHalfMuted: charmtone.Smoke,
28		fgSubtle:    charmtone.Oyster,
29
30		onPrimary: charmtone.Salt,
31		onAccent:  charmtone.Butter,
32
33		bgBase:        charmtone.Pepper,
34		bgBaseLighter: charmtone.BBQ,
35		bgSubtle:      charmtone.Charcoal,
36		bgOverlay:     charmtone.Iron,
37
38		border:      charmtone.Charcoal,
39		borderFocus: charmtone.Charple,
40
41		danger:        charmtone.Coral,
42		error:         charmtone.Sriracha,
43		warning:       charmtone.Zest,
44		warningStrong: charmtone.Mustard,
45		busy:          charmtone.Citron,
46		info:          charmtone.Malibu,
47		infoSubtle:    charmtone.Sardine,
48		infoMuted:     charmtone.Damson,
49		success:       charmtone.Julep,
50		successSubtle: charmtone.Bok,
51		successMuted:  charmtone.Guac,
52	})
53}
54
55// HypercrushObsidiana returns the Hypercrush dark theme.
56func HypercrushObsidiana() Styles {
57	return quickStyle(quickStyleOpts{
58		primary:   charmtone.Charple,
59		secondary: charmtone.Dolly,
60		tertiary:  charmtone.Bok,
61
62		fgBase:      charmtone.Ash,
63		fgMuted:     charmtone.Squid,
64		fgHalfMuted: charmtone.Smoke,
65		fgSubtle:    charmtone.Oyster,
66
67		onPrimary: charmtone.Salt,
68		onAccent:  charmtone.Butter,
69
70		bgBase:        charmtone.Pepper,
71		bgBaseLighter: charmtone.BBQ,
72		bgSubtle:      charmtone.Charcoal,
73		bgOverlay:     charmtone.Iron,
74
75		border:      charmtone.Charcoal,
76		borderFocus: charmtone.Charple,
77
78		danger:        charmtone.Coral,
79		error:         charmtone.Sriracha,
80		warning:       charmtone.Zest,
81		warningStrong: charmtone.Mustard,
82		busy:          charmtone.Citron,
83		info:          charmtone.Malibu,
84		infoSubtle:    charmtone.Sardine,
85		infoMuted:     charmtone.Damson,
86		success:       charmtone.Julep,
87		successSubtle: charmtone.Bok,
88		successMuted:  charmtone.Guac,
89	})
90}