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}