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, 0).
 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	senderStyle = lipgloss.NewStyle().Foreground(t.DimText).Bold(true)
 74
 75	// folder_inbox.go
 76	sidebarStyle = lipgloss.NewStyle().
 77		Width(sidebarWidth).
 78		BorderStyle(lipgloss.NormalBorder()).
 79		BorderRight(true).
 80		PaddingRight(1).
 81		PaddingLeft(1)
 82	sidebarTitleStyle = lipgloss.NewStyle().
 83		Foreground(t.Accent).
 84		Bold(true).
 85		PaddingBottom(1)
 86	folderStyle = lipgloss.NewStyle().
 87		PaddingLeft(1).
 88		PaddingRight(1)
 89	activeFolderStyle = lipgloss.NewStyle().
 90		PaddingLeft(1).
 91		PaddingRight(1).
 92		Background(t.Accent).
 93		Foreground(t.Contrast).
 94		Bold(true)
 95	moveOverlayStyle = lipgloss.NewStyle().
 96		Border(lipgloss.RoundedBorder()).
 97		BorderForeground(t.AccentDark).
 98		Padding(1, 2)
 99	moveOverlayTitleStyle = lipgloss.NewStyle().
100		Foreground(t.Accent).
101		Bold(true).
102		PaddingBottom(1)
103	moveItemStyle = lipgloss.NewStyle().
104		PaddingLeft(1)
105	moveSelectedItemStyle = lipgloss.NewStyle().
106		PaddingLeft(1).
107		Foreground(t.Accent).
108		Bold(true)
109
110	// filepicker.go
111	filePickerItemStyle = lipgloss.NewStyle().PaddingLeft(2)
112	filePickerSelectedItemStyle = lipgloss.NewStyle().PaddingLeft(2).Foreground(t.Accent)
113	directoryStyle = lipgloss.NewStyle().Foreground(t.Directory)
114	fileSizeStyle = lipgloss.NewStyle().Foreground(t.Secondary)
115
116	// trash_archive.go
117	mailboxTabStyle = lipgloss.NewStyle().Padding(0, 3)
118	activeMailboxTabStyle = lipgloss.NewStyle().Padding(0, 3).Foreground(t.Accent).Bold(true).Underline(true)
119}