1package styles
2
3import (
4 "charm.land/lipgloss/v2"
5 "github.com/charmbracelet/x/exp/charmtone"
6)
7
8func NewCharmtoneTheme() *Theme {
9 t := &Theme{
10 Name: "charmtone",
11 IsDark: true,
12
13 Primary: charmtone.Charple,
14 Secondary: charmtone.Dolly,
15 Tertiary: charmtone.Bok,
16 Accent: charmtone.Zest,
17
18 // Backgrounds
19 BgBase: charmtone.Pepper,
20 BgBaseLighter: charmtone.BBQ,
21 BgSubtle: charmtone.Charcoal,
22 BgOverlay: charmtone.Iron,
23
24 // Foregrounds
25 FgBase: charmtone.Ash,
26 FgMuted: charmtone.Squid,
27 FgHalfMuted: charmtone.Smoke,
28 FgSubtle: charmtone.Oyster,
29 FgSelected: charmtone.Salt,
30
31 // Borders
32 Border: charmtone.Charcoal,
33 BorderFocus: charmtone.Charple,
34
35 // Status
36 Success: charmtone.Guac,
37 Error: charmtone.Sriracha,
38 Warning: charmtone.Zest,
39 Info: charmtone.Malibu,
40
41 // Colors
42 White: charmtone.Butter,
43
44 BlueLight: charmtone.Sardine,
45 BlueDark: charmtone.Damson,
46 Blue: charmtone.Malibu,
47
48 Yellow: charmtone.Mustard,
49 Citron: charmtone.Citron,
50
51 Green: charmtone.Julep,
52 GreenDark: charmtone.Guac,
53 GreenLight: charmtone.Bok,
54
55 Red: charmtone.Coral,
56 RedDark: charmtone.Sriracha,
57 RedLight: charmtone.Salmon,
58 Cherry: charmtone.Cherry,
59
60 // Markdown colors (dark theme).
61 MdText: charmtone.Smoke,
62 MdHeading: charmtone.Malibu,
63 MdH6: charmtone.Guac,
64 MdHRule: charmtone.Charcoal,
65 MdLink: charmtone.Zinc,
66 MdLinkText: charmtone.Guac,
67 MdImage: charmtone.Cheeky,
68 MdImageText: charmtone.Squid,
69 MdCodeFg: charmtone.Coral,
70 MdCodeBg: charmtone.Charcoal,
71 MdCodeBlockFg: charmtone.Charcoal,
72 MdCodeBlockBg: charmtone.Charcoal,
73 MdComment: charmtone.Oyster,
74 MdKeyword: charmtone.Malibu,
75 MdKeywordAlt: charmtone.Pony,
76 MdKeywordType: charmtone.Guppy,
77 MdOperator: charmtone.Salmon,
78 MdPunctuation: charmtone.Zest,
79 MdName: charmtone.Smoke,
80 MdNameBuiltin: charmtone.Cheeky,
81 MdNameTag: charmtone.Mauve,
82 MdNameAttr: charmtone.Hazy,
83 MdNameClass: charmtone.Salt,
84 MdNameDecorator: charmtone.Citron,
85 MdNameFunc: charmtone.Guac,
86 MdNumber: charmtone.Julep,
87 MdString: charmtone.Cumin,
88 MdStringEscape: charmtone.Bok,
89 MdDeleted: charmtone.Coral,
90 MdInserted: charmtone.Guac,
91 MdSubheading: charmtone.Squid,
92 MdError: charmtone.Butter,
93 MdErrorBg: charmtone.Sriracha,
94
95 // Diff colors (dark theme).
96 DiffInsertFg: lipgloss.Color("#629657"),
97 DiffInsertBg: lipgloss.Color("#2b322a"),
98 DiffInsertSymBg: lipgloss.Color("#323931"),
99 DiffInsertCodeBg: lipgloss.Color("#323931"),
100 DiffDeleteFg: lipgloss.Color("#a45c59"),
101 DiffDeleteBg: lipgloss.Color("#312929"),
102 DiffDeleteSymBg: lipgloss.Color("#383030"),
103 DiffDeleteCodeBg: lipgloss.Color("#383030"),
104 }
105
106 // Text selection.
107 t.TextSelection = lipgloss.NewStyle().Foreground(charmtone.Salt).Background(charmtone.Charple)
108
109 // LSP and MCP status.
110 t.ItemOfflineIcon = lipgloss.NewStyle().Foreground(charmtone.Squid).SetString("●")
111 t.ItemBusyIcon = t.ItemOfflineIcon.Foreground(charmtone.Citron)
112 t.ItemErrorIcon = t.ItemOfflineIcon.Foreground(charmtone.Coral)
113 t.ItemOnlineIcon = t.ItemOfflineIcon.Foreground(charmtone.Guac)
114
115 // Editor: Yolo Mode.
116 t.YoloIconFocused = lipgloss.NewStyle().Foreground(charmtone.Oyster).Background(charmtone.Citron).Bold(true).SetString(" ! ")
117 t.YoloIconBlurred = t.YoloIconFocused.Foreground(charmtone.Pepper).Background(charmtone.Squid)
118 t.YoloDotsFocused = lipgloss.NewStyle().Foreground(charmtone.Zest).SetString(":::")
119 t.YoloDotsBlurred = t.YoloDotsFocused.Foreground(charmtone.Squid)
120
121 // oAuth Chooser.
122 t.AuthBorderSelected = lipgloss.NewStyle().BorderForeground(charmtone.Guac)
123 t.AuthTextSelected = lipgloss.NewStyle().Foreground(charmtone.Julep)
124 t.AuthBorderUnselected = lipgloss.NewStyle().BorderForeground(charmtone.Iron)
125 t.AuthTextUnselected = lipgloss.NewStyle().Foreground(charmtone.Squid)
126
127 return t
128}