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		accent:    charmtone.Bok,
24		keyword:   charmtone.Blush,
25
26		fgBase:       charmtone.Sash,
27		fgMoreSubtle: charmtone.Squid,
28		fgSubtle:     charmtone.Smoke,
29		fgMostSubtle: charmtone.Oyster,
30
31		onPrimary: charmtone.Butter,
32
33		bgBase:         charmtone.Pepper,
34		bgLeastVisible: charmtone.BBQ,
35		bgLessVisible:  charmtone.Char,
36		bgMostVisible:  charmtone.Iron,
37
38		separator: charmtone.Char,
39
40		destructive:       charmtone.Coral,
41		error:             charmtone.Sriracha,
42		warningSubtle:     charmtone.Zest,
43		warning:           charmtone.Mustard,
44		denied:            charmtone.Tang,
45		busy:              charmtone.Citron,
46		info:              charmtone.Malibu,
47		infoMoreSubtle:    charmtone.Sardine,
48		infoMostSubtle:    charmtone.Damson,
49		success:           charmtone.Julep,
50		successMoreSubtle: charmtone.Bok,
51		successMostSubtle: 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		accent:    charmtone.Bok,
61
62		fgBase:       charmtone.Sash,
63		fgMoreSubtle: charmtone.Squid,
64		fgSubtle:     charmtone.Smoke,
65		fgMostSubtle: charmtone.Oyster,
66
67		onPrimary: charmtone.Butter,
68
69		bgBase:         charmtone.Pepper,
70		bgLeastVisible: charmtone.BBQ,
71		bgLessVisible:  charmtone.Char,
72		bgMostVisible:  charmtone.Iron,
73
74		separator: charmtone.Char,
75
76		destructive:       charmtone.Coral,
77		error:             charmtone.Sriracha,
78		warningSubtle:     charmtone.Zest,
79		warning:           charmtone.Mustard,
80		denied:            charmtone.Tang,
81		busy:              charmtone.Citron,
82		info:              charmtone.Malibu,
83		infoMoreSubtle:    charmtone.Sardine,
84		infoMostSubtle:    charmtone.Damson,
85		success:           charmtone.Julep,
86		successMoreSubtle: charmtone.Bok,
87		successMostSubtle: charmtone.Guac,
88	})
89}