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}