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
25		fgBase:       charmtone.Ash,
26		fgMoreSubtle: charmtone.Squid,
27		fgSubtle:     charmtone.Smoke,
28		fgMostSubtle: charmtone.Oyster,
29
30		onPrimary: charmtone.Butter,
31
32		bgBase:         charmtone.Pepper,
33		bgLeastVisible: charmtone.BBQ,
34		bgLessVisible:  charmtone.Charcoal,
35		bgMostVisible:  charmtone.Iron,
36
37		separator: charmtone.Charcoal,
38
39		destructive:       charmtone.Coral,
40		error:             charmtone.Sriracha,
41		warningSubtle:     charmtone.Zest,
42		warning:           charmtone.Mustard,
43		busy:              charmtone.Citron,
44		info:              charmtone.Malibu,
45		infoMoreSubtle:    charmtone.Sardine,
46		infoMostSubtle:    charmtone.Damson,
47		success:           charmtone.Julep,
48		successMoreSubtle: charmtone.Bok,
49		successMostSubtle: charmtone.Guac,
50	})
51}
52
53// HypercrushObsidiana returns the Hypercrush dark theme.
54func HypercrushObsidiana() Styles {
55	return quickStyle(quickStyleOpts{
56		primary:   charmtone.Charple,
57		secondary: charmtone.Dolly,
58		accent:    charmtone.Bok,
59
60		fgBase:       charmtone.Ash,
61		fgMoreSubtle: charmtone.Squid,
62		fgSubtle:     charmtone.Smoke,
63		fgMostSubtle: charmtone.Oyster,
64
65		onPrimary: charmtone.Butter,
66
67		bgBase:         charmtone.Pepper,
68		bgLeastVisible: charmtone.BBQ,
69		bgLessVisible:  charmtone.Charcoal,
70		bgMostVisible:  charmtone.Iron,
71
72		separator: charmtone.Charcoal,
73
74		destructive:       charmtone.Coral,
75		error:             charmtone.Sriracha,
76		warningSubtle:     charmtone.Zest,
77		warning:           charmtone.Mustard,
78		busy:              charmtone.Citron,
79		info:              charmtone.Malibu,
80		infoMoreSubtle:    charmtone.Sardine,
81		infoMostSubtle:    charmtone.Damson,
82		success:           charmtone.Julep,
83		successMoreSubtle: charmtone.Bok,
84		successMostSubtle: charmtone.Guac,
85	})
86}