theme.go

  1package tui
  2
  3import (
  4	"charm.land/lipgloss/v2"
  5	"github.com/floatpane/matcha/theme"
  6)
  7
  8// RebuildStyles updates all package-level style variables to match the active theme.
  9// This must be called after theme.SetTheme() and at startup.
 10func RebuildStyles() {
 11	t := theme.ActiveTheme
 12
 13	// styles.go
 14	DialogBoxStyle = lipgloss.NewStyle().
 15		Border(lipgloss.RoundedBorder()).
 16		BorderForeground(t.AccentDark).
 17		Padding(1, 2).
 18		BorderTop(true).
 19		BorderLeft(true).
 20		BorderRight(true).
 21		BorderBottom(true)
 22
 23	HelpStyle = lipgloss.NewStyle().Foreground(t.Secondary)
 24	TipStyle = lipgloss.NewStyle().Foreground(t.Tip).Italic(true)
 25	SuccessStyle = lipgloss.NewStyle().Foreground(t.Accent).Bold(true)
 26	InfoStyle = lipgloss.NewStyle().Foreground(t.Accent).Bold(true)
 27
 28	H1Style = lipgloss.NewStyle().
 29		Foreground(t.Accent).
 30		Bold(true).
 31		Align(lipgloss.Center)
 32
 33	H2Style = lipgloss.NewStyle().
 34		Foreground(t.Accent).
 35		Bold(false).
 36		Align(lipgloss.Center)
 37
 38	// choice.go
 39	titleStyle = lipgloss.NewStyle().Foreground(t.AccentText).Background(t.AccentDark).Padding(0, 1)
 40	logoStyle = lipgloss.NewStyle().Foreground(t.Accent)
 41	listHeader = lipgloss.NewStyle().Foreground(t.SubtleText).PaddingBottom(1)
 42	itemStyle = lipgloss.NewStyle().PaddingLeft(2)
 43	selectedItemStyle = lipgloss.NewStyle().PaddingLeft(2).Foreground(t.Accent)
 44
 45	// settings.go
 46	accountItemStyle = lipgloss.NewStyle().PaddingLeft(2)
 47	selectedAccountItemStyle = lipgloss.NewStyle().PaddingLeft(2).Foreground(t.Accent)
 48	accountEmailStyle = lipgloss.NewStyle().Foreground(t.Secondary)
 49	dangerStyle = lipgloss.NewStyle().Foreground(t.Danger)
 50	settingsFocusedStyle = lipgloss.NewStyle().Foreground(t.Accent)
 51	settingsBlurredStyle = lipgloss.NewStyle().Foreground(t.Secondary)
 52
 53	// composer.go
 54	suggestionStyle = lipgloss.NewStyle().Foreground(t.Secondary)
 55	selectedSuggestionStyle = lipgloss.NewStyle().Foreground(t.Accent).Bold(true)
 56	suggestionBoxStyle = lipgloss.NewStyle().Border(lipgloss.RoundedBorder()).BorderForeground(t.Secondary).Padding(0, 1)
 57	focusedStyle = lipgloss.NewStyle().Foreground(t.Accent)
 58	blurredStyle = lipgloss.NewStyle().Foreground(t.Secondary)
 59	noStyle = lipgloss.NewStyle()
 60	helpStyle = lipgloss.NewStyle().Foreground(t.SubtleText)
 61	focusedButton = focusedStyle.Render("[ Send ]")
 62	blurredButton = blurredStyle.Render("[ Send ]")
 63	emailRecipientStyle = lipgloss.NewStyle().Foreground(t.Accent).Bold(true)
 64	attachmentStyle = lipgloss.NewStyle().PaddingLeft(4).Foreground(t.Secondary)
 65	fromSelectorStyle = lipgloss.NewStyle().Foreground(t.Accent)
 66	smimeToggleStyle = lipgloss.NewStyle().PaddingLeft(4).Foreground(t.Secondary)
 67
 68	// inbox.go
 69	tabStyle = lipgloss.NewStyle().Padding(0, 2)
 70	activeTabStyle = lipgloss.NewStyle().Padding(0, 2).Foreground(t.Accent).Bold(true).Underline(true)
 71	tabBarStyle = lipgloss.NewStyle().BorderStyle(lipgloss.NormalBorder()).BorderBottom(true).PaddingBottom(1).MarginBottom(1)
 72	dateStyle = lipgloss.NewStyle().Foreground(t.MutedText)
 73	unreadEmailStyle = lipgloss.NewStyle().Foreground(t.Accent).Bold(true)
 74	readEmailStyle = lipgloss.NewStyle().Foreground(t.Secondary)
 75
 76	// folder_inbox.go
 77	sidebarStyle = lipgloss.NewStyle().
 78		Width(sidebarWidth).
 79		BorderStyle(lipgloss.NormalBorder()).
 80		BorderRight(true).
 81		PaddingRight(1).
 82		PaddingLeft(1)
 83	sidebarTitleStyle = lipgloss.NewStyle().
 84		Foreground(t.Accent).
 85		Bold(true).
 86		PaddingBottom(1)
 87	folderStyle = lipgloss.NewStyle().
 88		PaddingLeft(1).
 89		PaddingRight(1)
 90	activeFolderStyle = lipgloss.NewStyle().
 91		PaddingLeft(1).
 92		PaddingRight(1).
 93		Background(t.Accent).
 94		Foreground(t.Contrast).
 95		Bold(true)
 96	moveOverlayStyle = lipgloss.NewStyle().
 97		Border(lipgloss.RoundedBorder()).
 98		BorderForeground(t.AccentDark).
 99		Padding(1, 2)
100	moveOverlayTitleStyle = lipgloss.NewStyle().
101		Foreground(t.Accent).
102		Bold(true).
103		PaddingBottom(1)
104	moveItemStyle = lipgloss.NewStyle().
105		PaddingLeft(1)
106	moveSelectedItemStyle = lipgloss.NewStyle().
107		PaddingLeft(1).
108		Foreground(t.Accent).
109		Bold(true)
110
111	// filepicker.go
112	filePickerItemStyle = lipgloss.NewStyle().PaddingLeft(2)
113	filePickerSelectedItemStyle = lipgloss.NewStyle().PaddingLeft(2).Foreground(t.Accent)
114	directoryStyle = lipgloss.NewStyle().Foreground(t.Directory)
115	fileSizeStyle = lipgloss.NewStyle().Foreground(t.Secondary)
116
117	// trash_archive.go
118	mailboxTabStyle = lipgloss.NewStyle().Padding(0, 3)
119	activeMailboxTabStyle = lipgloss.NewStyle().Padding(0, 3).Foreground(t.Accent).Bold(true).Underline(true)
120}