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