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}