1package styles
2
3import (
4 "github.com/charmbracelet/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 Blue: charmtone.Malibu,
46
47 Yellow: charmtone.Mustard,
48
49 Green: charmtone.Julep,
50 GreenDark: charmtone.Guac,
51 GreenLight: charmtone.Bok,
52
53 Red: charmtone.Coral,
54 RedDark: charmtone.Sriracha,
55 RedLight: charmtone.Salmon,
56 Cherry: charmtone.Cherry,
57 }
58
59 // Text selection.
60 t.TextSelection = lipgloss.NewStyle().Foreground(charmtone.Salt).Background(charmtone.Charple)
61
62 // LSP and MCP status.
63 t.ItemOfflineIcon = lipgloss.NewStyle().Foreground(charmtone.Squid).SetString("●")
64 t.ItemBusyIcon = t.ItemOfflineIcon.Foreground(charmtone.Citron)
65 t.ItemErrorIcon = t.ItemOfflineIcon.Foreground(charmtone.Coral)
66 t.ItemOnlineIcon = t.ItemOfflineIcon.Foreground(charmtone.Guac)
67
68 return t
69}