charmtone.go

  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}